<?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>146692</bug_id>
          
          <creation_ts>2015-07-07 13:24:21 -0700</creation_ts>
          <short_desc>Web Inspector: Please support HAR Export for network traffic</short_desc>
          <delta_ts>2017-10-24 13:53:32 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Lawrence">e_lawrence</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>aral</cc>
    
    <cc>bburg</cc>
    
    <cc>binh.phan</cc>
    
    <cc>bugzilla</cc>
    
    <cc>buildbot</cc>
    
    <cc>graouts</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>irae</cc>
    
    <cc>jlewis3</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yahoomobile</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1107545</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Lawrence">e_lawrence</who>
    <bug_when>2015-07-07 13:24:21 -0700</bug_when>
    <thetext>HTTP Archive format is the industry standard for traffic export; Chrome, MS Edge, Fiddler, and Firebug all support HAR files. 

It looks like this was supported previously (https://bugs.webkit.org/show_bug.cgi?id=56097) but it isn&apos;t any longer per https://twitter.com/xeenon/status/618514694442229760</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107546</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-07-07 13:24:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/21710448&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116682</commentid>
    <comment_count>2</comment_count>
    <who name="Iraê">irae</who>
    <bug_when>2015-08-11 13:33:46 -0700</bug_when>
    <thetext>We often use OS-level support for Link Conditioner, as explained here: http://nshipster.com/network-link-conditioner/

It would be a nice addition to have this feature implemented in WebKit inspector for a number of reasons:


1. It only affects the current tab in the current instance of Webkit, so it does not affect tasks that the developer might be doing in other applications and tabs
2. It makes clear in the UI what is being debugged at the current time
3. It allows side-by side comparison when using multiple windows for debugging network performance issues (different sites, the same site in different conditions, different AB/testing and all permutations)

Chrome already implements it and this could be considered also for developer relation improvements. I use Safari as my main development browser but many co-workers would choose Chrome for this feature amongst others.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116691</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Lawrence">e_lawrence</who>
    <bug_when>2015-08-11 13:49:20 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; We often use OS-level support for Link Conditioner, as explained here:
&gt; http://nshipster.com/network-link-conditioner/
&gt; 
&gt; It would be a nice addition to have this feature implemented in WebKit
&gt; inspector for a number of reasons:
&gt; 
&gt; 
&gt; 1. It only affects the current tab in the current instance of Webkit, so it
&gt; does not affect tasks that the developer might be doing in other
&gt; applications and tabs
&gt; 2. It makes clear in the UI what is being debugged at the current time
&gt; 3. It allows side-by side comparison when using multiple windows for
&gt; debugging network performance issues (different sites, the same site in
&gt; different conditions, different AB/testing and all permutations)
&gt; 
&gt; Chrome already implements it and this could be considered also for developer
&gt; relation improvements. I use Safari as my main development browser but many
&gt; co-workers would choose Chrome for this feature amongst others.

Iraê-- This doesn&apos;t appear to have anything to do with HTTP Archive Support. If not, you should file a new issue, not bury your comment inside support for HAR.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116770</commentid>
    <comment_count>4</comment_count>
    <who name="Yahoo Search Mobile Team">yahoomobile</who>
    <bug_when>2015-08-11 16:21:54 -0700</bug_when>
    <thetext>I think something when wrong with the POST request or I messed up my tabs. I understand it&apos;s not related, I was a mistake. Thanks for posting that out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116818</commentid>
    <comment_count>5</comment_count>
    <who name="Iraê">irae</who>
    <bug_when>2015-08-11 18:32:10 -0700</bug_when>
    <thetext>I did mess up with posting the wrong description here, but I would like to say that HAR support is a helpful feature, not only by exporting through the UI, but also if we could get it programmatically. It&apos;s not part of the WebDriver bug request (https://bugs.webkit.org/show_bug.cgi?id=135263), but it is also a good tool for automating performance tests.

Having programmatic access, via command-line/launcher of via web APIs (something like Resource Timings (https://bugs.webkit.org/show_bug.cgi?id=61138) might be translatable to HAR, but HAR would be easier to integrate).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120805</commentid>
    <comment_count>6</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-08-25 18:55:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/7463672&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180351</commentid>
    <comment_count>7</comment_count>
    <who name="Aral Balkan">aral</who>
    <bug_when>2016-04-04 06:34:05 -0700</bug_when>
    <thetext>This would also be helpful for content blockers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344464</commentid>
    <comment_count>8</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-09-01 10:55:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/7463672&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356673</commentid>
    <comment_count>9</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-10-04 14:44:31 -0700</bug_when>
    <thetext>HTTP Archive (HAR) format specication:
https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/HAR/Overview.html

Older version for reference:
http://www.softwareishard.com/blog/har-12-spec/

Other Resources that maybe useful:
http://www.softwareishard.com/har/viewer/
https://toolbox.googleapps.com/apps/har_analyzer/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363200</commentid>
    <comment_count>10</comment_count>
      <attachid>324538</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-10-22 20:11:19 -0700</bug_when>
    <thetext>Created attachment 324538
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363201</commentid>
    <comment_count>11</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-10-22 20:12:19 -0700</bug_when>
    <thetext>I&apos;m missing an export button right now.

However this match the main way other browsers include a HAR export (an option in the context menu).

We also make ⌘S in the Network Tab default to this behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363383</commentid>
    <comment_count>12</comment_count>
      <attachid>324538</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-10-23 13:54:46 -0700</bug_when>
    <thetext>Comment on attachment 324538
[PATCH] Proposed Fix

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

r=me

&gt; LayoutTests/http/tests/inspector/network/har/har-basic-expected.txt:37
&gt; +        &quot;title&quot;: &quot;http://127.0.0.1:8000/inspector/network/har/har-basic.html&quot;,

Is loopback hardcoded in other tests like this?

&gt; LayoutTests/http/tests/inspector/network/har/har-basic.html:24
&gt; +            let har = await WI.HARBuilder.buildArchive([]);

Very interesting. I haven&apos;t read much async/await code.

&gt; Source/WebInspectorUI/ChangeLog:63
&gt; +        Capture the raw, unmodified, base64 encoded and content. This ends up

Nit: -and

&gt; Source/WebInspectorUI/UserInterface/Controllers/HARBuilder.js:32
&gt; +    static async buildArchive(resources)

I found it a little weird that this is a singleton and all static methods, but I guess it needs to use a ton of other global state anyway.

&gt; Source/WebInspectorUI/UserInterface/Controllers/HARBuilder.js:235
&gt; +        // FIXME: Implement HAR cache data.

Please file a bug for this.

&gt; Source/WebInspectorUI/UserInterface/Controllers/HARBuilder.js:242
&gt; +        // NOTE: Chrome Custom Fields `_blocked_queueing` and `_blocked_proxy`.

Weird grammar.

&gt; Source/WebInspectorUI/UserInterface/Views/NetworkTableContentView.js:1386
&gt; +        if (!resources.length) {

Maybe it would be more obvious when exporting is not possible, by making the button become disabled when this condition is true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363385</commentid>
    <comment_count>13</comment_count>
      <attachid>324538</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-10-23 13:59:33 -0700</bug_when>
    <thetext>Comment on attachment 324538
[PATCH] Proposed Fix

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

&gt;&gt; LayoutTests/http/tests/inspector/network/har/har-basic-expected.txt:37
&gt;&gt; +        &quot;title&quot;: &quot;http://127.0.0.1:8000/inspector/network/har/har-basic.html&quot;,
&gt; 
&gt; Is loopback hardcoded in other tests like this?

This is an http/tests/ LayoutTest and those are always 127.0.0.1:8000

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/NetworkTableContentView.js:1386
&gt;&gt; +        if (!resources.length) {
&gt; 
&gt; Maybe it would be more obvious when exporting is not possible, by making the button become disabled when this condition is true.

We currently don&apos;t have a button, this path is taken via a ⌘S keyboard shortcut.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363403</commentid>
    <comment_count>14</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-10-23 14:35:34 -0700</bug_when>
    <thetext>&lt;https://webkit.org/b/146692&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363493</commentid>
    <comment_count>15</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-10-23 17:42:21 -0700</bug_when>
    <thetext>One of the LayoutTests for this change is failing:
https://build.webkit.org/results/Apple%20Sierra%20Release%20WK2%20(Tests)/r223860%20(5199)/results.html

--- /Volumes/Data/slave/sierra-release-tests-wk2/build/layout-test-results/http/tests/inspector/network/har/har-page-expected.txt
+++ /Volumes/Data/slave/sierra-release-tests-wk2/build/layout-test-results/http/tests/inspector/network/har/har-page-actual.txt
@@ -50,8 +50,7 @@
           },
           &quot;redirectURL&quot;: &quot;&quot;,
           &quot;headersSize&quot;: &quot;&lt;filtered&gt;&quot;,
-          &quot;bodySize&quot;: &quot;&lt;filtered&gt;&quot;,
-          &quot;_transferSize&quot;: &quot;&lt;filtered&gt;&quot;
+          &quot;bodySize&quot;: &quot;&lt;filtered&gt;&quot;
         },
         &quot;cache&quot;: {},
         &quot;timings&quot;: {
@@ -63,8 +62,6 @@
           &quot;wait&quot;: &quot;&lt;filtered&gt;&quot;,
           &quot;receive&quot;: &quot;&lt;filtered&gt;&quot;
         },
-        &quot;serverIPAddress&quot;: &quot;127.0.0.1&quot;,
-        &quot;connection&quot;: &quot;&lt;filtered&gt;&quot;,
         &quot;_fetchType&quot;: &quot;&lt;filtered&gt;&quot;
       },
       {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363497</commentid>
    <comment_count>16</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-10-23 17:54:04 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #15)
&gt; One of the LayoutTests for this change is failing:
&gt; https://build.webkit.org/results/Apple%20Sierra%20Release%20WK2%20(Tests)/
&gt; r223860%20(5199)/results.html
&gt; 
&gt; ---
&gt; /Volumes/Data/slave/sierra-release-tests-wk2/build/layout-test-results/http/
&gt; tests/inspector/network/har/har-page-expected.txt
&gt; +++
&gt; /Volumes/Data/slave/sierra-release-tests-wk2/build/layout-test-results/http/
&gt; tests/inspector/network/har/har-page-actual.txt
&gt; @@ -50,8 +50,7 @@
&gt;            },
&gt;            &quot;redirectURL&quot;: &quot;&quot;,
&gt;            &quot;headersSize&quot;: &quot;&lt;filtered&gt;&quot;,
&gt; -          &quot;bodySize&quot;: &quot;&lt;filtered&gt;&quot;,
&gt; -          &quot;_transferSize&quot;: &quot;&lt;filtered&gt;&quot;
&gt; +          &quot;bodySize&quot;: &quot;&lt;filtered&gt;&quot;
&gt;          },
&gt;          &quot;cache&quot;: {},
&gt;          &quot;timings&quot;: {
&gt; @@ -63,8 +62,6 @@
&gt;            &quot;wait&quot;: &quot;&lt;filtered&gt;&quot;,
&gt;            &quot;receive&quot;: &quot;&lt;filtered&gt;&quot;
&gt;          },
&gt; -        &quot;serverIPAddress&quot;: &quot;127.0.0.1&quot;,
&gt; -        &quot;connection&quot;: &quot;&lt;filtered&gt;&quot;,
&gt;          &quot;_fetchType&quot;: &quot;&lt;filtered&gt;&quot;
&gt;        },
&gt;        {

These fields are only available for iOS 11 / High Sierra or later. We just need a new baseline for Sierra.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363512</commentid>
    <comment_count>17</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-10-23 18:29:43 -0700</bug_when>
    <thetext>&gt; These fields are only available for iOS 11 / High Sierra or later. We just
&gt; need a new baseline for Sierra.

These fields should be available on Sierra.

I guess in the test they may be variable based on whether or not the resource was served from a cache. I may just have to eliminate these fields to avoid flakiness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363517</commentid>
    <comment_count>18</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-10-23 18:45:27 -0700</bug_when>
    <thetext>I updated the test to try to reduce flakiness:
&lt;https://trac.webkit.org/changeset/223873/webkit&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363711</commentid>
    <comment_count>19</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-10-24 09:58:46 -0700</bug_when>
    <thetext>(In reply to Joseph Pecoraro from comment #18)
&gt; I updated the test to try to reduce flakiness:
&gt; &lt;https://trac.webkit.org/changeset/223873/webkit&gt;
The test still appears to be failing: https://build.webkit.org/results/Apple%20Sierra%20Release%20WK2%20(Tests)/r223885%20(5216)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363750</commentid>
    <comment_count>20</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-10-24 10:57:40 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #19)
&gt; (In reply to Joseph Pecoraro from comment #18)
&gt; &gt; I updated the test to try to reduce flakiness:
&gt; &gt; &lt;https://trac.webkit.org/changeset/223873/webkit&gt;
&gt; The test still appears to be failing:
&gt; https://build.webkit.org/results/Apple%20Sierra%20Release%20WK2%20(Tests)/
&gt; r223885%20(5216)/results.html

That failure looks like it would be before my changes... unless I didn&apos;t reset the results of the test properly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363751</commentid>
    <comment_count>21</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-10-24 10:58:44 -0700</bug_when>
    <thetext>&gt; That failure looks like it would be before my changes... unless I didn&apos;t
&gt; reset the results of the test properly

It appears I may not have reset the results properly since I do see a &quot;connection&quot; property. Let me try again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363755</commentid>
    <comment_count>22</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-10-24 11:05:25 -0700</bug_when>
    <thetext>&lt;https://trac.webkit.org/r223899&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363850</commentid>
    <comment_count>23</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2017-10-24 13:17:59 -0700</bug_when>
    <thetext>The test looks like it is still failing:
https://build.webkit.org/results/Apple%20High%20Sierra%20Release%20WK2%20(Tests)/r223900%20(665)/results.html
https://build.webkit.org/builders/Apple%20High%20Sierra%20Release%20WK2%20(Tests)/builds/665</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363864</commentid>
    <comment_count>24</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-10-24 13:38:47 -0700</bug_when>
    <thetext>(In reply to Matt Lewis from comment #23)
&gt; The test looks like it is still failing:
&gt; https://build.webkit.org/results/
&gt; Apple%20High%20Sierra%20Release%20WK2%20(Tests)/r223900%20(665)/results.html
&gt; https://build.webkit.org/builders/
&gt; Apple%20High%20Sierra%20Release%20WK2%20(Tests)/builds/665

Oops, I removed whitespace before landing and forgot to update the results with the new size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1363873</commentid>
    <comment_count>25</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-10-24 13:53:32 -0700</bug_when>
    <thetext>Fingers crossed!

&lt;https://trac.webkit.org/r223917&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324538</attachid>
            <date>2017-10-22 20:11:19 -0700</date>
            <delta_ts>2017-10-23 13:54:46 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>HAR-export-1.patch</filename>
            <type>text/plain</type>
            <size>71456</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwNWEzNDc1NWMyMi4uOWU1MzZiYzZhZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNSBAQAog
MjAxNy0xMC0yMiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFBsZWFzZSBzdXBwb3J0IEhBUiBFeHBvcnQgZm9yIG5ldHdvcmsg
dHJhZmZpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ2NjkyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDYzNjcyPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9oYXIvaGFyLWJhc2ljLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9oYXIvaGFyLWJhc2ljLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaGFyL2hhci1wYWdlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9oYXIv
aGFyLXBhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgIFRlc3RzIHdpdGggbW9jayByZXNvdXJjZXMg
LyBkYXRhIGFuZCByZWFsIHJlc291cmNlcy4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy13azEv
VGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
czoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgU2tp
cCBvbiBwbGF0Zm9ybXMgdGhhdCBjYW5ub3QgcHJvdmlkZSBjb21wbGV0ZSBtZXRyaWNzLCBzbyBz
b21lIG9wdGlvbmFsCisgICAgICAgIGZpZWxkcyBtYXkgYmUgbWlzc2luZy4KKworMjAxNy0xMC0y
MiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCiAgICAgICAgIFJFR1JF
U1NJT04ocjIxOTY3NSk6IFdlYiBJbnNwZWN0b3I6IENvbW1hbmRMaW5lQVBJIGdldEV2ZW50TGlz
dGVuZXJzIGRvZXMgbm90IHdvcmsKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3ODY1MAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUxMTYzNDc+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2hhci9o
YXItYmFzaWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9oYXIvaGFyLWJhc2ljLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uNmU5OWViYWFlZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2hhci9oYXItYmFzaWMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQ0IEBACitCYXNpYyB0ZXN0cyBmb3IgSEFSLgorCisKKz09IFJ1bm5p
bmcgdGVzdCBzdWl0ZTogSEFSLkJhc2ljCistLSBSdW5uaW5nIHRlc3QgY2FzZTogSEFSLkJhc2lj
LkVtcHR5Cit7CisgICJsb2ciOiB7CisgICAgInZlcnNpb24iOiAiMS4yIiwKKyAgICAiY3JlYXRv
ciI6IHsKKyAgICAgICJuYW1lIjogIldlYktpdCBXZWIgSW5zcGVjdG9yIiwKKyAgICAgICJ2ZXJz
aW9uIjogIjxmaWx0ZXJlZD4iCisgICAgfSwKKyAgICAicGFnZXMiOiBbCisgICAgICB7CisgICAg
ICAgICJzdGFydGVkRGF0ZVRpbWUiOiAiIiwKKyAgICAgICAgImlkIjogInBhZ2VfMCIsCisgICAg
ICAgICJ0aXRsZSI6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvaGFy
L2hhci1iYXNpYy5odG1sIiwKKyAgICAgICAgInBhZ2VUaW1pbmdzIjoge30KKyAgICAgIH0KKyAg
ICBdLAorICAgICJlbnRyaWVzIjogW10KKyAgfQorfQorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
SEFSLkJhc2ljLkZha2VSZXNvdXJjZXMKK3sKKyAgImxvZyI6IHsKKyAgICAidmVyc2lvbiI6ICIx
LjIiLAorICAgICJjcmVhdG9yIjogeworICAgICAgIm5hbWUiOiAiV2ViS2l0IFdlYiBJbnNwZWN0
b3IiLAorICAgICAgInZlcnNpb24iOiAiPGZpbHRlcmVkPiIKKyAgICB9LAorICAgICJwYWdlcyI6
IFsKKyAgICAgIHsKKyAgICAgICAgInN0YXJ0ZWREYXRlVGltZSI6ICIiLAorICAgICAgICAiaWQi
OiAicGFnZV8wIiwKKyAgICAgICAgInRpdGxlIjogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNw
ZWN0b3IvbmV0d29yay9oYXIvaGFyLWJhc2ljLmh0bWwiLAorICAgICAgICAicGFnZVRpbWluZ3Mi
OiB7fQorICAgICAgfQorICAgIF0sCisgICAgImVudHJpZXMiOiBbCisgICAgICB7CisgICAgICAg
ICJwYWdlcmVmIjogInBhZ2VfMCIsCisgICAgICAgICJzdGFydGVkRGF0ZVRpbWUiOiAiMjAxNy0x
MC0yM1QwMTo1NTo1Mi42OTRaIiwKKyAgICAgICAgInRpbWUiOiAwLAorICAgICAgICAicmVxdWVz
dCI6IHsKKyAgICAgICAgICAibWV0aG9kIjogIkdFVCIsCisgICAgICAgICAgInVybCI6ICJodHRw
czovL2V4YW1wbGUuY29tL2Zha2UuanMiLAorICAgICAgICAgICJodHRwVmVyc2lvbiI6ICIiLAor
ICAgICAgICAgICJjb29raWVzIjogW10sCisgICAgICAgICAgImhlYWRlcnMiOiBbCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICJuYW1lIjogIlRlc3QtUmVxdWVzdC1IZWFkZXIiLAorICAg
ICAgICAgICAgICAidmFsdWUiOiAiVGVzdCBSZXF1ZXN0IEhlYWRlciBWYWx1ZSIKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICBdLAorICAgICAgICAgICJxdWVyeVN0cmluZyI6IFtdLAorICAgICAg
ICAgICJoZWFkZXJzU2l6ZSI6IC0xLAorICAgICAgICAgICJib2R5U2l6ZSI6IC0xCisgICAgICAg
IH0sCisgICAgICAgICJyZXNwb25zZSI6IHsKKyAgICAgICAgICAic3RhdHVzIjogMCwKKyAgICAg
ICAgICAic3RhdHVzVGV4dCI6ICIiLAorICAgICAgICAgICJodHRwVmVyc2lvbiI6ICIiLAorICAg
ICAgICAgICJjb29raWVzIjogW10sCisgICAgICAgICAgImhlYWRlcnMiOiBbXSwKKyAgICAgICAg
ICAiY29udGVudCI6IHsKKyAgICAgICAgICAgICJzaXplIjogMCwKKyAgICAgICAgICAgICJjb21w
cmVzc2lvbiI6IDAsCisgICAgICAgICAgICAibWltZVR5cGUiOiAidGV4dC9qYXZhc2NyaXB0Igor
ICAgICAgICAgIH0sCisgICAgICAgICAgInJlZGlyZWN0VVJMIjogIiIsCisgICAgICAgICAgImhl
YWRlcnNTaXplIjogLTEsCisgICAgICAgICAgImJvZHlTaXplIjogLTEKKyAgICAgICAgfSwKKyAg
ICAgICAgImNhY2hlIjoge30sCisgICAgICAgICJ0aW1pbmdzIjogeworICAgICAgICAgICJibG9j
a2VkIjogLTEsCisgICAgICAgICAgImRucyI6IC0xLAorICAgICAgICAgICJjb25uZWN0IjogLTEs
CisgICAgICAgICAgInNzbCI6IC0xLAorICAgICAgICAgICJzZW5kIjogMCwKKyAgICAgICAgICAi
d2FpdCI6IDAsCisgICAgICAgICAgInJlY2VpdmUiOiAwCisgICAgICAgIH0KKyAgICAgIH0sCisg
ICAgICB7CisgICAgICAgICJwYWdlcmVmIjogInBhZ2VfMCIsCisgICAgICAgICJzdGFydGVkRGF0
ZVRpbWUiOiAiMjAxNy0xMC0yM1QwMTo1NTo1Mi42OTRaIiwKKyAgICAgICAgInRpbWUiOiA3MDAs
CisgICAgICAgICJyZXF1ZXN0IjogeworICAgICAgICAgICJtZXRob2QiOiAiR0VUIiwKKyAgICAg
ICAgICAidXJsIjogImh0dHBzOi8vZXhhbXBsZS5jb20vZmFrZS5qcyIsCisgICAgICAgICAgImh0
dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwKKyAgICAgICAgICAiY29va2llcyI6IFtdLAorICAgICAg
ICAgICJoZWFkZXJzIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAibmFtZSI6ICJU
ZXN0LVJlcXVlc3QtSGVhZGVyIiwKKyAgICAgICAgICAgICAgInZhbHVlIjogIlRlc3QgUmVxdWVz
dCBIZWFkZXIgVmFsdWUiCisgICAgICAgICAgICB9CisgICAgICAgICAgXSwKKyAgICAgICAgICAi
cXVlcnlTdHJpbmciOiBbXSwKKyAgICAgICAgICAiaGVhZGVyc1NpemUiOiAxMDAsCisgICAgICAg
ICAgImJvZHlTaXplIjogMAorICAgICAgICB9LAorICAgICAgICAicmVzcG9uc2UiOiB7CisgICAg
ICAgICAgInN0YXR1cyI6IDIwMCwKKyAgICAgICAgICAic3RhdHVzVGV4dCI6ICJPSyIsCisgICAg
ICAgICAgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwKKyAgICAgICAgICAiY29va2llcyI6IFtd
LAorICAgICAgICAgICJoZWFkZXJzIjogWworICAgICAgICAgICAgeworICAgICAgICAgICAgICAi
bmFtZSI6ICJUZXN0LVJlc3BvbnNlLUhlYWRlciIsCisgICAgICAgICAgICAgICJ2YWx1ZSI6ICJU
ZXN0IFJlc3BvbnNlIEhlYWRlciBWYWx1ZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBdLAor
ICAgICAgICAgICJjb250ZW50IjogeworICAgICAgICAgICAgInNpemUiOiAxMjM0LAorICAgICAg
ICAgICAgImNvbXByZXNzaW9uIjogNDM0LAorICAgICAgICAgICAgIm1pbWVUeXBlIjogInRleHQv
amF2YXNjcmlwdCIKKyAgICAgICAgICB9LAorICAgICAgICAgICJyZWRpcmVjdFVSTCI6ICIiLAor
ICAgICAgICAgICJoZWFkZXJzU2l6ZSI6IDIwMCwKKyAgICAgICAgICAiYm9keVNpemUiOiA4MDAs
CisgICAgICAgICAgIl90cmFuc2ZlclNpemUiOiAxMDAwCisgICAgICAgIH0sCisgICAgICAgICJj
YWNoZSI6IHt9LAorICAgICAgICAidGltaW5ncyI6IHsKKyAgICAgICAgICAiYmxvY2tlZCI6IDEw
MC4wMDAwMDAwMDAwMDAwOSwKKyAgICAgICAgICAiZG5zIjogOTkuOTk5OTk5OTk5OTk5ODcsCisg
ICAgICAgICAgImNvbm5lY3QiOiA5OS45OTk5OTk5OTk5OTk4NywKKyAgICAgICAgICAic3NsIjog
NDkuOTk5OTk5OTk5OTk5ODIsCisgICAgICAgICAgInNlbmQiOiAxMDAuMDAwMDAwMDAwMDAwMDks
CisgICAgICAgICAgIndhaXQiOiAxMDAuMDAwMDAwMDAwMDAwMDksCisgICAgICAgICAgInJlY2Vp
dmUiOiA5OS45OTk5OTk5OTk5OTk4NworICAgICAgICB9LAorICAgICAgICAic2VydmVySVBBZGRy
ZXNzIjogIjEyLjM0LjU2Ljc4IiwKKyAgICAgICAgImNvbm5lY3Rpb24iOiAiMSIsCisgICAgICAg
ICJfZmV0Y2hUeXBlIjogIk5ldHdvcmsgTG9hZCIKKyAgICAgIH0KKyAgICBdCisgIH0KK30KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9oYXIv
aGFyLWJhc2ljLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2hhci9oYXItYmFzaWMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uM2M4ZmVmOTY0ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2hhci9oYXItYmFzaWMuaHRtbApAQCAtMCwwICsxLDk2IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBmdW5jdGlvbiBIQVJKU09ORmlsdGVy
KGtleSwgdmFsdWUpIHsKKyAgICAgICAgLy8gRmlsdGVyIG91dCB0aGUgY3JlYXRvci52ZXJzaW9u
IC8gYnJvd3Nlci52ZXJzaW9uIGJ1dCBsZWF2ZSBhIHRvcCBsZXZlbCB2ZXJzaW9uLgorICAgICAg
ICBpZiAoKGtleSA9PT0gImNyZWF0b3IiIHx8IGtleSA9PT0gImJyb3dzZXIiKSAmJiB2YWx1ZS52
ZXJzaW9uKSB7CisgICAgICAgICAgICB2YWx1ZS52ZXJzaW9uID0gIjxmaWx0ZXJlZD4iOworICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWx1ZTsK
KyAgICB9CisKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUo
IkhBUi5CYXNpYyIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAi
SEFSLkJhc2ljLkVtcHR5IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgYmUgYWJsZSB0
byBnZW5lcmF0ZSBhIEhBUiB3aXRoIG5vIHJlc291cmNlcy4iLAorICAgICAgICBhc3luYyB0ZXN0
KCkgeworICAgICAgICAgICAgbGV0IGhhciA9IGF3YWl0IFdJLkhBUkJ1aWxkZXIuYnVpbGRBcmNo
aXZlKFtdKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuanNvbihoYXIsIEhBUkpTT05GaWx0
ZXIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJIQVIuQmFzaWMuRmFrZVJlc291cmNlcyIsCisgICAgICAgIGRlc2NyaXB0aW9u
OiAiU2hvdWxkIGJlIGFibGUgdG8gZ2VuZXJhdGUgYSBIQVIgd2l0aCByZXNvdXJjZXMuIiwKKyAg
ICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2
ZSBhbiBlYXNpZXIgd2F5IHRvIGNvbnN0cnVjdCBhIFJlc291cmNlIHdpdGggbW9jayBkYXRhLgor
ICAgICAgICAgICAgY29uc3QgdXJsID0gImh0dHBzOi8vZXhhbXBsZS5jb20vZmFrZS5qcyI7Cisg
ICAgICAgICAgICBjb25zdCBtaW1lVHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiOworICAgICAgICAg
ICAgY29uc3QgdHlwZSA9IFdJLlJlc291cmNlLlR5cGUuU2NyaXB0OworICAgICAgICAgICAgY29u
c3QgbG9hZGVySWRlbnRpZmllciA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIGNvbnN0IHRhcmdl
dElkID0gdW5kZWZpbmVkOworICAgICAgICAgICAgY29uc3QgcmVxdWVzdElkZW50aWZpZXIgPSB1
bmRlZmluZWQ7CisgICAgICAgICAgICBjb25zdCByZXF1ZXN0TWV0aG9kID0gIkdFVCI7CisgICAg
ICAgICAgICBjb25zdCByZXF1ZXN0SGVhZGVycyA9IHsiVGVzdC1SZXF1ZXN0LUhlYWRlciI6ICJU
ZXN0IFJlcXVlc3QgSGVhZGVyIFZhbHVlIn07CisgICAgICAgICAgICBjb25zdCByZXNwb25zZUhl
YWRlcnMgPSB7IlRlc3QtUmVzcG9uc2UtSGVhZGVyIjogIlRlc3QgUmVzcG9uc2UgSGVhZGVyIFZh
bHVlIn07CisgICAgICAgICAgICBjb25zdCBzdGF0dXNDb2RlID0gMjAwOworICAgICAgICAgICAg
Y29uc3Qgc3RhdHVzVGV4dCA9ICJPSyI7CisgICAgICAgICAgICBjb25zdCBzb3VyY2UgPSAibmV0
d29yayI7CisgICAgICAgICAgICBjb25zdCByZXF1ZXN0RGF0YSA9IG51bGw7CisgICAgICAgICAg
ICBjb25zdCByZXF1ZXN0U2VudFdhbGx0aW1lID0gMTUwODcyMzc1MjY5NCAvIDEwMDA7IC8vIFN1
biBPY3QgMjIgMjAxNyAxODo1NTo1MiBHTVQtMDcwMCwgd2hlbiB0aGlzIHRlc3Qgd2FzIHdyaXR0
ZW4uCisgICAgICAgICAgICBjb25zdCBpbml0aWF0b3JTb3VyY2VDb2RlTG9jYXRpb24gPSBudWxs
OworICAgICAgICAgICAgY29uc3QgdGltZXN0YW1wID0gdW5kZWZpbmVkOworICAgICAgICAgICAg
Y29uc3Qgc2l6ZSA9IDEyMzQ7CisgICAgICAgICAgICBjb25zdCB0aW1pbmdEYXRhID0geworICAg
ICAgICAgICAgICAgIHN0YXJ0VGltZTogMSwKKyAgICAgICAgICAgICAgICBkb21haW5Mb29rdXBT
dGFydDogMTAwLAorICAgICAgICAgICAgICAgIGRvbWFpbkxvb2t1cEVuZDogMjAwLAorICAgICAg
ICAgICAgICAgIGNvbm5lY3RTdGFydDogMzAwLAorICAgICAgICAgICAgICAgIGNvbm5lY3RFbmQ6
IDQwMCwKKyAgICAgICAgICAgICAgICBzZWN1cmVDb25uZWN0aW9uU3RhcnQ6IDM1MCwKKyAgICAg
ICAgICAgICAgICByZXF1ZXN0U3RhcnQ6IDUwMCwKKyAgICAgICAgICAgICAgICByZXNwb25zZVN0
YXJ0OiA2MDAsCisgICAgICAgICAgICAgICAgcmVzcG9uc2VFbmQ6IDcwMCwKKyAgICAgICAgICAg
IH07CisgICAgICAgICAgICBjb25zdCBtZXRyaWNzID0geworICAgICAgICAgICAgICAgIHByb3Rv
Y29sOiAiaHR0cC8xLjEiLAorICAgICAgICAgICAgICAgIHByaW9yaXR5OiAibWVkaXVtIiwKKyAg
ICAgICAgICAgICAgICByZW1vdGVBZGRyZXNzOiAiMTIuMzQuNTYuNzg6NDQzIiwKKyAgICAgICAg
ICAgICAgICBjb25uZWN0aW9uSWRlbnRpZmllcjogMTIzLAorICAgICAgICAgICAgICAgIHJlcXVl
c3RIZWFkZXJCeXRlc1NlbnQ6IDEwMCwKKyAgICAgICAgICAgICAgICByZXF1ZXN0Qm9keUJ5dGVz
U2VudDogMCwKKyAgICAgICAgICAgICAgICByZXNwb25zZUhlYWRlckJ5dGVzUmVjZWl2ZWQ6IDIw
MCwKKyAgICAgICAgICAgICAgICByZXNwb25zZUJvZHlCeXRlc1JlY2VpdmVkOiA4MDAsCisgICAg
ICAgICAgICAgICAgcmVzcG9uc2VCb2R5RGVjb2RlZFNpemU6IDEyMzQsCisgICAgICAgICAgICAg
ICAgcmVxdWVzdEhlYWRlcnMsCisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBsZXQgYmFy
ZVJlc291cmNlID0gbmV3IFdJLlJlc291cmNlKHVybCwgbWltZVR5cGUsIHR5cGUsIGxvYWRlcklk
ZW50aWZpZXIsIHRhcmdldElkLCByZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdE1ldGhvZCwgcmVx
dWVzdEhlYWRlcnMsIHJlcXVlc3REYXRhLCB0aW1lc3RhbXAsIHJlcXVlc3RTZW50V2FsbHRpbWUs
IGluaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbiwgdGltZXN0YW1wKTsKKyAgICAgICAgICAgIGJh
cmVSZXNvdXJjZS5tYXJrQXNGaW5pc2hlZCh1bmRlZmluZWQpOworCisgICAgICAgICAgICBsZXQg
ZnVsbFJlc291cmNlID0gbmV3IFdJLlJlc291cmNlKHVybCwgbWltZVR5cGUsIHR5cGUsIGxvYWRl
cklkZW50aWZpZXIsIHRhcmdldElkLCByZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdE1ldGhvZCwg
cmVxdWVzdEhlYWRlcnMsIHJlcXVlc3REYXRhLCB0aW1lc3RhbXAsIHJlcXVlc3RTZW50V2FsbHRp
bWUsIGluaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbiwgdGltZXN0YW1wKTsKKyAgICAgICAgICAg
IGZ1bGxSZXNvdXJjZS51cGRhdGVGb3JSZXNwb25zZSh1cmwsIG1pbWVUeXBlLCB0eXBlLCByZXNw
b25zZUhlYWRlcnMsIHN0YXR1c0NvZGUsIHN0YXR1c1RleHQsIHRpbWVzdGFtcCwgdGltaW5nRGF0
YSwgc291cmNlKTsKKyAgICAgICAgICAgIGZ1bGxSZXNvdXJjZS5pbmNyZWFzZVNpemUoc2l6ZSk7
CisgICAgICAgICAgICBmdWxsUmVzb3VyY2UudXBkYXRlV2l0aE1ldHJpY3MobWV0cmljcyk7Cisg
ICAgICAgICAgICBmdWxsUmVzb3VyY2UubWFya0FzRmluaXNoZWQoMS43KTsKKworICAgICAgICAg
ICAgbGV0IGhhciA9IGF3YWl0IFdJLkhBUkJ1aWxkZXIuYnVpbGRBcmNoaXZlKFtiYXJlUmVzb3Vy
Y2UsIGZ1bGxSZXNvdXJjZV0pOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5qc29uKGhhciwg
SEFSSlNPTkZpbHRlcik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RD
YXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+Cis8cD5CYXNpYyB0ZXN0cyBmb3IgSEFSLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaGFy
L2hhci1wYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvaGFyL2hhci1wYWdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uNzU5ZTZhYmE2NjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2hhci9oYXItcGFnZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMTYgQEAKK0hBUiBQYWdlIFRlc3QuCisKKworPT0gUnVubmluZyB0ZXN0
IHN1aXRlOiBIQVIuUGFnZQorLS0gUnVubmluZyB0ZXN0IGNhc2U6IEhBUi5CYXNpYy5QYWdlCit7
CisgICJsb2ciOiB7CisgICAgInZlcnNpb24iOiAiMS4yIiwKKyAgICAiY3JlYXRvciI6IHsKKyAg
ICAgICJuYW1lIjogIldlYktpdCBXZWIgSW5zcGVjdG9yIiwKKyAgICAgICJ2ZXJzaW9uIjogIjxm
aWx0ZXJlZD4iCisgICAgfSwKKyAgICAicGFnZXMiOiBbCisgICAgICB7CisgICAgICAgICJzdGFy
dGVkRGF0ZVRpbWUiOiAiPGZpbHRlcmVkPiIsCisgICAgICAgICJpZCI6ICJwYWdlXzAiLAorICAg
ICAgICAidGl0bGUiOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL2hh
ci9oYXItcGFnZS5odG1sIiwKKyAgICAgICAgInBhZ2VUaW1pbmdzIjogeworICAgICAgICAgICJv
bkNvbnRlbnRMb2FkIjogIjxmaWx0ZXJlZD4iLAorICAgICAgICAgICJvbkxvYWQiOiAiPGZpbHRl
cmVkPiIKKyAgICAgICAgfQorICAgICAgfQorICAgIF0sCisgICAgImVudHJpZXMiOiBbCisgICAg
ICB7CisgICAgICAgICJwYWdlcmVmIjogInBhZ2VfMCIsCisgICAgICAgICJzdGFydGVkRGF0ZVRp
bWUiOiAiPGZpbHRlcmVkPiIsCisgICAgICAgICJ0aW1lIjogIjxmaWx0ZXJlZD4iLAorICAgICAg
ICAicmVxdWVzdCI6IHsKKyAgICAgICAgICAibWV0aG9kIjogIkdFVCIsCisgICAgICAgICAgInVy
bCI6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvaGFyL2hhci1wYWdl
Lmh0bWwiLAorICAgICAgICAgICJodHRwVmVyc2lvbiI6ICJIVFRQLzEuMSIsCisgICAgICAgICAg
ImNvb2tpZXMiOiBbXSwKKyAgICAgICAgICAiaGVhZGVycyI6ICI8ZmlsdGVyZWQ+IiwKKyAgICAg
ICAgICAicXVlcnlTdHJpbmciOiBbXSwKKyAgICAgICAgICAiaGVhZGVyc1NpemUiOiAiPGZpbHRl
cmVkPiIsCisgICAgICAgICAgImJvZHlTaXplIjogIjxmaWx0ZXJlZD4iCisgICAgICAgIH0sCisg
ICAgICAgICJyZXNwb25zZSI6IHsKKyAgICAgICAgICAic3RhdHVzIjogMjAwLAorICAgICAgICAg
ICJzdGF0dXNUZXh0IjogIk9LIiwKKyAgICAgICAgICAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEi
LAorICAgICAgICAgICJjb29raWVzIjogW10sCisgICAgICAgICAgImhlYWRlcnMiOiAiPGZpbHRl
cmVkPiIsCisgICAgICAgICAgImNvbnRlbnQiOiB7CisgICAgICAgICAgICAic2l6ZSI6IDI2NTgs
CisgICAgICAgICAgICAiY29tcHJlc3Npb24iOiAwLAorICAgICAgICAgICAgIm1pbWVUeXBlIjog
InRleHQvaHRtbCIsCisgICAgICAgICAgICAidGV4dCI6ICI8IURPQ1RZUEUgaHRtbD5cbjxodG1s
PlxuPGhlYWQ+XG48bWV0YSBjaGFyc2V0PVwidXRmLThcIj5cbjxzY3JpcHQgc3JjPVwiLi4vLi4v
cmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzXCI+PC9zY3JpcHQ+XG48c2NyaXB0PlxuZnVuY3Rp
b24gdGVzdCgpXG57XG4gICAgZnVuY3Rpb24gSEFSSlNPTkZpbHRlcihrZXksIHZhbHVlKSB7XG4g
ICAgICAgIC8vIEZpbHRlciBvdXQgdGhlIGNyZWF0b3IudmVyc2lvbiAvIGJyb3dzZXIudmVyc2lv
biBidXQgbGVhdmUgYSB0b3AgbGV2ZWwgdmVyc2lvbi5cbiAgICAgICAgaWYgKChrZXkgPT09IFwi
Y3JlYXRvclwiIHx8IGtleSA9PT0gXCJicm93c2VyXCIpICYmIHZhbHVlLnZlcnNpb24pIHtcbiAg
ICAgICAgICAgIHZhbHVlLnZlcnNpb24gPSBcIjxmaWx0ZXJlZD5cIjtcbiAgICAgICAgICAgIHJl
dHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhlYWRlcnMgaW5jbHVkZSBkeW5h
bWljIGRhdGEuXG4gICAgICAgIGlmIChrZXkgPT09IFwiaGVhZGVyc1wiKVxuICAgICAgICAgICAg
cmV0dXJuIFwiPGZpbHRlcmVkPlwiO1xuXG4gICAgICAgIC8vIERhdGVzIHdvdWxkIGNoYW5nZSBi
ZXR3ZWVuIHRlc3QgcnVucy5cbiAgICAgICAgaWYgKGtleS5lbmRzV2l0aChcIkRhdGVUaW1lXCIp
KVxuICAgICAgICAgICAgcmV0dXJuIFwiPGZpbHRlcmVkPlwiO1xuXG4gICAgICAgIC8vIFNpemUg
ZGF0YSBtYXkgb3IgbWF5IG5vdCBiZSBhdmFpbGFibGUsIGJ1dCBjb3VsZCBjaGFuZ2UgYmFzZWQg
b24gaGVhZGVycy5cbiAgICAgICAgaWYgKGtleS5lbmRzV2l0aChcIlNpemVcIikpXG4gICAgICAg
ICAgICByZXR1cm4gXCI8ZmlsdGVyZWQ+XCI7XG5cbiAgICAgICAgLy8gQ29ubmVjdGlvbiBpZGVu
dGlmaWVyIGNvdWxkIGJlIGRpZmZlcmVudC5cbiAgICAgICAgaWYgKGtleSA9PT0gXCJjb25uZWN0
aW9uXCIpXG4gICAgICAgICAgICByZXR1cm4gXCI8ZmlsdGVyZWQ+XCI7XG5cbiAgICAgICAgLy8g
Q2FjaGUgbWF5IG9yIG1heSBub3QgaGF2ZSBiZWVuIHVzZWQuXG4gICAgICAgIGlmIChrZXkgPT09
IFwiX2ZldGNoVHlwZVwiKVxuICAgICAgICAgICAgcmV0dXJuIFwiPGZpbHRlcmVkPlwiO1xuXG4g
ICAgICAgIC8vIFNpbmNlIGNhY2hlIG1heSBvciBtYXkgbm90IGJlIHVzZWQsIHRpbWluZyBkYXRh
IG1heSBiZSB2YXJpYWJsZS5cbiAgICAgICAgLy8gTk9URTogU1NMIHNob3VsZCBhbHdheXMgYmUg
LTEgZm9yIHRoaXMgdGVzdCBjYXNlLlxuICAgICAgICBpZiAoa2V5ID09PSBcInRpbWVcIilcbiAg
ICAgICAgICAgIHJldHVybiBcIjxmaWx0ZXJlZD5cIjtcbiAgICAgICAgaWYgKGtleSA9PT0gXCJ0
aW1pbmdzXCIpIHtcbiAgICAgICAgICAgIHZhbHVlLmJsb2NrZWQgPSBcIjxmaWx0ZXJlZD5cIjtc
biAgICAgICAgICAgIHZhbHVlLmRucyA9IFwiPGZpbHRlcmVkPlwiO1xuICAgICAgICAgICAgdmFs
dWUuY29ubmVjdCA9IFwiPGZpbHRlcmVkPlwiO1xuICAgICAgICAgICAgdmFsdWUuc2VuZCA9IFwi
PGZpbHRlcmVkPlwiO1xuICAgICAgICAgICAgdmFsdWUud2FpdCA9IFwiPGZpbHRlcmVkPlwiO1xu
ICAgICAgICAgICAgdmFsdWUucmVjZWl2ZSA9IFwiPGZpbHRlcmVkPlwiO1xuICAgICAgICB9XG5c
biAgICAgICAgLy8gUGFnZVRpbWluZ3MgY2FuIGJlIHZhcmlhYmxlLlxuICAgICAgICBpZiAoa2V5
ID09PSBcIm9uQ29udGVudExvYWRcIiB8fCBrZXkgPT09IFwib25Mb2FkXCIpXG4gICAgICAgICAg
ICByZXR1cm4gXCI8ZmlsdGVyZWQ+XCI7XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1c
blxuICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZShcIkhBUi5Q
YWdlXCIpO1xuXG4gICAgc3VpdGUuYWRkVGVzdENhc2Uoe1xuICAgICAgICBuYW1lOiBcIkhBUi5C
YXNpYy5QYWdlXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlNob3VsZCBiZSBhYmxlIHRvIGdl
bmVyYXRlIGEgSEFSIHdpdGggYWxsIG9mIHRoaXMgdGVzdCBwYWdlJ3MgcmVzb3VyY2VzLlwiLFxu
ICAgICAgICBhc3luYyB0ZXN0KCkge1xuICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQ
YWdlKHtpZ25vcmVDYWNoZTogdHJ1ZX0pO1xuICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVz
dC5hd2FpdEV2ZW50KFwiTG9hZENvbXBsZXRlXCIpO1xuXG4gICAgICAgICAgICBsZXQgcmVzb3Vy
Y2VzID0gW107XG4gICAgICAgICAgICByZXNvdXJjZXMucHVzaChXSS5mcmFtZVJlc291cmNlTWFu
YWdlci5tYWluRnJhbWUubWFpblJlc291cmNlKTtcbiAgICAgICAgICAgIGZvciAobGV0IHJlc291
cmNlIG9mIFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5yZXNvdXJjZUNvbGxlY3Rp
b24uaXRlbXMpXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzLnB1c2gocmVzb3VyY2UpO1xuXG4g
ICAgICAgICAgICBsZXQgaGFyID0gYXdhaXQgV0kuSEFSQnVpbGRlci5idWlsZEFyY2hpdmUocmVz
b3VyY2VzKTtcbiAgICAgICAgICAgIEluc3BlY3RvclRlc3QuanNvbihoYXIsIEhBUkpTT05GaWx0
ZXIpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5p
c2goKTtcbn1cbjwvc2NyaXB0PlxuPC9oZWFkPlxuPGJvZHkgb25sb2FkPVwicnVuVGVzdCgpXCI+
XG48cD5IQVIgUGFnZSBUZXN0LjwvcD5cbjxzY3JpcHQ+XG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cihcImxvYWRcIiwgKCkgPT4ge1xuICAgIFRlc3RQYWdlLmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5k
KFwiTG9hZENvbXBsZXRlXCIpO1xufSk7XG48L3NjcmlwdD5cbjwvYm9keT5cbjwvaHRtbD5cbiIK
KyAgICAgICAgICB9LAorICAgICAgICAgICJyZWRpcmVjdFVSTCI6ICIiLAorICAgICAgICAgICJo
ZWFkZXJzU2l6ZSI6ICI8ZmlsdGVyZWQ+IiwKKyAgICAgICAgICAiYm9keVNpemUiOiAiPGZpbHRl
cmVkPiIsCisgICAgICAgICAgIl90cmFuc2ZlclNpemUiOiAiPGZpbHRlcmVkPiIKKyAgICAgICAg
fSwKKyAgICAgICAgImNhY2hlIjoge30sCisgICAgICAgICJ0aW1pbmdzIjogeworICAgICAgICAg
ICJibG9ja2VkIjogIjxmaWx0ZXJlZD4iLAorICAgICAgICAgICJkbnMiOiAiPGZpbHRlcmVkPiIs
CisgICAgICAgICAgImNvbm5lY3QiOiAiPGZpbHRlcmVkPiIsCisgICAgICAgICAgInNzbCI6IC0x
LAorICAgICAgICAgICJzZW5kIjogIjxmaWx0ZXJlZD4iLAorICAgICAgICAgICJ3YWl0IjogIjxm
aWx0ZXJlZD4iLAorICAgICAgICAgICJyZWNlaXZlIjogIjxmaWx0ZXJlZD4iCisgICAgICAgIH0s
CisgICAgICAgICJzZXJ2ZXJJUEFkZHJlc3MiOiAiMTI3LjAuMC4xIiwKKyAgICAgICAgImNvbm5l
Y3Rpb24iOiAiPGZpbHRlcmVkPiIsCisgICAgICAgICJfZmV0Y2hUeXBlIjogIjxmaWx0ZXJlZD4i
CisgICAgICB9LAorICAgICAgeworICAgICAgICAicGFnZXJlZiI6ICJwYWdlXzAiLAorICAgICAg
ICAic3RhcnRlZERhdGVUaW1lIjogIjxmaWx0ZXJlZD4iLAorICAgICAgICAidGltZSI6ICI8Zmls
dGVyZWQ+IiwKKyAgICAgICAgInJlcXVlc3QiOiB7CisgICAgICAgICAgIm1ldGhvZCI6ICJHRVQi
LAorICAgICAgICAgICJ1cmwiOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9yZXNv
dXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiLAorICAgICAgICAgICJodHRwVmVyc2lvbiI6ICIiLAor
ICAgICAgICAgICJjb29raWVzIjogW10sCisgICAgICAgICAgImhlYWRlcnMiOiAiPGZpbHRlcmVk
PiIsCisgICAgICAgICAgInF1ZXJ5U3RyaW5nIjogW10sCisgICAgICAgICAgImhlYWRlcnNTaXpl
IjogIjxmaWx0ZXJlZD4iLAorICAgICAgICAgICJib2R5U2l6ZSI6ICI8ZmlsdGVyZWQ+IgorICAg
ICAgICB9LAorICAgICAgICAicmVzcG9uc2UiOiB7CisgICAgICAgICAgInN0YXR1cyI6IDIwMCwK
KyAgICAgICAgICAic3RhdHVzVGV4dCI6ICJPSyIsCisgICAgICAgICAgImh0dHBWZXJzaW9uIjog
IiIsCisgICAgICAgICAgImNvb2tpZXMiOiBbXSwKKyAgICAgICAgICAiaGVhZGVycyI6ICI8Zmls
dGVyZWQ+IiwKKyAgICAgICAgICAiY29udGVudCI6IHsKKyAgICAgICAgICAgICJzaXplIjogMCwK
KyAgICAgICAgICAgICJjb21wcmVzc2lvbiI6IDAsCisgICAgICAgICAgICAibWltZVR5cGUiOiAi
YXBwbGljYXRpb24veC1qYXZhc2NyaXB0IiwKKyAgICAgICAgICAgICJ0ZXh0IjogIi8qXG4gKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4g
KlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0XG4gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnNcbiAqIGFyZSBtZXQ6XG4gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodFxu
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLlxuICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uXG4gKlxuICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTXG4gKiBJU1wiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEXG4gKiBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEFcbiAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVFxuICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLFxuICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVFxuICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsXG4gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTllcbiAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRVxu
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS5cbiAqL1xuXG4vLyBUaGlzIG5hbWVzcGFjZSBpcyBpbmplY3RlZCBpbnRv
IGV2ZXJ5IHRlc3QgcGFnZS4gSXRzIGZ1bmN0aW9ucyBhcmUgaW52b2tlZCBieVxuLy8gSW5zcGVj
dG9yVGVzdCBtZXRob2RzIG9uIHRoZSBpbnNwZWN0b3IgcGFnZSB2aWEgYSBUZXN0SGFybmVzcyBz
dWJjbGFzcy5cblRlc3RQYWdlID0ge307XG5UZXN0UGFnZS5faW5pdGlhbGl6ZXJzID0gW107XG5c
bi8vIEhlbHBlciBzY3JpcHRzIGxpa2UgYGRlYnVnZ2VyLXRlc3QuanNgIG11c3QgcmVnaXN0ZXIg
dGhlaXIgaW5pdGlhbGl6YXRpb25cbi8vIGZ1bmN0aW9uIHdpdGggdGhpcyBtZXRob2Qgc28gaXQg
d2lsbCBiZSBtYXJzaGFsbGVkIHRvIHRoZSBpbnNwZWN0b3IgcGFnZS5cblRlc3RQYWdlLnJlZ2lz
dGVySW5pdGlhbGl6ZXIgPSBmdW5jdGlvbihpbml0aWFsaXplcilcbntcbiAgICBpZiAodHlwZW9m
IGluaXRpYWxpemVyID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVy
cy5wdXNoKGluaXRpYWxpemVyLnRvU3RyaW5nKCkpO1xufVxuXG4vLyBUaGlzIGZ1bmN0aW9uIGlz
IGNhbGxlZCBieSB0aGUgdGVzdCBkb2N1bWVudCdzIGJvZHkgb25sb2FkIGhhbmRsZXIuXG5cbi8v
IEl0IGluaXRpYWxpemVzIHRoZSBpbnNwZWN0b3IgYW5kIGxvYWRzIGFueSBgKi10ZXN0LmpzYCBo
ZWxwZXIgc2NyaXB0c1xuLy8gaW50byB0aGUgaW5zcGVjdG9yIHBhZ2UgY29udGV4dC5cbmZ1bmN0
aW9uIHJ1blRlc3QoKVxue1xuICAgIC8vIERvbid0IHRyeSB0byB1c2UgdGVzdFJ1bm5lciBpZiBy
dW5uaW5nIHRocm91Z2ggdGhlIGJyb3dzZXIuXG4gICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcilc
biAgICAgICAgcmV0dXJuO1xuXG4gICAgLy8gU2V0IHVwIHRoZSB0ZXN0IHBhZ2UgYmVmb3JlIHRo
ZSBsb2FkIGV2ZW50IGZpcmVzLlxuICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpO1xuICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpO1xuXG4gICAgd2luZG93LmludGVybmFscy5zZXRJbnNw
ZWN0b3JJc1VuZGVyVGVzdCh0cnVlKTtcbiAgICB0ZXN0UnVubmVyLnNob3dXZWJJbnNwZWN0b3Io
KTtcblxuICAgIGxldCB0ZXN0RnVuY3Rpb24gPSB3aW5kb3cudGVzdDtcbiAgICBpZiAodHlwZW9m
IHRlc3RGdW5jdGlvbiAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGFsZXJ0KFwiRmFpbGVk
IHRvIHNlbmQgdGVzdCgpIGJlY2F1c2UgaXQgaXMgbm90IGEgZnVuY3Rpb24uXCIpO1xuICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBydW5Jbml0
aWFsaXphdGlvbk1ldGhvZHNJbkZyb250ZW5kKGluaXRpYWxpemVyc0FycmF5KVxuICAgIHtcbiAg
ICAgICAgSW5zcGVjdG9yVGVzdC50ZXN0UGFnZURpZExvYWQoKTtcblxuICAgICAgICAvLyBJZiB0
aGUgdGVzdCBwYWdlIHJlbG9hZGVkIGJ1dCB3ZSBzdGFydGVkIHJ1bm5pbmcgdGhlIHRlc3QgaW4g
YSBwcmV2aW91c1xuICAgICAgICAvLyBuYXZpZ2F0aW9uLCB0aGVuIGRvbid0IGluaXRpYWxpemUg
dGhlIGluc3BlY3RvciBmcm9udGVuZCBhZ2Fpbi5cbiAgICAgICAgaWYgKEluc3BlY3RvclRlc3Qu
ZGlkSW5qZWN0VGVzdENvZGUpXG4gICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgZm9yIChs
ZXQgaW5pdGlhbGl6ZXIgb2YgaW5pdGlhbGl6ZXJzQXJyYXkpIHtcbiAgICAgICAgICAgIHRyeSB7
XG4gICAgICAgICAgICAgICAgaW5pdGlhbGl6ZXIoKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUp
IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXhjZXB0aW9uIGluIHRlc3QgaW5p
dGlhbGl6YXRpb246IFwiICsgZSwgZS5zdGFjayB8fCBcIihubyBzdGFjayB0cmFjZSlcIik7XG4g
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTtcbiAgICAgICAgICAg
IH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJ1blRlc3RNZXRob2RJbkZyb250
ZW5kKHRlc3RGdW5jdGlvbilcbiAgICB7XG4gICAgICAgIGlmIChJbnNwZWN0b3JUZXN0LmRpZElu
amVjdFRlc3RDb2RlKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIEluc3BlY3RvclRl
c3QuZGlkSW5qZWN0VGVzdENvZGUgPSB0cnVlO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAg
ICB0ZXN0RnVuY3Rpb24oKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgLy8g
VXNpbmcgdGhpcyBpbnN0ZWFkIG9mIHdpbmRvdy5vbmVycm9yIHdpbGwgcHJlc2VydmUgdGhlIHN0
YWNrIHRyYWNlLlxuICAgICAgICAgICAgZS5jb2RlID0gdGVzdEZ1bmN0aW9uLnRvU3RyaW5nKCk7
XG4gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnJlcG9ydFVuY2F1Z2h0RXhjZXB0aW9uKGUpO1xu
ICAgICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGluaXRpYWxpemF0aW9uQ29kZVN0cmluZyA9IGAo
JHtydW5Jbml0aWFsaXphdGlvbk1ldGhvZHNJbkZyb250ZW5kLnRvU3RyaW5nKCl9KShbJHtUZXN0
UGFnZS5faW5pdGlhbGl6ZXJzfV0pO2A7XG4gICAgbGV0IHRlc3RGdW5jdGlvbkNvZGVTdHJpbmcg
PSBgKCR7cnVuVGVzdE1ldGhvZEluRnJvbnRlbmQudG9TdHJpbmcoKX0pKCR7dGVzdEZ1bmN0aW9u
LnRvU3RyaW5nKCl9KTtgO1xuXG4gICAgdGVzdFJ1bm5lci5ldmFsdWF0ZUluV2ViSW5zcGVjdG9y
KGluaXRpYWxpemF0aW9uQ29kZVN0cmluZyk7XG4gICAgdGVzdFJ1bm5lci5ldmFsdWF0ZUluV2Vi
SW5zcGVjdG9yKHRlc3RGdW5jdGlvbkNvZGVTdHJpbmcpO1xufVxuXG5mdW5jdGlvbiBydW5UZXN0
SFRUUFMoKVxue1xuICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikge1xuICAgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTtcbiAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7XG4g
ICAgfVxuXG4gICAgbGV0IHVybCA9IG5ldyBVUkwoZG9jdW1lbnQuVVJMKTtcbiAgICBpZiAodXJs
LnByb3RvY29sICE9PSBcImh0dHBzOlwiKSB7XG4gICAgICAgIHVybC5wcm90b2NvbCA9IFwiaHR0
cHM6XCI7XG4gICAgICAgIHVybC5wb3J0ID0gXCI4NDQzXCI7XG4gICAgICAgIHdpbmRvdy5sb2Nh
dGlvbi5ocmVmID0gdXJsLnRvU3RyaW5nKCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAg
ICBydW5UZXN0KCk7XG59XG5cblRlc3RQYWdlLmNvbXBsZXRlVGVzdCA9IGZ1bmN0aW9uKClcbntc
biAgICAvLyBEb24ndCB0cnkgdG8gdXNlIHRlc3RSdW5uZXIgaWYgcnVubmluZyB0aHJvdWdoIHRo
ZSBicm93c2VyLlxuICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpXG4gICAgICAgIHJldHVybjtc
blxuICAgIC8vIENsb3NlIGluc3BlY3RvciBhc3luY2hyb3VzbHkgaW4gY2FzZSB3ZSB3YW50IHRv
IHRlc3QgdGVhci1kb3duIGJlaGF2aW9yLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAg
ICB0ZXN0UnVubmVyLmNsb3NlV2ViSW5zcGVjdG9yKCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkg
PT4geyB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsgfSwgMCk7XG4gICAgfSwgMCk7XG59XG5cbi8v
IExvZ3MgbWVzc2FnZSB0byB1bmJ1ZmZlcmVkIHByb2Nlc3Mgc3Rkb3V0LCBhdm9pZGluZyB0aW1l
b3V0cy5cbi8vIG9ubHkgYmUgdXNlZCB0byBkZWJ1ZyB0ZXN0cyBhbmQgbm90IHRvIHByb2R1Y2Ug
bm9ybWFsIHRlc3Qgb3V0cHV0LlxuVGVzdFBhZ2UuZGVidWdMb2cgPSBmdW5jdGlvbihtZXNzYWdl
KVxue1xuICAgIHdpbmRvdy5hbGVydChtZXNzYWdlKTtcbn1cblxuLy8gQWRkIGFuZCBjbGVhciB0
ZXN0IG91dHB1dCBmcm9tIHRoZSByZXN1bHRzIHdpbmRvdy5cblRlc3RQYWdlLmFkZFJlc3VsdCA9
IGZ1bmN0aW9uKHRleHQpXG57XG4gICAgLy8gRm9yIGVhcmx5IGVycm9ycyB0cmlnZ2VyZWQgd2hl
biBsb2FkaW5nIHRoZSB0ZXN0IHBhZ2UsIHdyaXRlIHRvIHN0ZGVyci5cbiAgICBpZiAoIWRvY3Vt
ZW50LmJvZHkpIHtcbiAgICAgICAgdGhpcy5kZWJ1Z0xvZyh0ZXh0KTtcbiAgICAgICAgdGhpcy5j
b21wbGV0ZVRlc3QoKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX3Jlc3VsdEVsZW1lbnQpIHtc
biAgICAgICAgdGhpcy5fcmVzdWx0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJw
cmVcIik7XG4gICAgICAgIHRoaXMuX3Jlc3VsdEVsZW1lbnQuaWQgPSBcIm91dHB1dFwiO1xuICAg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuX3Jlc3VsdEVsZW1lbnQpO1xuICAg
IH1cblxuICAgIHRoaXMuX3Jlc3VsdEVsZW1lbnQuYXBwZW5kKHRleHQsIGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoXCJiclwiKSk7XG59XG5cblRlc3RQYWdlLmxvZyA9IFRlc3RQYWdlLmFkZFJlc3Vs
dDtcblxuVGVzdFBhZ2UuZGlzcGF0Y2hFdmVudFRvRnJvbnRlbmQgPSBmdW5jdGlvbihldmVudE5h
bWUsIGRhdGEpXG57XG4gICAgbGV0IGRpc3BhdGNoRXZlbnRDb2RlU3RyaW5nID0gYEluc3BlY3Rv
clRlc3QuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCR7SlNPTi5zdHJpbmdpZnkoZXZlbnROYW1l
KX0sICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9KTtgO1xuICAgIHRlc3RSdW5uZXIuZXZhbHVhdGVJ
bldlYkluc3BlY3RvcihkaXNwYXRjaEV2ZW50Q29kZVN0cmluZyk7XG59O1xuXG5UZXN0UGFnZS5h
bGxvd1VuY2F1Z2h0RXhjZXB0aW9ucyA9IGZhbHNlO1xuVGVzdFBhZ2UubmVlZFRvU2FuaXRpemVV
bmNhdWdodEV4Y2VwdGlvblVSTHMgPSBmYWxzZTtcblxuVGVzdFBhZ2UucmVwb3J0VW5jYXVnaHRF
eGNlcHRpb24gPSBmdW5jdGlvbihtZXNzYWdlLCB1cmwsIGxpbmVOdW1iZXIpXG57XG4gICAgaWYg
KFRlc3RQYWdlLm5lZWRUb1Nhbml0aXplVW5jYXVnaHRFeGNlcHRpb25VUkxzKSB7XG4gICAgICAg
IGlmICh0eXBlb2YgdXJsID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBsZXQgbGFzdFNs
YXNoID0gdXJsLmxhc3RJbmRleE9mKFwiL1wiKTtcbiAgICAgICAgICAgIGxldCBsYXN0QmFja1Ns
YXNoID0gdXJsLmxhc3RJbmRleE9mKFwiXFxcXFwiKTtcbiAgICAgICAgICAgIGxldCBsYXN0UGF0
aFNlcGFyYXRvciA9IE1hdGgubWF4KGxhc3RTbGFzaCwgbGFzdEJhY2tTbGFzaCk7XG4gICAgICAg
ICAgICBpZiAobGFzdFBhdGhTZXBhcmF0b3IgPiAwKVxuICAgICAgICAgICAgICAgIHVybCA9IHVy
bC5zdWJzdHIobGFzdFBhdGhTZXBhcmF0b3IgKyAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAg
IGxldCByZXN1bHQgPSBgVW5jYXVnaHQgZXhjZXB0aW9uIGluIHRlc3QgcGFnZTogJHttZXNzYWdl
fSBbJHt1cmx9OiR7bGluZU51bWJlcn1dYDtcbiAgICBUZXN0UGFnZS5hZGRSZXN1bHQocmVzdWx0
KTtcblxuICAgIGlmICghVGVzdFBhZ2UuYWxsb3dVbmNhdWdodEV4Y2VwdGlvbnMpXG4gICAgICAg
IFRlc3RQYWdlLmNvbXBsZXRlVGVzdCgpO1xufVxuXG4vLyBDYXRjaCBzeW50YXggZXJyb3JzLCB0
eXBlIGVycm9ycywgYW5kIG90aGVyIGV4Y2VwdGlvbnMuIFJ1biB0aGlzIGJlZm9yZSBsb2FkaW5n
IG90aGVyIGZpbGVzLlxud2luZG93Lm9uZXJyb3IgPSBUZXN0UGFnZS5yZXBvcnRVbmNhdWdodEV4
Y2VwdGlvbi5iaW5kKFRlc3RQYWdlKTtcbiIKKyAgICAgICAgICB9LAorICAgICAgICAgICJyZWRp
cmVjdFVSTCI6ICIiLAorICAgICAgICAgICJoZWFkZXJzU2l6ZSI6ICI8ZmlsdGVyZWQ+IiwKKyAg
ICAgICAgICAiYm9keVNpemUiOiAiPGZpbHRlcmVkPiIsCisgICAgICAgICAgIl90cmFuc2ZlclNp
emUiOiAiPGZpbHRlcmVkPiIKKyAgICAgICAgfSwKKyAgICAgICAgImNhY2hlIjoge30sCisgICAg
ICAgICJ0aW1pbmdzIjogeworICAgICAgICAgICJibG9ja2VkIjogIjxmaWx0ZXJlZD4iLAorICAg
ICAgICAgICJkbnMiOiAiPGZpbHRlcmVkPiIsCisgICAgICAgICAgImNvbm5lY3QiOiAiPGZpbHRl
cmVkPiIsCisgICAgICAgICAgInNzbCI6IC0xLAorICAgICAgICAgICJzZW5kIjogIjxmaWx0ZXJl
ZD4iLAorICAgICAgICAgICJ3YWl0IjogIjxmaWx0ZXJlZD4iLAorICAgICAgICAgICJyZWNlaXZl
IjogIjxmaWx0ZXJlZD4iCisgICAgICAgIH0sCisgICAgICAgICJfZmV0Y2hUeXBlIjogIjxmaWx0
ZXJlZD4iCisgICAgICB9CisgICAgXQorICB9Cit9CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaGFyL2hhci1wYWdlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2hhci9oYXItcGFnZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zMjIzMzJlZDQ5OQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaGFyL2hh
ci1wYWdlLmh0bWwKQEAgLTAsMCArMSw4NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgp
Cit7CisgICAgZnVuY3Rpb24gSEFSSlNPTkZpbHRlcihrZXksIHZhbHVlKSB7CisgICAgICAgIC8v
IEZpbHRlciBvdXQgdGhlIGNyZWF0b3IudmVyc2lvbiAvIGJyb3dzZXIudmVyc2lvbiBidXQgbGVh
dmUgYSB0b3AgbGV2ZWwgdmVyc2lvbi4KKyAgICAgICAgaWYgKChrZXkgPT09ICJjcmVhdG9yIiB8
fCBrZXkgPT09ICJicm93c2VyIikgJiYgdmFsdWUudmVyc2lvbikgeworICAgICAgICAgICAgdmFs
dWUudmVyc2lvbiA9ICI8ZmlsdGVyZWQ+IjsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIEhlYWRlcnMgaW5jbHVkZSBkeW5hbWljIGRhdGEuCisgICAg
ICAgIGlmIChrZXkgPT09ICJoZWFkZXJzIikKKyAgICAgICAgICAgIHJldHVybiAiPGZpbHRlcmVk
PiI7CisKKyAgICAgICAgLy8gRGF0ZXMgd291bGQgY2hhbmdlIGJldHdlZW4gdGVzdCBydW5zLgor
ICAgICAgICBpZiAoa2V5LmVuZHNXaXRoKCJEYXRlVGltZSIpKQorICAgICAgICAgICAgcmV0dXJu
ICI8ZmlsdGVyZWQ+IjsKKworICAgICAgICAvLyBTaXplIGRhdGEgbWF5IG9yIG1heSBub3QgYmUg
YXZhaWxhYmxlLCBidXQgY291bGQgY2hhbmdlIGJhc2VkIG9uIGhlYWRlcnMuCisgICAgICAgIGlm
IChrZXkuZW5kc1dpdGgoIlNpemUiKSkKKyAgICAgICAgICAgIHJldHVybiAiPGZpbHRlcmVkPiI7
CisKKyAgICAgICAgLy8gQ29ubmVjdGlvbiBpZGVudGlmaWVyIGNvdWxkIGJlIGRpZmZlcmVudC4K
KyAgICAgICAgaWYgKGtleSA9PT0gImNvbm5lY3Rpb24iKQorICAgICAgICAgICAgcmV0dXJuICI8
ZmlsdGVyZWQ+IjsKKworICAgICAgICAvLyBDYWNoZSBtYXkgb3IgbWF5IG5vdCBoYXZlIGJlZW4g
dXNlZC4KKyAgICAgICAgaWYgKGtleSA9PT0gIl9mZXRjaFR5cGUiKQorICAgICAgICAgICAgcmV0
dXJuICI8ZmlsdGVyZWQ+IjsKKworICAgICAgICAvLyBTaW5jZSBjYWNoZSBtYXkgb3IgbWF5IG5v
dCBiZSB1c2VkLCB0aW1pbmcgZGF0YSBtYXkgYmUgdmFyaWFibGUuCisgICAgICAgIC8vIE5PVEU6
IFNTTCBzaG91bGQgYWx3YXlzIGJlIC0xIGZvciB0aGlzIHRlc3QgY2FzZS4KKyAgICAgICAgaWYg
KGtleSA9PT0gInRpbWUiKQorICAgICAgICAgICAgcmV0dXJuICI8ZmlsdGVyZWQ+IjsKKyAgICAg
ICAgaWYgKGtleSA9PT0gInRpbWluZ3MiKSB7CisgICAgICAgICAgICB2YWx1ZS5ibG9ja2VkID0g
IjxmaWx0ZXJlZD4iOworICAgICAgICAgICAgdmFsdWUuZG5zID0gIjxmaWx0ZXJlZD4iOworICAg
ICAgICAgICAgdmFsdWUuY29ubmVjdCA9ICI8ZmlsdGVyZWQ+IjsKKyAgICAgICAgICAgIHZhbHVl
LnNlbmQgPSAiPGZpbHRlcmVkPiI7CisgICAgICAgICAgICB2YWx1ZS53YWl0ID0gIjxmaWx0ZXJl
ZD4iOworICAgICAgICAgICAgdmFsdWUucmVjZWl2ZSA9ICI8ZmlsdGVyZWQ+IjsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIFBhZ2VUaW1pbmdzIGNhbiBiZSB2YXJpYWJsZS4KKyAgICAgICAgaWYg
KGtleSA9PT0gIm9uQ29udGVudExvYWQiIHx8IGtleSA9PT0gIm9uTG9hZCIpCisgICAgICAgICAg
ICByZXR1cm4gIjxmaWx0ZXJlZD4iOworCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisK
KyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkhBUi5QYWdl
Iik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJIQVIuQmFzaWMu
UGFnZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2hvdWxkIGJlIGFibGUgdG8gZ2VuZXJhdGUg
YSBIQVIgd2l0aCBhbGwgb2YgdGhpcyB0ZXN0IHBhZ2UncyByZXNvdXJjZXMuIiwKKyAgICAgICAg
YXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QucmVsb2FkUGFnZSh7aWdu
b3JlQ2FjaGU6IHRydWV9KTsKKyAgICAgICAgICAgIGF3YWl0IEluc3BlY3RvclRlc3QuYXdhaXRF
dmVudCgiTG9hZENvbXBsZXRlIik7CisKKyAgICAgICAgICAgIGxldCByZXNvdXJjZXMgPSBbXTsK
KyAgICAgICAgICAgIHJlc291cmNlcy5wdXNoKFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5G
cmFtZS5tYWluUmVzb3VyY2UpOworICAgICAgICAgICAgZm9yIChsZXQgcmVzb3VyY2Ugb2YgV0ku
ZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lLnJlc291cmNlQ29sbGVjdGlvbi5pdGVtcykK
KyAgICAgICAgICAgICAgICByZXNvdXJjZXMucHVzaChyZXNvdXJjZSk7CisKKyAgICAgICAgICAg
IGxldCBoYXIgPSBhd2FpdCBXSS5IQVJCdWlsZGVyLmJ1aWxkQXJjaGl2ZShyZXNvdXJjZXMpOwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5qc29uKGhhciwgSEFSSlNPTkZpbHRlcik7CisgICAg
ICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5IQVIgUGFn
ZSBUZXN0LjwvcD4KKzxzY3JpcHQ+Cit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsICgp
ID0+IHsKKyAgICBUZXN0UGFnZS5kaXNwYXRjaEV2ZW50VG9Gcm9udGVuZCgiTG9hZENvbXBsZXRl
Iik7Cit9KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGZhMGVlZDkwZTM0Li40ODBiNjcy
NWVmOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtMzQwLDYgKzM0MCw3IEBAIGh0dHAvd3B0L3Jlc291cmNlLXRpbWluZy9ydC1uZXh0SG9w
UHJvdG9jb2wud29ya2VyLmh0bWwgWyBGYWlsdXJlIF0KIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2UtcmVxdWVzdC1oZWFkZXJzLmh0bWwgWyBGYWlsdXJlIF0KIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Utc2l6ZXMtbmV0d29yay5odG1sIFsgRmFpbHVy
ZSBdCiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlLXNpemVzLW1lbW9yeS1j
YWNoZS5odG1sIFsgRmFpbHVyZSBdCitodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2hhci9o
YXItcGFnZS5odG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNjQ0OTEgWyBZb3NlbWl0
ZSBFbENhcGl0YW4gXSBmYXN0L3Zpc3VhbC12aWV3cG9ydC9ydGwtem9vbWVkLXJlY3RzLmh0bWwg
WyBGYWlsdXJlIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCA2MjQ4OTkwM2IzMS4uODlhYmFiZDkzMTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNDI5LDYgKzE0MjksNyBAQCB3ZWJraXQub3JnL2IvMTY4
NDE1IFsgRWxDYXBpdGFuIF0gaHR0cC93cHQvcmVzb3VyY2UtdGltaW5nL3J0LWNvcnMud29ya2Vy
Lmh0bWwgWwogCiAjIFJlcXVlc3QgSGVhZGVyIG5ldHdvcmtpbmcgZGF0YSBub3QgYXZhaWxhYmxl
IHdpdGhvdXQgTmV0d29yayBTZXNzaW9uLgogWyBFbENhcGl0YW4gXSBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlLXJlcXVlc3QtaGVhZGVycy5odG1sIFsgRmFpbHVyZSBdCitb
IEVsQ2FwaXRhbiBdIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaGFyL2hhci1wYWdlLmh0
bWwgWyBGYWlsdXJlIF0KIAogWyBFbENhcGl0YW4gXSBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL3BpbmctdHlwZS5odG1sIFsgU2tpcCBdCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggN2VhZmRjNzkxN2QuLjI4ZWRiMzU3MThjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzU5OSw2ICszNTk5LDcgQEAg
ZmFzdC9zaGFkb3ctZG9tL3NoYWRvdy1hdC1yb290LWR1cmluZy1kaXNjb25uZWN0Lmh0bWwgWyBT
a2lwIF0KIGZhc3QvdGV4dC9mb250LXdlaWdodC1mYWxsYmFjay5odG1sIFsgU2tpcCBdCiBodHRw
L3Rlc3RzL2NhY2hlL2NhY2hlLWNvbnRyb2wtaW1tdXRhYmxlLWh0dHBzLmh0bWwgWyBTa2lwIF0K
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2UtcmVxdWVzdC1oZWFkZXJzLmh0
bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvaGFyL2hhci1wYWdlLmh0
bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvbG9jYWwvYmxvYi9zZW5kLWh5YnJpZC1ibG9iLXVzaW5n
LW9wZW4tcGFuZWwuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvY3Jvc3Mtb3JpZ2luLXBsdWdpbi1kb2N1bWVudC1hbGxvd2VkLWluLWNoaWxk
LXdpbmRvdy5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS9zYW1lLW9yaWdpbi1wbHVnaW4tZG9jdW1lbnQtYmxvY2tlZC1pbi1jaGlsZC13aW5k
b3cuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggODM1OWM2NGIwODgu
LjZlOTZiMzU0MmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxNy0xMC0yMiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFBsZWFzZSBzdXBwb3J0IEhBUiBFeHBvcnQgZm9yIG5ldHdvcmsg
dHJhZmZpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ2NjkyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDYzNjcyPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3Byb3RvY29sL05l
dHdvcmsuanNvbjoKKyAgICAgICAgQWRkIGEgd2FsbHRpbWUgdG8gZWFjaCBzZW5kIHJlcXVlc3Qu
CisKIDIwMTctMTAtMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAK
ICAgICAgICAgW0pTQ11bQmFzZWxpbmVdIFVzZSBsaW5rQWxsU2xvd0Nhc2VzRm9yQnl0ZWNvZGVP
ZmZzZXQgYXMgbXVjaCBhcyBwb3NzaWJsZSB0byBzaW1wbGlmeSBzbG93IGNhc2VzIGhhbmRsaW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL05l
dHdvcmsuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvTmV0
d29yay5qc29uCmluZGV4IDJhNGQ4YzNkMDVkLi5hYmU0NzljNDcwZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9OZXR3b3JrLmpzb24KQEAg
LTIxNiw3ICsyMTYsOCBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibG9hZGVySWQiLCAi
JHJlZiI6ICJMb2FkZXJJZCIsICJkZXNjcmlwdGlvbiI6ICJMb2FkZXIgaWRlbnRpZmllci4iIH0s
CiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkb2N1bWVudFVSTCIsICJ0eXBlIjogInN0cmlu
ZyIsICJkZXNjcmlwdGlvbiI6ICJVUkwgb2YgdGhlIGRvY3VtZW50IHRoaXMgcmVxdWVzdCBpcyBs
b2FkZWQgZm9yLiIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3QiLCAiJHJl
ZiI6ICJSZXF1ZXN0IiwgImRlc2NyaXB0aW9uIjogIlJlcXVlc3QgZGF0YS4iIH0sCi0gICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJ0aW1lc3RhbXAiLCAiJHJlZiI6ICJUaW1lc3RhbXAiLCAiZGVz
Y3JpcHRpb24iOiAiVGltZXN0YW1wLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInRp
bWVzdGFtcCIsICIkcmVmIjogIlRpbWVzdGFtcCIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1l
IjogIndhbGx0aW1lIiwgIiRyZWYiOiAiV2FsbHRpbWUiIH0sCiAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJpbml0aWF0b3IiLCAiJHJlZiI6ICJJbml0aWF0b3IiLCAiZGVzY3JpcHRpb24iOiAi
UmVxdWVzdCBpbml0aWF0b3IuIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVkaXJl
Y3RSZXNwb25zZSIsICJvcHRpb25hbCI6IHRydWUsICIkcmVmIjogIlJlc3BvbnNlIiwgImRlc2Ny
aXB0aW9uIjogIlJlZGlyZWN0IHJlc3BvbnNlIGRhdGEuIiB9LAogICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAidHlwZSIsICIkcmVmIjogIlBhZ2UuUmVzb3VyY2VUeXBlIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIlJlc291cmNlIHR5cGUuIiB9LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM1
NGZhNzQxOGY3Li5jNGZmZjA3ZWEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIyIEBACiAyMDE3
LTEwLTIyICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogUGxlYXNlIHN1cHBvcnQgSEFSIEV4cG9ydCBmb3IgbmV0d29yayB0cmFm
ZmljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY2
OTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0NjM2NzI+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvaGFyL2hhci1iYXNpYy5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2hhci9oYXItcGFnZS5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgSW5jbHVkZSB0aGUgd2FsbCB0
aW1lIHdoZW4gc2VuZGluZyBhIHJlcXVlc3QuIFRoaXMgaXMgbmVlZGVkIGZvciBIQVIgdG8KKyAg
ICAgICAgaW5jbHVkZSBhIHdhbGwgdGltZSwgYW5kIGNhbiBiZSB1c2VkIGZvciBDb29raWUgZXhw
aXJhdGlvbiB0aW1lIGNhbGN1bGF0aW9uCisgICAgICAgIGFzIHdlbGwuCisKKzIwMTctMTAtMjIg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwogICAgICAgICBSRUdSRVNT
SU9OKHIyMTk2NzUpOiBXZWIgSW5zcGVjdG9yOiBDb21tYW5kTGluZUFQSSBnZXRFdmVudExpc3Rl
bmVycyBkb2VzIG5vdCB3b3JrCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzg2NTAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1MTE2MzQ3PgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApp
bmRleCAzYzk4NWM1YzkzZS4uODBmODlkNDc0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0zNDUsNiArMzQ1LDkgQEAg
dm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIERvY3VtZW50TG8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGRv
dWJsZSBzZW5kVGltZXN0YW1wID0gdGltZXN0YW1wKCk7CisgICAgZG91YmxlIHdhbGx0aW1lID0g
Y3VycmVudFRpbWUoKTsKKwogICAgIFN0cmluZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rv
cnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKTsKICAgICBtX3Jlc291cmNlc0RhdGEtPnJlc291cmNl
Q3JlYXRlZChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5sb2FkZXJJZCgmbG9hZGVyKSk7CiAKQEAg
LTM3Myw3ICszNzYsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbFNlbmRSZXF1
ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMbwogICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IGJ1
aWxkSW5pdGlhdG9yT2JqZWN0KGxvYWRlci5mcmFtZSgpID8gbG9hZGVyLmZyYW1lKCktPmRvY3Vt
ZW50KCkgOiBudWxscHRyKTsKICAgICBTdHJpbmcgdGFyZ2V0SWQgPSByZXF1ZXN0LmluaXRpYXRv
cklkZW50aWZpZXIoKTsKIAotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0V2lsbEJl
U2VudChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci5mcmFtZSgpKSwgbV9w
YWdlQWdlbnQtPmxvYWRlcklkKCZsb2FkZXIpLCBsb2FkZXIudXJsKCkuc3RyaW5nKCksIGJ1aWxk
T2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCB0aW1lc3RhbXAoKSwgaW5pdGlhdG9y
T2JqZWN0LCBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZSwg
bnVsbHB0ciksIHR5cGUgIT0gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlID8gJnBy
b3RvY29sUmVzb3VyY2VUeXBlIDogbnVsbHB0ciwgdGFyZ2V0SWQuaXNFbXB0eSgpID8gbnVsbHB0
ciA6ICZ0YXJnZXRJZCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlcXVlc3RXaWxsQmVT
ZW50KHJlcXVlc3RJZCwgbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLmZyYW1lKCkpLCBtX3Bh
Z2VBZ2VudC0+bG9hZGVySWQoJmxvYWRlciksIGxvYWRlci51cmwoKS5zdHJpbmcoKSwgYnVpbGRP
YmplY3RGb3JSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIHNlbmRUaW1lc3RhbXAsIHdhbGx0aW1l
LCBpbml0aWF0b3JPYmplY3QsIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZWRpcmVj
dFJlc3BvbnNlLCBudWxscHRyKSwgdHlwZSAhPSBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVz
b3VyY2UgPyAmcHJvdG9jb2xSZXNvdXJjZVR5cGUgOiBudWxscHRyLCB0YXJnZXRJZC5pc0VtcHR5
KCkgPyBudWxscHRyIDogJnRhcmdldElkKTsKIH0KIAogc3RhdGljIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6UmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZUZvckNhY2hlZFJlc291cmNlKENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDUwNWVhODZjMzUwLi5h
MTA4YTkzMjZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTEgQEAKKzIw
MTctMTAtMjIgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBQbGVhc2Ugc3VwcG9ydCBIQVIgRXhwb3J0IGZvciBuZXR3b3JrIHRy
YWZmaWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NjY5MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQ2MzY3Mj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1s
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC5odG1sOgorICAgICAgICBOZXcgcmVzb3Vy
Y2VzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1BsYXRmb3JtLmpzOgorICAgICAg
ICBJbmNsdWRlIGEgYnVpbGQgbnVtYmVyIGFzIHdlbGwuCisgICAgICAgIAorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvQmFzZS9VUkxVdGlsaXRpZXMuanM6CisgICAgICAgIChwYXJzZUxvY2F0aW9u
UXVlcnlQYXJhbWV0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgUmVtb3ZlIHVudXNlZCBmdW5jdGlv
bi4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRnJhbWVSZXNvdXJjZU1h
bmFnZXIuanM6CisgICAgICAgIChXSS5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5cGUuZnJh
bWVEaWROYXZpZ2F0ZSk6CisgICAgICAgIChXSS5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5
cGUucmVzb3VyY2VSZXF1ZXN0V2lsbEJlU2VudCk6CisgICAgICAgIChXSS5GcmFtZVJlc291cmNl
TWFuYWdlci5wcm90b3R5cGUucmVzb3VyY2VSZXF1ZXN0V2FzU2VydmVkRnJvbU1lbW9yeUNhY2hl
KToKKyAgICAgICAgKFdJLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLnByb3RvdHlwZS5yZXNvdXJjZVJl
cXVlc3REaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV0kuRnJhbWVSZXNvdXJjZU1hbmFn
ZXIucHJvdG90eXBlLl9hZGROZXdSZXNvdXJjZVRvRnJhbWVPclRhcmdldCk6CisgICAgICAgIFBh
c3MgYWxvbmcgYSB3YWxsdGltZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
TmV0d29ya09ic2VydmVyLmpzOgorICAgICAgICAoV0kuTmV0d29ya09ic2VydmVyLnByb3RvdHlw
ZS5yZXF1ZXN0V2lsbEJlU2VudCk6CisgICAgICAgIFBhc3MgYWxvbmcgYSB3YWxsdGltZS4gVGhp
cyBuZXcgcGFyYW1ldGVyIHNoaWZ0cyBvbGQgcGFyYW1ldGVycy4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvSEFSQnVpbGRlci5qczogQWRkZWQuCisgICAgICAgIChXSS5I
QVJCdWlsZGVyLmFzeW5jLmJ1aWxkQXJjaGl2ZSk6CisgICAgICAgIChXSS5IQVJCdWlsZGVyLmNy
ZWF0b3IpOgorICAgICAgICAoV0kuSEFSQnVpbGRlci5wYWdlcyk6CisgICAgICAgIChXSS5IQVJC
dWlsZGVyLnBhZ2VUaW1pbmdzKToKKyAgICAgICAgKFdJLkhBUkJ1aWxkZXIuZW50cnkpOgorICAg
ICAgICAoV0kuSEFSQnVpbGRlci5yZXF1ZXN0KToKKyAgICAgICAgKFdJLkhBUkJ1aWxkZXIucmVz
cG9uc2UpOgorICAgICAgICAoV0kuSEFSQnVpbGRlci5jb29raWVzKToKKyAgICAgICAgKFdJLkhB
UkJ1aWxkZXIuaGVhZGVycyk6CisgICAgICAgIChXSS5IQVJCdWlsZGVyLmNvbnRlbnQpOgorICAg
ICAgICAoV0kuSEFSQnVpbGRlci5wb3N0RGF0YSk6CisgICAgICAgIChXSS5IQVJCdWlsZGVyLmNh
Y2hlKToKKyAgICAgICAgKFdJLkhBUkJ1aWxkZXIudGltaW5ncyk6CisgICAgICAgIChXSS5IQVJC
dWlsZGVyLmlwQWRkcmVzcyk6CisgICAgICAgIChXSS5IQVJCdWlsZGVyLmRhdGUpOgorICAgICAg
ICAoV0kuSEFSQnVpbGRlci5mZXRjaFR5cGUpOgorICAgICAgICBIQVIgY29uc3RydWN0aW9uIGFu
ZCBoZWxwZXJzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvQ29va2llLmpzOgor
ICAgICAgICAoV0kuQ29va2llLnByb3RvdHlwZS5leHBpcmF0aW9uRGF0ZSk6CisgICAgICAgICog
VXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanM6CisgICAgICAgIChXSS5SZXNvdXJjZS5w
cm90b3R5cGUuZ2V0IHF1ZXJ5U3RyaW5nUGFyYW1ldGVycyk6CisgICAgICAgIChXSS5SZXNvdXJj
ZS5wcm90b3R5cGUuZ2V0IHJlcXVlc3RGb3JtUGFyYW1ldGVycyk6CisgICAgICAgIChXSS5SZXNv
dXJjZS5wcm90b3R5cGUuZ2V0IHJlcXVlc3RTZW50V2FsbHRpbWUpOgorICAgICAgICAoV0kuUmVz
b3VyY2UucHJvdG90eXBlLmdldCByZXF1ZXN0U2VudERhdGUpOgorICAgICAgICAoV0kuUmVzb3Vy
Y2UucHJvdG90eXBlLmhhc1JlcXVlc3RGb3JtUGFyYW1ldGVycyk6CisgICAgICAgIEhlbHBlcnMg
Zm9yIEhBUiBnZW5lcmF0aW9uIGFuZCBzdWItc2V0cyBvZiBkYXRhLgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZS5qczoKKyAgICAgICAgKFdJLlNvdXJjZUNvZGUu
cHJvdG90eXBlLl9wcm9jZXNzQ29udGVudCk6CisgICAgICAgIENhcHR1cmUgdGhlIHJhdywgdW5t
b2RpZmllZCwgYmFzZTY0IGVuY29kZWQgYW5kIGNvbnRlbnQuIFRoaXMgZW5kcyB1cAorICAgICAg
ICBnZXR0aW5nIHVzZWQgYnkgSEFSIGdlbmVyYXRpb24gYW5kIGlzIG90aGVyd2lzZSBsb3N0Lgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9UZXN0L1Rlc3RIYXJuZXNzLmpzOgorICAgICAgICAo
VGVzdEhhcm5lc3MucHJvdG90eXBlLmpzb24pOgorICAgICAgICBIZWxwZXIgZm9yIGp1c3QgbG9n
Z2luZyBKU09OIGRhdGEgd2l0aCBhIGZpbHRlci4gVGhpcyBkZWZhdWx0cyB0bworICAgICAgICBh
IHJlYXNvbmFibGUgMiBzcGFjZSBpbmRlbnQgZm9yIEpTT04gbG9ncyBpbiBvdXIgdGVzdCBvdXRw
dXQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5q
czoKKyAgICAgICAgKFdJLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IHNhdmVEYXRh
KToKKyAgICAgICAgKFdJLkRPTVRyZWVDb250ZW50Vmlldy5nZXQgc2F2ZURhdGEuc2F2ZUhhbmRs
ZXIpOiBEZWxldGVkLgorICAgICAgICBEcml2ZS1ieSBzaW1wbGlmeSB3aGlsZSBsb29raW5nIGF0
IG90aGVyIHNhdmUgaGFuZGxlcnMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL05l
dHdvcmtUYWJsZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuTmV0d29ya1RhYmxlQ29udGVu
dFZpZXcucHJvdG90eXBlLmdldCBzdXBwb3J0c1NhdmUpOgorICAgICAgICAoV0kuTmV0d29ya1Rh
YmxlQ29udGVudFZpZXcucHJvdG90eXBlLmdldCBzYXZlRGF0YSk6CisgICAgICAgIChXSS5OZXR3
b3JrVGFibGVDb250ZW50Vmlldy5wcm90b3R5cGUudGFibGVDZWxsQ29udGV4dE1lbnVDbGlja2Vk
KToKKyAgICAgICAgKFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fSEFSUmVz
b3VyY2VzKToKKyAgICAgICAgKFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5f
ZXhwb3J0SEFSKToKKyAgICAgICAgUHJvdmlkZSBhIGNvbnRleHQgbWVudSBhbmQgc2F2ZSBrZXli
b2FyZCBoYW5kbGVyIHRvIGV4cG9ydCBhIEhBUi4KKyAgICAgICAgVGhpcyBtYXRjaGVzIG90aGVy
IGJyb3dzZXJzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNsdXN0
ZXJDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3
LnByb3RvdHlwZS5fY2FuU2hvd1JlcXVlc3RDb250ZW50Vmlldyk6CisgICAgICAgIFVzZSBjb2Rl
IHRoYXQgaXMgbm93IGF2YWlsYWJsZSBpbiBSZXNvdXJjZS4KKwogMjAxNy0xMC0yMCAgTWF0dCBC
YWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjogc2Ny
b2xsaW5nIHRoZSBlZGl0b3Igd2hpbGUgZGVidWdnaW5nIHNob3VsZG4ndCB0cmlnZ2VyIHBvcG92
ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNl
L1BsYXRmb3JtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9Q
bGF0Zm9ybS5qcwppbmRleCA2YWIwODJjY2E0MS4uYzgyZTAxMjM4ZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvUGxhdGZvcm0uanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9QbGF0Zm9ybS5qcwpAQCAt
MjksMjIgKzI5LDMwIEBAIFdJLlBsYXRmb3JtID0gewogICAgIHZlcnNpb246IHsKICAgICAgICAg
YmFzZTogMCwKICAgICAgICAgcmVsZWFzZTogMCwKLSAgICAgICAgbmFtZTogIiIKKyAgICAgICAg
bmFtZTogIiIsCisgICAgICAgIGJ1aWxkOiAiIiwKICAgICB9CiB9OwogCiAoZnVuY3Rpb24gKCkg
ewotICAgIC8vIENoZWNrIGZvciBhIG5pZ2h0bHkgYnVpbGQgYnkgbG9va2luZyBmb3IgYSBwbHVz
IGluIHRoZSB2ZXJzaW9uIG51bWJlciBhbmQgYSBzbWFsbCBudW1iZXIgb2Ygc3R5bGVzaGVldHMg
KGluZGljYXRpbmcgY29tYmluZWQgcmVzb3VyY2VzKS4KLSAgICB2YXIgdmVyc2lvbk1hdGNoID0g
LyBBcHBsZVdlYktpdFwvKFteIF0rKS8uZXhlYyhuYXZpZ2F0b3IudXNlckFnZW50KTsKLSAgICBp
ZiAodmVyc2lvbk1hdGNoICYmIHZlcnNpb25NYXRjaFsxXS5pbmRleE9mKCIrIikgIT09IC0xICYm
IGRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aCA8IDEwKQotICAgICAgICBXSS5QbGF0Zm9ybS5p
c05pZ2h0bHlCdWlsZCA9IHRydWU7CisgICAgbGV0IHZlcnNpb25NYXRjaCA9IC8gQXBwbGVXZWJL
aXRcLyhbXiBdKykvLmV4ZWMobmF2aWdhdG9yLnVzZXJBZ2VudCk7CisgICAgaWYgKHZlcnNpb25N
YXRjaCkgeworICAgICAgICBXSS5QbGF0Zm9ybS52ZXJzaW9uLmJ1aWxkID0gdmVyc2lvbk1hdGNo
WzFdOwogCi0gICAgdmFyIG9zVmVyc2lvbk1hdGNoID0gLyBNYWMgT1MgWCAoXGQrKV8oXGQrKS8u
ZXhlYyhuYXZpZ2F0b3IuYXBwVmVyc2lvbik7CisgICAgICAgIC8vIENoZWNrIGZvciBhIG5pZ2h0
bHkgYnVpbGQgYnkgbG9va2luZyBmb3IgYSBwbHVzIGluIHRoZSB2ZXJzaW9uIG51bWJlciBhbmQg
YSBzbWFsbCBudW1iZXIgb2Ygc3R5bGVzaGVldHMgKGluZGljYXRpbmcgY29tYmluZWQgcmVzb3Vy
Y2VzKS4KKyAgICAgICAgaWYgKHZlcnNpb25NYXRjaFsxXS5pbmRleE9mKCIrIikgIT09IC0xICYm
IGRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aCA8IDEwKQorICAgICAgICAgICAgV0kuUGxhdGZv
cm0uaXNOaWdodGx5QnVpbGQgPSB0cnVlOworICAgIH0KKworICAgIGxldCBvc1ZlcnNpb25NYXRj
aCA9IC8gTWFjIE9TIFggKFxkKylfKFxkKykvLmV4ZWMobmF2aWdhdG9yLmFwcFZlcnNpb24pOwog
ICAgIGlmIChvc1ZlcnNpb25NYXRjaCAmJiBvc1ZlcnNpb25NYXRjaFsxXSA9PT0gIjEwIikgewog
ICAgICAgICBXSS5QbGF0Zm9ybS52ZXJzaW9uLmJhc2UgPSAxMDsKICAgICAgICAgV0kuUGxhdGZv
cm0udmVyc2lvbi5yZWxlYXNlID0gcGFyc2VJbnQob3NWZXJzaW9uTWF0Y2hbMl0pOwogICAgICAg
ICBzd2l0Y2ggKG9zVmVyc2lvbk1hdGNoWzJdKSB7CiAgICAgICAgIGNhc2UgIjEyIjoKKyAgICAg
ICAgICAgIFdJLlBsYXRmb3JtLnZlcnNpb24ubmFtZSA9ICJoaWdoLXNpZXJyYSI7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiMTIiOgogICAgICAgICAgICAgV0kuUGxhdGZvcm0u
dmVyc2lvbi5uYW1lID0gInNpZXJyYSI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSAiMTEiOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
QmFzZS9VUkxVdGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9CYXNlL1VSTFV0aWxpdGllcy5qcwppbmRleCA2YWUwYzlkOGJmYy4uYmM5MzI5ODY0MmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVVJMVXRp
bGl0aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2Uv
VVJMVXRpbGl0aWVzLmpzCkBAIC0xODYsMTIgKzE4Niw2IEBAIGZ1bmN0aW9uIGFic29sdXRlVVJM
KHBhcnRpYWxVUkwsIGJhc2VVUkwpCiAgICAgcmV0dXJuIGJhc2VVUkxQcmVmaXggKyByZXNvbHZl
RG90c0luUGF0aChiYXNlUGF0aCArIHBhcnRpYWxVUkwpOwogfQogCi1mdW5jdGlvbiBwYXJzZUxv
Y2F0aW9uUXVlcnlQYXJhbWV0ZXJzKGFycmF5UmVzdWx0KQotewotICAgIC8vIFRoZSBmaXJzdCBj
aGFyYWN0ZXIgaXMgYWx3YXlzIHRoZSAiPyIuCi0gICAgcmV0dXJuIHBhcnNlUXVlcnlTdHJpbmco
d2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSksIGFycmF5UmVzdWx0KTsKLX0KLQog
ZnVuY3Rpb24gcGFyc2VRdWVyeVN0cmluZyhxdWVyeVN0cmluZywgYXJyYXlSZXN1bHQpCiB7CiAg
ICAgaWYgKCFxdWVyeVN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0ZyYW1lUmVzb3VyY2VNYW5hZ2VyLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRnJhbWVSZXNvdXJjZU1h
bmFnZXIuanMKaW5kZXggY2YxMDk3OGRjODMuLmIzYTAxZTk2YTJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9GcmFtZVJlc291cmNl
TWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9GcmFtZVJlc291cmNlTWFuYWdlci5qcwpAQCAtODUsNyArODUsNyBAQCBXSS5GcmFt
ZVJlc291cmNlTWFuYWdlciA9IGNsYXNzIEZyYW1lUmVzb3VyY2VNYW5hZ2VyIGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgICAgICAgICAvLyBJZiB0aGUgZnJhbWUgd2Fzbid0IGtub3duIGJlZm9yZSBu
b3csIHRoZW4gdGhlIG1haW4gcmVzb3VyY2Ugd2FzIGxvYWRlZCBpbnN0YW50bHkgKGFib3V0OmJs
YW5rLCBldGMuKQogICAgICAgICAgICAgLy8gTWFrZSBhIG5ldyByZXNvdXJjZSAod2hpY2ggd2ls
bCBtYWtlIHRoZSBmcmFtZSkuIE1hcmsgd2lsbCBtYXJrIGl0IGFzIGxvYWRlZCBhdCB0aGUgZW5k
IHRvbyBzaW5jZSB3ZQogICAgICAgICAgICAgLy8gZG9uJ3QgZXhwZWN0IGFueSBtb3JlIGV2ZW50
cyBhYm91dCB0aGUgbG9hZCBmaW5pc2hpbmcgZm9yIHRoZXNlIGZyYW1lcy4KLSAgICAgICAgICAg
IHZhciBmcmFtZVJlc291cmNlID0gdGhpcy5fYWRkTmV3UmVzb3VyY2VUb0ZyYW1lT3JUYXJnZXQo
bnVsbCwgZnJhbWVQYXlsb2FkLmlkLCBmcmFtZVBheWxvYWQubG9hZGVySWQsIGZyYW1lUGF5bG9h
ZC51cmwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIGZyYW1lUGF5bG9hZC5uYW1lLCBm
cmFtZVBheWxvYWQuc2VjdXJpdHlPcmlnaW4pOworICAgICAgICAgICAgdmFyIGZyYW1lUmVzb3Vy
Y2UgPSB0aGlzLl9hZGROZXdSZXNvdXJjZVRvRnJhbWVPclRhcmdldChudWxsLCBmcmFtZVBheWxv
YWQuaWQsIGZyYW1lUGF5bG9hZC5sb2FkZXJJZCwgZnJhbWVQYXlsb2FkLnVybCwgbnVsbCwgbnVs
bCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgZnJhbWVQYXlsb2FkLm5hbWUsIGZyYW1lUGF5bG9h
ZC5zZWN1cml0eU9yaWdpbik7CiAgICAgICAgICAgICBmcmFtZSA9IGZyYW1lUmVzb3VyY2UucGFy
ZW50RnJhbWU7CiAgICAgICAgICAgICBmcmFtZVdhc0xvYWRlZEluc3RhbnRseSA9IHRydWU7CiAK
QEAgLTE2Myw3ICsxNjMsNyBAQCBXSS5GcmFtZVJlc291cmNlTWFuYWdlciA9IGNsYXNzIEZyYW1l
UmVzb3VyY2VNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB0aGlzLl9tYWlu
RnJhbWVEaWRDaGFuZ2Uob2xkTWFpbkZyYW1lKTsKICAgICB9CiAKLSAgICByZXNvdXJjZVJlcXVl
c3RXaWxsQmVTZW50KHJlcXVlc3RJZGVudGlmaWVyLCBmcmFtZUlkZW50aWZpZXIsIGxvYWRlcklk
ZW50aWZpZXIsIHJlcXVlc3QsIHR5cGUsIHJlZGlyZWN0UmVzcG9uc2UsIHRpbWVzdGFtcCwgaW5p
dGlhdG9yLCB0YXJnZXRJZCkKKyAgICByZXNvdXJjZVJlcXVlc3RXaWxsQmVTZW50KHJlcXVlc3RJ
ZGVudGlmaWVyLCBmcmFtZUlkZW50aWZpZXIsIGxvYWRlcklkZW50aWZpZXIsIHJlcXVlc3QsIHR5
cGUsIHJlZGlyZWN0UmVzcG9uc2UsIHRpbWVzdGFtcCwgd2FsbHRpbWUsIGluaXRpYXRvciwgdGFy
Z2V0SWQpCiAgICAgewogICAgICAgICAvLyBDYWxsZWQgZnJvbSBXSS5OZXR3b3JrT2JzZXJ2ZXIu
CiAKQEAgLTE5MSw3ICsxOTEsNyBAQCBXSS5GcmFtZVJlc291cmNlTWFuYWdlciA9IGNsYXNzIEZy
YW1lUmVzb3VyY2VNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHZhciBpbml0aWF0
b3JTb3VyY2VDb2RlTG9jYXRpb24gPSB0aGlzLl9pbml0aWF0b3JTb3VyY2VDb2RlTG9jYXRpb25G
cm9tUGF5bG9hZChpbml0aWF0b3IpOwogCiAgICAgICAgIC8vIFRoaXMgaXMgYSBuZXcgcmVxdWVz
dCwgbWFrZSBhIG5ldyByZXNvdXJjZSBhbmQgYWRkIGl0IHRvIHRoZSByaWdodCBmcmFtZS4KLSAg
ICAgICAgcmVzb3VyY2UgPSB0aGlzLl9hZGROZXdSZXNvdXJjZVRvRnJhbWVPclRhcmdldChyZXF1
ZXN0SWRlbnRpZmllciwgZnJhbWVJZGVudGlmaWVyLCBsb2FkZXJJZGVudGlmaWVyLCByZXF1ZXN0
LnVybCwgdHlwZSwgcmVxdWVzdC5tZXRob2QsIHJlcXVlc3QuaGVhZGVycywgcmVxdWVzdC5wb3N0
RGF0YSwgZWxhcHNlZFRpbWUsIG51bGwsIG51bGwsIGluaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlv
biwgb3JpZ2luYWxSZXF1ZXN0V2lsbEJlU2VudFRpbWVzdGFtcCwgdGFyZ2V0SWQpOworICAgICAg
ICByZXNvdXJjZSA9IHRoaXMuX2FkZE5ld1Jlc291cmNlVG9GcmFtZU9yVGFyZ2V0KHJlcXVlc3RJ
ZGVudGlmaWVyLCBmcmFtZUlkZW50aWZpZXIsIGxvYWRlcklkZW50aWZpZXIsIHJlcXVlc3QudXJs
LCB0eXBlLCByZXF1ZXN0Lm1ldGhvZCwgcmVxdWVzdC5oZWFkZXJzLCByZXF1ZXN0LnBvc3REYXRh
LCBlbGFwc2VkVGltZSwgd2FsbHRpbWUsIG51bGwsIG51bGwsIGluaXRpYXRvclNvdXJjZUNvZGVM
b2NhdGlvbiwgb3JpZ2luYWxSZXF1ZXN0V2lsbEJlU2VudFRpbWVzdGFtcCwgdGFyZ2V0SWQpOwog
CiAgICAgICAgIC8vIEFzc29jaWF0ZSB0aGUgcmVzb3VyY2Ugd2l0aCB0aGUgcmVxdWVzdElkZW50
aWZpZXIgc28gaXQgY2FuIGJlIGZvdW5kIGluIGZ1dHVyZSBsb2FkaW5nIGV2ZW50cy4KICAgICAg
ICAgdGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllck1hcC5zZXQocmVxdWVzdElkZW50aWZp
ZXIsIHJlc291cmNlKTsKQEAgLTMyNyw3ICszMjcsNyBAQCBXSS5GcmFtZVJlc291cmNlTWFuYWdl
ciA9IGNsYXNzIEZyYW1lUmVzb3VyY2VNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAg
IGxldCByZXNwb25zZSA9IGNhY2hlZFJlc291cmNlUGF5bG9hZC5yZXNwb25zZTsKICAgICAgICAg
Y29uc3QgcmVzcG9uc2VTb3VyY2UgPSBOZXR3b3JrQWdlbnQuUmVzcG9uc2VTb3VyY2UuTWVtb3J5
Q2FjaGU7CiAKLSAgICAgICAgbGV0IHJlc291cmNlID0gdGhpcy5fYWRkTmV3UmVzb3VyY2VUb0Zy
YW1lT3JUYXJnZXQocmVxdWVzdElkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgbG9hZGVySWRl
bnRpZmllciwgY2FjaGVkUmVzb3VyY2VQYXlsb2FkLnVybCwgY2FjaGVkUmVzb3VyY2VQYXlsb2Fk
LnR5cGUsICJHRVQiLCBudWxsLCBudWxsLCBlbGFwc2VkVGltZSwgbnVsbCwgbnVsbCwgaW5pdGlh
dG9yU291cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAgbGV0IHJlc291cmNlID0gdGhpcy5fYWRk
TmV3UmVzb3VyY2VUb0ZyYW1lT3JUYXJnZXQocmVxdWVzdElkZW50aWZpZXIsIGZyYW1lSWRlbnRp
ZmllciwgbG9hZGVySWRlbnRpZmllciwgY2FjaGVkUmVzb3VyY2VQYXlsb2FkLnVybCwgY2FjaGVk
UmVzb3VyY2VQYXlsb2FkLnR5cGUsICJHRVQiLCBudWxsLCBudWxsLCBlbGFwc2VkVGltZSwgbnVs
bCwgbnVsbCwgbnVsbCwgaW5pdGlhdG9yU291cmNlQ29kZUxvY2F0aW9uKTsKICAgICAgICAgcmVz
b3VyY2UudXBkYXRlRm9yUmVzcG9uc2UoY2FjaGVkUmVzb3VyY2VQYXlsb2FkLnVybCwgcmVzcG9u
c2UubWltZVR5cGUsIGNhY2hlZFJlc291cmNlUGF5bG9hZC50eXBlLCByZXNwb25zZS5oZWFkZXJz
LCByZXNwb25zZS5zdGF0dXMsIHJlc3BvbnNlLnN0YXR1c1RleHQsIGVsYXBzZWRUaW1lLCByZXNw
b25zZS50aW1pbmcsIHJlc3BvbnNlU291cmNlKTsKICAgICAgICAgcmVzb3VyY2UuaW5jcmVhc2VT
aXplKGNhY2hlZFJlc291cmNlUGF5bG9hZC5ib2R5U2l6ZSwgZWxhcHNlZFRpbWUpOwogICAgICAg
ICByZXNvdXJjZS5pbmNyZWFzZVRyYW5zZmVyU2l6ZShjYWNoZWRSZXNvdXJjZVBheWxvYWQuYm9k
eVNpemUpOwpAQCAtMzc0LDcgKzM3NCw3IEBAIFdJLkZyYW1lUmVzb3VyY2VNYW5hZ2VyID0gY2xh
c3MgRnJhbWVSZXNvdXJjZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgLy8gSWYg
d2UgaGF2ZW4ndCBmb3VuZCBhbiBleGlzdGluZyBSZXNvdXJjZSBieSBub3csIHRoZW4gaXQgaXMg
YSByZXNvdXJjZSB0aGF0IHdhcyBsb2FkaW5nIHdoZW4gdGhlIGluc3BlY3RvcgogICAgICAgICAv
LyBvcGVuZWQgYW5kIHdlIGp1c3QgbWlzc2VkIHRoZSByZXNvdXJjZVJlcXVlc3RXaWxsQmVTZW50
IGZvciBpdC4gU28gbWFrZSBhIG5ldyByZXNvdXJjZSBhbmQgYWRkIGl0LgogICAgICAgICBpZiAo
IXJlc291cmNlKSB7Ci0gICAgICAgICAgICByZXNvdXJjZSA9IHRoaXMuX2FkZE5ld1Jlc291cmNl
VG9GcmFtZU9yVGFyZ2V0KHJlcXVlc3RJZGVudGlmaWVyLCBmcmFtZUlkZW50aWZpZXIsIGxvYWRl
cklkZW50aWZpZXIsIHJlc3BvbnNlLnVybCwgdHlwZSwgbnVsbCwgcmVzcG9uc2UucmVxdWVzdEhl
YWRlcnMsIG51bGwsIGVsYXBzZWRUaW1lLCBudWxsLCBudWxsLCBudWxsKTsKKyAgICAgICAgICAg
IHJlc291cmNlID0gdGhpcy5fYWRkTmV3UmVzb3VyY2VUb0ZyYW1lT3JUYXJnZXQocmVxdWVzdElk
ZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgbG9hZGVySWRlbnRpZmllciwgcmVzcG9uc2UudXJs
LCB0eXBlLCBudWxsLCByZXNwb25zZS5yZXF1ZXN0SGVhZGVycywgbnVsbCwgZWxhcHNlZFRpbWUs
IG51bGwsIG51bGwsIG51bGwsIG51bGwpOwogCiAgICAgICAgICAgICAvLyBBc3NvY2lhdGUgdGhl
IHJlc291cmNlIHdpdGggdGhlIHJlcXVlc3RJZGVudGlmaWVyIHNvIGl0IGNhbiBiZSBmb3VuZCBp
biBmdXR1cmUgbG9hZGluZyBldmVudHMuCiAgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZVJlcXVl
c3RJZGVudGlmaWVyTWFwLnNldChyZXF1ZXN0SWRlbnRpZmllciwgcmVzb3VyY2UpOwpAQCAtNDk4
LDcgKzQ5OCw3IEBAIFdJLkZyYW1lUmVzb3VyY2VNYW5hZ2VyID0gY2xhc3MgRnJhbWVSZXNvdXJj
ZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9hZGRO
ZXdSZXNvdXJjZVRvRnJhbWVPclRhcmdldChyZXF1ZXN0SWRlbnRpZmllciwgZnJhbWVJZGVudGlm
aWVyLCBsb2FkZXJJZGVudGlmaWVyLCB1cmwsIHR5cGUsIHJlcXVlc3RNZXRob2QsIHJlcXVlc3RI
ZWFkZXJzLCByZXF1ZXN0RGF0YSwgZWxhcHNlZFRpbWUsIGZyYW1lTmFtZSwgZnJhbWVTZWN1cml0
eU9yaWdpbiwgaW5pdGlhdG9yU291cmNlQ29kZUxvY2F0aW9uLCBvcmlnaW5hbFJlcXVlc3RXaWxs
QmVTZW50VGltZXN0YW1wLCB0YXJnZXRJZCkKKyAgICBfYWRkTmV3UmVzb3VyY2VUb0ZyYW1lT3JU
YXJnZXQocmVxdWVzdElkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgbG9hZGVySWRlbnRpZmll
ciwgdXJsLCB0eXBlLCByZXF1ZXN0TWV0aG9kLCByZXF1ZXN0SGVhZGVycywgcmVxdWVzdERhdGEs
IGVsYXBzZWRUaW1lLCB3YWxsdGltZSwgZnJhbWVOYW1lLCBmcmFtZVNlY3VyaXR5T3JpZ2luLCBp
bml0aWF0b3JTb3VyY2VDb2RlTG9jYXRpb24sIG9yaWdpbmFsUmVxdWVzdFdpbGxCZVNlbnRUaW1l
c3RhbXAsIHRhcmdldElkKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3dh
aXRpbmdGb3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKTsKIApAQCAtNTEyLDcgKzUxMiw3
IEBAIFdJLkZyYW1lUmVzb3VyY2VNYW5hZ2VyID0gY2xhc3MgRnJhbWVSZXNvdXJjZU1hbmFnZXIg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT09IFBhZ2VBZ2Vu
dC5SZXNvdXJjZVR5cGUuRG9jdW1lbnQgJiYgZnJhbWUucHJvdmlzaW9uYWxNYWluUmVzb3VyY2Ug
JiYgZnJhbWUucHJvdmlzaW9uYWxNYWluUmVzb3VyY2UudXJsID09PSB1cmwgJiYgZnJhbWUucHJv
dmlzaW9uYWxMb2FkZXJJZGVudGlmaWVyID09PSBsb2FkZXJJZGVudGlmaWVyKQogICAgICAgICAg
ICAgICAgIHJlc291cmNlID0gZnJhbWUucHJvdmlzaW9uYWxNYWluUmVzb3VyY2U7CiAgICAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXNvdXJjZSA9IG5ldyBXSS5SZXNvdXJjZSh1
cmwsIG51bGwsIHR5cGUsIGxvYWRlcklkZW50aWZpZXIsIHRhcmdldElkLCByZXF1ZXN0SWRlbnRp
ZmllciwgcmVxdWVzdE1ldGhvZCwgcmVxdWVzdEhlYWRlcnMsIHJlcXVlc3REYXRhLCBlbGFwc2Vk
VGltZSwgaW5pdGlhdG9yU291cmNlQ29kZUxvY2F0aW9uLCBvcmlnaW5hbFJlcXVlc3RXaWxsQmVT
ZW50VGltZXN0YW1wKTsKKyAgICAgICAgICAgICAgICByZXNvdXJjZSA9IG5ldyBXSS5SZXNvdXJj
ZSh1cmwsIG51bGwsIHR5cGUsIGxvYWRlcklkZW50aWZpZXIsIHRhcmdldElkLCByZXF1ZXN0SWRl
bnRpZmllciwgcmVxdWVzdE1ldGhvZCwgcmVxdWVzdEhlYWRlcnMsIHJlcXVlc3REYXRhLCBlbGFw
c2VkVGltZSwgd2FsbHRpbWUsIGluaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbiwgb3JpZ2luYWxS
ZXF1ZXN0V2lsbEJlU2VudFRpbWVzdGFtcCk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc291cmNl
LnRhcmdldCA9PT0gV0kubWFpblRhcmdldCkKICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWRk
UmVzb3VyY2VUb0ZyYW1lKGZyYW1lLCByZXNvdXJjZSk7CiAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAocmVzb3VyY2UudGFyZ2V0KQpAQCAtNTIzLDcgKzUyMyw3IEBAIFdJLkZyYW1lUmVzb3VyY2VN
YW5hZ2VyID0gY2xhc3MgRnJhbWVSZXNvdXJjZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBuZXcgcmVxdWVzdCBmb3Ig
YSBuZXcgZnJhbWUsIHdoaWNoIGlzIGFsd2F5cyB0aGUgbWFpbiByZXNvdXJjZS4KICAgICAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KCF0YXJnZXRJZCk7Ci0gICAgICAgICAgICByZXNvdXJjZSA9IG5l
dyBXSS5SZXNvdXJjZSh1cmwsIG51bGwsIHR5cGUsIGxvYWRlcklkZW50aWZpZXIsIHRhcmdldElk
LCByZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdE1ldGhvZCwgcmVxdWVzdEhlYWRlcnMsIHJlcXVl
c3REYXRhLCBlbGFwc2VkVGltZSwgaW5pdGlhdG9yU291cmNlQ29kZUxvY2F0aW9uLCBvcmlnaW5h
bFJlcXVlc3RXaWxsQmVTZW50VGltZXN0YW1wKTsKKyAgICAgICAgICAgIHJlc291cmNlID0gbmV3
IFdJLlJlc291cmNlKHVybCwgbnVsbCwgdHlwZSwgbG9hZGVySWRlbnRpZmllciwgdGFyZ2V0SWQs
IHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0TWV0aG9kLCByZXF1ZXN0SGVhZGVycywgcmVxdWVz
dERhdGEsIGVsYXBzZWRUaW1lLCB3YWxsdGltZSwgaW5pdGlhdG9yU291cmNlQ29kZUxvY2F0aW9u
LCBvcmlnaW5hbFJlcXVlc3RXaWxsQmVTZW50VGltZXN0YW1wKTsKICAgICAgICAgICAgIGZyYW1l
ID0gbmV3IFdJLkZyYW1lKGZyYW1lSWRlbnRpZmllciwgZnJhbWVOYW1lLCBmcmFtZVNlY3VyaXR5
T3JpZ2luLCBsb2FkZXJJZGVudGlmaWVyLCByZXNvdXJjZSk7CiAgICAgICAgICAgICB0aGlzLl9m
cmFtZUlkZW50aWZpZXJNYXAuc2V0KGZyYW1lLmlkLCBmcmFtZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0hBUkJ1aWxkZXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9IQVJC
dWlsZGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40ZmI0NTk4
OWM4MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0hBUkJ1aWxkZXIuanMKQEAgLTAsMCArMSwzMDcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisvLyBIVFRQIEFyY2hpdmUgKEhBUikgZm9ybWF0IC0gVmVyc2lvbiAxLjIKKy8vIGh0dHBz
Oi8vZHZjcy53My5vcmcvaGcvd2VicGVyZi9yYXctZmlsZS90aXAvc3BlY3MvSEFSL092ZXJ2aWV3
Lmh0bWwjc2VjLWhhci1vYmplY3QtdHlwZXMtY3JlYXRvcgorLy8gaHR0cDovL3d3dy5zb2Z0d2Fy
ZWlzaGFyZC5jb20vYmxvZy9oYXItMTItc3BlYy8KKworV0kuSEFSQnVpbGRlciA9IGNsYXNzIEhB
UkJ1aWxkZXIKK3sKKyAgICBzdGF0aWMgYXN5bmMgYnVpbGRBcmNoaXZlKHJlc291cmNlcykKKyAg
ICB7CisgICAgICAgIGxldCBwcm9taXNlcyA9IFtdOworICAgICAgICBmb3IgKGxldCByZXNvdXJj
ZSBvZiByZXNvdXJjZXMpIHsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291cmNlLmZp
bmlzaGVkKTsKKyAgICAgICAgICAgIHByb21pc2VzLnB1c2gobmV3IFByb21pc2UoKHJlc29sdmUs
IHJlamVjdCkgPT4geworICAgICAgICAgICAgICAgIC8vIEFsd2F5cyByZXNvbHZlLgorICAgICAg
ICAgICAgICAgIHJlc291cmNlLnJlcXVlc3RDb250ZW50KCkudGhlbigKKyAgICAgICAgICAgICAg
ICAgICAgKHgpID0+IHJlc29sdmUoeCksCisgICAgICAgICAgICAgICAgICAgICgpID0+IHJlc29s
dmUobnVsbCkKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfSkpOworICAgICAgICB9
CisKKyAgICAgICAgbGV0IGNvbnRlbnRzID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpOwor
ICAgICAgICBjb25zb2xlLmFzc2VydChjb250ZW50cy5sZW5ndGggPT09IHJlc291cmNlcy5sZW5n
dGgpOworCisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBsb2c6IHsKKyAgICAgICAgICAg
ICAgICB2ZXJzaW9uOiAiMS4yIiwKKyAgICAgICAgICAgICAgICBjcmVhdG9yOiBIQVJCdWlsZGVy
LmNyZWF0b3IoKSwKKyAgICAgICAgICAgICAgICBwYWdlczogSEFSQnVpbGRlci5wYWdlcygpLAor
ICAgICAgICAgICAgICAgIGVudHJpZXM6IHJlc291cmNlcy5tYXAoKHJlc291cmNlLCBpbmRleCkg
PT4gSEFSQnVpbGRlci5lbnRyeShyZXNvdXJjZSwgY29udGVudHNbaW5kZXhdKSksCisgICAgICAg
ICAgICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgc3RhdGljIGNyZWF0b3IoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIG5hbWU6ICJXZWJLaXQgV2ViIEluc3BlY3Rv
ciIsCisgICAgICAgICAgICB2ZXJzaW9uOiBXSS5QbGF0Zm9ybS52ZXJzaW9uLmJ1aWxkIHx8ICIx
LjAiLAorICAgICAgICB9OworICAgIH0KKworICAgIHN0YXRpYyBwYWdlcygpCisgICAgeworICAg
ICAgICByZXR1cm4gW3sKKyAgICAgICAgICAgIHN0YXJ0ZWREYXRlVGltZTogSEFSQnVpbGRlci5k
YXRlKFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5tYWluUmVzb3VyY2UucmVxdWVz
dFNlbnREYXRlKSwKKyAgICAgICAgICAgIGlkOiAicGFnZV8wIiwKKyAgICAgICAgICAgIHRpdGxl
OiBXSS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUudXJsIHx8ICIiLAorICAgICAgICAg
ICAgcGFnZVRpbWluZ3M6IEhBUkJ1aWxkZXIucGFnZVRpbWluZ3MoKSwKKyAgICAgICAgfV07Cisg
ICAgfQorCisgICAgc3RhdGljIHBhZ2VUaW1pbmdzKCkKKyAgICB7CisgICAgICAgIGxldCByZXN1
bHQgPSB7fTsKKworICAgICAgICBsZXQgZG9tQ29udGVudFJlYWR5RXZlbnRUaW1lc3RhbXAgPSBX
SS5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUuZG9tQ29udGVudFJlYWR5RXZlbnRUaW1l
c3RhbXA7CisgICAgICAgIGlmICghaXNOYU4oZG9tQ29udGVudFJlYWR5RXZlbnRUaW1lc3RhbXAp
KQorICAgICAgICAgICAgcmVzdWx0Lm9uQ29udGVudExvYWQgPSBkb21Db250ZW50UmVhZHlFdmVu
dFRpbWVzdGFtcCAqIDEwMDA7CisKKyAgICAgICAgbGV0IGxvYWRFdmVudFRpbWVzdGFtcCA9IFdJ
LmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZS5sb2FkRXZlbnRUaW1lc3RhbXA7CisgICAg
ICAgIGlmICghaXNOYU4obG9hZEV2ZW50VGltZXN0YW1wKSkKKyAgICAgICAgICAgIHJlc3VsdC5v
bkxvYWQgPSBsb2FkRXZlbnRUaW1lc3RhbXAgKiAxMDAwOworCisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorCisgICAgc3RhdGljIGVudHJ5KHJlc291cmNlLCBjb250ZW50KQorICAgIHsK
KyAgICAgICAgbGV0IGVudHJ5ID0geworICAgICAgICAgICAgcGFnZXJlZjogInBhZ2VfMCIsCisg
ICAgICAgICAgICBzdGFydGVkRGF0ZVRpbWU6IEhBUkJ1aWxkZXIuZGF0ZShyZXNvdXJjZS5yZXF1
ZXN0U2VudERhdGUpLAorICAgICAgICAgICAgdGltZTogMCwKKyAgICAgICAgICAgIHJlcXVlc3Q6
IEhBUkJ1aWxkZXIucmVxdWVzdChyZXNvdXJjZSksCisgICAgICAgICAgICByZXNwb25zZTogSEFS
QnVpbGRlci5yZXNwb25zZShyZXNvdXJjZSwgY29udGVudCksCisgICAgICAgICAgICBjYWNoZTog
SEFSQnVpbGRlci5jYWNoZShyZXNvdXJjZSksCisgICAgICAgICAgICB0aW1pbmdzOiBIQVJCdWls
ZGVyLnRpbWluZ3MocmVzb3VyY2UpLAorICAgICAgICB9OworCisgICAgICAgIGlmIChyZXNvdXJj
ZS50aW1pbmdEYXRhLnN0YXJ0VGltZSAmJiByZXNvdXJjZS50aW1pbmdEYXRhLnJlc3BvbnNlRW5k
KQorICAgICAgICAgICAgZW50cnkudGltZSA9IChyZXNvdXJjZS50aW1pbmdEYXRhLnJlc3BvbnNl
RW5kIC0gcmVzb3VyY2UudGltaW5nRGF0YS5zdGFydFRpbWUpICogMTAwMDsKKyAgICAgICAgaWYg
KHJlc291cmNlLnJlbW90ZUFkZHJlc3MpCisgICAgICAgICAgICBlbnRyeS5zZXJ2ZXJJUEFkZHJl
c3MgPSBIQVJCdWlsZGVyLmlwQWRkcmVzcyhyZXNvdXJjZS5yZW1vdGVBZGRyZXNzKTsKKyAgICAg
ICAgaWYgKHJlc291cmNlLmNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgICAgICAgICAgZW50cnku
Y29ubmVjdGlvbiA9ICIiICsgcmVzb3VyY2UuY29ubmVjdGlvbklkZW50aWZpZXI7CisKKyAgICAg
ICAgLy8gQ0ZOZXR3b3JrIEN1c3RvbSBGaWVsZCBgX2ZldGNoVHlwZWAuCisgICAgICAgIGlmIChy
ZXNvdXJjZS5yZXNwb25zZVNvdXJjZSAhPT0gV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuVW5r
bm93bikKKyAgICAgICAgICAgIGVudHJ5Ll9mZXRjaFR5cGUgPSBIQVJCdWlsZGVyLmZldGNoVHlw
ZShyZXNvdXJjZS5yZXNwb25zZVNvdXJjZSk7CisKKyAgICAgICAgcmV0dXJuIGVudHJ5OworICAg
IH0KKworICAgIHN0YXRpYyByZXF1ZXN0KHJlc291cmNlKQorICAgIHsKKyAgICAgICAgbGV0IHJl
c3VsdCA9IHsKKyAgICAgICAgICAgIG1ldGhvZDogcmVzb3VyY2UucmVxdWVzdE1ldGhvZCB8fCAi
IiwKKyAgICAgICAgICAgIHVybDogcmVzb3VyY2UudXJsIHx8ICIiLAorICAgICAgICAgICAgaHR0
cFZlcnNpb246IFdJLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yUHJvdG9jb2wocmVzb3VyY2UucHJv
dG9jb2wpIHx8ICIiLAorICAgICAgICAgICAgY29va2llczogSEFSQnVpbGRlci5jb29raWVzKHJl
c291cmNlLnJlcXVlc3RDb29raWVzLCBudWxsKSwKKyAgICAgICAgICAgIGhlYWRlcnM6IEhBUkJ1
aWxkZXIuaGVhZGVycyhyZXNvdXJjZS5yZXF1ZXN0SGVhZGVycyksCisgICAgICAgICAgICBxdWVy
eVN0cmluZzogcmVzb3VyY2UucXVlcnlTdHJpbmdQYXJhbWV0ZXJzIHx8IFtdLAorICAgICAgICAg
ICAgaGVhZGVyc1NpemU6ICFpc05hTihyZXNvdXJjZS5yZXF1ZXN0SGVhZGVyc1RyYW5zZmVyU2l6
ZSkgPyByZXNvdXJjZS5yZXF1ZXN0SGVhZGVyc1RyYW5zZmVyU2l6ZSA6IC0xLAorICAgICAgICAg
ICAgYm9keVNpemU6ICFpc05hTihyZXNvdXJjZS5yZXF1ZXN0Qm9keVRyYW5zZmVyU2l6ZSkgPyBy
ZXNvdXJjZS5yZXF1ZXN0Qm9keVRyYW5zZmVyU2l6ZSA6IC0xLAorICAgICAgICB9OworCisgICAg
ICAgIGlmIChyZXNvdXJjZS5yZXF1ZXN0RGF0YSkKKyAgICAgICAgICAgIHJlc3VsdC5wb3N0RGF0
YSA9IEhBUkJ1aWxkZXIucG9zdERhdGEocmVzb3VyY2UpOworCisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorCisgICAgc3RhdGljIHJlc3BvbnNlKHJlc291cmNlLCBjb250ZW50KQorICAg
IHsKKyAgICAgICAgbGV0IHJlc3VsdCA9IHsKKyAgICAgICAgICAgIHN0YXR1czogcmVzb3VyY2Uu
c3RhdHVzQ29kZSB8fCAwLAorICAgICAgICAgICAgc3RhdHVzVGV4dDogcmVzb3VyY2Uuc3RhdHVz
VGV4dCB8fCAiIiwKKyAgICAgICAgICAgIGh0dHBWZXJzaW9uOiBXSS5SZXNvdXJjZS5kaXNwbGF5
TmFtZUZvclByb3RvY29sKHJlc291cmNlLnByb3RvY29sKSB8fCAiIiwKKyAgICAgICAgICAgIGNv
b2tpZXM6IEhBUkJ1aWxkZXIuY29va2llcyhyZXNvdXJjZS5yZXNwb25zZUNvb2tpZXMsIHJlc291
cmNlLnJlcXVlc3RTZW50RGF0ZSksCisgICAgICAgICAgICBoZWFkZXJzOiBIQVJCdWlsZGVyLmhl
YWRlcnMocmVzb3VyY2UucmVzcG9uc2VIZWFkZXJzKSwKKyAgICAgICAgICAgIGNvbnRlbnQ6IEhB
UkJ1aWxkZXIuY29udGVudChyZXNvdXJjZSwgY29udGVudCksCisgICAgICAgICAgICByZWRpcmVj
dFVSTDogcmVzb3VyY2UucmVzcG9uc2VIZWFkZXJzLnZhbHVlRm9yQ2FzZUluc2Vuc2l0aXZlS2V5
KCJMb2NhdGlvbiIpIHx8ICIiLAorICAgICAgICAgICAgaGVhZGVyc1NpemU6ICFpc05hTihyZXNv
dXJjZS5yZXNwb25zZUhlYWRlcnNUcmFuc2ZlclNpemUpID8gcmVzb3VyY2UucmVzcG9uc2VIZWFk
ZXJzVHJhbnNmZXJTaXplIDogLTEsCisgICAgICAgICAgICBib2R5U2l6ZTogIWlzTmFOKHJlc291
cmNlLnJlc3BvbnNlQm9keVRyYW5zZmVyU2l6ZSkgPyByZXNvdXJjZS5yZXNwb25zZUJvZHlUcmFu
c2ZlclNpemUgOiAtMSwKKyAgICAgICAgfTsKKworICAgICAgICAvLyBDaHJvbWUgQ3VzdG9tIEZp
ZWxkIGBfdHJhbnNmZXJTaXplYC4KKyAgICAgICAgaWYgKCFpc05hTihyZXNvdXJjZS5uZXR3b3Jr
VG90YWxUcmFuc2ZlclNpemUpKQorICAgICAgICAgICAgcmVzdWx0Ll90cmFuc2ZlclNpemUgPSBy
ZXNvdXJjZS5uZXR3b3JrVG90YWxUcmFuc2ZlclNpemU7CisKKyAgICAgICAgLy8gQ2hyb21lIEN1
c3RvbSBGaWVsZCBgX2Vycm9yYC4KKyAgICAgICAgaWYgKHJlc291cmNlLmZhaWx1cmVSZWFzb25U
ZXh0KQorICAgICAgICAgICAgcmVzdWx0Ll9lcnJvciA9IHJlc291cmNlLmZhaWx1cmVSZWFzb25U
ZXh0OworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIGNvb2tp
ZXMoY29va2llcywgcmVxdWVzdFNlbnREYXRlKQorICAgIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9
IFtdOworCisgICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7CisgICAgICAgICAg
ICBsZXQganNvbiA9IHsKKyAgICAgICAgICAgICAgICBuYW1lOiBjb29raWUubmFtZSwKKyAgICAg
ICAgICAgICAgICB2YWx1ZTogY29va2llLnZhbHVlLAorICAgICAgICAgICAgfTsKKworICAgICAg
ICAgICAgaWYgKGNvb2tpZS50eXBlID09PSBXSS5Db29raWUuVHlwZS5SZXNwb25zZSkgeworICAg
ICAgICAgICAgICAgIGlmIChjb29raWUucGF0aCkKKyAgICAgICAgICAgICAgICAgICAganNvbi5w
YXRoID0gY29va2llLnBhdGg7CisgICAgICAgICAgICAgICAgaWYgKGNvb2tpZS5kb21haW4pCisg
ICAgICAgICAgICAgICAgICAgIGpzb24uZG9tYWluID0gY29va2llLmRvbWFpbjsKKyAgICAgICAg
ICAgICAgICBqc29uLmV4cGlyZXMgPSBIQVJCdWlsZGVyLmRhdGUoY29va2llLmV4cGlyYXRpb25E
YXRlKHJlcXVlc3RTZW50RGF0ZSkpOworICAgICAgICAgICAgICAgIGpzb24uaHR0cE9ubHkgPSBj
b29raWUuaHR0cE9ubHk7CisgICAgICAgICAgICAgICAganNvbi5zZWN1cmUgPSBjb29raWUuc2Vj
dXJlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXN1bHQucHVzaChqc29uKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIGhl
YWRlcnMoaGVhZGVycykKKyAgICB7CisgICAgICAgIGxldCByZXN1bHQgPSBbXTsKKworICAgICAg
ICBmb3IgKGxldCBrZXkgaW4gaGVhZGVycykKKyAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtuYW1l
OiBrZXksIHZhbHVlOiBoZWFkZXJzW2tleV19KTsKKworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKworICAgIHN0YXRpYyBjb250ZW50KHJlc291cmNlLCBjb250ZW50KQorICAgIHsKKyAg
ICAgICAgbGV0IGVuY29kZWRTaXplID0gIWlzTmFOKHJlc291cmNlLm5ldHdvcmtFbmNvZGVkU2l6
ZSkgPyByZXNvdXJjZS5uZXR3b3JrRW5jb2RlZFNpemUgOiByZXNvdXJjZS5lc3RpbWF0ZWROZXR3
b3JrRW5jb2RlZFNpemU7CisgICAgICAgIGxldCBkZWNvZGVkU2l6ZSA9ICFpc05hTihyZXNvdXJj
ZS5uZXR3b3JrRGVjb2RlZFNpemUpID8gcmVzb3VyY2UubmV0d29ya0RlY29kZWRTaXplIDogcmVz
b3VyY2Uuc2l6ZTsKKworICAgICAgICBpZiAoaXNOYU4oZGVjb2RlZFNpemUpKQorICAgICAgICAg
ICAgZGVjb2RlZFNpemUgPSAwOworICAgICAgICBpZiAoaXNOYU4oZW5jb2RlZFNpemUpKQorICAg
ICAgICAgICAgZW5jb2RlZFNpemUgPSAwOworCisgICAgICAgIGxldCByZXN1bHQgPSB7CisgICAg
ICAgICAgICBzaXplOiBkZWNvZGVkU2l6ZSwKKyAgICAgICAgICAgIGNvbXByZXNzaW9uOiBkZWNv
ZGVkU2l6ZSAtIGVuY29kZWRTaXplLAorICAgICAgICAgICAgbWltZVR5cGU6IHJlc291cmNlLm1p
bWVUeXBlIHx8ICJ4LXVua25vd24iLAorICAgICAgICB9OworCisgICAgICAgIGlmIChjb250ZW50
KSB7CisgICAgICAgICAgICBpZiAoY29udGVudC5yYXdDb250ZW50KQorICAgICAgICAgICAgICAg
IHJlc3VsdC50ZXh0ID0gY29udGVudC5yYXdDb250ZW50OworICAgICAgICAgICAgaWYgKGNvbnRl
bnQucmF3QmFzZTY0RW5jb2RlZCkKKyAgICAgICAgICAgICAgICByZXN1bHQuZW5jb2RpbmcgPSAi
YmFzZTY0IjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisg
ICAgc3RhdGljIHBvc3REYXRhKHJlc291cmNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsKKyAg
ICAgICAgICAgIG1pbWVUeXBlOiByZXNvdXJjZS5yZXF1ZXN0RGF0YUNvbnRlbnRUeXBlIHx8ICIi
LAorICAgICAgICAgICAgdGV4dDogcmVzb3VyY2UucmVxdWVzdERhdGEsCisgICAgICAgICAgICBw
YXJhbXM6IHJlc291cmNlLnJlcXVlc3RGb3JtUGFyYW1ldGVycyB8fCBbXSwKKyAgICAgICAgfTsK
KyAgICB9CisKKyAgICBzdGF0aWMgY2FjaGUocmVzb3VyY2UpCisgICAgeworICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IEhBUiBjYWNoZSBkYXRhLgorICAgICAgICAvLyBodHRwOi8vd3d3LnNv
ZnR3YXJlaXNoYXJkLmNvbS9ibG9nL2hhci0xMi1zcGVjLyNjYWNoZQorICAgICAgICByZXR1cm4g
e307CisgICAgfQorCisgICAgc3RhdGljIHRpbWluZ3MocmVzb3VyY2UpCisgICAgeworICAgICAg
ICAvLyBOT1RFOiBDaHJvbWUgQ3VzdG9tIEZpZWxkcyBgX2Jsb2NrZWRfcXVldWVpbmdgIGFuZCBg
X2Jsb2NrZWRfcHJveHlgLgorCisgICAgICAgIGxldCByZXN1bHQgPSB7CisgICAgICAgICAgICBi
bG9ja2VkOiAtMSwKKyAgICAgICAgICAgIGRuczogLTEsCisgICAgICAgICAgICBjb25uZWN0OiAt
MSwKKyAgICAgICAgICAgIHNzbDogLTEsCisgICAgICAgICAgICBzZW5kOiAwLAorICAgICAgICAg
ICAgd2FpdDogMCwKKyAgICAgICAgICAgIHJlY2VpdmU6IDAsCisgICAgICAgIH07CisKKyAgICAg
ICAgaWYgKHJlc291cmNlLnRpbWluZ0RhdGEuc3RhcnRUaW1lICYmIHJlc291cmNlLnRpbWluZ0Rh
dGEucmVzcG9uc2VFbmQpIHsKKyAgICAgICAgICAgIGxldCB7c3RhcnRUaW1lLCBkb21haW5Mb29r
dXBTdGFydCwgZG9tYWluTG9va3VwRW5kLCBjb25uZWN0U3RhcnQsIGNvbm5lY3RFbmQsIHNlY3Vy
ZUNvbm5lY3Rpb25TdGFydCwgcmVxdWVzdFN0YXJ0LCByZXNwb25zZVN0YXJ0LCByZXNwb25zZUVu
ZH0gPSByZXNvdXJjZS50aW1pbmdEYXRhOworICAgICAgICAgICAgcmVzdWx0LmJsb2NrZWQgPSAo
KGRvbWFpbkxvb2t1cFN0YXJ0IHx8IGNvbm5lY3RTdGFydCB8fCByZXF1ZXN0U3RhcnQpIC0gc3Rh
cnRUaW1lKSAqIDEwMDA7CisgICAgICAgICAgICBpZiAoZG9tYWluTG9va3VwU3RhcnQpCisgICAg
ICAgICAgICAgICAgcmVzdWx0LmRucyA9ICgoZG9tYWluTG9va3VwRW5kIHx8IGNvbm5lY3RTdGFy
dCB8fCByZXF1ZXN0U3RhcnQpIC0gZG9tYWluTG9va3VwU3RhcnQpICogMTAwMDsKKyAgICAgICAg
ICAgIGlmIChjb25uZWN0U3RhcnQpCisgICAgICAgICAgICAgICAgcmVzdWx0LmNvbm5lY3QgPSAo
KGNvbm5lY3RFbmQgfHwgcmVxdWVzdFN0YXJ0KSAtIGNvbm5lY3RTdGFydCkgKiAxMDAwOworICAg
ICAgICAgICAgaWYgKHNlY3VyZUNvbm5lY3Rpb25TdGFydCkKKyAgICAgICAgICAgICAgICByZXN1
bHQuc3NsID0gKChjb25uZWN0RW5kIHx8IHJlcXVlc3RTdGFydCkgLSBzZWN1cmVDb25uZWN0aW9u
U3RhcnQpICogMTAwMDsKKyAgICAgICAgICAgIHJlc3VsdC5zZW5kID0gKHJlcXVlc3RTdGFydCAt
IChjb25uZWN0RW5kIHx8IGRvbWFpbkxvb2t1cEVuZCB8fCBzdGFydFRpbWUpKSAqIDEwMDA7Cisg
ICAgICAgICAgICByZXN1bHQud2FpdCA9IChyZXNwb25zZVN0YXJ0IC0gcmVxdWVzdFN0YXJ0KSAq
IDEwMDA7CisgICAgICAgICAgICByZXN1bHQucmVjZWl2ZSA9IChyZXNwb25zZUVuZCAtIHJlc3Bv
bnNlU3RhcnQpICogMTAwMDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCisgICAgLy8gSGVscGVycworCisgICAgc3RhdGljIGlwQWRkcmVzcyhyZW1vdGVBZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgLy8gSVAgQWRkcmVzcywgd2l0aG91dCBwb3J0LgorICAgICAg
ICBpZiAoIXJlbW90ZUFkZHJlc3MpCisgICAgICAgICAgICByZXR1cm4gIiI7CisKKyAgICAgICAg
Ly8gTk9URTogUmVzb3VyY2UucmVtb3RlQWRkcmVzcyBhbHdheXMgaW5jbHVkZXMgdGhlIHBvcnQg
YXQgdGhlIGVuZC4KKyAgICAgICAgLy8gU28gdGhpcyBhbHdheXMgc3RyaXBzIHRoZSBsYXN0IHBh
cnQuCisgICAgICAgIHJldHVybiByZW1vdGVBZGRyZXNzLnJlcGxhY2UoLzpcZCskLywgIiIpOwor
ICAgIH0KKworICAgIHN0YXRpYyBkYXRlKGRhdGUpCisgICAgeworICAgICAgICAvLyBJU08gODYw
MQorICAgICAgICBpZiAoIWRhdGUpCisgICAgICAgICAgICByZXR1cm4gIiI7CisKKyAgICAgICAg
cmV0dXJuIGRhdGUudG9JU09TdHJpbmcoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgZmV0Y2hUeXBl
KHJlc3BvbnNlU291cmNlKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChyZXNwb25zZVNvdXJjZSkg
eworICAgICAgICBjYXNlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcms6CisgICAg
ICAgICAgICByZXR1cm4gIk5ldHdvcmsgTG9hZCI7CisgICAgICAgIGNhc2UgV0kuUmVzb3VyY2Uu
UmVzcG9uc2VTb3VyY2UuTWVtb3J5Q2FjaGU6CisgICAgICAgICAgICByZXR1cm4gIk1lbW9yeSBD
YWNoZSI7CisgICAgICAgIGNhc2UgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuRGlza0NhY2hl
OgorICAgICAgICAgICAgcmV0dXJuICJEaXNrIENhY2hlIjsKKyAgICAgICAgfQorCisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICB9
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWlu
Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5k
ZXggOTMwOGE0ZWI4MDMuLmU0ZmI0MGQzNjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC04MjAsNiArODIwLDcgQEAKICAgICA8c2NyaXB0
IHNyYz0iQ29udHJvbGxlcnMvRm9ybWF0dGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iQ29udHJvbGxlcnMvRm9ybWF0dGVyU291cmNlTWFwLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iQ29udHJvbGxlcnMvRnJhbWVSZXNvdXJjZU1hbmFnZXIuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9IQVJCdWlsZGVyLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvSGVhcE1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9Jc3N1ZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9KYXZhU2NyaXB0TG9nVmlld0NvbnRyb2xsZXIuanMi
Pjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL0Nvb2tpZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9Db29raWUuanMKaW5kZXggM2NmYzA2ZjU0ZjcuLjg0YzFhMTAyMjQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ29va2llLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Db29raWUu
anMKQEAgLTUzLDYgKzUzLDE4IEBAIFdJLkNvb2tpZSA9IGNsYXNzIENvb2tpZQogICAgICAgICB9
CiAgICAgfQogCisgICAgLy8gUHVibGljCisKKyAgICBleHBpcmF0aW9uRGF0ZShyZXF1ZXN0U2Vu
dERhdGUpCisgICAgeworICAgICAgICBpZiAodGhpcy5tYXhBZ2UpIHsKKyAgICAgICAgICAgIGxl
dCBzdGFydERhdGUgPSByZXF1ZXN0U2VudERhdGUgfHwgbmV3IERhdGU7CisgICAgICAgICAgICBy
ZXR1cm4gbmV3IERhdGUoc3RhcnREYXRlLmdldFRpbWUoKSArICh0aGlzLm1heEFnZSAqIDEwMDAp
KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0aGlzLmV4cGlyZXM7CisgICAgfQorCiAg
ICAgLy8gU3RhdGljCiAKICAgICAvLyBSRkMgNjI2NSBkZWZpbmVzIHRoZSBIVFRQIENvb2tpZSBh
bmQgU2V0LUNvb2tpZSBoZWFkZXIgZmllbGRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzCmluZGV4IDY5MDYzYjE0OTNh
Li4yY2MyYmYzZTdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZS5qcwpAQCAtMjYsNyArMjYsNyBAQAogCiBXSS5SZXNv
dXJjZSA9IGNsYXNzIFJlc291cmNlIGV4dGVuZHMgV0kuU291cmNlQ29kZQogewotICAgIGNvbnN0
cnVjdG9yKHVybCwgbWltZVR5cGUsIHR5cGUsIGxvYWRlcklkZW50aWZpZXIsIHRhcmdldElkLCBy
ZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdE1ldGhvZCwgcmVxdWVzdEhlYWRlcnMsIHJlcXVlc3RE
YXRhLCByZXF1ZXN0U2VudFRpbWVzdGFtcCwgaW5pdGlhdG9yU291cmNlQ29kZUxvY2F0aW9uLCBv
cmlnaW5hbFJlcXVlc3RXaWxsQmVTZW50VGltZXN0YW1wKQorICAgIGNvbnN0cnVjdG9yKHVybCwg
bWltZVR5cGUsIHR5cGUsIGxvYWRlcklkZW50aWZpZXIsIHRhcmdldElkLCByZXF1ZXN0SWRlbnRp
ZmllciwgcmVxdWVzdE1ldGhvZCwgcmVxdWVzdEhlYWRlcnMsIHJlcXVlc3REYXRhLCByZXF1ZXN0
U2VudFRpbWVzdGFtcCwgcmVxdWVzdFNlbnRXYWxsdGltZSwgaW5pdGlhdG9yU291cmNlQ29kZUxv
Y2F0aW9uLCBvcmlnaW5hbFJlcXVlc3RXaWxsQmVTZW50VGltZXN0YW1wKQogICAgIHsKICAgICAg
ICAgc3VwZXIoKTsKIApAQCAtNDIsNiArNDIsOCBAQCBXSS5SZXNvdXJjZSA9IGNsYXNzIFJlc291
cmNlIGV4dGVuZHMgV0kuU291cmNlQ29kZQogICAgICAgICB0aGlzLl90eXBlID0gdHlwZSB8fCBX
SS5SZXNvdXJjZS50eXBlRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKICAgICAgICAgdGhpcy5fbG9h
ZGVySWRlbnRpZmllciA9IGxvYWRlcklkZW50aWZpZXIgfHwgbnVsbDsKICAgICAgICAgdGhpcy5f
cmVxdWVzdElkZW50aWZpZXIgPSByZXF1ZXN0SWRlbnRpZmllciB8fCBudWxsOworICAgICAgICB0
aGlzLl9xdWVyeVN0cmluZ1BhcmFtZXRlcnMgPSB1bmRlZmluZWQ7CisgICAgICAgIHRoaXMuX3Jl
cXVlc3RGb3JtUGFyYW1ldGVycyA9IHVuZGVmaW5lZDsKICAgICAgICAgdGhpcy5fcmVxdWVzdE1l
dGhvZCA9IHJlcXVlc3RNZXRob2QgfHwgbnVsbDsKICAgICAgICAgdGhpcy5fcmVxdWVzdERhdGEg
PSByZXF1ZXN0RGF0YSB8fCBudWxsOwogICAgICAgICB0aGlzLl9yZXF1ZXN0SGVhZGVycyA9IHJl
cXVlc3RIZWFkZXJzIHx8IHt9OwpAQCAtNTMsNiArNTUsNyBAQCBXSS5SZXNvdXJjZSA9IGNsYXNz
IFJlc291cmNlIGV4dGVuZHMgV0kuU291cmNlQ29kZQogICAgICAgICB0aGlzLl9pbml0aWF0ZWRS
ZXNvdXJjZXMgPSBbXTsKICAgICAgICAgdGhpcy5fb3JpZ2luYWxSZXF1ZXN0V2lsbEJlU2VudFRp
bWVzdGFtcCA9IG9yaWdpbmFsUmVxdWVzdFdpbGxCZVNlbnRUaW1lc3RhbXAgfHwgbnVsbDsKICAg
ICAgICAgdGhpcy5fcmVxdWVzdFNlbnRUaW1lc3RhbXAgPSByZXF1ZXN0U2VudFRpbWVzdGFtcCB8
fCBOYU47CisgICAgICAgIHRoaXMuX3JlcXVlc3RTZW50V2FsbHRpbWUgPSByZXF1ZXN0U2VudFdh
bGx0aW1lIHx8IE5hTjsKICAgICAgICAgdGhpcy5fcmVzcG9uc2VSZWNlaXZlZFRpbWVzdGFtcCA9
IE5hTjsKICAgICAgICAgdGhpcy5fbGFzdFJlZGlyZWN0UmVjZWl2ZWRUaW1lc3RhbXAgPSBOYU47
CiAgICAgICAgIHRoaXMuX2xhc3REYXRhUmVjZWl2ZWRUaW1lc3RhbXAgPSBOYU47CkBAIC00MTAs
NiArNDEzLDIwIEBAIFdJLlJlc291cmNlID0gY2xhc3MgUmVzb3VyY2UgZXh0ZW5kcyBXSS5Tb3Vy
Y2VDb2RlCiAgICAgICAgIHJldHVybiB0aGlzLl9mYWlsdXJlUmVhc29uVGV4dDsKICAgICB9CiAK
KyAgICBnZXQgcXVlcnlTdHJpbmdQYXJhbWV0ZXJzKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlz
Ll9xdWVyeVN0cmluZ1BhcmFtZXRlcnMgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAgIHRoaXMu
X3F1ZXJ5U3RyaW5nUGFyYW1ldGVycyA9IHBhcnNlUXVlcnlTdHJpbmcodGhpcy51cmxDb21wb25l
bnRzLnF1ZXJ5U3RyaW5nLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3F1ZXJ5U3RyaW5n
UGFyYW1ldGVyczsKKyAgICB9CisKKyAgICBnZXQgcmVxdWVzdEZvcm1QYXJhbWV0ZXJzKCkKKyAg
ICB7CisgICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0Rm9ybVBhcmFtZXRlcnMgPT09IHVuZGVmaW5l
ZCkKKyAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RGb3JtUGFyYW1ldGVycyA9IHRoaXMuaGFzUmVx
dWVzdEZvcm1QYXJhbWV0ZXJzKCkgPyBwYXJzZVF1ZXJ5U3RyaW5nKHRoaXMucmVxdWVzdERhdGEs
IHRydWUpIDogbnVsbDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3RGb3JtUGFyYW1ldGVy
czsKKyAgICB9CisKICAgICBnZXQgcmVxdWVzdERhdGFDb250ZW50VHlwZSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fcmVxdWVzdEhlYWRlcnMudmFsdWVGb3JDYXNlSW5zZW5zaXRpdmVL
ZXkoIkNvbnRlbnQtVHlwZSIpIHx8IG51bGw7CkBAIC00NjAsNiArNDc3LDE2IEBAIFdJLlJlc291
cmNlID0gY2xhc3MgUmVzb3VyY2UgZXh0ZW5kcyBXSS5Tb3VyY2VDb2RlCiAgICAgICAgIHJldHVy
biB0aGlzLl9yZXF1ZXN0U2VudFRpbWVzdGFtcDsKICAgICB9CiAKKyAgICBnZXQgcmVxdWVzdFNl
bnRXYWxsdGltZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWVzdFNlbnRXYWxs
dGltZTsKKyAgICB9CisKKyAgICBnZXQgcmVxdWVzdFNlbnREYXRlKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBpc05hTih0aGlzLl9yZXF1ZXN0U2VudFdhbGx0aW1lKSA/IG51bGwgOiBuZXcgRGF0
ZSh0aGlzLl9yZXF1ZXN0U2VudFdhbGx0aW1lICogMTAwMCk7CisgICAgfQorCiAgICAgZ2V0IGxh
c3RSZWRpcmVjdFJlY2VpdmVkVGltZXN0YW1wKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9sYXN0UmVkaXJlY3RSZWNlaXZlZFRpbWVzdGFtcDsKQEAgLTY1Niw2ICs2ODMsMTIgQEAgV0ku
UmVzb3VyY2UgPSBjbGFzcyBSZXNvdXJjZSBleHRlbmRzIFdJLlNvdXJjZUNvZGUKICAgICAgICAg
cmV0dXJuICFpc05hTih0aGlzLl9zdGF0dXNDb2RlKSB8fCB0aGlzLl9maW5pc2hlZDsKICAgICB9
CiAKKyAgICBoYXNSZXF1ZXN0Rm9ybVBhcmFtZXRlcnMoKQorICAgIHsKKyAgICAgICAgbGV0IHJl
cXVlc3REYXRhQ29udGVudFR5cGUgPSB0aGlzLnJlcXVlc3REYXRhQ29udGVudFR5cGU7CisgICAg
ICAgIHJldHVybiByZXF1ZXN0RGF0YUNvbnRlbnRUeXBlICYmIHJlcXVlc3REYXRhQ29udGVudFR5
cGUubWF0Y2goL15hcHBsaWNhdGlvblwveC13d3ctZm9ybS11cmxlbmNvZGVkXHMqKDsuKik/JC9p
KTsKKyAgICB9CisKICAgICB1cGRhdGVGb3JSZXNwb25zZSh1cmwsIG1pbWVUeXBlLCB0eXBlLCBy
ZXNwb25zZUhlYWRlcnMsIHN0YXR1c0NvZGUsIHN0YXR1c1RleHQsIGVsYXBzZWRUaW1lLCB0aW1p
bmdEYXRhLCBzb3VyY2UpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fZmlu
aXNoZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL1NvdXJjZUNvZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvU291cmNlQ29kZS5qcwppbmRleCA4MzM3MWVjODdkMi4uODM0MzMzNjQxYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Tb3Vy
Y2VDb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9Tb3VyY2VDb2RlLmpzCkBAIC0xOTQsMTIgKzE5NCwxMyBAQCBXSS5Tb3VyY2VDb2RlID0gY2xh
c3MgU291cmNlQ29kZSBleHRlbmRzIFdJLk9iamVjdAogICAgIF9wcm9jZXNzQ29udGVudChwYXJh
bWV0ZXJzKQogICAgIHsKICAgICAgICAgLy8gRGlmZmVyZW50IGJhY2tlbmQgQVBJcyByZXR1cm4g
b25lIG9mIGBjb250ZW50LCBgYm9keWAsIGB0ZXh0YCwgb3IgYHNjcmlwdFNvdXJjZWAuCi0gICAg
ICAgIHZhciBjb250ZW50ID0gcGFyYW1ldGVycy5jb250ZW50IHx8IHBhcmFtZXRlcnMuYm9keSB8
fCBwYXJhbWV0ZXJzLnRleHQgfHwgcGFyYW1ldGVycy5zY3JpcHRTb3VyY2U7Ci0gICAgICAgIHZh
ciBlcnJvciA9IHBhcmFtZXRlcnMuZXJyb3I7CisgICAgICAgIGxldCByYXdDb250ZW50ID0gcGFy
YW1ldGVycy5jb250ZW50IHx8IHBhcmFtZXRlcnMuYm9keSB8fCBwYXJhbWV0ZXJzLnRleHQgfHwg
cGFyYW1ldGVycy5zY3JpcHRTb3VyY2U7CisgICAgICAgIGxldCBjb250ZW50ID0gcmF3Q29udGVu
dDsKKyAgICAgICAgbGV0IGVycm9yID0gcGFyYW1ldGVycy5lcnJvcjsKICAgICAgICAgaWYgKHBh
cmFtZXRlcnMuYmFzZTY0RW5jb2RlZCkKICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50ID8g
ZGVjb2RlQmFzZTY0VG9CbG9iKGNvbnRlbnQsIHRoaXMubWltZVR5cGUpIDogIiI7CiAKLSAgICAg
ICAgdmFyIHJldmlzaW9uID0gdGhpcy5yZXZpc2lvbkZvclJlcXVlc3RlZENvbnRlbnQ7CisgICAg
ICAgIGxldCByZXZpc2lvbiA9IHRoaXMucmV2aXNpb25Gb3JSZXF1ZXN0ZWRDb250ZW50OwogCiAg
ICAgICAgIHRoaXMuX2lnbm9yZVJldmlzaW9uQ29udGVudERpZENoYW5nZUV2ZW50ID0gdHJ1ZTsK
ICAgICAgICAgcmV2aXNpb24uY29udGVudCA9IGNvbnRlbnQgfHwgbnVsbDsKQEAgLTIxMyw2ICsy
MTQsOCBAQCBXSS5Tb3VyY2VDb2RlID0gY2xhc3MgU291cmNlQ29kZSBleHRlbmRzIFdJLk9iamVj
dAogICAgICAgICAgICAgZXJyb3IsCiAgICAgICAgICAgICBzb3VyY2VDb2RlOiB0aGlzLAogICAg
ICAgICAgICAgY29udGVudCwKKyAgICAgICAgICAgIHJhd0NvbnRlbnQsCisgICAgICAgICAgICBy
YXdCYXNlNjRFbmNvZGVkOiBwYXJhbWV0ZXJzLmJhc2U2NEVuY29kZWQsCiAgICAgICAgIH0pOwog
ICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMKaW5kZXggYWIwNTQ1NmJkMzYu
LmE1MmQxZTEwYTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpzCkBAIC0yNyw5ICsy
NywxOCBAQCBXSS5OZXR3b3JrT2JzZXJ2ZXIgPSBjbGFzcyBOZXR3b3JrT2JzZXJ2ZXIKIHsKICAg
ICAvLyBFdmVudHMgZGVmaW5lZCBieSB0aGUgIk5ldHdvcmsiIGRvbWFpbi4KIAotICAgIHJlcXVl
c3RXaWxsQmVTZW50KHJlcXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIGRvY3VtZW50VVJMLCBy
ZXF1ZXN0LCB0aW1lc3RhbXAsIGluaXRpYXRvciwgcmVkaXJlY3RSZXNwb25zZSwgdHlwZSwgdGFy
Z2V0SWQpCisgICAgcmVxdWVzdFdpbGxCZVNlbnQocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJ
ZCwgZG9jdW1lbnRVUkwsIHJlcXVlc3QsIHRpbWVzdGFtcCwgd2FsbHRpbWUsIGluaXRpYXRvciwg
cmVkaXJlY3RSZXNwb25zZSwgdHlwZSwgdGFyZ2V0SWQpCiAgICAgewotICAgICAgICBXSS5mcmFt
ZVJlc291cmNlTWFuYWdlci5yZXNvdXJjZVJlcXVlc3RXaWxsQmVTZW50KHJlcXVlc3RJZCwgZnJh
bWVJZCwgbG9hZGVySWQsIHJlcXVlc3QsIHR5cGUsIHJlZGlyZWN0UmVzcG9uc2UsIHRpbWVzdGFt
cCwgaW5pdGlhdG9yLCB0YXJnZXRJZCk7CisgICAgICAgIC8vIENPTVBBVElCSUxJVFkoaU9TIDEx
LjApOiBgd2FsbHRpbWVgIGRpZCBub3QgZXhpc3QgaW4gMTEuMCBhbmQgZWFybGllci4KKyAgICAg
ICAgaWYgKCFOZXR3b3JrQWdlbnQuaGFzRXZlbnRQYXJhbWV0ZXIoInJlcXVlc3RXaWxsQmVTZW50
IiwgIndhbGx0aW1lIikpIHsKKyAgICAgICAgICAgIHdhbGx0aW1lID0gdW5kZWZpbmVkOworICAg
ICAgICAgICAgaW5pdGlhdG9yID0gYXJndW1lbnRzWzZdOworICAgICAgICAgICAgcmVkaXJlY3RS
ZXNwb25zZSA9IGFyZ3VtZW50c1s3XTsKKyAgICAgICAgICAgIHR5cGUgPSBhcmd1bWVudHNbOF07
CisgICAgICAgICAgICB0YXJnZXRJZCA9IGFyZ3VtZW50c1s5XTsKKyAgICAgICAgfQorCisgICAg
ICAgIFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlUmVxdWVzdFdpbGxCZVNlbnQocmVx
dWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgcmVxdWVzdCwgdHlwZSwgcmVkaXJlY3RSZXNwb25z
ZSwgdGltZXN0YW1wLCB3YWxsdGltZSwgaW5pdGlhdG9yLCB0YXJnZXRJZCk7CiAgICAgfQogCiAg
ICAgcmVxdWVzdFNlcnZlZEZyb21DYWNoZShyZXF1ZXN0SWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKaW5kZXggNzVmYzJhN2YwNDkuLmM3MTZkOTgw
NTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0
Lmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1s
CkBAIC0yMDIsNiArMjAyLDcgQEAKICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvRE9NVHJl
ZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9EZWJ1
Z2dlck1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9G
cmFtZVJlc291cmNlTWFuYWdlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkNvbnRy
b2xsZXJzL0hBUkJ1aWxkZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9s
bGVycy9IZWFwTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xs
ZXJzL0lzc3VlTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xs
ZXJzL0xheWVyVHJlZU1hbmFnZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9UZXN0SGFybmVzcy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVzdEhhcm5lc3MuanMKaW5kZXggMjY1
MmU4NDJlZDQuLjdhZDU4NmNiMzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9UZXN0L1Rlc3RIYXJuZXNzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVzdEhhcm5lc3MuanMKQEAgLTkwLDYgKzkwLDExIEBA
IFRlc3RIYXJuZXNzID0gY2xhc3MgVGVzdEhhcm5lc3MgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAg
ICAgICAgIHRoaXMuYWRkUmVzdWx0KG1lc3NhZ2UpOwogICAgIH0KIAorICAgIGpzb24ob2JqZWN0
LCBmaWx0ZXIpCisgICAgeworICAgICAgICB0aGlzLmxvZyhKU09OLnN0cmluZ2lmeShvYmplY3Qs
IGZpbHRlciB8fCBudWxsLCAyKSk7CisgICAgfQorCiAgICAgYXNzZXJ0KGNvbmRpdGlvbiwgbWVz
c2FnZSkKICAgICB7CiAgICAgICAgIGlmIChjb25kaXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVu
dFZpZXcuanMKaW5kZXggOTNhOWE2YjJjOTEuLmNiYmY0ODM0ODAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJl
ZUNvbnRlbnRWaWV3LmpzCkBAIC0yMTQsMTIgKzIxNCw3IEBAIFdJLkRPTVRyZWVDb250ZW50Vmll
dyA9IGNsYXNzIERPTVRyZWVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAKICAg
ICBnZXQgc2F2ZURhdGEoKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gc2F2ZUhhbmRsZXIoZm9y
Y2VTYXZlQXMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFdJLmFyY2hpdmVNYWluRnJhbWUoKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB7Y3VzdG9tU2F2ZUhhbmRsZXI6IHNhdmVIYW5k
bGVyfTsKKyAgICAgICAgcmV0dXJuIHtjdXN0b21TYXZlSGFuZGxlcjogKCkgPT4geyBXSS5hcmNo
aXZlTWFpbkZyYW1lKCk7IH19OwogICAgIH0KIAogICAgIGdldCBzdXBwb3J0c1NlYXJjaCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3
b3JrVGFibGVDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL05ldHdvcmtUYWJsZUNvbnRlbnRWaWV3LmpzCmluZGV4IGFiMzk2ODIwZTM4Li40
YzNiZDI5ODJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvTmV0d29ya1RhYmxlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RhYmxlQ29udGVudFZpZXcuanMKQEAg
LTE4NCw2ICsxODQsMTYgQEAgV0kuTmV0d29ya1RhYmxlQ29udGVudFZpZXcgPSBjbGFzcyBOZXR3
b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWUKICAgICAgICAgcmV0dXJu
IGl0ZW1zOwogICAgIH0KIAorICAgIGdldCBzdXBwb3J0c1NhdmUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2ZpbHRlcmVkRW50cmllcy5zb21lKChlbnRyeSkgPT4gZW50cnkucmVzb3Vy
Y2UuZmluaXNoZWQpOworICAgIH0KKworICAgIGdldCBzYXZlRGF0YSgpCisgICAgeworICAgICAg
ICByZXR1cm4ge2N1c3RvbVNhdmVIYW5kbGVyOiAoKSA9PiB7IHRoaXMuX2V4cG9ydEhBUigpOyB9
fTsKKyAgICB9CisKICAgICBzaG93bigpCiAgICAgewogICAgICAgICBzdXBlci5zaG93bigpOwpA
QCAtMjk1LDYgKzMwNSw5IEBAIFdJLk5ldHdvcmtUYWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgTmV0
d29ya1RhYmxlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmllCiAgICAgICAgIGxldCBl
bnRyeSA9IHRoaXMuX2ZpbHRlcmVkRW50cmllc1tyb3dJbmRleF07CiAgICAgICAgIGxldCBjb250
ZXh0TWVudSA9IFdJLkNvbnRleHRNZW51LmNyZWF0ZUZyb21FdmVudChldmVudCk7CiAgICAgICAg
IFdJLmFwcGVuZENvbnRleHRNZW51SXRlbXNGb3JTb3VyY2VDb2RlKGNvbnRleHRNZW51LCBlbnRy
eS5yZXNvdXJjZSk7CisKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7Cisg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkV4cG9ydCBIQVIiKSwg
dGhpcy5fZXhwb3J0SEFSKTsKICAgICB9CiAKICAgICB0YWJsZVNlbGVjdGVkUm93Q2hhbmdlZCh0
YWJsZSwgcm93SW5kZXgpCkBAIC0xMzYwLDYgKzEzNzMsMzMgQEAgV0kuTmV0d29ya1RhYmxlQ29u
dGVudFZpZXcgPSBjbGFzcyBOZXR3b3JrVGFibGVDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRl
bnRWaWUKICAgICAgICAgdGhpcy5fdGFibGUuc2VsZWN0Um93KHJvd0luZGV4KTsKICAgICB9CiAK
KyAgICBfSEFSUmVzb3VyY2VzKCkKKyAgICB7CisgICAgICAgIGxldCByZXNvdXJjZXMgPSB0aGlz
Ll9maWx0ZXJlZEVudHJpZXMubWFwKCh4KSA9PiB4LnJlc291cmNlKTsKKyAgICAgICAgY29uc3Qg
c3VwcG9ydGVkSEFSU2NoZW1lcyA9IG5ldyBTZXQoWyJodHRwIiwgImh0dHBzIiwgIndzIiwgIndz
cyJdKTsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlcy5maWx0ZXIoKHJlc291cmNlKSA9PiByZXNv
dXJjZS5maW5pc2hlZCAmJiBzdXBwb3J0ZWRIQVJTY2hlbWVzLmhhcyhyZXNvdXJjZS51cmxDb21w
b25lbnRzLnNjaGVtZSkpOworICAgIH0KKworICAgIF9leHBvcnRIQVIoKQorICAgIHsKKyAgICAg
ICAgbGV0IHJlc291cmNlcyA9IHRoaXMuX0hBUlJlc291cmNlcygpOworICAgICAgICBpZiAoIXJl
c291cmNlcy5sZW5ndGgpIHsKKyAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5iZWVw
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBXSS5IQVJCdWls
ZGVyLmJ1aWxkQXJjaGl2ZShyZXNvdXJjZXMpLnRoZW4oKGhhcikgPT4geworICAgICAgICAgICAg
bGV0IG1haW5GcmFtZSA9IFdJLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1haW5GcmFtZTsKKyAgICAg
ICAgICAgIGxldCBhcmNoaXZlTmFtZSA9IG1haW5GcmFtZS5tYWluUmVzb3VyY2UudXJsQ29tcG9u
ZW50cy5ob3N0IHx8IG1haW5GcmFtZS5tYWluUmVzb3VyY2UuZGlzcGxheU5hbWUgfHwgIkFyY2hp
dmUiOworICAgICAgICAgICAgbGV0IHVybCA9ICJ3ZWItaW5zcGVjdG9yOi8vLyIgKyBlbmNvZGVV
UkkoYXJjaGl2ZU5hbWUpICsgIi5oYXIiOworICAgICAgICAgICAgV0kuc2F2ZURhdGFUb0ZpbGUo
eworICAgICAgICAgICAgICAgIHVybCwKKyAgICAgICAgICAgICAgICBjb250ZW50OiBKU09OLnN0
cmluZ2lmeShoYXIsIG51bGwsIDIpLAorICAgICAgICAgICAgICAgIGZvcmNlU2F2ZUFzOiB0cnVl
LAorICAgICAgICAgICAgfSk7CisgICAgICAgIH0pLmNhdGNoKGhhbmRsZVByb21pc2VFeGNlcHRp
b24pOworICAgIH0KKwogICAgIF93YXRlcmZhbGxQb3BvdmVyQ29udGVudEZvclJlc291cmNlKHJl
c291cmNlKQogICAgIHsKICAgICAgICAgbGV0IGNvbnRlbnRFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ2x1c3RlckNvbnRlbnRW
aWV3LmpzCmluZGV4IDY1NWY3NzY1MjE5Li5lODQzNDZkNWE0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDbHVzdGVyQ29udGVu
dFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
UmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuanMKQEAgLTIxMyw4ICsyMTMsNyBAQCBXSS5SZXNv
dXJjZUNsdXN0ZXJDb250ZW50VmlldyA9IGNsYXNzIFJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3
IGV4dGVuZHMgV0kuQ2x1cwogICAgICAgICBpZiAoIXJlcXVlc3REYXRhKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHZhciByZXF1ZXN0RGF0YUNvbnRlbnRUeXBlID0gdGhp
cy5fcmVzb3VyY2UucmVxdWVzdERhdGFDb250ZW50VHlwZTsKLSAgICAgICAgaWYgKHJlcXVlc3RE
YXRhQ29udGVudFR5cGUgJiYgcmVxdWVzdERhdGFDb250ZW50VHlwZS5tYXRjaCgvXmFwcGxpY2F0
aW9uXC94LXd3dy1mb3JtLXVybGVuY29kZWRccyooOy4qKT8kL2kpKQorICAgICAgICBpZiAoIXRo
aXMuX3Jlc291cmNlLmhhc1JlcXVlc3RGb3JtUGFyYW1ldGVycygpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgICAgIHJldHVybiB0cnVlOwo=
</data>
<flag name="review"
          id="344163"
          type_id="1"
          status="+"
          setter="bburg"
    />
          </attachment>
      

    </bug>

</bugzilla>