<?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>42861</bug_id>
          
          <creation_ts>2010-07-22 17:42:42 -0700</creation_ts>
          <short_desc>Session history should skip over JS redirects</short_desc>
          <delta_ts>2011-06-30 18:28:59 -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>History</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>http://persistent.info/webkit/test-cases/redirects/page1.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>43292</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mihai Parparita">mihaip</reporter>
          <assigned_to name="Mihai Parparita">mihaip</assigned_to>
          <cc>abarth</cc>
    
    <cc>anantha</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>benm</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>ggaren</cc>
    
    <cc>joenotcharles</cc>
    
    <cc>mjs</cc>
    
    <cc>mpComplete</cc>
    
    <cc>pkasting</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>255107</commentid>
    <comment_count>0</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-07-22 17:42:42 -0700</bug_when>
    <thetext>Chrome currently has some logic to not add session history entries for pages that generate &quot;machine&quot; redirects (e.g. if foo.com has a window.location.href = &apos;/page.html&apos; JS snippet onload on soon after) - see http://crrev.com/18373. This logic shouldn&apos;t live in Chrome code (in navigation_controller.cc, etc.), it should instead be promoted to WebKit code.

Bug that this would fix (reproduced as of WebKit r63854):
1. Visit http://www.apple.com/
2. Visit http://www.hp.com/
3. Wait for JS redirect to http://www.hp.com/#Product (should happen &lt;1 second after hp.com loads)
4. Press back

Expected result:
1. End up at http://www.apple.com/

Actual result:
1. End up at a 404 page on hp.com

Reduced test case at:

http://persistent.info/webkit/test-cases/redirects/page1.html

After waiting for the two redirects (ending up on page 3), pressing back should take you to page 1, not page 2.

Proposed fix is similar to http://crrev.com/18373: Don&apos;t add a session history entry if the navigation happens without a user gesture (click or key press) within the first 5 seconds after the page loads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255176</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-22 20:18:21 -0700</bug_when>
    <thetext>Is this desired behavior supported by the HTML5 spec?  If not, should we recommend that it be amended for this?  Is this what other browsers, IE and Firefox, do?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255495</commentid>
    <comment_count>2</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-07-23 11:59:25 -0700</bug_when>
    <thetext>As best as I can tell, http://www.w3.org/TR/html5/history.html does not mention this behavior. It alludes to something similar in section 5.4.4 though: &quot;In addition, a user agent could ignore calls to pushState() that are invoked on a timer, or from event listeners that are not triggered in response to a clear user action, or that are invoked in rapid succession.&quot;

I tested Firefox 3.6 (Mac) and IE 8 (Windows 7), and both handle the hp.com case correctly, but not the persistent.info test case. They may special-case programatic fragment navigation (vs. whole page navigation). I&apos;ll see if I can come up with another test case, and see how they behave on the bugs that http://crrev.com/18373 was trying to fix (http://crbug.com/11896 and http://crbug.com/12820)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255546</commentid>
    <comment_count>3</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-07-23 14:03:49 -0700</bug_when>
    <thetext>Here&apos;s some more systematic test cases:

persistent.info/webkit/test-cases/redirects/fragment.html?&lt;timeout&gt;
persistent.info/webkit/test-cases/redirects/page.html?&lt;timeout&gt;

Where &lt;timeout&gt; is the timeout in milliseconds before navigating to the destination (by setting window.location). In the case of fragment.html that&apos;s #foo, in the case of page.html that&apos;s destination.html. If the timeout param 0, the navigation is done onload (with no setTimeout call). 

The test was to visit google.com, then the page, wait for the redirect to complete, and press back. A result of &quot;g.com&quot; means that google.com was shown, while &quot;page&quot; means that the interstitial page was shown.

          Chrome     WebKit  Firefox  IE 8
fragment  
  onload  g.com      page    g.com    g.com
  200ms   g.com      page    page     g.com
  1000ms  g.com      page    page     g.com
  5000ms  g.com      page    page     g.com
  6000ms  page       page    page     g.com
page
  onload  g.com      page    g.com    page
  200ms   g.com      page    page     page
  1000ms  g.com      page    page     page
  5000ms  page       page    page     page
  6000ms  page       page    page     page

Observations:
- No browser other than Chrome has time-dependent behavior.
- All browsers (except for IE 8) handle fragment and page navigation the same
- There is precedent for modifying WebKit to replace (session) history entries for JS redirects during onload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255763</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-24 17:24:46 -0700</bug_when>
    <thetext>I don&apos;t know all the details, but I think that WebCore logic is to skip over redirects that happen within 1 second, regardless of whether they are caused by JS or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255786</commentid>
    <comment_count>5</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-07-24 21:36:36 -0700</bug_when>
    <thetext>Alexy: Can I get a pointer to where in the code that should be happening? Based on my tests (see comment 3) I&apos;m not seeing that behavior, but perhaps I&apos;m not testing the same thing (e.g. I haven&apos;t looked into &lt;meta&gt; refresh redirects).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255799</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-24 22:39:44 -0700</bug_when>
    <thetext>The words to search source code for are &quot;lockBackForwardList&quot; and &quot;quickRedirect&quot;. As evidenced by FIXMEs around them, the logic is tangled, but it looks like it should be possible to explore with moderate effort.

Specifically, the 1 second cutoff is implemented in RedirectScheduler::scheduleRedirect():

    // We want a new history item if the refresh timeout is &gt; 1 second.
    if (!m_redirect || delay &lt;= m_redirect-&gt;delay())
        schedule(new ScheduledRedirect(delay, url, true, delay &lt;= 1, false));

But it may become impossible to understand the logic if the Chromium behavior is added to WebCore without refactoring what we have now. That&apos;s what I&apos;m trying to avoid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256352</commentid>
    <comment_count>7</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-07-26 17:32:22 -0700</bug_when>
    <thetext>I agree that Chromium behavior should not be ported wholesale here, and that a simplification may be in order.

I was tracing the history of the &quot;don&apos;t add a session history entry if the redirect delay is &lt;= 1 second&quot; logic, and it looks like it was refactored in http://trac.webkit.org/changeset/24353. Both that change and http://trac.webkit.org/changeset/24367 mention rdar://problem/5339292 as a bug that describes a cleanup of JS navigation logic to be more like the redirection one. Is there anything else relevant in that bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256359</commentid>
    <comment_count>8</comment_count>
      <attachid>62634</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-07-26 18:07:33 -0700</bug_when>
    <thetext>Created attachment 62634
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256361</commentid>
    <comment_count>9</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-07-26 18:17:04 -0700</bug_when>
    <thetext>I&apos;ve uploaded a strawman proposal that implements the a (hopefully) minimally invasive change: also lock the back forward list if the location change happens before the onload event and is not in response to a user gesture.

The &quot;user gesture&quot; test was added to handle this test case: http://persistent.info/webkit/test-cases/redirects/delayed-onload.php. The initial page contents (up to the link) are flushed but the page doesn&apos;t finish loading for 10 seconds. Since the user has time to see the link and click on it, a new history entry should be generate for this page.

With this patch, the table that I generated in comment 3 looks like this:

          Chrome     WebKit  Firefox  IE 8
fragment  
  onload  g.com      g.com    g.com    g.com
  200ms   g.com      page    page     g.com
  1000ms  g.com      page    page     g.com
  5000ms  g.com      page    page     g.com
  6000ms  page       page    page     g.com
page
  onload  g.com      g.com    g.com    page
  200ms   g.com      page    page     page
  1000ms  g.com      page    page     page
  5000ms  page       page    page     page
  6000ms  page       page    page     page

Additionally, pressing back from after going to http://ww.hp.com/ (which JS redirects to http://www.hp.com/#Product during onload) works as expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256821</commentid>
    <comment_count>10</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-07-27 14:10:23 -0700</bug_when>
    <thetext>At Darin&apos;s suggestion, I modified delayed-onload.php to also do a JS redirect inline (not in the onload handler). Here&apos;s the results of going to google.com, navigating to the page, waiting for the redirect, and then pressing back for different query values:
                                        Chrome  WebKit  Firefox  IE
  -1 (no timeout, user clicks on link)  page    page    page     page
   0 (navigate inline)                  g.com   page    g.com    page
 200 (navigate after 200ms)             g.com   page    page     page
6000 (navigate after 6000ms)            g.com   page    page     page

(with my patch, the WebKit results would be page/g.com/g.com/g.com)

Interestingly, Firefox still generates a session history entry for JS redirects in timeouts that occur before the page finishes loading (but based on the tests in comment 3, JS redirects during onload don&apos;t create one). 

delayed-onload.php delays the page itself finishing loading (so that both DOMContentLoaded and load occur in ~10 seconds). Here&apos;s another test, where the DOM should load immediately (firing DOMContentLoaded), but there&apos;s a referenced image that takes 10 seconds to load (firing load): http://persistent.info/webkit/test-cases/redirects/delayed-load.html

                                         Chrome  WebKit  Firefox
   0 (navigate during DOMContentLoaded)  g.com   page    page  
 200 (navigate after 200ms)              g.com   page    page
6000 (navigate after 6000ms)             page    page    page

(IE 8 doesn&apos;t support DOMContentLoaded; with my patch the WebKit results would be g.com/g.com/g.com)

Basically, it looks like Firefox doesn&apos;t create a new history entry if the JS redirect happens inline, or if it&apos;s during an onload (but not DOMContentLoaded) handler, whereas my patch doesn&apos;t create a new history entry for any JS redirects until onload has finished running. As a web developer, I find that simpler to understand, but if Darin (or anyone else) think that matching the Firefox behavior is better for web compat, I can do that too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256837</commentid>
    <comment_count>11</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-07-27 14:29:17 -0700</bug_when>
    <thetext>Another test that Darin mentioned was to look at navigations caused by JS form submits, since there have been WebKit bugs with history generated by them in the past (http://trac.webkit.org/changeset/45606, http://trac.webkit.org/changeset/25410, https://webkit.org/b/32383)

                             Chrome  WebKit  Firefox  IE
   0 (submit during onload)  page    page    page     page
 200 (submit after 200ms)    page    page    page     page
6000 (submit after 6000ms)   page    page    page     page

With my patch, the WebKit behavior is g.com/page/page. Given that all the other browsers always create a history entry, it seems prudent to not change WebKit&apos;s behavior here (i.e. don&apos;t trigger the check that I added to mustLockBackForwardList when it&apos;s called from scheduleFormSubmission).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256851</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-27 14:41:02 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Basically, it looks like Firefox doesn&apos;t create a new history entry if
&gt; the JS redirect happens inline, or if it&apos;s during an onload (but not
&gt; DOMContentLoaded) handler, whereas my patch doesn&apos;t create a new history
&gt; entry for any JS redirects until onload has finished running. As a web
&gt; developer, I find that simpler to understand, but if Darin (or anyone
&gt; else) think that matching the Firefox behavior is better for web compat,
&gt; I can do that too.

Thanks for investigating this!

Interesting, so it seems that Firefox is not taking user gesture into
account.  

This may be something worth posting to whatwg about for discussion, but
I&apos;m happy to proceed with your patch.  It seems reasonable and easy enough
for web developers to understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256952</commentid>
    <comment_count>13</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-07-27 17:33:35 -0700</bug_when>
    <thetext>Adding Geoffrey Garen to the cc list, since I noticed that a lot of the LayoutTest failures that I&apos;m seeing with this patch are actually tests that he added in http://trac.webkit.org/changeset/40331 and http://trac.webkit.org/changeset/40424. The expectation was that the tests would fail, but they now pass. I see that as a good thing (and will update the expectations), but I was wondering if Geoffrey had any pointers (e.g. other bugs that this patch might fix too).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257175</commentid>
    <comment_count>14</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2010-07-28 08:32:31 -0700</bug_when>
    <thetext>This sounds related to bugs 30224 (actually may be a duplicate) and 41670.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257246</commentid>
    <comment_count>15</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-07-28 10:50:23 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; This sounds related to bugs 30224 (actually may be a duplicate) and 41670.

Thanks for the pointers. This does fix bug 30224 and bug 41670 (in that the back button behavior is correct for both http://app.showtime-app.com and the mobile WIkipedia redirect). I can mark this one as a dupe of one of them, but I&apos;d prefer to keep the IE/Firefox/Chrome/Safari tests that I did more visible than hidden behind a dupe link.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257501</commentid>
    <comment_count>16</comment_count>
      <attachid>62906</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-07-28 18:08:41 -0700</bug_when>
    <thetext>Created attachment 62906
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257502</commentid>
    <comment_count>17</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-07-28 18:11:53 -0700</bug_when>
    <thetext>Attached complete patch with update expectations and a new test for the user gesture behavior for Darin to review.

There are still some tests in http/tests/history that have a FAIL expectation, e.g. redirect-js-location-0-seconds. They navigate after onload (either 0 or 2 seconds), which seemed safer not to modify session history behavior for (though Chrome doesn&apos;t add session history entries for JS redirects up to 5 seconds after onload, no other browser does this).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258199</commentid>
    <comment_count>18</comment_count>
      <attachid>62906</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-30 08:20:38 -0700</bug_when>
    <thetext>Comment on attachment 62906
Patch v1

WebCore/loader/RedirectScheduler.cpp:251
 +      // See https://webkit.org/b/42861 for the original motivationf for this.    
nit: motivationf -&gt; motivation

LayoutTests/fast/history/gesture-before-onload.html:21
 +      document.getElementById(&apos;manual-explanation&apos;).style.display = &apos;&apos;;
nit: indentation

otherwise, r=me (nice work!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258253</commentid>
    <comment_count>19</comment_count>
      <attachid>63071</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-07-30 10:09:38 -0700</bug_when>
    <thetext>Created attachment 63071
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258254</commentid>
    <comment_count>20</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-07-30 10:10:15 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 62906 [details])
&gt; WebCore/loader/RedirectScheduler.cpp:251
&gt;  +      // See https://webkit.org/b/42861 for the original motivationf for this.    
&gt; nit: motivationf -&gt; motivation

Fixed.
 
&gt; LayoutTests/fast/history/gesture-before-onload.html:21
&gt;  +      document.getElementById(&apos;manual-explanation&apos;).style.display = &apos;&apos;;
&gt; nit: indentation

Fixed.

Patch v2 should have both of those changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258500</commentid>
    <comment_count>21</comment_count>
      <attachid>63071</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-30 17:49:49 -0700</bug_when>
    <thetext>Comment on attachment 63071
Patch v2

Rejecting patch 63071 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--ignore-tests&apos;, &apos;compositing&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
Running build-dumprendertree
Compiling Java tests
make: Nothing to be done for `default&apos;.
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 20746 test cases.
fast/history/gesture-before-onload.html -&gt; failed

Exiting early after 1 failures. 7973 tests run.
194.74s total testing time

7972 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout

Full output: http://queues.webkit.org/results/3597608</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258505</commentid>
    <comment_count>22</comment_count>
      <attachid>63133</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-07-30 18:15:08 -0700</bug_when>
    <thetext>Created attachment 63133
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258506</commentid>
    <comment_count>23</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-07-30 18:16:02 -0700</bug_when>
    <thetext>Updated patch fixes gesture-before-onload.html (to reset the back forward list before starting, since it otherwise only passed when run in isolation).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258526</commentid>
    <comment_count>24</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-30 20:09:02 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; Updated patch fixes gesture-before-onload.html (to reset the back forward list before starting, since it otherwise only passed when run in isolation).

sorry for not catching that during review.  i always forget that!  :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258544</commentid>
    <comment_count>25</comment_count>
      <attachid>63133</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-30 22:39:36 -0700</bug_when>
    <thetext>Comment on attachment 63133
Patch

Clearing flags on attachment: 63133

Committed r64408: &lt;http://trac.webkit.org/changeset/64408&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258545</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-30 22:39:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258603</commentid>
    <comment_count>27</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-07-31 08:41:33 -0700</bug_when>
    <thetext>Got rolled out because it was &quot;causing failed tests on Chromium canaries due to wrong history item counts&quot; (bug 43292). I&apos;ll have to try again with updated Chromium expectations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258607</commentid>
    <comment_count>28</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-07-31 09:45:29 -0700</bug_when>
    <thetext>Tests that failed on the Chromium builder:
  http/tests/history/redirect-js-document-location-before-load.html = TEXT
  http/tests/history/redirect-js-location-assign-before-load.html = TEXT
  http/tests/history/redirect-js-location-before-load.html = TEXT
  http/tests/history/redirect-js-location-href-before-load.html = TEXT

These are the tests that I updated the expectations of, since they now pass. The diff is:

-PASS: History item count should be 1 and is.
+FAIL: History item count should be 1 but instead is 2.

(from http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;useWebKitCanary=true&amp;tests=http%2Ftests%2Fhistory%2Fredirect-js-document-location-before-load.html)

The strange part is that though history.length() reports 2, the actual dump of the back/forward list is correct (it only has one item), since I updated the expected output for that too. This may require a fix on the Chromium side, so it might be easiest to just update the Chromium test_expectations.txt to expected the text diff for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258640</commentid>
    <comment_count>29</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-07-31 15:08:17 -0700</bug_when>
    <thetext>*** Bug 17598 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258753</commentid>
    <comment_count>30</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-08-02 02:10:22 -0700</bug_when>
    <thetext>&gt; rdar://problem/5339292 as a bug that describes a cleanup of JS navigation logic
&gt; to be more like the redirection one. Is there anything else relevant in that bug?

That bug is about further investigating ideas from bug 13400. Specifically, the ideas were:
- always to add a history item unless the new load kicks off before the load event has fired;
- or mimic our behavior for HTTP redirects, and add a new history item only if &gt; 1 second has passed between loads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259226</commentid>
    <comment_count>31</comment_count>
      <attachid>63283</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-02 17:54:47 -0700</bug_when>
    <thetext>Created attachment 63283
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259227</commentid>
    <comment_count>32</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-02 17:55:58 -0700</bug_when>
    <thetext>New version of the patch should pass http/tests/history tests when run under Chromium&apos;s TestShell too. 

Short version:

Check history.length instead of layoutTestController.webHistoryItemCount makes the same results be returned for both Chromium TestShell and DRT and it fixes previously-failing tests too.

Long version:

The difference (reported in comment 28) appeared to be that TestShell layoutTestController.webHistoryItemCount returns 1 more than the DRT version. The invocation in redirect-target.html actually says:

layoutTestController.webHistoryItemCount + 1; // Add one to include the referring page, which loaded before we started recording history.

I&apos;m guessing this is because of the layoutTestController.keepWebHistory() call at the start of the tests. However, for TestShell, keepWebHistory is actually a no-op, since it always keeps history (from tools/test_shell/layout_test_controller.cc):

void LayoutTestController::keepWebHistory(const CppArgumentList&amp; args,CppVariant* result) {
  result-&gt;SetNull();
}

Since we&apos;re not resetting history after the first page loads, it makes sense that Chromium gets one more item in the count.

It looks like a bunch of these tests are already expected to fail for Chromium, based on chromium/test_expectations.txt

// navigation controller tracks navigations as compared to how the Mac implementation does it.
WONTFIX : http/tests/history/redirect-200-refresh-0-seconds.pl = FAIL
WONTFIX : http/tests/history/redirect-js-location-replace-0-seconds.html = FAIL
WONTFIX DEBUG : http/tests/history/redirect-js-location-replace-2-seconds.html = FAIL
WONTFIX LINUX MAC RELEASE : http/tests/history/redirect-js-location-replace-2-seconds.html = FAIL
WONTFIX SLOW WIN RELEASE : http/tests/history/redirect-js-location-replace-2-seconds.html = FAIL
WONTFIX : http/tests/history/redirect-js-location-replace-before-load.html = FAIL
WONTFIX : http/tests/history/redirect-meta-refresh-0-seconds.html = FAIL

I could have added the 4 additional tests to that list too, but I was curious what gesture-before-onload.html (which I added) wasn&apos;t failing. It looks like the difference is that that calls layoutTestController.clearBackForwardList() and then queries history.length. That seems to be return the same result in both DRT and TestShell. I therefore modified all of the tests in http/tests/history to use that pattern too. The upshot is that the previously failing tests are now passing too (in addition to the ones that I modified in the initial version of this patch):

Expected to fail, but passed: (5)
  http/tests/history/redirect-200-refresh-0-seconds.pl
  http/tests/history/redirect-js-location-replace-0-seconds.html
  http/tests/history/redirect-js-location-replace-2-seconds.html
  http/tests/history/redirect-js-location-replace-before-load.html
  http/tests/history/redirect-meta-refresh-0-seconds.html

I&apos;m going to hold off on modifying chromium/test_expectations.txt in this patch though, to make sure that the tests really do pass with all the builders.

I also ended up modifying the redirect-30*.pl tests, they were setting the Location HTTP header but also including a &lt;script&gt; block with layoutTestController invocation, and that was leading to flakyness (it looked like we didn&apos;t always have time to execute the &lt;script&gt; tag before navigating away from the page). I modified them so that the &lt;script&gt; tag is now in a .html file, which then navigates to a Perl script that generates the 30x redirect to the redirect-target.html page, which seems to be work consistently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259631</commentid>
    <comment_count>33</comment_count>
      <attachid>63283</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-03 12:43:08 -0700</bug_when>
    <thetext>Comment on attachment 63283
Patch

This seems like a great change.

&gt; -    bool lockBackForwardList = mustLockBackForwardList(m_frame) || (submission-&gt;state()-&gt;formSubmissionTrigger() == SubmittedByJavaScript &amp;&amp; m_frame-&gt;tree()-&gt;parent());
&gt; +    bool lockBackForwardList = mustLockBackForwardList(m_frame, false) || (submission-&gt;state()-&gt;formSubmissionTrigger() == SubmittedByJavaScript &amp;&amp; m_frame-&gt;tree()-&gt;parent());

I don&apos;t understand why form submission bypasses this. Do we have test cases that do form submission during the load event handling? Should those create back/forward list entries? If so, why?

This &quot;false&quot; is completely mysterious, and shows why we normally use enum types for these sorts of arguments in WebKit. If we change this to be based on whether the user triggered the form submission, then we would no longer be passing a boolean constant in, and then the rationale for using an enum would go away.

I also find the argument&apos;s name mysterious. The name is &quot;must lock if during load&quot;, which seems too low level. I think we want a concept more like &quot;directly triggered by user&quot; or &quot;triggered by script&quot;. A question the caller would know how to answer. Maybe we should just name it &quot;wasUserGesture&quot; to match the scheduleLocationChange function and reverse it&apos;s sense. The comment says &quot;non-user navigation&quot;, so it seems you are thinking like I am, so lets have the argument name be consistent with this.

I think we want to call this &quot;back/forward list item&quot; not &quot;back forward list item&quot; in the comment.

Please consider an enum or a differently named boolean. Otherwise looks very good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259638</commentid>
    <comment_count>34</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-08-03 12:49:48 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; I don&apos;t understand why form submission bypasses this. Do we have test cases that do form submission during the load event handling? Should those create back/forward list entries? If so, why?

FWIW, my original comments on bug 17598 were because I had a real-world page that did a form submission during loading, and I didn&apos;t want it treated as a separate history entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259644</commentid>
    <comment_count>35</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-03 12:58:24 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; I don&apos;t understand why form submission bypasses this. Do we have test cases that do form submission during the load event handling? Should those create back/forward list entries? If so, why?

Based on my testing in comment 11, it looked like all other browsers created a session history entry for form submissions on or before onload, so I was going for consistency with that. I don&apos;t mind making that consistent with the location change behavior, but based on http://trac.webkit.org/changeset/45606, http://trac.webkit.org/changeset/25410, https://webkit.org/b/32383 it looked this was a hairy area for web compat.

(In reply to comment #34)
&gt; FWIW, my original comments on bug 17598 were because I had a real-world page that did a form submission during loading, and I didn&apos;t want it treated as a separate history entry.

Peter, do you happen to remember the URL?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259651</commentid>
    <comment_count>36</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-08-03 13:06:00 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; Based on my testing in comment 11, it looked like all other browsers created a session history entry for form submissions on or before onload, so I was going for consistency with that.

Personally, I think other browsers are just wrong here.  I&apos;d rather do the sanest behavior and then tweak when we find it breaks something for something as esoteric as this.

&gt; (In reply to comment #34)
&gt; &gt; FWIW, my original comments on bug 17598 were because I had a real-world page that did a form submission during loading, and I didn&apos;t want it treated as a separate history entry.
&gt; 
&gt; Peter, do you happen to remember the URL?

No.  I think it was part of a Google intranet login system so I wouldn&apos;t be able to publicly link it anyway.

Someone could probably make a testcase fairly easily, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259653</commentid>
    <comment_count>37</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-03 13:07:54 -0700</bug_when>
    <thetext>OK, I&apos;ll make form submits behave the same way as location changes (and add a test case).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259742</commentid>
    <comment_count>38</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-03 16:01:15 -0700</bug_when>
    <thetext>It looks like changing form submits during/before onload to not create a history entry breaks LayoutTests/http/tests/history/back-to-post.php. That was added to fix rdar://problem/6791439. Before I change it to make the form submit happen after onload, can any Apple engineer check that Radar bug and see if that goes against the sprit of the original fix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259787</commentid>
    <comment_count>39</comment_count>
      <attachid>63400</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-03 18:29:36 -0700</bug_when>
    <thetext>Created attachment 63400
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259790</commentid>
    <comment_count>40</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-03 18:32:58 -0700</bug_when>
    <thetext>New version of the patch now applies the same logic to form submits. It required some more test cases to be updated (e.g. another one of the http/tests/history tests now prints out PASS instead of FAIL) and ScheduledFormSubmission to invoke FrameLoader::clientRedirected too (which was a long-standing FIXME, so I felt reasonably confident doing that).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259880</commentid>
    <comment_count>41</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-03 23:09:49 -0700</bug_when>
    <thetext>It seems likely that this change does break the test case for Radar 6791439, but I’m sure it doesn’t have any effect on the bug. That bug was about going back to a page that was the result of a POST. So ideally we’d fix the test case to not depend on creating a history entry when doing a POST during an onload by adding the use of a timer as we did in other tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260031</commentid>
    <comment_count>42</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-04 08:20:37 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; So ideally we’d fix the test case to not depend on creating a history entry when doing a POST during an onload by adding the use of a timer as we did in other tests.

Great, that&apos;s what I ended up doing.

Darin, would you have time to r+ this? Darin Fisher (the original reviewer, who gave me an r+ for the earlier version of the patch) is on vacation till next Wednesday.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260093</commentid>
    <comment_count>43</comment_count>
      <attachid>62906</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-04 10:25:49 -0700</bug_when>
    <thetext>Comment on attachment 62906
Patch v1

Cleared Darin Fisher&apos;s review+ from obsolete attachment 62906 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262195</commentid>
    <comment_count>44</comment_count>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2010-08-09 09:56:15 -0700</bug_when>
    <thetext>What&apos;s the status of this?  I&apos;m waiting anxiously for it to be reviewed and committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264188</commentid>
    <comment_count>45</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-12 22:47:36 -0700</bug_when>
    <thetext>(In reply to comment #44)
&gt; What&apos;s the status of this?  I&apos;m waiting anxiously for it to be reviewed and committed.

Darin Fisher should be back tomorrow, so he should be able to review it then. Alternatively, let me know if you can think of another appropriate reviewer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264473</commentid>
    <comment_count>46</comment_count>
      <attachid>63400</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-08-13 12:58:24 -0700</bug_when>
    <thetext>Comment on attachment 63400
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264501</commentid>
    <comment_count>47</comment_count>
      <attachid>64375</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-13 14:33:27 -0700</bug_when>
    <thetext>Created attachment 64375
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264503</commentid>
    <comment_count>48</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-13 14:34:35 -0700</bug_when>
    <thetext>New version of the patch that also updates /fast/dom/Geolocation/no-page-cache.html to do the navigation in the timeout (it was added a few hours ago http://trac.webkit.org/changeset/65325).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264508</commentid>
    <comment_count>49</comment_count>
      <attachid>63400</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-13 14:52:26 -0700</bug_when>
    <thetext>Comment on attachment 63400
Patch

Rejecting patch 63400 from commit-queue.

Unexpected failure when processing patch!  Please file a bug against webkit-patch.
Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--build&apos;, &apos;--non-interactive&apos;, &apos;--ignore-builders&apos;, &apos;--build-style=both&apos;, &apos;--quiet&apos;, 63400, &apos;--test&apos;, &apos;--parent-command=commit-queue&apos;, &apos;--no-update&apos;]&quot; exit_code: 1
Last 500 characters of output:
3400&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=42861&amp;ctype=xml
Processing 1 patch from 1 bug.
Cleaning working directory
Processing patch 63400 from bug 42861.
NOBODY (OOPS!) found in /Users/eseidel/Projects/CommitQueue/LayoutTests/ChangeLog does not appear to be a valid reviewer according to committers.py.
ERROR: /Users/eseidel/Projects/CommitQueue/LayoutTests/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264532</commentid>
    <comment_count>50</comment_count>
      <attachid>64375</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-08-13 16:09:41 -0700</bug_when>
    <thetext>Comment on attachment 64375
Patch

Spin again!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264541</commentid>
    <comment_count>51</comment_count>
      <attachid>64375</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-13 16:36:23 -0700</bug_when>
    <thetext>Comment on attachment 64375
Patch

Clearing flags on attachment: 64375

Committed r65340: &lt;http://trac.webkit.org/changeset/65340&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264542</commentid>
    <comment_count>52</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-13 16:36:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264552</commentid>
    <comment_count>53</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-13 17:16:25 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/65340 might have broken GTK Linux 64-bit Debug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264565</commentid>
    <comment_count>54</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-13 17:48:53 -0700</bug_when>
    <thetext>(In reply to comment #53)
&gt; http://trac.webkit.org/changeset/65340 might have broken GTK Linux 64-bit Debug

Filed bug 43998 about the GTK failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380778</commentid>
    <comment_count>55</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-04-06 13:43:12 -0700</bug_when>
    <thetext>*** Bug 14438 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430923</commentid>
    <comment_count>56</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-06-30 18:28:59 -0700</bug_when>
    <thetext>*** Bug 22224 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62634</attachid>
            <date>2010-07-26 18:07:33 -0700</date>
            <delta_ts>2010-07-28 18:08:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42861-v0.patch</filename>
            <type>text/plain</type>
            <size>3904</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDA5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDctMjYgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRG9uJ3QgY3JlYXRlIHNlc3Npb24gaGlzdG9yeSBlbnRyaWVzIGZvciBtYWNoaW5lIEpTIHJl
ZGlyZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDI4NjEKKworICAgICAgICBMb2NrIHRoZSBiYWNrL2ZvcndhcmQgbGlzdCBmb3IgbG9jYXRpb24g
Y2hhbmdlcyB0aGF0IGhhcHBlbiBiZWZvcmUgdGhlIG9ubG9hZCBldmVudCBmaXJlcworICAgICAg
ICB0aGF0IGFyZSBub3QgdGhlIHJlc3VsdCBvZiB1c2VyIGdlc3R1cmVzLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1bGVyOjptdXN0TG9ja0JhY2tG
b3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1
bGVMb2NhdGlvbkNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6
c2NoZWR1bGVGb3JtU3VibWlzc2lvbik6CisgICAgICAgICogbG9hZGVyL1JlZGlyZWN0U2NoZWR1
bGVyLmg6CisKIDIwMTAtMDctMjYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IFdlYkNvcmUv
bG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRl
ci9SZWRpcmVjdFNjaGVkdWxlci5jcHAJKHJldmlzaW9uIDYzOTk4KQorKysgV2ViQ29yZS9sb2Fk
ZXIvUmVkaXJlY3RTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsMTMgKzI0MCwx
NyBAQCB2b2lkIFJlZGlyZWN0U2NoZWR1bGVyOjpzY2hlZHVsZVJlZGlyZWN0CiAgICAgaWYgKHVy
bC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIFdlIHdhbnQgYSBuZXcgaGlz
dG9yeSBpdGVtIGlmIHRoZSByZWZyZXNoIHRpbWVvdXQgaXMgPiAxIHNlY29uZC4KKyAgICAvLyBX
ZSB3YW50IGEgbmV3IGJhY2sgZm9yd2FyZCBsaXN0IGl0ZW0gaWYgdGhlIHJlZnJlc2ggdGltZW91
dCBpcyA+IDEgc2Vjb25kLgogICAgIGlmICghbV9yZWRpcmVjdCB8fCBkZWxheSA8PSBtX3JlZGly
ZWN0LT5kZWxheSgpKQogICAgICAgICBzY2hlZHVsZShuZXcgU2NoZWR1bGVkUmVkaXJlY3QoZGVs
YXksIHVybCwgdHJ1ZSwgZGVsYXkgPD0gMSwgZmFsc2UpKTsKIH0KIAotYm9vbCBSZWRpcmVjdFNj
aGVkdWxlcjo6bXVzdExvY2tCYWNrRm9yd2FyZExpc3QoRnJhbWUqIHRhcmdldEZyYW1lKQorYm9v
bCBSZWRpcmVjdFNjaGVkdWxlcjo6bXVzdExvY2tCYWNrRm9yd2FyZExpc3QoRnJhbWUqIHRhcmdl
dEZyYW1lLCBib29sIHdhc1VzZXJHZXN0dXJlKQogeworICAgIGlmICh0YXJnZXRGcmFtZS0+bG9h
ZGVyKCktPmRvY3VtZW50TG9hZGVyKCkgJiYgdGFyZ2V0RnJhbWUtPmxvYWRlcigpLT5kb2N1bWVu
dExvYWRlcigpLT5pc0xvYWRpbmdJbkFQSVNlbnNlKCkgJiYgIXdhc1VzZXJHZXN0dXJlKSB7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIC8vIE5hdmlnYXRpb24gb2YgYSBzdWJm
cmFtZSBkdXJpbmcgbG9hZGluZyBvZiBhbiBhbmNlc3RvciBmcmFtZSBkb2VzIG5vdCBjcmVhdGUg
YSBuZXcgYmFjay9mb3J3YXJkIGl0ZW0uCiAgICAgLy8gVGhlIGRlZmluaXRpb24gb2YgImR1cmlu
ZyBsb2FkIiBpcyBhbnkgdGltZSBiZWZvcmUgYWxsIGhhbmRsZXJzIGZvciB0aGUgbG9hZCBldmVu
dCBoYXZlIGJlZW4gcnVuLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ5NTcgZm9yIHRoZSBvcmlnaW5hbCBtb3RpdmF0aW9uIGZvciB0aGlzLgpA
QCAtMjY2LDcgKzI3MCw3IEBAIHZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRp
b24KICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbG9ja0Jh
Y2tGb3J3YXJkTGlzdCA9IGxvY2tCYWNrRm9yd2FyZExpc3QgfHwgbXVzdExvY2tCYWNrRm9yd2Fy
ZExpc3QobV9mcmFtZSk7CisgICAgbG9ja0JhY2tGb3J3YXJkTGlzdCA9IGxvY2tCYWNrRm9yd2Fy
ZExpc3QgfHwgbXVzdExvY2tCYWNrRm9yd2FyZExpc3QobV9mcmFtZSwgd2FzVXNlckdlc3R1cmUp
OwogCiAgICAgRnJhbWVMb2FkZXIqIGxvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigpOwogICAgIApA
QCAtMzAwLDcgKzMwNCw3IEBAIHZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1
Ym0KICAgICAvLyB0byBtYXRjaCBJRSBhbmQgT3BlcmEuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjM4MyBmb3IgdGhlIG9yaWdpbmFsIG1vdGl2
YXRpb24gZm9yIHRoaXMuCiAKLSAgICBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QgPSBtdXN0TG9j
a0JhY2tGb3J3YXJkTGlzdChtX2ZyYW1lKSB8fCAoc3VibWlzc2lvbi0+c3RhdGUoKS0+Zm9ybVN1
Ym1pc3Npb25UcmlnZ2VyKCkgPT0gU3VibWl0dGVkQnlKYXZhU2NyaXB0ICYmIG1fZnJhbWUtPnRy
ZWUoKS0+cGFyZW50KCkpOworICAgIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCA9IG11c3RMb2Nr
QmFja0ZvcndhcmRMaXN0KG1fZnJhbWUsIFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5n
VXNlckdlc3R1cmUoKSkgfHwgKHN1Ym1pc3Npb24tPnN0YXRlKCktPmZvcm1TdWJtaXNzaW9uVHJp
Z2dlcigpID09IFN1Ym1pdHRlZEJ5SmF2YVNjcmlwdCAmJiBtX2ZyYW1lLT50cmVlKCktPnBhcmVu
dCgpKTsKIAogICAgIHNjaGVkdWxlKG5ldyBTY2hlZHVsZWRGb3JtU3VibWlzc2lvbihzdWJtaXNz
aW9uLCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkKSk7CiB9CkluZGV4OiBXZWJDb3Jl
L2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L1JlZGlyZWN0U2NoZWR1bGVyLmgJKHJldmlzaW9uIDYzOTk4KQorKysgV2ViQ29yZS9sb2FkZXIv
UmVkaXJlY3RTY2hlZHVsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxSZWRpcmVjdFNjaGVkdWxlcj4qKTsKICAg
ICB2b2lkIHNjaGVkdWxlKFBhc3NPd25QdHI8U2NoZWR1bGVkTmF2aWdhdGlvbj4pOwogCi0gICAg
c3RhdGljIGJvb2wgbXVzdExvY2tCYWNrRm9yd2FyZExpc3QoRnJhbWUqIHRhcmdldEZyYW1lKTsK
KyAgICBzdGF0aWMgYm9vbCBtdXN0TG9ja0JhY2tGb3J3YXJkTGlzdChGcmFtZSogdGFyZ2V0RnJh
bWUsIGJvb2wgd2FzVXNlckdlc3R1cmUpOwogCiAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgVGlt
ZXI8UmVkaXJlY3RTY2hlZHVsZXI+IG1fdGltZXI7CkBAIC03OSw0ICs3OSw0IEBAIHByaXZhdGU6
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEZyYW1lTG9hZGVyX2gKKyNl
bmRpZiAvLyBSZWRpcmVjdFNjaGVkdWxlcl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62906</attachid>
            <date>2010-07-28 18:08:41 -0700</date>
            <delta_ts>2010-08-04 10:25:49 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-42861-v1.patch</filename>
            <type>text/plain</type>
            <size>31890</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDI0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMDctMjggIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU2Vzc2lvbiBoaXN0b3J5IHNob3VsZCBza2lwIG92ZXIgSlMgcmVkaXJlY3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjg2MQorICAgICAgICAK
KyAgICAgICAgTG9jayB0aGUgYmFjay9mb3J3YXJkIGxpc3QgZm9yIGxvY2F0aW9uIGNoYW5nZXMg
dGhhdCBoYXBwZW4gYmVmb3JlIHRoZSAKKyAgICAgICAgb25sb2FkIGV2ZW50IGZpcmVzIHRoYXQg
YXJlIG5vdCB0aGUgcmVzdWx0IG9mIHVzZXIgZ2VzdHVyZXMuCisKKyAgICAgICAgVGVzdDogZmFz
dC9oaXN0b3J5L2dlc3R1cmUtYmVmb3JlLW9ubG9hZC5odG1sIGFuZCB1cGRhdGVkIGV4cGVjdGF0
aW9ucyAKKyAgICAgICAgZm9yIGh0dHAvdGVzdHMvaGlzdG9yeSB0ZXN0cyB0aGF0IHVzZWQgdG8g
ZmFpbC4KKworICAgICAgICAqIGxvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6bXVzdExvY2tCYWNrRm9yd2FyZExpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1
Ym1pc3Npb24pOgorICAgICAgICAqIGxvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5oOgorCiAyMDEw
LTA3LTI4ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgT2phbiBWYWZhaS4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHAJ
KHJldmlzaW9uIDY0MjQwKQorKysgV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsMTcgKzI0MCwyMSBAQCB2b2lkIFJlZGlyZWN0U2NoZWR1
bGVyOjpzY2hlZHVsZVJlZGlyZWN0CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIC8vIFdlIHdhbnQgYSBuZXcgaGlzdG9yeSBpdGVtIGlmIHRoZSByZWZyZXNo
IHRpbWVvdXQgaXMgPiAxIHNlY29uZC4KKyAgICAvLyBXZSB3YW50IGEgbmV3IGJhY2sgZm9yd2Fy
ZCBsaXN0IGl0ZW0gaWYgdGhlIHJlZnJlc2ggdGltZW91dCBpcyA+IDEgc2Vjb25kLgogICAgIGlm
ICghbV9yZWRpcmVjdCB8fCBkZWxheSA8PSBtX3JlZGlyZWN0LT5kZWxheSgpKQogICAgICAgICBz
Y2hlZHVsZShuZXcgU2NoZWR1bGVkUmVkaXJlY3QoZGVsYXksIHVybCwgdHJ1ZSwgZGVsYXkgPD0g
MSwgZmFsc2UpKTsKIH0KIAotYm9vbCBSZWRpcmVjdFNjaGVkdWxlcjo6bXVzdExvY2tCYWNrRm9y
d2FyZExpc3QoRnJhbWUqIHRhcmdldEZyYW1lKQorYm9vbCBSZWRpcmVjdFNjaGVkdWxlcjo6bXVz
dExvY2tCYWNrRm9yd2FyZExpc3QoRnJhbWUqIHRhcmdldEZyYW1lLCBib29sIG11c3RMb2NrSWZE
dXJpbmdMb2FkKQogeworICAgIC8vIE5vbi11c2VyIG5hdmlnYXRpb24gYmVmb3JlIHRoZSBwYWdl
IGhhcyBsb2FkZWQgc2hvdWxkIG5vdCBjcmVhdGUgYSBuZXcgYmFjay9mb3J3YXJkIGl0ZW0uCisg
ICAgLy8gU2VlIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzQyODYxIGZvciB0aGUgb3JpZ2luYWwgbW90
aXZhdGlvbmYgZm9yIHRoaXMuICAgIAorICAgIGlmIChtdXN0TG9ja0lmRHVyaW5nTG9hZCAmJiB0
YXJnZXRGcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkgJiYgdGFyZ2V0RnJhbWUtPmxv
YWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5pc0xvYWRpbmdJbkFQSVNlbnNlKCkpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIAogICAgIC8vIE5hdmlnYXRpb24gb2YgYSBzdWJmcmFtZSBkdXJp
bmcgbG9hZGluZyBvZiBhbiBhbmNlc3RvciBmcmFtZSBkb2VzIG5vdCBjcmVhdGUgYSBuZXcgYmFj
ay9mb3J3YXJkIGl0ZW0uCiAgICAgLy8gVGhlIGRlZmluaXRpb24gb2YgImR1cmluZyBsb2FkIiBp
cyBhbnkgdGltZSBiZWZvcmUgYWxsIGhhbmRsZXJzIGZvciB0aGUgbG9hZCBldmVudCBoYXZlIGJl
ZW4gcnVuLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ5NTcgZm9yIHRoZSBvcmlnaW5hbCBtb3RpdmF0aW9uIGZvciB0aGlzLgotCiAgICAgZm9y
IChGcmFtZSogYW5jZXN0b3IgPSB0YXJnZXRGcmFtZS0+dHJlZSgpLT5wYXJlbnQoKTsgYW5jZXN0
b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnRyZWUoKS0+cGFyZW50KCkpIHsKICAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gYW5jZXN0b3ItPmRvY3VtZW50KCk7CiAgICAgICAgIGlmICghYW5j
ZXN0b3ItPmxvYWRlcigpLT5pc0NvbXBsZXRlKCkgfHwgKGRvY3VtZW50ICYmIGRvY3VtZW50LT5w
cm9jZXNzaW5nTG9hZEV2ZW50KCkpKQpAQCAtMjY2LDcgKzI3MCw3IEBAIHZvaWQgUmVkaXJlY3RT
Y2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRpb24KICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbG9ja0JhY2tGb3J3YXJkTGlzdCA9IGxvY2tCYWNrRm9yd2FyZExp
c3QgfHwgbXVzdExvY2tCYWNrRm9yd2FyZExpc3QobV9mcmFtZSk7CisgICAgbG9ja0JhY2tGb3J3
YXJkTGlzdCA9IGxvY2tCYWNrRm9yd2FyZExpc3QgfHwgbXVzdExvY2tCYWNrRm9yd2FyZExpc3Qo
bV9mcmFtZSwgIXdhc1VzZXJHZXN0dXJlKTsKIAogICAgIEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBt
X2ZyYW1lLT5sb2FkZXIoKTsKICAgICAKQEAgLTMwMCw3ICszMDQsNyBAQCB2b2lkIFJlZGlyZWN0
U2NoZWR1bGVyOjpzY2hlZHVsZUZvcm1TdWJtCiAgICAgLy8gdG8gbWF0Y2ggSUUgYW5kIE9wZXJh
LgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIz
ODMgZm9yIHRoZSBvcmlnaW5hbCBtb3RpdmF0aW9uIGZvciB0aGlzLgogCi0gICAgYm9vbCBsb2Nr
QmFja0ZvcndhcmRMaXN0ID0gbXVzdExvY2tCYWNrRm9yd2FyZExpc3QobV9mcmFtZSkgfHwgKHN1
Ym1pc3Npb24tPnN0YXRlKCktPmZvcm1TdWJtaXNzaW9uVHJpZ2dlcigpID09IFN1Ym1pdHRlZEJ5
SmF2YVNjcmlwdCAmJiBtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpKTsKKyAgICBib29sIGxvY2tC
YWNrRm9yd2FyZExpc3QgPSBtdXN0TG9ja0JhY2tGb3J3YXJkTGlzdChtX2ZyYW1lLCBmYWxzZSkg
fHwgKHN1Ym1pc3Npb24tPnN0YXRlKCktPmZvcm1TdWJtaXNzaW9uVHJpZ2dlcigpID09IFN1Ym1p
dHRlZEJ5SmF2YVNjcmlwdCAmJiBtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpKTsKIAogICAgIHNj
aGVkdWxlKG5ldyBTY2hlZHVsZWRGb3JtU3VibWlzc2lvbihzdWJtaXNzaW9uLCBsb2NrQmFja0Zv
cndhcmRMaXN0LCBkdXJpbmdMb2FkKSk7CiB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9SZWRpcmVj
dFNjaGVkdWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1
bGVyLmgJKHJldmlzaW9uIDY0MjQwKQorKysgV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hlZHVs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
dGltZXJGaXJlZChUaW1lcjxSZWRpcmVjdFNjaGVkdWxlcj4qKTsKICAgICB2b2lkIHNjaGVkdWxl
KFBhc3NPd25QdHI8U2NoZWR1bGVkTmF2aWdhdGlvbj4pOwogCi0gICAgc3RhdGljIGJvb2wgbXVz
dExvY2tCYWNrRm9yd2FyZExpc3QoRnJhbWUqIHRhcmdldEZyYW1lKTsKKyAgICBzdGF0aWMgYm9v
bCBtdXN0TG9ja0JhY2tGb3J3YXJkTGlzdChGcmFtZSogdGFyZ2V0RnJhbWUsIGJvb2wgbXVzdExv
Y2tJZkR1cmluZ0xvYWQpOwogCiAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgVGltZXI8UmVkaXJl
Y3RTY2hlZHVsZXI+IG1fdGltZXI7CkBAIC03OSw0ICs3OSw0IEBAIHByaXZhdGU6CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEZyYW1lTG9hZGVyX2gKKyNlbmRpZiAvLyBS
ZWRpcmVjdFNjaGVkdWxlcl9oCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NDI0NykKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDEwLTA3LTI4
ICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNlc3Npb24gaGlzdG9yeSBzaG91bGQg
c2tpcCBvdmVyIEpTIHJlZGlyZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDI4NjEKKyAgICAgICAgCisgICAgICAgIExvY2sgdGhlIGJhY2svZm9y
d2FyZCBsaXN0IGZvciBsb2NhdGlvbiBjaGFuZ2VzIHRoYXQgaGFwcGVuIGJlZm9yZSB0aGUgCisg
ICAgICAgIG9ubG9hZCBldmVudCBmaXJlcyB0aGF0IGFyZSBub3QgdGhlIHJlc3VsdCBvZiB1c2Vy
IGdlc3R1cmVzLgorICAgICAgICAKKyAgICAgICAgaHR0cC90ZXN0cy9oaXN0b3J5IHRlc3RzIG5v
dyBwYXNzLCB0aGVpciBleHBlY3RhdGlvc24gd2VyZSB1cGRhdGVkIAorICAgICAgICBhY2NvcmRp
bmdseS4gT3RoZXIgdGVzdHMgbmVlZGVkIGEgc2V0VGltZW91dCB3cmFwcGVyIGFyb3VuZCBsb2Nh
dGlvbgorICAgICAgICBjaGFuZ2VzIGR1cmluZyBvbmxvYWQsIG90aGVyd2lzZSB0aGV5IHdvdWxk
IG5vdCBnZW5lcmF0ZSBoaXN0b3J5IAorICAgICAgICBlbnRyaWVzIGFzIGV4cGVjdGVkIGFueW1v
cmUuCisgICAgICAgIAorICAgICAgICAqIGZhc3QvY3NzL3RhcmdldC1mcmFnbWVudC1tYXRjaC5o
dG1sOgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy90aW1lci1yZXN1bWUtb24tbmF2aWdhdGlv
bi1iYWNrLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vbG9jYXRpb24taGFzaC5odG1sOgorICAg
ICAgICAqIGZhc3QvZXZlbnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLXdpdGgt
ZnJhbWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdl
aGlkZS1vbi1iYWNrLWNhY2hlZC13aXRoLWZyYW1lcy5odG1sOgorICAgICAgICAqIGZhc3QvZnJh
bWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0xLmh0bWw6CisgICAgICAgICogZmFzdC9mcmFtZXMv
cmVzb3VyY2VzL2NhY2hlZC1wYWdlLTIuaHRtbDoKKyAgICAgICAgKiBmYXN0L2hhcm5lc3MvcmVz
b3VyY2VzL2NhY2hlZC1wYWdlLTEuaHRtbDoKKyAgICAgICAgKiBmYXN0L2hhcm5lc3MvcmVzb3Vy
Y2VzL2NhY2hlZC1wYWdlLXdpdGgtZGF0YS11cmxzLmh0bWw6CisgICAgICAgICogZmFzdC9oaXN0
b3J5L2dlc3R1cmUtYmVmb3JlLW9ubG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvaGlzdG9yeS9nZXN0dXJlLWJlZm9yZS1vbmxvYWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9oaXN0b3J5L2hpc3RvcnktbGVuZ3RoLmh0bWw6CisgICAgICAgICogZmFzdC9oaXN0
b3J5L3Jlc291cmNlcy9nZXN0dXJlLWJlZm9yZS1vbmxvYWQtdGFyZ2V0Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvaGlzdG9yeS9zYXZlcy1zdGF0ZS1hZnRlci1mcmFnbWVudC1uYXYuaHRt
bDoKKyAgICAgICAgKiBmYXN0L2xvYWRlci9pbnB1dC1lbGVtZW50LXBhZ2UtY2FjaGUtY3Jhc2gu
aHRtbDoKKyAgICAgICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJv
eWVkLW5hdmlnYXRlLWJhY2suaHRtbDoKKyAgICAgICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVj
dHMvcHVzaHN0YXRlLWNsZWFycy1mb3J3YXJkLWhpc3RvcnkuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2xvYWRlci9zdWJmcmFtZS1uYXZpZ2F0ZS1kdXJpbmctbWFpbi1mcmFtZS1sb2FkLmh0bWw6Cisg
ICAgICAgICogaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWRvY3VtZW50LWxvY2F0aW9u
LWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2hpc3Rvcnkv
cmVkaXJlY3QtanMtbG9jYXRpb24tYXNzaWduLWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tYmVmb3JlLWxv
YWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1q
cy1sb2NhdGlvbi1ocmVmLWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2RvY3VtZW50LWxvY2F0aW9uLmpzOgorICAgICAg
ICAoc3RhcnQpOgorICAgICAgICAqIHNlY3VyaXR5L2F1dG9jb21wbGV0ZS1jbGVhcmVkLW9uLWJh
Y2suaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLmpzOgorICAg
ICAgICAodXBkYXRlRGF0YWJhc2UpOgorICAgICAgICAoaW52b2tlQmFjayk6CisgICAgICAgIChy
dW5UZXN0KToKKyAgICAgICAgKHJ1blRlc3RzSW5uZXIpOgorCiAyMDEwLTA3LTI4ICBBbmRlcnMg
Q2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2Ft
IFdlaW5pZy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL3RhcmdldC1mcmFnbWVudC1tYXRj
aC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3RhcmdldC1mcmFnbWVu
dC1tYXRjaC5odG1sCShyZXZpc2lvbiA2NDI0MCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3Rh
cmdldC1mcmFnbWVudC1tYXRjaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw2ICsxMSwxMiBA
QCBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKKyAgICAv
LyBMb2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5k
bGVyIHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAgICBzZXRUaW1lb3V0KHJ1blRlc3Qs
IDApOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgewogICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNo
ID0nI3RhcmdldC0wMSc7CiAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CiAgICAgd2luZG93
Lmhpc3RvcnkuYmFjaygpOyAvLyBUaGlzIHF1ZXVlcyB1cCBhIG5hdmlnYXRpb24sIHNvIHdlIG5l
ZWQgdG8gZGVsYXkgdGhlIGNhbGwgdG8gbm90aWZ5RG9uZS4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL2xvY2F0aW9uLWhhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9sb2NhdGlvbi1oYXNoLmh0bWwJKHJldmlzaW9uIDY0MjQwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vbG9jYXRpb24taGFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw4ICs4Nyw5
IEBACiAgICAgICAgIG51bUVycm9ycyA9IDA7CiAgICAgICAgIG9yaWdpbmFsTG9jYXRpb24gPSB3
aW5kb3cubG9jYXRpb24uaHJlZjsKICAgICAgICAgb3JpZ2luYWxIaXN0b3J5TGVuZ3RoID0gd2lu
ZG93Lmhpc3RvcnkubGVuZ3RoOwotICAgICAKLSAgICAgICAgc3RlcCgpOworCisgICAgICAgIC8v
IExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0byBoYXBwZW4gb3V0c2lkZSB0aGUgb25sb2FkIGhhbmRs
ZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBlbnRyaWVzLgorICAgICAgICBzZXRUaW1lb3V0KHN0ZXAs
IDApOwogICAgIH0KICAgICA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy90aW1lci1yZXN1bWUtb24tbmF2aWdhdGlvbi1iYWNrLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3RpbWVyLXJlc3VtZS1vbi1uYXZp
Z2F0aW9uLWJhY2suaHRtbAkocmV2aXNpb24gNjQyNDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9XaW5kb3cvdGltZXItcmVzdW1lLW9uLW5hdmlnYXRpb24tYmFjay5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xOCw5ICsxOCwxMiBAQCBmdW5jdGlvbiBydW5UZXN0KCkgewogICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSIs
IDEpOwogICAgIH0KLSAgICB3aW5kb3cuc2V0VGltZW91dCgidmVyaWZ5KCkiLCB0aW1lb3V0VmFs
dWUpOwotICAgIHRpbWVzdGFtcCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOwotICAgIHdpbmRvdy5s
b2NhdGlvbi5ocmVmID0gImRhdGE6dGV4dC9odG1sLDxib2R5IG9ubG9hZD0naGlzdG9yeS5iYWNr
KCknPjwvYm9keT4iOworICAgIC8vIExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0byBoYXBwZW4gb3V0
c2lkZSB0aGUgb25sb2FkIGhhbmRsZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBlbnRyaWVzLgorICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICB3aW5kb3cuc2V0VGltZW91dCh2ZXJpZnks
IHRpbWVvdXRWYWx1ZSk7CisgICAgICB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsK
KyAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gImRhdGE6dGV4dC9odG1sLDxib2R5IG9ubG9h
ZD0naGlzdG9yeS5iYWNrKCknPjwvYm9keT4iOworICAgIH0sIDApOwogfQogCiA8L3NjcmlwdD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9uLWJhY2st
Y2FjaGVkLXdpdGgtZnJhbWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC13aXRoLWZyYW1l
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDY0MjQwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvcGFnZXNob3ctcGFnZWhpZGUtb24tYmFjay1jYWNoZWQtd2l0aC1mcmFtZXMtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE2ICsxLDE2IEBACitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMjA6ICoqKlRvcCBsZXZlbCBmcmFtZSBiZWluZyBwYXJzZWQgZm9yIHRoZSBpbml0aWFsIHBh
Z2UgbG9hZCoqKgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIwOiBTdWJzdWJmcmFtZSB3aW5kb3cu
b25sb2FkCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjA6IFN1YnN1YmZyYW1lIHdpbmRvdy5vbnBh
Z2VzaG93LCB0YXJnZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IGZhbHNl
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjA6IFN1YmZyYW1lIHdpbmRvdy5vbmxvYWQKK0NPTlNP
TEUgTUVTU0FHRTogbGluZSAyMDogU3ViZnJhbWUgd2luZG93Lm9ucGFnZXNob3csIHRhcmdldCA9
IFtvYmplY3QgSFRNTERvY3VtZW50XSwgcGVyc2lzdGVkID0gZmFsc2UKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSAyMDogTWFpbiBmcmFtZSB3aW5kb3cub25sb2FkCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMjA6IE1haW4gZnJhbWUgd2luZG93Lm9ucGFnZXNob3csIHRhcmdldCA9IFtvYmplY3QgSFRN
TERvY3VtZW50XSwgcGVyc2lzdGVkID0gZmFsc2UKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMDog
KioqTmF2aWdhdGluZyB0b3AtbGV2ZWwgZnJhbWUgdG8gYSBwYWdlIHRoYXQgd2lsbCBpbW1lZGlh
dGVseSBuYXZpZ2F0ZSBiYWNrIHRvIHRoaXMgb25lKioqCitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
MjA6IE1haW4gZnJhbWUgd2luZG93Lm9ucGFnZWhpZGUsIHRhcmdldCA9IFtvYmplY3QgSFRNTERv
Y3VtZW50XSwgcGVyc2lzdGVkID0gdHJ1ZQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIwOiBTdWJm
cmFtZSB3aW5kb3cub25wYWdlaGlkZSwgdGFyZ2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRdLCBw
ZXJzaXN0ZWQgPSB0cnVlCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjA6IFN1YnN1YmZyYW1lIHdp
bmRvdy5vbnBhZ2VoaWRlLCB0YXJnZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3Rl
ZCA9IHRydWUKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMDogU3Vic3ViZnJhbWUgd2luZG93Lm9u
cGFnZXNob3csIHRhcmdldCA9IFtvYmplY3QgSFRNTERvY3VtZW50XSwgcGVyc2lzdGVkID0gdHJ1
ZQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIwOiBTdWJmcmFtZSB3aW5kb3cub25wYWdlc2hvdywg
dGFyZ2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRdLCBwZXJzaXN0ZWQgPSB0cnVlCitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgMjA6IE1haW4gZnJhbWUgd2luZG93Lm9ucGFnZXNob3csIHRhcmdldCA9
IFtvYmplY3QgSFRNTERvY3VtZW50XSwgcGVyc2lzdGVkID0gdHJ1ZQogVGVzdCBwYWdlc2hvdy9w
YWdlaGlkZSBldmVudCBiZWhhdmlvciB3aGVuIG5hdmlnYXRpbmcgYXdheSBmcm9tIGEgcGFnZSB3
aXRoIGZyYW1lcywgcHV0dGluZyB0aGUgcGFnZSBpbiB0aGUgcGFnZSBjYWNoZSwgdGhlbiBiYWNr
IHRvIGl0LgotKioqVG9wIGxldmVsIGZyYW1lIGJlaW5nIHBhcnNlZCBmb3IgdGhlIGluaXRpYWwg
cGFnZSBsb2FkKioqCi1TdWJzdWJmcmFtZSB3aW5kb3cub25sb2FkCi1TdWJzdWJmcmFtZSB3aW5k
b3cub25wYWdlc2hvdywgdGFyZ2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRdLCBwZXJzaXN0ZWQg
PSBmYWxzZQotU3ViZnJhbWUgd2luZG93Lm9ubG9hZAotU3ViZnJhbWUgd2luZG93Lm9ucGFnZXNo
b3csIHRhcmdldCA9IFtvYmplY3QgSFRNTERvY3VtZW50XSwgcGVyc2lzdGVkID0gZmFsc2UKLU1h
aW4gZnJhbWUgd2luZG93Lm9ubG9hZAotTWFpbiBmcmFtZSB3aW5kb3cub25wYWdlc2hvdywgdGFy
Z2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRdLCBwZXJzaXN0ZWQgPSBmYWxzZQotKioqTmF2aWdh
dGluZyB0b3AtbGV2ZWwgZnJhbWUgdG8gYSBwYWdlIHRoYXQgd2lsbCBpbW1lZGlhdGVseSBuYXZp
Z2F0ZSBiYWNrIHRvIHRoaXMgb25lKioqCi1NYWluIGZyYW1lIHdpbmRvdy5vbnBhZ2VoaWRlLCB0
YXJnZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IHRydWUKLVN1YmZyYW1l
IHdpbmRvdy5vbnBhZ2VoaWRlLCB0YXJnZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNp
c3RlZCA9IHRydWUKLVN1YnN1YmZyYW1lIHdpbmRvdy5vbnBhZ2VoaWRlLCB0YXJnZXQgPSBbb2Jq
ZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IHRydWUKLVN1YnN1YmZyYW1lIHdpbmRvdy5v
bnBhZ2VzaG93LCB0YXJnZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IHRy
dWUKLVN1YmZyYW1lIHdpbmRvdy5vbnBhZ2VzaG93LCB0YXJnZXQgPSBbb2JqZWN0IEhUTUxEb2N1
bWVudF0sIHBlcnNpc3RlZCA9IHRydWUKLU1haW4gZnJhbWUgd2luZG93Lm9ucGFnZXNob3csIHRh
cmdldCA9IFtvYmplY3QgSFRNTERvY3VtZW50XSwgcGVyc2lzdGVkID0gdHJ1ZQogCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC13
aXRoLWZyYW1lcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Bh
Z2VzaG93LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLXdpdGgtZnJhbWVzLmh0bWwJKHJldmlzaW9u
IDY0MjQwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUtb24t
YmFjay1jYWNoZWQtd2l0aC1mcmFtZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTQsOCArMTQs
MTAgQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogCiBmdW5jdGlvbiBsb2co
bWVzc2FnZSkKIHsKLSAgICB2YXIgbG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIp
OwotICAgIGxvZy5pbm5lckhUTUwgKz0gbWVzc2FnZSArICJcbiI7CisgICAgLy8gTG9nZ2luZyB0
byB0aGUgY29uc29sZSBpbnN0ZWFkIG9mIHRoZSAibG9nIiBESVYgaW4gdGhlIERPTSBiZWNhdXNl
CisgICAgLy8gb3RoZXJ3aXNlIHdlIHRyaWdnZXIgdGhlIGFzc2VydCBtZW50aW9uZWQgYXQgaHR0
cDovL3dlYmtpdC5vcmcvYi80MzE1MgorICAgIC8vIChzaW5jZSB3ZSBsb2cgZHVyaW5nIHBhZ2Vo
aWRlKQorICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UpOwogfQogCiBsb2coIioqKlRvcCBsZXZlbCBm
cmFtZSBiZWluZyBwYXJzZWQgZm9yIHRoZSBpbml0aWFsIHBhZ2UgbG9hZCoqKiIpOwpAQCAtMzEs
NyArMzMsOCBAQCB3aW5kb3cub25wYWdlc2hvdyA9IGZ1bmN0aW9uKGV2dCkgewogICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGxvZygiKioqTmF2aWdhdGluZyB0b3AtbGV2ZWwgZnJhbWUgdG8gYSBwYWdlIHRoYXQgd2ls
bCBpbW1lZGlhdGVseSBuYXZpZ2F0ZSBiYWNrIHRvIHRoaXMgb25lKioqIik7Ci0gICAgICAgIHdp
bmRvdy5sb2NhdGlvbi5ocmVmID0gImRhdGE6dGV4dC9odG1sLDxzY3JpcHQ+aGlzdG9yeS5iYWNr
KCk7PC9zY3IiICsgImlwdD4iOworICAgICAgICAvLyBMb2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8g
aGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50
cmllcy4KKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHt3aW5kb3cubG9jYXRpb24uaHJl
ZiA9ICJkYXRhOnRleHQvaHRtbCw8c2NyaXB0Pmhpc3RvcnkuYmFjaygpOzwvc2NyIiArICJpcHQ+
Ijt9LCAwKTsKICAgICB9CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291
cmNlcy9jYWNoZWQtcGFnZS0xLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTEuaHRtbAkocmV2aXNpb24gNjQyNDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNyw3ICsxNyw4IEBAIGZ1bmN0aW9uIGxvYWROZXh0KCkgewogICAgIGlu
dGVydmFsSWQgPSBzZXRJbnRlcnZhbChlbmRUZXN0LCAxMDApOwogCiAgICAgd2luZG93Lm9wZW5l
ci5sb2coInBhZ2UtMSwgYWJvdXQgdG8gbmF2aWdhdGUgdG8gcGFnZS0yLiIpCi0gICAgbG9jYXRp
b24uaHJlZiA9ICJjYWNoZWQtcGFnZS0yLmh0bWwiOworICAgIC8vIExvY2F0aW9uIGNoYW5nZXMg
bmVlZCB0byBoYXBwZW4gb3V0c2lkZSB0aGUgb25sb2FkIGhhbmRsZXIgdG8gZ2VuZXJhdGUgaGlz
dG9yeSBlbnRyaWVzLgorICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7bG9jYXRpb24uaHJlZiA9
ICJjYWNoZWQtcGFnZS0yLmh0bWwiO30sIDApOwogfQogCiAvLyBUaGlzIHVubG9hZCBoYW5kbGVy
IGV4aXN0cyBqdXN0IHRvIG1ha2Ugc3VyZSB0aGlzIHBhZ2UgaXMgbm90IGFkZGVkCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMi5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0y
Lmh0bWwJKHJldmlzaW9uIDY0MjQwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3Vy
Y2VzL2NhY2hlZC1wYWdlLTIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTksNyArMTksOCBAQCBm
dW5jdGlvbiBsb2FkTmV4dCgpIHsKICAgICBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoZ29CYWNr
LCAyMCk7CiAKICAgICB3aW5kb3cub3BlbmVyLmxvZygicGFnZS0yLCBhYm91dCB0byBuYXZpZ2F0
ZSB0byBwYWdlLTMuIikKLSAgICBsb2NhdGlvbi5ocmVmID0gImNhY2hlZC1wYWdlLTMuaHRtbCI7
CisgICAgLy8gTG9jYXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRoZSBvbmxv
YWQgaGFuZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCisgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHtsb2NhdGlvbi5ocmVmID0gImNhY2hlZC1wYWdlLTMuaHRtbCI7fSwgMCk7CiB9
CiA8L3NjcmlwdD4KIDxib2R5IG9ubG9hZD0ibG9hZE5leHQoKSI+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2hhcm5lc3MvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTEuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTEuaHRtbAko
cmV2aXNpb24gNjQyNDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcmVzb3VyY2VzL2Nh
Y2hlZC1wYWdlLTEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsOCBAQCBmdW5jdGlv
biBsb2FkTmV4dCgpCiAgICAgaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKGNoZWNrLCAxMCk7CiAK
ICAgICB3aW5kb3cub3BlbmVyLmxvZygicGFnZS0xLCBhYm91dCB0byBuYXZpZ2F0ZSB0byBwYWdl
LTIuIikKLSAgICBsb2NhdGlvbi5ocmVmID0gImNhY2hlZC1wYWdlLTIuaHRtbCI7CisgICAgLy8g
TG9jYXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRoZSBvbmxvYWQgaGFuZGxl
ciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCisgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHtsb2NhdGlvbi5ocmVmID0gImNhY2hlZC1wYWdlLTIuaHRtbCI7fSwgMCk7CiB9CiA8L3Njcmlw
dD4KIDxib2R5IG9ubG9hZD0ibG9hZE5leHQoKSI+PC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9oYXJuZXNzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS13aXRoLWRhdGEtdXJscy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9yZXNvdXJjZXMvY2FjaGVkLXBh
Z2Utd2l0aC1kYXRhLXVybHMuaHRtbAkocmV2aXNpb24gNjQyNDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2hhcm5lc3MvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLXdpdGgtZGF0YS11cmxzLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTE4LDcgKzE4LDggQEAgZnVuY3Rpb24gbG9hZE5leHQoKQogICAgIGlu
dGVydmFsSWQgPSBzZXRJbnRlcnZhbChjaGVjaywgMTApOwogCiAgICAgd2luZG93Lm9wZW5lci5s
b2coInBhZ2Ugd2l0aCBkYXRhIHVybHMsIGFib3V0IHRvIG5hdmlnYXRlIHRvIHBhZ2UtMi4iKQot
ICAgIGxvY2F0aW9uLmhyZWYgPSAiY2FjaGVkLXBhZ2UtMi5odG1sIjsKKyAgICAvLyBMb2NhdGlv
biBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdl
bmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge2xvY2F0
aW9uLmhyZWYgPSAiY2FjaGVkLXBhZ2UtMi5odG1sIjt9LCAwKTsKIH0KIDwvc2NyaXB0PgogPGJv
ZHkgb25sb2FkPSJsb2FkTmV4dCgpIj4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9n
ZXN0dXJlLWJlZm9yZS1vbmxvYWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvaGlzdG9yeS9nZXN0dXJlLWJlZm9yZS1vbmxvYWQtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2dlc3R1cmUtYmVmb3JlLW9ubG9h
ZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorVGhpcyBwYWdlIGlz
IHRoZSB0YXJnZXQgb2YgYSByZWRpcmVjdC4KKworUEFTUzogSGlzdG9yeSBpdGVtIGNvdW50IHNo
b3VsZCBiZSAyIGFuZCBpcy4KKworCis9PT09PT09PT09PT09PSBCYWNrIEZvcndhcmQgTGlzdCA9
PT09PT09PT09PT09PQorICAgICAgICAoZmlsZSB0ZXN0KTpmYXN0L2hpc3RvcnkvZ2VzdHVyZS1i
ZWZvcmUtb25sb2FkLmh0bWwgICoqbmF2IHRhcmdldCoqCitjdXJyLT4gIChmaWxlIHRlc3QpOmZh
c3QvaGlzdG9yeS9yZXNvdXJjZXMvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLXRhcmdldC5odG1sIzIg
ICoqbmF2IHRhcmdldCoqCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2dlc3R1cmUtYmVmb3JlLW9u
bG9hZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9nZXN0dXJl
LWJlZm9yZS1vbmxvYWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaGlz
dG9yeS9nZXN0dXJlLWJlZm9yZS1vbmxvYWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
MiBAQAorPGhlYWQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKyAgPGJ1dHRv
biBpZD0ibmF2LWJ1dHRvbiIgb25jbGljaz0ibmF2KCk7Ij5OYXZpZ2F0ZTwvYnV0dG9uPgorICA8
ZGl2IGlkPSJtYW51YWwtZXhwbGFuYXRpb24iIHN0eWxlPSJkaXNwbGF5OiBub25lOyBjb2xvcjog
Ymx1ZSI+V2hlbiBydW5uaW5nIHRoaXMgdGVzdCBvdXRzaWRlIG9mIERSVCwgcGxlYXNlIGNsaWNr
IG9uIHRoZSAiTmF2aWdhdGUiIGJ1dHRvbi48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmtlZXBXZWJIaXN0b3J5KCk7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisgIH0KKworICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICB2YXIg
bmF2QnV0dG9uTm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduYXYtYnV0dG9uJyk7Cisg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygKKyAgICAgICAgICBuYXZCdXR0b25Ob2RlLm9m
ZnNldExlZnQgKyBuYXZCdXR0b25Ob2RlLm9mZnNldFdpZHRoIC8gMiwKKyAgICAgICAgICBuYXZC
dXR0b25Ob2RlLm9mZnNldFRvcCArIG5hdkJ1dHRvbk5vZGUub2Zmc2V0SGVpZ2h0IC8gMik7Cisg
ICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAo
KTsKKyAgfSBlbHNlIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFudWFsLWV4cGxh
bmF0aW9uJykuc3R5bGUuZGlzcGxheSA9ICcnOworICB9CisKKyAgZnVuY3Rpb24gbmF2KCkgewor
ICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJ3Jlc291cmNlcy9nZXN0dXJlLWJlZm9yZS1vbmxv
YWQtdGFyZ2V0Lmh0bWwjMic7CisgIH0KKworICBmdW5jdGlvbiBvbmxvYWQoKSB7CisgICAgd2lu
ZG93LmNvbnNvbGUubG9nKCdGQUlMOiBTaG91bGQgbm90IGhhdmUgcmVhY2hlZCBvbmxvYWQgYmVm
b3JlIG5hdmlnYXRpbmcgYXdheScpOworICB9Cis8L3NjcmlwdD4KKwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9oaXN0b3J5L2hpc3RvcnktbGVuZ3RoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9oaXN0b3J5L2hpc3RvcnktbGVuZ3RoLmh0bWwJKHJldmlzaW9uIDY0MjQwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2hpc3RvcnktbGVuZ3RoLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTgsMzAgKzgsMzQgQEAgb25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogICB9Ci0gIC8vIFRoaXMg
dGVzdCBhZHZhbmNlcyBoaXN0b3J5IGJ5IDIgcGFnZXMsIHRoZW4gbmF2aWdhdGVzIGJhY2sgb25l
LCBhbmQKLSAgLy8gcmVjb3JkcyBoaXN0b3J5Lmxlbmd0aC4gIFdlIGV4cGVjdCBoaXN0b3J5Lmxl
bmd0aCB0byBpbmRpY2F0ZSB0aGUgdG90YWwKLSAgLy8gbGVuZ3RoIG9mIHNlc3Npb24gaGlzdG9y
eS4gIEF0IHRoZSBlbmQgb2YgdGhlIHRlc3QsIGl0IHNob3VsZCBiZSAyIGdyZWF0ZXIKLSAgLy8g
dGhhbiBpdCB3YXMgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXN0LgotICBzd2l0Y2ggKHNlc3Npb25T
dG9yYWdlLnRlc3RTdGFnZSsrKSB7Ci0gIGNhc2UgMDoKLSAgICBzZXNzaW9uU3RvcmFnZS5pbml0
aWFsTGVuZ3RoID0gaGlzdG9yeS5sZW5ndGg7Ci0gICAgbG9jYXRpb24gPSAiP2EiOwotICAgIGJy
ZWFrOwotICBjYXNlIDE6Ci0gICAgbG9jYXRpb24gPSAiP2IiOwotICAgIGJyZWFrOwotICBjYXNl
IDI6Ci0gICAgaGlzdG9yeS5iYWNrKCk7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgMzoKLSAgICBpZiAo
aGlzdG9yeS5sZW5ndGggPT0gKHNlc3Npb25TdG9yYWdlLmluaXRpYWxMZW5ndGggLSAwKSArIDIp
Ci0gICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJQQVNTIjsKLSAgICBlbHNlCi0gICAg
ICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJGQUlMOiBpbml0aWFsTGVuZ3RoPSIgKyBzZXNz
aW9uU3RvcmFnZS5pbml0aWFsTGVuZ3RoICsgIiwgaGlzdG9yeS5sZW5ndGg9IiArIGhpc3Rvcnku
bGVuZ3RoOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci0gICAgYnJlYWs7Ci0gIH0KKworICAvLyBM
b2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVy
IHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAgc2V0VGltZW91dChmdW5jdGlvbigpIHsK
KyAgICAvLyBUaGlzIHRlc3QgYWR2YW5jZXMgaGlzdG9yeSBieSAyIHBhZ2VzLCB0aGVuIG5hdmln
YXRlcyBiYWNrIG9uZSwgYW5kCisgICAgLy8gcmVjb3JkcyBoaXN0b3J5Lmxlbmd0aC4gIFdlIGV4
cGVjdCBoaXN0b3J5Lmxlbmd0aCB0byBpbmRpY2F0ZSB0aGUgdG90YWwKKyAgICAvLyBsZW5ndGgg
b2Ygc2Vzc2lvbiBoaXN0b3J5LiAgQXQgdGhlIGVuZCBvZiB0aGUgdGVzdCwgaXQgc2hvdWxkIGJl
IDIgZ3JlYXRlcgorICAgIC8vIHRoYW4gaXQgd2FzIGF0IHRoZSBzdGFydCBvZiB0aGUgdGVzdC4K
KyAgICBzd2l0Y2ggKHNlc3Npb25TdG9yYWdlLnRlc3RTdGFnZSsrKSB7CisgICAgY2FzZSAwOgor
ICAgICAgc2Vzc2lvblN0b3JhZ2UuaW5pdGlhbExlbmd0aCA9IGhpc3RvcnkubGVuZ3RoOworICAg
ICAgbG9jYXRpb24gPSAiP2EiOworICAgICAgYnJlYWs7CisgICAgY2FzZSAxOgorICAgICAgbG9j
YXRpb24gPSAiP2IiOworICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgaGlzdG9yeS5i
YWNrKCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIDM6CisgICAgICBpZiAoaGlzdG9yeS5sZW5n
dGggPT0gKHNlc3Npb25TdG9yYWdlLmluaXRpYWxMZW5ndGggLSAwKSArIDIpCisgICAgICAgIGRv
Y3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIlBBU1MiOworICAgICAgZWxzZQorICAgICAgICBkb2N1
bWVudC5ib2R5LmlubmVySFRNTCA9ICJGQUlMOiBpbml0aWFsTGVuZ3RoPSIgKyBzZXNzaW9uU3Rv
cmFnZS5pbml0aWFsTGVuZ3RoICsgIiwgaGlzdG9yeS5sZW5ndGg9IiArIGhpc3RvcnkubGVuZ3Ro
OworICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgYnJlYWs7CisgICAgfQorICB9LCAw
KTsKIH0KIG9udW5sb2FkID0gZnVuY3Rpb24oKSB7CiAgIC8vIGRpc2FibGUgcGFnZSBjYWNoZQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NhdmVzLXN0YXRlLWFmdGVyLWZyYWdtZW50
LW5hdi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zYXZlcy1z
dGF0ZS1hZnRlci1mcmFnbWVudC1uYXYuaHRtbAkocmV2aXNpb24gNjQyNDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2hpc3Rvcnkvc2F2ZXMtc3RhdGUtYWZ0ZXItZnJhZ21lbnQtbmF2Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDggKzMwLDExIEBAIGZ1bmN0aW9uIHJ1blRlc3RTdGVwKCkgewog
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwogICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KLSAgICBuYXZpZ2F0ZVRvSGFzaChm
aWVsZCk7Ci0gICAgbmF2aWdhdGVBd2F5QW5kQmFjaygpOworICAgIC8vIExvY2F0aW9uIGNoYW5n
ZXMgbmVlZCB0byBoYXBwZW4gb3V0c2lkZSB0aGUgb25sb2FkIGhhbmRsZXIgdG8gZ2VuZXJhdGUg
aGlzdG9yeSBlbnRyaWVzLgorICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICBuYXZp
Z2F0ZVRvSGFzaChmaWVsZCk7CisgICAgICBuYXZpZ2F0ZUF3YXlBbmRCYWNrKCk7CisgICAgfSwg
MCk7CiAgIH0gZWxzZSB7CiAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAoZmllbGQudmFs
dWUgPT0gJycpID8gJ0ZBSUwnIDogJ1BBU1MnOwogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2dlc3R1
cmUtYmVmb3JlLW9ubG9hZC10YXJnZXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2hpc3RvcnkvcmVzb3VyY2VzL2dlc3R1cmUtYmVmb3JlLW9ubG9hZC10YXJnZXQuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvZ2VzdHVy
ZS1iZWZvcmUtb25sb2FkLXRhcmdldC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQxIEBA
Cis8IS0tIFRoaXMgcGFnZSBhY2NlcHRzIGEgcXVlcnkgc3RyaW5nIHNwZWNpZnlpbmcgaG93IG1h
bnkgaGlzdG9yeSBpdGVtcyBzaG91bGQKK2JlIHByZXNlbnQgb25jZSBpdCBmaW5pc2hlcyBsb2Fk
aW5nLiAtLT4KKworPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5SZWRpcmVjdCBUYXJnZXQ8L3RpdGxl
PgorCis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKHMpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzICsg
IlxuIikpOworfQorCitmdW5jdGlvbiB0ZXN0SGlzdG9yeUl0ZW1Db3VudCgpCit7CisgICAgdmFy
IGV4cGVjdGVkID0gcGFyc2VJbnQobG9jYXRpb24uaGFzaC5zbGljZSgxKSk7CisgICAgdmFyIGFj
dHVhbCA9IGhpc3RvcnkubGVuZ3RoOworICAgIGlmIChhY3R1YWwgPT09IGV4cGVjdGVkKQorICAg
ICAgICBsb2coIlBBU1M6IEhpc3RvcnkgaXRlbSBjb3VudCBzaG91bGQgYmUgIiArIGV4cGVjdGVk
ICsgIiBhbmQgaXMuIik7CisgICAgZWxzZQorICAgICAgICBsb2coIkZBSUw6IEhpc3RvcnkgaXRl
bSBjb3VudCBzaG91bGQgYmUgIiArIGV4cGVjdGVkICsgIiBidXQgaW5zdGVhZCBpcyAiICsgYWN0
dWFsICsgIi4iKTsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlv
biAoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RIaXN0b3J5SXRl
bUNvdW50KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBCYWNrRm9yd2FyZExp
c3QoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIHRlc3RIaXN0b3J5SXRlbUNvdW50KCk7CisgICAgfQorfSwgZmFsc2Up
OworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorPHA+VGhpcyBwYWdlIGlzIHRoZSB0YXJn
ZXQgb2YgYSByZWRpcmVjdC48L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2lucHV0LWVsZW1lbnQtcGFn
ZS1jYWNoZS1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L2lucHV0LWVsZW1lbnQtcGFnZS1jYWNoZS1jcmFzaC5odG1sCShyZXZpc2lvbiA2NDI0MCkKKysr
IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2lucHV0LWVsZW1lbnQtcGFnZS1jYWNoZS1jcmFzaC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw4ICsxMyw5IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQog
ICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0aW5wdXQiKTsKICAg
ICBpbnB1dC5zZXRBdHRyaWJ1dGUoImF1dG9jb21wbGV0ZSIsICJvbiIpOwogICAgIGlucHV0LnBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQoaW5wdXQpOwotICAgIAotICAgIHdpbmRvdy5sb2NhdGlvbiA9
ICJkYXRhOnRleHQvaHRtbCw8c2NyaXB0Pmhpc3RvcnkuYmFjaygpOzwvc2NyaXAiICsgInQ+IjsK
KworICAgIC8vIExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0byBoYXBwZW4gb3V0c2lkZSB0aGUgb25s
b2FkIGhhbmRsZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBlbnRyaWVzLgorICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7d2luZG93LmxvY2F0aW9uID0gImRhdGE6dGV4dC9odG1sLDxzY3JpcHQ+aGlz
dG9yeS5iYWNrKCk7PC9zY3JpcCIgKyAidD4iO30sIDApOwogfQogCiBmdW5jdGlvbiBwYWdlSGlk
ZGVuKCkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N1YmZyYW1lLW5hdmlnYXRlLWR1
cmluZy1tYWluLWZyYW1lLWxvYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9zdWJmcmFtZS1uYXZpZ2F0ZS1kdXJpbmctbWFpbi1mcmFtZS1sb2FkLmh0bWwJKHJl
dmlzaW9uIDY0MjQwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3ViZnJhbWUtbmF2aWdh
dGUtZHVyaW5nLW1haW4tZnJhbWUtbG9hZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDggKzks
OSBAQCBmdW5jdGlvbiBydW5UZXN0KCkKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEJhY2tGb3J3YXJkTGlzdCgpOwogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CiAgICAgfQotICAgIAotICAgIGxvY2F0aW9uPSdyZXNvdXJjZXMvc3ViZnJhbWUt
bmF2aWdhdGUtZHVyaW5nLW1haW4tZnJhbWUtbG9hZDIuaHRtbCc7CisKKyAgICAvLyBMb2NhdGlv
biBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdl
bmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge2xvY2F0
aW9uPSdyZXNvdXJjZXMvc3ViZnJhbWUtbmF2aWdhdGUtZHVyaW5nLW1haW4tZnJhbWUtbG9hZDIu
aHRtbCc7fSwgMCk7CiB9CiAKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50
LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLmh0bWwJKHJldmlzaW9uIDY0MjQwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0
ZS1iYWNrLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDEwIEBAIGZ1bmN0aW9uIHJ1
blRoaXJkU3RhZ2VPZlRlc3QoKQogCiBmdW5jdGlvbiBsb2FkZWQoKQogewotICAgIGlmICghc2Vz
c2lvblN0b3JhZ2Uuc3RhZ2UpCi0gICAgICAgIHJ1bkZpcnN0U3RhZ2VPZlRlc3QoKTsKLSAgICBl
bHNlIGlmIChzZXNzaW9uU3RvcmFnZS5zdGFnZSA9PSAyKQorICAgIGlmICghc2Vzc2lvblN0b3Jh
Z2Uuc3RhZ2UpIHsKKyAgICAgICAgLy8gTG9jYXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBv
dXRzaWRlIHRoZSBvbmxvYWQgaGFuZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCisg
ICAgICAgIHNldFRpbWVvdXQocnVuRmlyc3RTdGFnZU9mVGVzdCwgMCk7CisgICAgfSBlbHNlIGlm
IChzZXNzaW9uU3RvcmFnZS5zdGFnZSA9PSAyKQogICAgICAgICBydW5TZWNvbmRTdGFnZU9mVGVz
dCgpOwogICAgIGVsc2UgaWYgKHNlc3Npb25TdG9yYWdlLnN0YWdlID09IDMpCiAgICAgICAgIHJ1
blRoaXJkU3RhZ2VPZlRlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRl
b2JqZWN0cy9wdXNoc3RhdGUtY2xlYXJzLWZvcndhcmQtaGlzdG9yeS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtY2xlYXJz
LWZvcndhcmQtaGlzdG9yeS5odG1sCShyZXZpc2lvbiA2NDI0MCkKKysrIExheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtY2xlYXJzLWZvcndhcmQtaGlzdG9yeS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDIyICs4LDI2IEBAIG9ubG9hZCA9IGZ1bmN0aW9uKCkg
ewogICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KICAg
fQotICBzd2l0Y2ggKHNlc3Npb25TdG9yYWdlLnRlc3RTdGFnZSsrKSB7Ci0gIGNhc2UgMDoKLSAg
ICBsb2NhdGlvbiA9ICI/YSI7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgMToKLSAgICBsb2NhdGlvbiA9
ICI/YiI7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgMjoKLSAgICBoaXN0b3J5LmJhY2soKTsKLSAgICBi
cmVhazsKLSAgY2FzZSAzOgotICAgIGhpc3RvcnkucHVzaFN0YXRlKG51bGwsIG51bGwpOwotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7Ci0gICAgYnJlYWs7Ci0gIH0KKworICAvLyBMb2NhdGlvbiBjaGFu
Z2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdlbmVyYXRl
IGhpc3RvcnkgZW50cmllcy4KKyAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgIHN3aXRj
aCAoc2Vzc2lvblN0b3JhZ2UudGVzdFN0YWdlKyspIHsKKyAgICAgIGNhc2UgMDoKKyAgICAgICAg
bG9jYXRpb24gPSAiP2EiOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMToKKyAgICAgICAg
bG9jYXRpb24gPSAiP2IiOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMjoKKyAgICAgICAg
aGlzdG9yeS5iYWNrKCk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAzOgorICAgICAgICBo
aXN0b3J5LnB1c2hTdGF0ZShudWxsLCBudWxsKTsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0sIDApOwogfQogb251bmxvYWQgPSBm
dW5jdGlvbigpIHsKICAgLy8gZGlzYWJsZSBwYWdlIGNhY2hlCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZG9jdW1lbnQtbG9jYXRpb24tYmVmb3JlLWxv
YWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlz
dG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2NhdGlvbi1iZWZvcmUtbG9hZC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDY0MjQwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jl
ZGlyZWN0LWpzLWRvY3VtZW50LWxvY2F0aW9uLWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMSw5ICsxLDggQEAKIFRoaXMgcGFnZSBpcyB0aGUgdGFyZ2V0IG9mIGEg
cmVkaXJlY3QuCiAKLUZBSUw6IEhpc3RvcnkgaXRlbSBjb3VudCBzaG91bGQgYmUgMSBidXQgaW5z
dGVhZCBpcyAyLgorUEFTUzogSGlzdG9yeSBpdGVtIGNvdW50IHNob3VsZCBiZSAxIGFuZCBpcy4K
IAogCiA9PT09PT09PT09PT09PSBCYWNrIEZvcndhcmQgTGlzdCA9PT09PT09PT09PT09PQotICAg
ICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1s
b2NhdGlvbi1iZWZvcmUtbG9hZC5odG1sICAqKm5hdiB0YXJnZXQqKgogY3Vyci0+ICBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvaGlzdG9yeS9yZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwjMSAg
KipuYXYgdGFyZ2V0KioKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMt
bG9jYXRpb24tYXNzaWduLWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tYXNzaWdu
LWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjQyNDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tYXNzaWduLWJlZm9yZS1s
b2FkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDggQEAKIFRoaXMgcGFn
ZSBpcyB0aGUgdGFyZ2V0IG9mIGEgcmVkaXJlY3QuCiAKLUZBSUw6IEhpc3RvcnkgaXRlbSBjb3Vu
dCBzaG91bGQgYmUgMSBidXQgaW5zdGVhZCBpcyAyLgorUEFTUzogSGlzdG9yeSBpdGVtIGNvdW50
IHNob3VsZCBiZSAxIGFuZCBpcy4KIAogCiA9PT09PT09PT09PT09PSBCYWNrIEZvcndhcmQgTGlz
dCA9PT09PT09PT09PT09PQotICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaGlzdG9yeS9y
ZWRpcmVjdC1qcy1sb2NhdGlvbi1hc3NpZ24tYmVmb3JlLWxvYWQuaHRtbCAgKipuYXYgdGFyZ2V0
KioKIGN1cnItPiAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3RvcnkvcmVzb3VyY2VzL3JlZGly
ZWN0LXRhcmdldC5odG1sIzEgICoqbmF2IHRhcmdldCoqCiA9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9o
aXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9j
YXRpb24tYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2NDI0MCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1iZWZvcmUtbG9h
ZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw4IEBACiBUaGlzIHBhZ2Ug
aXMgdGhlIHRhcmdldCBvZiBhIHJlZGlyZWN0LgogCi1GQUlMOiBIaXN0b3J5IGl0ZW0gY291bnQg
c2hvdWxkIGJlIDEgYnV0IGluc3RlYWQgaXMgMi4KK1BBU1M6IEhpc3RvcnkgaXRlbSBjb3VudCBz
aG91bGQgYmUgMSBhbmQgaXMuCiAKIAogPT09PT09PT09PT09PT0gQmFjayBGb3J3YXJkIExpc3Qg
PT09PT09PT09PT09PT0KLSAgICAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3RvcnkvcmVk
aXJlY3QtanMtbG9jYXRpb24tYmVmb3JlLWxvYWQuaHRtbCAgKipuYXYgdGFyZ2V0KioKIGN1cnIt
PiAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3RvcnkvcmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdl
dC5odG1sIzEgICoqbmF2IHRhcmdldCoqCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jl
ZGlyZWN0LWpzLWxvY2F0aW9uLWhyZWYtYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlv
bi1ocmVmLWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjQyNDApCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24taHJlZi1iZWZv
cmUtbG9hZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw4IEBACiBUaGlz
IHBhZ2UgaXMgdGhlIHRhcmdldCBvZiBhIHJlZGlyZWN0LgogCi1GQUlMOiBIaXN0b3J5IGl0ZW0g
Y291bnQgc2hvdWxkIGJlIDEgYnV0IGluc3RlYWQgaXMgMi4KK1BBU1M6IEhpc3RvcnkgaXRlbSBj
b3VudCBzaG91bGQgYmUgMSBhbmQgaXMuCiAKIAogPT09PT09PT09PT09PT0gQmFjayBGb3J3YXJk
IExpc3QgPT09PT09PT09PT09PT0KLSAgICAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3Rv
cnkvcmVkaXJlY3QtanMtbG9jYXRpb24taHJlZi1iZWZvcmUtbG9hZC5odG1sICAqKm5hdiB0YXJn
ZXQqKgogY3Vyci0+ICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaGlzdG9yeS9yZXNvdXJjZXMvcmVk
aXJlY3QtdGFyZ2V0Lmh0bWwjMSAgKipuYXYgdGFyZ2V0KioKID09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L25hdmlnYXRpb24vcmVzb3VyY2VzL2RvY3VtZW50LWxvY2F0aW9uLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZG9jdW1lbnQtbG9j
YXRpb24uanMJKHJldmlzaW9uIDY0MjQwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL3Jlc291cmNlcy9kb2N1bWVudC1sb2NhdGlvbi5qcwkod29ya2luZyBjb3B5KQpAQCAt
Nyw3ICs3LDggQEAgZnVuY3Rpb24gc3RhcnQoKSB7CiAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CiAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CiAKLSAgICAgIHJ1blRlc3QoKTsKKyAgICAgIC8vIExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0
byBoYXBwZW4gb3V0c2lkZSB0aGUgb25sb2FkIGhhbmRsZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBl
bnRyaWVzLgorICAgICAgc2V0VGltZW91dChydW5UZXN0LCAwKTsKICAgICB9IGVsc2UgewogICAg
ICAgLy8gbG9hZGVkIHRoZSA/MSBuYXZpZ2F0aW9uCiAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9zZWN1cml0eS9hdXRvY29tcGxldGUt
Y2xlYXJlZC1vbi1iYWNrLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc2VjdXJpdHkv
YXV0b2NvbXBsZXRlLWNsZWFyZWQtb24tYmFjay5odG1sCShyZXZpc2lvbiA2NDI0MCkKKysrIExh
eW91dFRlc3RzL3NlY3VyaXR5L2F1dG9jb21wbGV0ZS1jbGVhcmVkLW9uLWJhY2suaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTksNyArMTksOCBAQCBmdW5jdGlvbiBydW5UZXN0KCkKICAgICBpZiAo
IXNlc3Npb25TdG9yYWdlLnNlY29uZFBhZ2VSZWFjaGVkKSB7CiAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJmaXJzdElucHV0IikudmFsdWUgPSAiU3VwZXJTZWVrcml0VmFsdWUiOwog
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2Vjb25kSW5wdXQiKS52YWx1ZSA9ICJT
dXBlclNlZWtyaXRWYWx1ZSI7Ci0gICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICJyZXNvdXJjZXMv
YXV0b2NvbXBsZXRlLWNsZWFyZWQtb24tYmFjazIuaHRtbCI7CisgICAgICAgIC8vIExvY2F0aW9u
IGNoYW5nZXMgbmVlZCB0byBoYXBwZW4gb3V0c2lkZSB0aGUgb25sb2FkIGhhbmRsZXIgdG8gZ2Vu
ZXJhdGUgaGlzdG9yeSBlbnRyaWVzLgorICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3dp
bmRvdy5sb2NhdGlvbiA9ICJyZXNvdXJjZXMvYXV0b2NvbXBsZXRlLWNsZWFyZWQtb24tYmFjazIu
aHRtbCI7fSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkluZGV4OiBMYXlvdXRU
ZXN0cy9zdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3N0b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14aHIuanMJKHJldmlzaW9uIDY0MjQwKQor
KysgTGF5b3V0VGVzdHMvc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5qcwkod29ya2luZyBj
b3B5KQpAQCAtODEsNiArODEsMTIgQEAgZnVuY3Rpb24gaW52b2tlQmFjaygpCiAKIGZ1bmN0aW9u
IHJ1blRlc3QoKQogeworICAgIC8vIExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0byBoYXBwZW4gb3V0
c2lkZSB0aGUgb25sb2FkIGhhbmRsZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBlbnRyaWVzLgorICAg
IHNldFRpbWVvdXQocnVuVGVzdHNJbm5lciwgMCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RzSW5u
ZXIoKQorewogICAgIGJhY2tJdGVyYXRpb25zID0gMTA7CiAgICAgY29uc2VjdXRpdmVGYWlsdXJl
cyA9IDA7CiAgICAgc3VjY2Vzc2VzID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63071</attachid>
            <date>2010-07-30 10:09:38 -0700</date>
            <delta_ts>2010-07-30 18:15:05 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-42861-v2.patch</filename>
            <type>text/plain</type>
            <size>31900</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDM1OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMDctMjggIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU2Vzc2lvbiBoaXN0b3J5IHNob3VsZCBza2lwIG92ZXIgSlMgcmVkaXJlY3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjg2MQorICAgICAgICAK
KyAgICAgICAgTG9jayB0aGUgYmFjay9mb3J3YXJkIGxpc3QgZm9yIGxvY2F0aW9uIGNoYW5nZXMg
dGhhdCBoYXBwZW4gYmVmb3JlIHRoZSAKKyAgICAgICAgb25sb2FkIGV2ZW50IGZpcmVzIHRoYXQg
YXJlIG5vdCB0aGUgcmVzdWx0IG9mIHVzZXIgZ2VzdHVyZXMuCisKKyAgICAgICAgVGVzdDogZmFz
dC9oaXN0b3J5L2dlc3R1cmUtYmVmb3JlLW9ubG9hZC5odG1sIGFuZCB1cGRhdGVkIGV4cGVjdGF0
aW9ucyAKKyAgICAgICAgZm9yIGh0dHAvdGVzdHMvaGlzdG9yeSB0ZXN0cyB0aGF0IHVzZWQgdG8g
ZmFpbC4KKworICAgICAgICAqIGxvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6bXVzdExvY2tCYWNrRm9yd2FyZExpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1
Ym1pc3Npb24pOgorICAgICAgICAqIGxvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5oOgorCiAyMDEw
LTA3LTI5ICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFN0ZXZlIEJsb2NrLgpJbmRleDogV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hl
ZHVsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVy
LmNwcAkocmV2aXNpb24gNjQzNTgpCisrKyBXZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNjaGVkdWxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MCwxNyArMjQwLDIxIEBAIHZvaWQgUmVkaXJlY3RT
Y2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgLy8gV2Ugd2FudCBhIG5ldyBoaXN0b3J5IGl0ZW0gaWYgdGhlIHJl
ZnJlc2ggdGltZW91dCBpcyA+IDEgc2Vjb25kLgorICAgIC8vIFdlIHdhbnQgYSBuZXcgYmFjayBm
b3J3YXJkIGxpc3QgaXRlbSBpZiB0aGUgcmVmcmVzaCB0aW1lb3V0IGlzID4gMSBzZWNvbmQuCiAg
ICAgaWYgKCFtX3JlZGlyZWN0IHx8IGRlbGF5IDw9IG1fcmVkaXJlY3QtPmRlbGF5KCkpCiAgICAg
ICAgIHNjaGVkdWxlKG5ldyBTY2hlZHVsZWRSZWRpcmVjdChkZWxheSwgdXJsLCB0cnVlLCBkZWxh
eSA8PSAxLCBmYWxzZSkpOwogfQogCi1ib29sIFJlZGlyZWN0U2NoZWR1bGVyOjptdXN0TG9ja0Jh
Y2tGb3J3YXJkTGlzdChGcmFtZSogdGFyZ2V0RnJhbWUpCitib29sIFJlZGlyZWN0U2NoZWR1bGVy
OjptdXN0TG9ja0JhY2tGb3J3YXJkTGlzdChGcmFtZSogdGFyZ2V0RnJhbWUsIGJvb2wgbXVzdExv
Y2tJZkR1cmluZ0xvYWQpCiB7CisgICAgLy8gTm9uLXVzZXIgbmF2aWdhdGlvbiBiZWZvcmUgdGhl
IHBhZ2UgaGFzIGxvYWRlZCBzaG91bGQgbm90IGNyZWF0ZSBhIG5ldyBiYWNrL2ZvcndhcmQgaXRl
bS4KKyAgICAvLyBTZWUgaHR0cHM6Ly93ZWJraXQub3JnL2IvNDI4NjEgZm9yIHRoZSBvcmlnaW5h
bCBtb3RpdmF0aW9uIGZvciB0aGlzLiAgICAKKyAgICBpZiAobXVzdExvY2tJZkR1cmluZ0xvYWQg
JiYgdGFyZ2V0RnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpICYmIHRhcmdldEZyYW1l
LT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+aXNMb2FkaW5nSW5BUElTZW5zZSgpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICAvLyBOYXZpZ2F0aW9uIG9mIGEgc3ViZnJhbWUg
ZHVyaW5nIGxvYWRpbmcgb2YgYW4gYW5jZXN0b3IgZnJhbWUgZG9lcyBub3QgY3JlYXRlIGEgbmV3
IGJhY2svZm9yd2FyZCBpdGVtLgogICAgIC8vIFRoZSBkZWZpbml0aW9uIG9mICJkdXJpbmcgbG9h
ZCIgaXMgYW55IHRpbWUgYmVmb3JlIGFsbCBoYW5kbGVycyBmb3IgdGhlIGxvYWQgZXZlbnQgaGF2
ZSBiZWVuIHJ1bi4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0OTU3IGZvciB0aGUgb3JpZ2luYWwgbW90aXZhdGlvbiBmb3IgdGhpcy4KLQogICAg
IGZvciAoRnJhbWUqIGFuY2VzdG9yID0gdGFyZ2V0RnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7IGFu
Y2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT50cmVlKCktPnBhcmVudCgpKSB7CiAgICAgICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IGFuY2VzdG9yLT5kb2N1bWVudCgpOwogICAgICAgICBpZiAo
IWFuY2VzdG9yLT5sb2FkZXIoKS0+aXNDb21wbGV0ZSgpIHx8IChkb2N1bWVudCAmJiBkb2N1bWVu
dC0+cHJvY2Vzc2luZ0xvYWRFdmVudCgpKSkKQEAgLTI2Niw3ICsyNzAsNyBAQCB2b2lkIFJlZGly
ZWN0U2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uCiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGxvY2tCYWNrRm9yd2FyZExpc3QgPSBsb2NrQmFja0Zvcndh
cmRMaXN0IHx8IG11c3RMb2NrQmFja0ZvcndhcmRMaXN0KG1fZnJhbWUpOworICAgIGxvY2tCYWNr
Rm9yd2FyZExpc3QgPSBsb2NrQmFja0ZvcndhcmRMaXN0IHx8IG11c3RMb2NrQmFja0ZvcndhcmRM
aXN0KG1fZnJhbWUsICF3YXNVc2VyR2VzdHVyZSk7CiAKICAgICBGcmFtZUxvYWRlciogbG9hZGVy
ID0gbV9mcmFtZS0+bG9hZGVyKCk7CiAgICAgCkBAIC0zMDAsNyArMzA0LDcgQEAgdm9pZCBSZWRp
cmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVGb3JtU3VibQogICAgIC8vIHRvIG1hdGNoIElFIGFuZCBP
cGVyYS4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMyMzgzIGZvciB0aGUgb3JpZ2luYWwgbW90aXZhdGlvbiBmb3IgdGhpcy4KIAotICAgIGJvb2wg
bG9ja0JhY2tGb3J3YXJkTGlzdCA9IG11c3RMb2NrQmFja0ZvcndhcmRMaXN0KG1fZnJhbWUpIHx8
IChzdWJtaXNzaW9uLT5zdGF0ZSgpLT5mb3JtU3VibWlzc2lvblRyaWdnZXIoKSA9PSBTdWJtaXR0
ZWRCeUphdmFTY3JpcHQgJiYgbV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSk7CisgICAgYm9vbCBs
b2NrQmFja0ZvcndhcmRMaXN0ID0gbXVzdExvY2tCYWNrRm9yd2FyZExpc3QobV9mcmFtZSwgZmFs
c2UpIHx8IChzdWJtaXNzaW9uLT5zdGF0ZSgpLT5mb3JtU3VibWlzc2lvblRyaWdnZXIoKSA9PSBT
dWJtaXR0ZWRCeUphdmFTY3JpcHQgJiYgbV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSk7CiAKICAg
ICBzY2hlZHVsZShuZXcgU2NoZWR1bGVkRm9ybVN1Ym1pc3Npb24oc3VibWlzc2lvbiwgbG9ja0Jh
Y2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCkpOwogfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvUmVk
aXJlY3RTY2hlZHVsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNj
aGVkdWxlci5oCShyZXZpc2lvbiA2NDM1OCkKKysrIFdlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2No
ZWR1bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHRpbWVyRmlyZWQoVGltZXI8UmVkaXJlY3RTY2hlZHVsZXI+Kik7CiAgICAgdm9pZCBzY2hl
ZHVsZShQYXNzT3duUHRyPFNjaGVkdWxlZE5hdmlnYXRpb24+KTsKIAotICAgIHN0YXRpYyBib29s
IG11c3RMb2NrQmFja0ZvcndhcmRMaXN0KEZyYW1lKiB0YXJnZXRGcmFtZSk7CisgICAgc3RhdGlj
IGJvb2wgbXVzdExvY2tCYWNrRm9yd2FyZExpc3QoRnJhbWUqIHRhcmdldEZyYW1lLCBib29sIG11
c3RMb2NrSWZEdXJpbmdMb2FkKTsKIAogICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgIFRpbWVyPFJl
ZGlyZWN0U2NoZWR1bGVyPiBtX3RpbWVyOwpAQCAtNzksNCArNzksNCBAQCBwcml2YXRlOgogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBGcmFtZUxvYWRlcl9oCisjZW5kaWYg
Ly8gUmVkaXJlY3RTY2hlZHVsZXJfaApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjQzNTgpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0OSBAQAorMjAxMC0w
Ny0yOCAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXNzaW9uIGhpc3Rvcnkgc2hv
dWxkIHNraXAgb3ZlciBKUyByZWRpcmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQyODYxCisgICAgICAgIAorICAgICAgICBMb2NrIHRoZSBiYWNr
L2ZvcndhcmQgbGlzdCBmb3IgbG9jYXRpb24gY2hhbmdlcyB0aGF0IGhhcHBlbiBiZWZvcmUgdGhl
IAorICAgICAgICBvbmxvYWQgZXZlbnQgZmlyZXMgdGhhdCBhcmUgbm90IHRoZSByZXN1bHQgb2Yg
dXNlciBnZXN0dXJlcy4KKyAgICAgICAgCisgICAgICAgIGh0dHAvdGVzdHMvaGlzdG9yeSB0ZXN0
cyBub3cgcGFzcywgdGhlaXIgZXhwZWN0YXRpb3NuIHdlcmUgdXBkYXRlZCAKKyAgICAgICAgYWNj
b3JkaW5nbHkuIE90aGVyIHRlc3RzIG5lZWRlZCBhIHNldFRpbWVvdXQgd3JhcHBlciBhcm91bmQg
bG9jYXRpb24KKyAgICAgICAgY2hhbmdlcyBkdXJpbmcgb25sb2FkLCBvdGhlcndpc2UgdGhleSB3
b3VsZCBub3QgZ2VuZXJhdGUgaGlzdG9yeSAKKyAgICAgICAgZW50cmllcyBhcyBleHBlY3RlZCBh
bnltb3JlLgorICAgICAgICAKKyAgICAgICAgKiBmYXN0L2Nzcy90YXJnZXQtZnJhZ21lbnQtbWF0
Y2guaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvdGltZXItcmVzdW1lLW9uLW5hdmln
YXRpb24tYmFjay5odG1sOgorICAgICAgICAqIGZhc3QvZG9tL2xvY2F0aW9uLWhhc2guaHRtbDoK
KyAgICAgICAgKiBmYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC13
aXRoLWZyYW1lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9ldmVudHMvcGFnZXNob3ct
cGFnZWhpZGUtb24tYmFjay1jYWNoZWQtd2l0aC1mcmFtZXMuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMS5odG1sOgorICAgICAgICAqIGZhc3QvZnJh
bWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0yLmh0bWw6CisgICAgICAgICogZmFzdC9oYXJuZXNz
L3Jlc291cmNlcy9jYWNoZWQtcGFnZS0xLmh0bWw6CisgICAgICAgICogZmFzdC9oYXJuZXNzL3Jl
c291cmNlcy9jYWNoZWQtcGFnZS13aXRoLWRhdGEtdXJscy5odG1sOgorICAgICAgICAqIGZhc3Qv
aGlzdG9yeS9nZXN0dXJlLWJlZm9yZS1vbmxvYWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2hpc3RvcnkvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvaGlzdG9yeS9oaXN0b3J5LWxlbmd0aC5odG1sOgorICAgICAgICAqIGZhc3Qv
aGlzdG9yeS9yZXNvdXJjZXMvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLXRhcmdldC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2hpc3Rvcnkvc2F2ZXMtc3RhdGUtYWZ0ZXItZnJhZ21lbnQtbmF2
Lmh0bWw6CisgICAgICAgICogZmFzdC9sb2FkZXIvaW5wdXQtZWxlbWVudC1wYWdlLWNhY2hlLWNy
YXNoLmh0bWw6CisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRl
c3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLmh0bWw6CisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVv
YmplY3RzL3B1c2hzdGF0ZS1jbGVhcnMtZm9yd2FyZC1oaXN0b3J5Lmh0bWw6CisgICAgICAgICog
ZmFzdC9sb2FkZXIvc3ViZnJhbWUtbmF2aWdhdGUtZHVyaW5nLW1haW4tZnJhbWUtbG9hZC5odG1s
OgorICAgICAgICAqIGh0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2Nh
dGlvbi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9oaXN0
b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWFzc2lnbi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWJlZm9y
ZS1sb2FkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJl
Y3QtanMtbG9jYXRpb24taHJlZi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9kb2N1bWVudC1sb2NhdGlvbi5qczoKKyAg
ICAgICAgKHN0YXJ0KToKKyAgICAgICAgKiBzZWN1cml0eS9hdXRvY29tcGxldGUtY2xlYXJlZC1v
bi1iYWNrLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5qczoK
KyAgICAgICAgKHVwZGF0ZURhdGFiYXNlKToKKyAgICAgICAgKGludm9rZUJhY2spOgorICAgICAg
ICAocnVuVGVzdCk6CisgICAgICAgIChydW5UZXN0c0lubmVyKToKKwogMjAxMC0wNy0zMCAgU3Rl
dmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
U3RldmUgQmxvY2suCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy90YXJnZXQtZnJhZ21lbnQt
bWF0Y2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy90YXJnZXQtZnJh
Z21lbnQtbWF0Y2guaHRtbAkocmV2aXNpb24gNjQzNTgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy90YXJnZXQtZnJhZ21lbnQtbWF0Y2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsNiArMTEs
MTIgQEAgZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCisg
ICAgLy8gTG9jYXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRoZSBvbmxvYWQg
aGFuZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCisgICAgc2V0VGltZW91dChydW5U
ZXN0LCAwKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICB3aW5kb3cubG9jYXRpb24u
aGFzaCA9JyN0YXJnZXQtMDEnOwogICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwogICAgIHdp
bmRvdy5oaXN0b3J5LmJhY2soKTsgLy8gVGhpcyBxdWV1ZXMgdXAgYSBuYXZpZ2F0aW9uLCBzbyB3
ZSBuZWVkIHRvIGRlbGF5IHRoZSBjYWxsIHRvIG5vdGlmeURvbmUuCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9sb2NhdGlvbi1oYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vbG9jYXRpb24taGFzaC5odG1sCShyZXZpc2lvbiA2NDM1OCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL2xvY2F0aW9uLWhhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtODcsOCAr
ODcsOSBAQAogICAgICAgICBudW1FcnJvcnMgPSAwOwogICAgICAgICBvcmlnaW5hbExvY2F0aW9u
ID0gd2luZG93LmxvY2F0aW9uLmhyZWY7CiAgICAgICAgIG9yaWdpbmFsSGlzdG9yeUxlbmd0aCA9
IHdpbmRvdy5oaXN0b3J5Lmxlbmd0aDsKLSAgICAgCi0gICAgICAgIHN0ZXAoKTsKKworICAgICAg
ICAvLyBMb2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBo
YW5kbGVyIHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAgICAgICAgc2V0VGltZW91dChz
dGVwLCAwKTsKICAgICB9CiAgICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9XaW5kb3cvdGltZXItcmVzdW1lLW9uLW5hdmlnYXRpb24tYmFjay5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy90aW1lci1yZXN1bWUtb24t
bmF2aWdhdGlvbi1iYWNrLmh0bWwJKHJldmlzaW9uIDY0MzU4KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L3RpbWVyLXJlc3VtZS1vbi1uYXZpZ2F0aW9uLWJhY2suaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgsOSArMTgsMTIgQEAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VL
ZXkiLCAxKTsKICAgICB9Ci0gICAgd2luZG93LnNldFRpbWVvdXQoInZlcmlmeSgpIiwgdGltZW91
dFZhbHVlKTsKLSAgICB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKLSAgICB3aW5k
b3cubG9jYXRpb24uaHJlZiA9ICJkYXRhOnRleHQvaHRtbCw8Ym9keSBvbmxvYWQ9J2hpc3Rvcnku
YmFjaygpJz48L2JvZHk+IjsKKyAgICAvLyBMb2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVu
IG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4K
KyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgd2luZG93LnNldFRpbWVvdXQodmVy
aWZ5LCB0aW1lb3V0VmFsdWUpOworICAgICAgdGltZXN0YW1wID0gbmV3IERhdGUoKS5nZXRUaW1l
KCk7CisgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICJkYXRhOnRleHQvaHRtbCw8Ym9keSBv
bmxvYWQ9J2hpc3RvcnkuYmFjaygpJz48L2JvZHk+IjsKKyAgICB9LCAwKTsKIH0KIAogPC9zY3Jp
cHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1i
YWNrLWNhY2hlZC13aXRoLWZyYW1lcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUtb24tYmFjay1jYWNoZWQtd2l0aC1m
cmFtZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2NDM1OCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLXdpdGgtZnJhbWVzLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxNiArMSwxNiBAQAorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDIwOiAqKipUb3AgbGV2ZWwgZnJhbWUgYmVpbmcgcGFyc2VkIGZvciB0aGUgaW5pdGlh
bCBwYWdlIGxvYWQqKioKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMDogU3Vic3ViZnJhbWUgd2lu
ZG93Lm9ubG9hZAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIwOiBTdWJzdWJmcmFtZSB3aW5kb3cu
b25wYWdlc2hvdywgdGFyZ2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRdLCBwZXJzaXN0ZWQgPSBm
YWxzZQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIwOiBTdWJmcmFtZSB3aW5kb3cub25sb2FkCitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMjA6IFN1YmZyYW1lIHdpbmRvdy5vbnBhZ2VzaG93LCB0YXJn
ZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IGZhbHNlCitDT05TT0xFIE1F
U1NBR0U6IGxpbmUgMjA6IE1haW4gZnJhbWUgd2luZG93Lm9ubG9hZAorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDIwOiBNYWluIGZyYW1lIHdpbmRvdy5vbnBhZ2VzaG93LCB0YXJnZXQgPSBbb2JqZWN0
IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IGZhbHNlCitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
MjA6ICoqKk5hdmlnYXRpbmcgdG9wLWxldmVsIGZyYW1lIHRvIGEgcGFnZSB0aGF0IHdpbGwgaW1t
ZWRpYXRlbHkgbmF2aWdhdGUgYmFjayB0byB0aGlzIG9uZSoqKgorQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDIwOiBNYWluIGZyYW1lIHdpbmRvdy5vbnBhZ2VoaWRlLCB0YXJnZXQgPSBbb2JqZWN0IEhU
TUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IHRydWUKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMDog
U3ViZnJhbWUgd2luZG93Lm9ucGFnZWhpZGUsIHRhcmdldCA9IFtvYmplY3QgSFRNTERvY3VtZW50
XSwgcGVyc2lzdGVkID0gdHJ1ZQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIwOiBTdWJzdWJmcmFt
ZSB3aW5kb3cub25wYWdlaGlkZSwgdGFyZ2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRdLCBwZXJz
aXN0ZWQgPSB0cnVlCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjA6IFN1YnN1YmZyYW1lIHdpbmRv
dy5vbnBhZ2VzaG93LCB0YXJnZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9
IHRydWUKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMDogU3ViZnJhbWUgd2luZG93Lm9ucGFnZXNo
b3csIHRhcmdldCA9IFtvYmplY3QgSFRNTERvY3VtZW50XSwgcGVyc2lzdGVkID0gdHJ1ZQorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDIwOiBNYWluIGZyYW1lIHdpbmRvdy5vbnBhZ2VzaG93LCB0YXJn
ZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IHRydWUKIFRlc3QgcGFnZXNo
b3cvcGFnZWhpZGUgZXZlbnQgYmVoYXZpb3Igd2hlbiBuYXZpZ2F0aW5nIGF3YXkgZnJvbSBhIHBh
Z2Ugd2l0aCBmcmFtZXMsIHB1dHRpbmcgdGhlIHBhZ2UgaW4gdGhlIHBhZ2UgY2FjaGUsIHRoZW4g
YmFjayB0byBpdC4KLSoqKlRvcCBsZXZlbCBmcmFtZSBiZWluZyBwYXJzZWQgZm9yIHRoZSBpbml0
aWFsIHBhZ2UgbG9hZCoqKgotU3Vic3ViZnJhbWUgd2luZG93Lm9ubG9hZAotU3Vic3ViZnJhbWUg
d2luZG93Lm9ucGFnZXNob3csIHRhcmdldCA9IFtvYmplY3QgSFRNTERvY3VtZW50XSwgcGVyc2lz
dGVkID0gZmFsc2UKLVN1YmZyYW1lIHdpbmRvdy5vbmxvYWQKLVN1YmZyYW1lIHdpbmRvdy5vbnBh
Z2VzaG93LCB0YXJnZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IGZhbHNl
Ci1NYWluIGZyYW1lIHdpbmRvdy5vbmxvYWQKLU1haW4gZnJhbWUgd2luZG93Lm9ucGFnZXNob3cs
IHRhcmdldCA9IFtvYmplY3QgSFRNTERvY3VtZW50XSwgcGVyc2lzdGVkID0gZmFsc2UKLSoqKk5h
dmlnYXRpbmcgdG9wLWxldmVsIGZyYW1lIHRvIGEgcGFnZSB0aGF0IHdpbGwgaW1tZWRpYXRlbHkg
bmF2aWdhdGUgYmFjayB0byB0aGlzIG9uZSoqKgotTWFpbiBmcmFtZSB3aW5kb3cub25wYWdlaGlk
ZSwgdGFyZ2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRdLCBwZXJzaXN0ZWQgPSB0cnVlCi1TdWJm
cmFtZSB3aW5kb3cub25wYWdlaGlkZSwgdGFyZ2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRdLCBw
ZXJzaXN0ZWQgPSB0cnVlCi1TdWJzdWJmcmFtZSB3aW5kb3cub25wYWdlaGlkZSwgdGFyZ2V0ID0g
W29iamVjdCBIVE1MRG9jdW1lbnRdLCBwZXJzaXN0ZWQgPSB0cnVlCi1TdWJzdWJmcmFtZSB3aW5k
b3cub25wYWdlc2hvdywgdGFyZ2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRdLCBwZXJzaXN0ZWQg
PSB0cnVlCi1TdWJmcmFtZSB3aW5kb3cub25wYWdlc2hvdywgdGFyZ2V0ID0gW29iamVjdCBIVE1M
RG9jdW1lbnRdLCBwZXJzaXN0ZWQgPSB0cnVlCi1NYWluIGZyYW1lIHdpbmRvdy5vbnBhZ2VzaG93
LCB0YXJnZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IHRydWUKIApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUtb24tYmFjay1jYWNo
ZWQtd2l0aC1mcmFtZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC13aXRoLWZyYW1lcy5odG1sCShyZXZp
c2lvbiA2NDM1OCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2VzaG93LXBhZ2VoaWRl
LW9uLWJhY2stY2FjaGVkLXdpdGgtZnJhbWVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE0LDgg
KzE0LDEwIEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKIAogZnVuY3Rpb24g
bG9nKG1lc3NhZ2UpCiB7Ci0gICAgdmFyIGxvZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJs
b2ciKTsKLSAgICBsb2cuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiXG4iOworICAgIC8vIExvZ2dp
bmcgdG8gdGhlIGNvbnNvbGUgaW5zdGVhZCBvZiB0aGUgImxvZyIgRElWIGluIHRoZSBET00gYmVj
YXVzZQorICAgIC8vIG90aGVyd2lzZSB3ZSB0cmlnZ2VyIHRoZSBhc3NlcnQgbWVudGlvbmVkIGF0
IGh0dHA6Ly93ZWJraXQub3JnL2IvNDMxNTIKKyAgICAvLyAoc2luY2Ugd2UgbG9nIGR1cmluZyBw
YWdlaGlkZSkKKyAgICBjb25zb2xlLmxvZyhtZXNzYWdlKTsKIH0KIAogbG9nKCIqKipUb3AgbGV2
ZWwgZnJhbWUgYmVpbmcgcGFyc2VkIGZvciB0aGUgaW5pdGlhbCBwYWdlIGxvYWQqKioiKTsKQEAg
LTMxLDcgKzMzLDggQEAgd2luZG93Lm9ucGFnZXNob3cgPSBmdW5jdGlvbihldnQpIHsKICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBsb2coIioqKk5hdmlnYXRpbmcgdG9wLWxldmVsIGZyYW1lIHRvIGEgcGFnZSB0aGF0
IHdpbGwgaW1tZWRpYXRlbHkgbmF2aWdhdGUgYmFjayB0byB0aGlzIG9uZSoqKiIpOwotICAgICAg
ICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICJkYXRhOnRleHQvaHRtbCw8c2NyaXB0Pmhpc3Rvcnku
YmFjaygpOzwvc2NyIiArICJpcHQ+IjsKKyAgICAgICAgLy8gTG9jYXRpb24gY2hhbmdlcyBuZWVk
IHRvIGhhcHBlbiBvdXRzaWRlIHRoZSBvbmxvYWQgaGFuZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5
IGVudHJpZXMuCisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7d2luZG93LmxvY2F0aW9u
LmhyZWYgPSAiZGF0YTp0ZXh0L2h0bWwsPHNjcmlwdD5oaXN0b3J5LmJhY2soKTs8L3NjciIgKyAi
aXB0PiI7fSwgMCk7CiAgICAgfQogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9y
ZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0xLmh0bWwJKHJldmlzaW9uIDY0MzU4KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTEuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTcsNyArMTcsOCBAQCBmdW5jdGlvbiBsb2FkTmV4dCgpIHsKICAg
ICBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoZW5kVGVzdCwgMTAwKTsKIAogICAgIHdpbmRvdy5v
cGVuZXIubG9nKCJwYWdlLTEsIGFib3V0IHRvIG5hdmlnYXRlIHRvIHBhZ2UtMi4iKQotICAgIGxv
Y2F0aW9uLmhyZWYgPSAiY2FjaGVkLXBhZ2UtMi5odG1sIjsKKyAgICAvLyBMb2NhdGlvbiBjaGFu
Z2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdlbmVyYXRl
IGhpc3RvcnkgZW50cmllcy4KKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge2xvY2F0aW9uLmhy
ZWYgPSAiY2FjaGVkLXBhZ2UtMi5odG1sIjt9LCAwKTsKIH0KIAogLy8gVGhpcyB1bmxvYWQgaGFu
ZGxlciBleGlzdHMganVzdCB0byBtYWtlIHN1cmUgdGhpcyBwYWdlIGlzIG5vdCBhZGRlZApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTIuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBh
Z2UtMi5odG1sCShyZXZpc2lvbiA2NDM1OCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jl
c291cmNlcy9jYWNoZWQtcGFnZS0yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE5LDcgKzE5LDgg
QEAgZnVuY3Rpb24gbG9hZE5leHQoKSB7CiAgICAgaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKGdv
QmFjaywgMjApOwogCiAgICAgd2luZG93Lm9wZW5lci5sb2coInBhZ2UtMiwgYWJvdXQgdG8gbmF2
aWdhdGUgdG8gcGFnZS0zLiIpCi0gICAgbG9jYXRpb24uaHJlZiA9ICJjYWNoZWQtcGFnZS0zLmh0
bWwiOworICAgIC8vIExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0byBoYXBwZW4gb3V0c2lkZSB0aGUg
b25sb2FkIGhhbmRsZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBlbnRyaWVzLgorICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7bG9jYXRpb24uaHJlZiA9ICJjYWNoZWQtcGFnZS0zLmh0bWwiO30sIDAp
OwogfQogPC9zY3JpcHQ+CiA8Ym9keSBvbmxvYWQ9ImxvYWROZXh0KCkiPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0xLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0xLmh0
bWwJKHJldmlzaW9uIDY0MzU4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc291cmNl
cy9jYWNoZWQtcGFnZS0xLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDggQEAgZnVu
Y3Rpb24gbG9hZE5leHQoKQogICAgIGludGVydmFsSWQgPSBzZXRJbnRlcnZhbChjaGVjaywgMTAp
OwogCiAgICAgd2luZG93Lm9wZW5lci5sb2coInBhZ2UtMSwgYWJvdXQgdG8gbmF2aWdhdGUgdG8g
cGFnZS0yLiIpCi0gICAgbG9jYXRpb24uaHJlZiA9ICJjYWNoZWQtcGFnZS0yLmh0bWwiOworICAg
IC8vIExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0byBoYXBwZW4gb3V0c2lkZSB0aGUgb25sb2FkIGhh
bmRsZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBlbnRyaWVzLgorICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7bG9jYXRpb24uaHJlZiA9ICJjYWNoZWQtcGFnZS0yLmh0bWwiO30sIDApOwogfQogPC9z
Y3JpcHQ+CiA8Ym9keSBvbmxvYWQ9ImxvYWROZXh0KCkiPjwvYm9keT4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvaGFybmVzcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2Utd2l0aC1kYXRhLXVybHMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcmVzb3VyY2VzL2NhY2hl
ZC1wYWdlLXdpdGgtZGF0YS11cmxzLmh0bWwJKHJldmlzaW9uIDY0MzU4KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9oYXJuZXNzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS13aXRoLWRhdGEtdXJscy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw4IEBAIGZ1bmN0aW9uIGxvYWROZXh0KCkKICAg
ICBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoY2hlY2ssIDEwKTsKIAogICAgIHdpbmRvdy5vcGVu
ZXIubG9nKCJwYWdlIHdpdGggZGF0YSB1cmxzLCBhYm91dCB0byBuYXZpZ2F0ZSB0byBwYWdlLTIu
IikKLSAgICBsb2NhdGlvbi5ocmVmID0gImNhY2hlZC1wYWdlLTIuaHRtbCI7CisgICAgLy8gTG9j
YXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRoZSBvbmxvYWQgaGFuZGxlciB0
byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHts
b2NhdGlvbi5ocmVmID0gImNhY2hlZC1wYWdlLTIuaHRtbCI7fSwgMCk7CiB9CiA8L3NjcmlwdD4K
IDxib2R5IG9ubG9hZD0ibG9hZE5leHQoKSI+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rv
cnkvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2hpc3RvcnkvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9nZXN0dXJlLWJlZm9yZS1v
bmxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKK1RoaXMgcGFn
ZSBpcyB0aGUgdGFyZ2V0IG9mIGEgcmVkaXJlY3QuCisKK1BBU1M6IEhpc3RvcnkgaXRlbSBjb3Vu
dCBzaG91bGQgYmUgMiBhbmQgaXMuCisKKworPT09PT09PT09PT09PT0gQmFjayBGb3J3YXJkIExp
c3QgPT09PT09PT09PT09PT0KKyAgICAgICAgKGZpbGUgdGVzdCk6ZmFzdC9oaXN0b3J5L2dlc3R1
cmUtYmVmb3JlLW9ubG9hZC5odG1sICAqKm5hdiB0YXJnZXQqKgorY3Vyci0+ICAoZmlsZSB0ZXN0
KTpmYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2dlc3R1cmUtYmVmb3JlLW9ubG9hZC10YXJnZXQuaHRt
bCMyICAqKm5hdiB0YXJnZXQqKgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9nZXN0dXJlLWJlZm9y
ZS1vbmxvYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvZ2Vz
dHVyZS1iZWZvcmUtb25sb2FkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2hpc3RvcnkvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzIgQEAKKzxoZWFkPgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+CisgIDxi
dXR0b24gaWQ9Im5hdi1idXR0b24iIG9uY2xpY2s9Im5hdigpOyI+TmF2aWdhdGU8L2J1dHRvbj4K
KyAgPGRpdiBpZD0ibWFudWFsLWV4cGxhbmF0aW9uIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgY29s
b3I6IGJsdWUiPldoZW4gcnVubmluZyB0aGlzIHRlc3Qgb3V0c2lkZSBvZiBEUlQsIHBsZWFzZSBj
bGljayBvbiB0aGUgIk5hdmlnYXRlIiBidXR0b24uPC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0Pgor
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5rZWVwV2ViSGlzdG9yeSgpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworICB9CisKKyAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
dmFyIG5hdkJ1dHRvbk5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmF2LWJ1dHRvbicp
OworICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oCisgICAgICAgICAgbmF2QnV0dG9uTm9k
ZS5vZmZzZXRMZWZ0ICsgbmF2QnV0dG9uTm9kZS5vZmZzZXRXaWR0aCAvIDIsCisgICAgICAgICAg
bmF2QnV0dG9uTm9kZS5vZmZzZXRUb3AgKyBuYXZCdXR0b25Ob2RlLm9mZnNldEhlaWdodCAvIDIp
OworICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICBldmVudFNlbmRlci5tb3Vz
ZVVwKCk7CisgIH0gZWxzZSB7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFudWFs
LWV4cGxhbmF0aW9uJykuc3R5bGUuZGlzcGxheSA9ICcnOworICB9CisKKyAgZnVuY3Rpb24gbmF2
KCkgeworICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAncmVzb3VyY2VzL2dlc3R1cmUtYmVm
b3JlLW9ubG9hZC10YXJnZXQuaHRtbCMyJzsKKyAgfQorCisgIGZ1bmN0aW9uIG9ubG9hZCgpIHsK
KyAgICAgIHdpbmRvdy5jb25zb2xlLmxvZygnRkFJTDogU2hvdWxkIG5vdCBoYXZlIHJlYWNoZWQg
b25sb2FkIGJlZm9yZSBuYXZpZ2F0aW5nIGF3YXknKTsKKyAgfQorPC9zY3JpcHQ+CisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9oaXN0b3J5LWxlbmd0aC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9oaXN0b3J5LWxlbmd0aC5odG1sCShyZXZpc2lv
biA2NDM1OCkKKysrIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9oaXN0b3J5LWxlbmd0aC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC04LDMwICs4LDM0IEBAIG9ubG9hZCA9IGZ1bmN0aW9uKCkgewog
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KICAgfQot
ICAvLyBUaGlzIHRlc3QgYWR2YW5jZXMgaGlzdG9yeSBieSAyIHBhZ2VzLCB0aGVuIG5hdmlnYXRl
cyBiYWNrIG9uZSwgYW5kCi0gIC8vIHJlY29yZHMgaGlzdG9yeS5sZW5ndGguICBXZSBleHBlY3Qg
aGlzdG9yeS5sZW5ndGggdG8gaW5kaWNhdGUgdGhlIHRvdGFsCi0gIC8vIGxlbmd0aCBvZiBzZXNz
aW9uIGhpc3RvcnkuICBBdCB0aGUgZW5kIG9mIHRoZSB0ZXN0LCBpdCBzaG91bGQgYmUgMiBncmVh
dGVyCi0gIC8vIHRoYW4gaXQgd2FzIGF0IHRoZSBzdGFydCBvZiB0aGUgdGVzdC4KLSAgc3dpdGNo
IChzZXNzaW9uU3RvcmFnZS50ZXN0U3RhZ2UrKykgewotICBjYXNlIDA6Ci0gICAgc2Vzc2lvblN0
b3JhZ2UuaW5pdGlhbExlbmd0aCA9IGhpc3RvcnkubGVuZ3RoOwotICAgIGxvY2F0aW9uID0gIj9h
IjsKLSAgICBicmVhazsKLSAgY2FzZSAxOgotICAgIGxvY2F0aW9uID0gIj9iIjsKLSAgICBicmVh
azsKLSAgY2FzZSAyOgotICAgIGhpc3RvcnkuYmFjaygpOwotICAgIGJyZWFrOwotICBjYXNlIDM6
Ci0gICAgaWYgKGhpc3RvcnkubGVuZ3RoID09IChzZXNzaW9uU3RvcmFnZS5pbml0aWFsTGVuZ3Ro
IC0gMCkgKyAyKQotICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAiUEFTUyI7Ci0gICAg
ZWxzZQotICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAiRkFJTDogaW5pdGlhbExlbmd0
aD0iICsgc2Vzc2lvblN0b3JhZ2UuaW5pdGlhbExlbmd0aCArICIsIGhpc3RvcnkubGVuZ3RoPSIg
KyBoaXN0b3J5Lmxlbmd0aDsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotICAgIGJyZWFrOwotICB9
CisKKyAgLy8gTG9jYXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRoZSBvbmxv
YWQgaGFuZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCisgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7CisgICAgLy8gVGhpcyB0ZXN0IGFkdmFuY2VzIGhpc3RvcnkgYnkgMiBwYWdlcywg
dGhlbiBuYXZpZ2F0ZXMgYmFjayBvbmUsIGFuZAorICAgIC8vIHJlY29yZHMgaGlzdG9yeS5sZW5n
dGguICBXZSBleHBlY3QgaGlzdG9yeS5sZW5ndGggdG8gaW5kaWNhdGUgdGhlIHRvdGFsCisgICAg
Ly8gbGVuZ3RoIG9mIHNlc3Npb24gaGlzdG9yeS4gIEF0IHRoZSBlbmQgb2YgdGhlIHRlc3QsIGl0
IHNob3VsZCBiZSAyIGdyZWF0ZXIKKyAgICAvLyB0aGFuIGl0IHdhcyBhdCB0aGUgc3RhcnQgb2Yg
dGhlIHRlc3QuCisgICAgc3dpdGNoIChzZXNzaW9uU3RvcmFnZS50ZXN0U3RhZ2UrKykgeworICAg
IGNhc2UgMDoKKyAgICAgIHNlc3Npb25TdG9yYWdlLmluaXRpYWxMZW5ndGggPSBoaXN0b3J5Lmxl
bmd0aDsKKyAgICAgIGxvY2F0aW9uID0gIj9hIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgMToK
KyAgICAgIGxvY2F0aW9uID0gIj9iIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAg
IGhpc3RvcnkuYmFjaygpOworICAgICAgYnJlYWs7CisgICAgY2FzZSAzOgorICAgICAgaWYgKGhp
c3RvcnkubGVuZ3RoID09IChzZXNzaW9uU3RvcmFnZS5pbml0aWFsTGVuZ3RoIC0gMCkgKyAyKQor
ICAgICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJQQVNTIjsKKyAgICAgIGVsc2UKKyAg
ICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAiRkFJTDogaW5pdGlhbExlbmd0aD0iICsg
c2Vzc2lvblN0b3JhZ2UuaW5pdGlhbExlbmd0aCArICIsIGhpc3RvcnkubGVuZ3RoPSIgKyBoaXN0
b3J5Lmxlbmd0aDsKKyAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgIGJyZWFrOworICAg
IH0KKyAgfSwgMCk7CiB9CiBvbnVubG9hZCA9IGZ1bmN0aW9uKCkgewogICAvLyBkaXNhYmxlIHBh
Z2UgY2FjaGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zYXZlcy1zdGF0ZS1hZnRl
ci1mcmFnbWVudC1uYXYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rv
cnkvc2F2ZXMtc3RhdGUtYWZ0ZXItZnJhZ21lbnQtbmF2Lmh0bWwJKHJldmlzaW9uIDY0MzU4KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NhdmVzLXN0YXRlLWFmdGVyLWZyYWdtZW50LW5h
di5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCwxMSBAQCBmdW5jdGlvbiBydW5UZXN0
U3RlcCgpIHsKICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9Ci0gICAgbmF2aWdh
dGVUb0hhc2goZmllbGQpOwotICAgIG5hdmlnYXRlQXdheUFuZEJhY2soKTsKKyAgICAvLyBMb2Nh
dGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRv
IGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewor
ICAgICAgbmF2aWdhdGVUb0hhc2goZmllbGQpOworICAgICAgbmF2aWdhdGVBd2F5QW5kQmFjaygp
OworICAgIH0sIDApOwogICB9IGVsc2UgewogICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0g
KGZpZWxkLnZhbHVlID09ICcnKSA/ICdGQUlMJyA6ICdQQVNTJzsKICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291
cmNlcy9nZXN0dXJlLWJlZm9yZS1vbmxvYWQtdGFyZ2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9nZXN0dXJlLWJlZm9yZS1vbmxvYWQtdGFy
Z2V0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3Vy
Y2VzL2dlc3R1cmUtYmVmb3JlLW9ubG9hZC10YXJnZXQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0MSBAQAorPCEtLSBUaGlzIHBhZ2UgYWNjZXB0cyBhIHF1ZXJ5IHN0cmluZyBzcGVjaWZ5
aW5nIGhvdyBtYW55IGhpc3RvcnkgaXRlbXMgc2hvdWxkCitiZSBwcmVzZW50IG9uY2UgaXQgZmlu
aXNoZXMgbG9hZGluZy4gLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+UmVkaXJlY3QgVGFy
Z2V0PC90aXRsZT4KKworPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhzKQoreworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUocyArICJcbiIpKTsKK30KKworZnVuY3Rpb24gdGVzdEhpc3RvcnlJdGVtQ291bnQoKQor
eworICAgIHZhciBleHBlY3RlZCA9IHBhcnNlSW50KGxvY2F0aW9uLmhhc2guc2xpY2UoMSkpOwor
ICAgIHZhciBhY3R1YWwgPSBoaXN0b3J5Lmxlbmd0aDsKKyAgICBpZiAoYWN0dWFsID09PSBleHBl
Y3RlZCkKKyAgICAgICAgbG9nKCJQQVNTOiBIaXN0b3J5IGl0ZW0gY291bnQgc2hvdWxkIGJlICIg
KyBleHBlY3RlZCArICIgYW5kIGlzLiIpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCJGQUlMOiBI
aXN0b3J5IGl0ZW0gY291bnQgc2hvdWxkIGJlICIgKyBleHBlY3RlZCArICIgYnV0IGluc3RlYWQg
aXMgIiArIGFjdHVhbCArICIuIik7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2Fk
IiwgZnVuY3Rpb24gKCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0
SGlzdG9yeUl0ZW1Db3VudCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQmFj
a0ZvcndhcmRMaXN0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0SGlzdG9yeUl0ZW1Db3VudCgpOworICAgIH0K
K30sIGZhbHNlKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxwPlRoaXMgcGFnZSBp
cyB0aGUgdGFyZ2V0IG9mIGEgcmVkaXJlY3QuPC9wPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9pbnB1dC1l
bGVtZW50LXBhZ2UtY2FjaGUtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9pbnB1dC1lbGVtZW50LXBhZ2UtY2FjaGUtY3Jhc2guaHRtbAkocmV2aXNpb24g
NjQzNTgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9pbnB1dC1lbGVtZW50LXBhZ2UtY2Fj
aGUtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsOCArMTMsOSBAQCBmdW5jdGlvbiBy
dW5UZXN0KCkKICAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdGlu
cHV0Iik7CiAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJhdXRvY29tcGxldGUiLCAib24iKTsKICAg
ICBpbnB1dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGlucHV0KTsKLSAgICAKLSAgICB3aW5kb3cu
bG9jYXRpb24gPSAiZGF0YTp0ZXh0L2h0bWwsPHNjcmlwdD5oaXN0b3J5LmJhY2soKTs8L3Njcmlw
IiArICJ0PiI7CisKKyAgICAvLyBMb2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNp
ZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3dpbmRvdy5sb2NhdGlvbiA9ICJkYXRhOnRleHQvaHRtbCw8
c2NyaXB0Pmhpc3RvcnkuYmFjaygpOzwvc2NyaXAiICsgInQ+Ijt9LCAwKTsKIH0KIAogZnVuY3Rp
b24gcGFnZUhpZGRlbigpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdWJmcmFtZS1u
YXZpZ2F0ZS1kdXJpbmctbWFpbi1mcmFtZS1sb2FkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9sb2FkZXIvc3ViZnJhbWUtbmF2aWdhdGUtZHVyaW5nLW1haW4tZnJhbWUtbG9h
ZC5odG1sCShyZXZpc2lvbiA2NDM1OCkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N1YmZy
YW1lLW5hdmlnYXRlLWR1cmluZy1tYWluLWZyYW1lLWxvYWQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtOSw4ICs5LDkgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBCYWNrRm9yd2FyZExpc3QoKTsKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KLSAgICAKLSAgICBsb2NhdGlvbj0ncmVzb3VyY2Vz
L3N1YmZyYW1lLW5hdmlnYXRlLWR1cmluZy1tYWluLWZyYW1lLWxvYWQyLmh0bWwnOworCisgICAg
Ly8gTG9jYXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRoZSBvbmxvYWQgaGFu
ZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCisgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHtsb2NhdGlvbj0ncmVzb3VyY2VzL3N1YmZyYW1lLW5hdmlnYXRlLWR1cmluZy1tYWluLWZy
YW1lLWxvYWQyLmh0bWwnO30sIDApOwogfQogCiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFj
ay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0
cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay5odG1sCShyZXZpc2lvbiA2NDM1OCkK
KysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0cm95
ZWQtbmF2aWdhdGUtYmFjay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMywxMCBAQCBm
dW5jdGlvbiBydW5UaGlyZFN0YWdlT2ZUZXN0KCkKIAogZnVuY3Rpb24gbG9hZGVkKCkKIHsKLSAg
ICBpZiAoIXNlc3Npb25TdG9yYWdlLnN0YWdlKQotICAgICAgICBydW5GaXJzdFN0YWdlT2ZUZXN0
KCk7Ci0gICAgZWxzZSBpZiAoc2Vzc2lvblN0b3JhZ2Uuc3RhZ2UgPT0gMikKKyAgICBpZiAoIXNl
c3Npb25TdG9yYWdlLnN0YWdlKSB7CisgICAgICAgIC8vIExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0
byBoYXBwZW4gb3V0c2lkZSB0aGUgb25sb2FkIGhhbmRsZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBl
bnRyaWVzLgorICAgICAgICBzZXRUaW1lb3V0KHJ1bkZpcnN0U3RhZ2VPZlRlc3QsIDApOworICAg
IH0gZWxzZSBpZiAoc2Vzc2lvblN0b3JhZ2Uuc3RhZ2UgPT0gMikKICAgICAgICAgcnVuU2Vjb25k
U3RhZ2VPZlRlc3QoKTsKICAgICBlbHNlIGlmIChzZXNzaW9uU3RvcmFnZS5zdGFnZSA9PSAzKQog
ICAgICAgICBydW5UaGlyZFN0YWdlT2ZUZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLWNsZWFycy1mb3J3YXJkLWhpc3RvcnkuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0
YXRlLWNsZWFycy1mb3J3YXJkLWhpc3RvcnkuaHRtbAkocmV2aXNpb24gNjQzNTgpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLWNsZWFycy1mb3J3YXJk
LWhpc3RvcnkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCwyMiArOCwyNiBAQCBvbmxvYWQgPSBm
dW5jdGlvbigpIHsKICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
ICAgICB9CiAgIH0KLSAgc3dpdGNoIChzZXNzaW9uU3RvcmFnZS50ZXN0U3RhZ2UrKykgewotICBj
YXNlIDA6Ci0gICAgbG9jYXRpb24gPSAiP2EiOwotICAgIGJyZWFrOwotICBjYXNlIDE6Ci0gICAg
bG9jYXRpb24gPSAiP2IiOwotICAgIGJyZWFrOwotICBjYXNlIDI6Ci0gICAgaGlzdG9yeS5iYWNr
KCk7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgMzoKLSAgICBoaXN0b3J5LnB1c2hTdGF0ZShudWxsLCBu
dWxsKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotICAgIGJyZWFrOwotICB9CisKKyAgLy8gTG9j
YXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRoZSBvbmxvYWQgaGFuZGxlciB0
byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCisgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Cisg
ICAgICBzd2l0Y2ggKHNlc3Npb25TdG9yYWdlLnRlc3RTdGFnZSsrKSB7CisgICAgICBjYXNlIDA6
CisgICAgICAgIGxvY2F0aW9uID0gIj9hIjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDE6
CisgICAgICAgIGxvY2F0aW9uID0gIj9iIjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDI6
CisgICAgICAgIGhpc3RvcnkuYmFjaygpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMzoK
KyAgICAgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCk7CisgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9LCAwKTsKIH0KIG9u
dW5sb2FkID0gZnVuY3Rpb24oKSB7CiAgIC8vIGRpc2FibGUgcGFnZSBjYWNoZQpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWRvY3VtZW50LWxvY2F0aW9u
LWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZG9jdW1lbnQtbG9jYXRpb24tYmVmb3JlLWxvYWQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2NDM1OCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
aGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2NhdGlvbi1iZWZvcmUtbG9hZC1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw4IEBACiBUaGlzIHBhZ2UgaXMgdGhlIHRh
cmdldCBvZiBhIHJlZGlyZWN0LgogCi1GQUlMOiBIaXN0b3J5IGl0ZW0gY291bnQgc2hvdWxkIGJl
IDEgYnV0IGluc3RlYWQgaXMgMi4KK1BBU1M6IEhpc3RvcnkgaXRlbSBjb3VudCBzaG91bGQgYmUg
MSBhbmQgaXMuCiAKIAogPT09PT09PT09PT09PT0gQmFjayBGb3J3YXJkIExpc3QgPT09PT09PT09
PT09PT0KLSAgICAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3RvcnkvcmVkaXJlY3QtanMt
ZG9jdW1lbnQtbG9jYXRpb24tYmVmb3JlLWxvYWQuaHRtbCAgKipuYXYgdGFyZ2V0KioKIGN1cnIt
PiAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3RvcnkvcmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdl
dC5odG1sIzEgICoqbmF2IHRhcmdldCoqCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jl
ZGlyZWN0LWpzLWxvY2F0aW9uLWFzc2lnbi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0
aW9uLWFzc2lnbi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDY0MzU4KQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWFzc2ln
bi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw4IEBA
CiBUaGlzIHBhZ2UgaXMgdGhlIHRhcmdldCBvZiBhIHJlZGlyZWN0LgogCi1GQUlMOiBIaXN0b3J5
IGl0ZW0gY291bnQgc2hvdWxkIGJlIDEgYnV0IGluc3RlYWQgaXMgMi4KK1BBU1M6IEhpc3Rvcnkg
aXRlbSBjb3VudCBzaG91bGQgYmUgMSBhbmQgaXMuCiAKIAogPT09PT09PT09PT09PT0gQmFjayBG
b3J3YXJkIExpc3QgPT09PT09PT09PT09PT0KLSAgICAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tYXNzaWduLWJlZm9yZS1sb2FkLmh0bWwgICoq
bmF2IHRhcmdldCoqCiBjdXJyLT4gIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9oaXN0b3J5L3Jlc291
cmNlcy9yZWRpcmVjdC10YXJnZXQuaHRtbCMxICAqKm5hdiB0YXJnZXQqKgogPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1iZWZvcmUtbG9hZC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGly
ZWN0LWpzLWxvY2F0aW9uLWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjQzNTgp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24t
YmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOCBAQAog
VGhpcyBwYWdlIGlzIHRoZSB0YXJnZXQgb2YgYSByZWRpcmVjdC4KIAotRkFJTDogSGlzdG9yeSBp
dGVtIGNvdW50IHNob3VsZCBiZSAxIGJ1dCBpbnN0ZWFkIGlzIDIuCitQQVNTOiBIaXN0b3J5IGl0
ZW0gY291bnQgc2hvdWxkIGJlIDEgYW5kIGlzLgogCiAKID09PT09PT09PT09PT09IEJhY2sgRm9y
d2FyZCBMaXN0ID09PT09PT09PT09PT09Ci0gICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9o
aXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWJlZm9yZS1sb2FkLmh0bWwgICoqbmF2IHRhcmdl
dCoqCiBjdXJyLT4gIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9oaXN0b3J5L3Jlc291cmNlcy9yZWRp
cmVjdC10YXJnZXQuaHRtbCMxICAqKm5hdiB0YXJnZXQqKgogPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
aGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1ocmVmLWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3Qt
anMtbG9jYXRpb24taHJlZi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDY0MzU4
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9u
LWhyZWYtYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEs
OCBAQAogVGhpcyBwYWdlIGlzIHRoZSB0YXJnZXQgb2YgYSByZWRpcmVjdC4KIAotRkFJTDogSGlz
dG9yeSBpdGVtIGNvdW50IHNob3VsZCBiZSAxIGJ1dCBpbnN0ZWFkIGlzIDIuCitQQVNTOiBIaXN0
b3J5IGl0ZW0gY291bnQgc2hvdWxkIGJlIDEgYW5kIGlzLgogCiAKID09PT09PT09PT09PT09IEJh
Y2sgRm9yd2FyZCBMaXN0ID09PT09PT09PT09PT09Ci0gICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWhyZWYtYmVmb3JlLWxvYWQuaHRtbCAg
KipuYXYgdGFyZ2V0KioKIGN1cnItPiAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3RvcnkvcmVz
b3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzEgICoqbmF2IHRhcmdldCoqCiA9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9kb2N1bWVudC1sb2NhdGlvbi5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2Rv
Y3VtZW50LWxvY2F0aW9uLmpzCShyZXZpc2lvbiA2NDM1OCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZG9jdW1lbnQtbG9jYXRpb24uanMJKHdvcmtpbmcg
Y29weSkKQEAgLTcsNyArNyw4IEBAIGZ1bmN0aW9uIHN0YXJ0KCkgewogICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwogICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOwogCi0gICAgICBydW5UZXN0KCk7CisgICAgICAvLyBMb2NhdGlvbiBjaGFu
Z2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdlbmVyYXRl
IGhpc3RvcnkgZW50cmllcy4KKyAgICAgIHNldFRpbWVvdXQocnVuVGVzdCwgMCk7CiAgICAgfSBl
bHNlIHsKICAgICAgIC8vIGxvYWRlZCB0aGUgPzEgbmF2aWdhdGlvbgogICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwpJbmRleDogTGF5b3V0VGVzdHMvc2VjdXJpdHkvYXV0
b2NvbXBsZXRlLWNsZWFyZWQtb24tYmFjay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3NlY3VyaXR5L2F1dG9jb21wbGV0ZS1jbGVhcmVkLW9uLWJhY2suaHRtbAkocmV2aXNpb24gNjQz
NTgpCisrKyBMYXlvdXRUZXN0cy9zZWN1cml0eS9hdXRvY29tcGxldGUtY2xlYXJlZC1vbi1iYWNr
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE5LDcgKzE5LDggQEAgZnVuY3Rpb24gcnVuVGVzdCgp
CiAgICAgaWYgKCFzZXNzaW9uU3RvcmFnZS5zZWNvbmRQYWdlUmVhY2hlZCkgewogICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlyc3RJbnB1dCIpLnZhbHVlID0gIlN1cGVyU2Vla3Jp
dFZhbHVlIjsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlY29uZElucHV0Iiku
dmFsdWUgPSAiU3VwZXJTZWVrcml0VmFsdWUiOwotICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAi
cmVzb3VyY2VzL2F1dG9jb21wbGV0ZS1jbGVhcmVkLW9uLWJhY2syLmh0bWwiOworICAgICAgICAv
LyBMb2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5k
bGVyIHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHt3aW5kb3cubG9jYXRpb24gPSAicmVzb3VyY2VzL2F1dG9jb21wbGV0ZS1jbGVhcmVk
LW9uLWJhY2syLmh0bWwiO30sIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApJbmRl
eDogTGF5b3V0VGVzdHMvc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLmpzCShyZXZpc2lv
biA2NDM1OCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14aHIuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDEyIEBAIGZ1bmN0aW9uIGludm9rZUJhY2soKQog
CiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKKyAgICAvLyBMb2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8g
aGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50
cmllcy4KKyAgICBzZXRUaW1lb3V0KHJ1blRlc3RzSW5uZXIsIDApOworfQorCitmdW5jdGlvbiBy
dW5UZXN0c0lubmVyKCkKK3sKICAgICBiYWNrSXRlcmF0aW9ucyA9IDEwOwogICAgIGNvbnNlY3V0
aXZlRmFpbHVyZXMgPSAwOwogICAgIHN1Y2Nlc3NlcyA9IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63133</attachid>
            <date>2010-07-30 18:15:08 -0700</date>
            <delta_ts>2010-08-02 17:54:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42861-20100730181507.patch</filename>
            <type>text/plain</type>
            <size>31906</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDM1OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMDctMjggIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU2Vzc2lvbiBoaXN0b3J5IHNob3VsZCBza2lwIG92ZXIgSlMgcmVkaXJlY3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjg2MQorICAgICAgICAK
KyAgICAgICAgTG9jayB0aGUgYmFjay9mb3J3YXJkIGxpc3QgZm9yIGxvY2F0aW9uIGNoYW5nZXMg
dGhhdCBoYXBwZW4gYmVmb3JlIHRoZSAKKyAgICAgICAgb25sb2FkIGV2ZW50IGZpcmVzIHRoYXQg
YXJlIG5vdCB0aGUgcmVzdWx0IG9mIHVzZXIgZ2VzdHVyZXMuCisKKyAgICAgICAgVGVzdDogZmFz
dC9oaXN0b3J5L2dlc3R1cmUtYmVmb3JlLW9ubG9hZC5odG1sIGFuZCB1cGRhdGVkIGV4cGVjdGF0
aW9ucyAKKyAgICAgICAgZm9yIGh0dHAvdGVzdHMvaGlzdG9yeSB0ZXN0cyB0aGF0IHVzZWQgdG8g
ZmFpbC4KKworICAgICAgICAqIGxvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6bXVzdExvY2tCYWNrRm9yd2FyZExpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1
Ym1pc3Npb24pOgorICAgICAgICAqIGxvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5oOgorCiAyMDEw
LTA3LTI5ICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFN0ZXZlIEJsb2NrLgpJbmRleDogV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hl
ZHVsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVy
LmNwcAkocmV2aXNpb24gNjQzNTgpCisrKyBXZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNjaGVkdWxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MCwxNyArMjQwLDIxIEBAIHZvaWQgUmVkaXJlY3RT
Y2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgLy8gV2Ugd2FudCBhIG5ldyBoaXN0b3J5IGl0ZW0gaWYgdGhlIHJl
ZnJlc2ggdGltZW91dCBpcyA+IDEgc2Vjb25kLgorICAgIC8vIFdlIHdhbnQgYSBuZXcgYmFjayBm
b3J3YXJkIGxpc3QgaXRlbSBpZiB0aGUgcmVmcmVzaCB0aW1lb3V0IGlzID4gMSBzZWNvbmQuCiAg
ICAgaWYgKCFtX3JlZGlyZWN0IHx8IGRlbGF5IDw9IG1fcmVkaXJlY3QtPmRlbGF5KCkpCiAgICAg
ICAgIHNjaGVkdWxlKG5ldyBTY2hlZHVsZWRSZWRpcmVjdChkZWxheSwgdXJsLCB0cnVlLCBkZWxh
eSA8PSAxLCBmYWxzZSkpOwogfQogCi1ib29sIFJlZGlyZWN0U2NoZWR1bGVyOjptdXN0TG9ja0Jh
Y2tGb3J3YXJkTGlzdChGcmFtZSogdGFyZ2V0RnJhbWUpCitib29sIFJlZGlyZWN0U2NoZWR1bGVy
OjptdXN0TG9ja0JhY2tGb3J3YXJkTGlzdChGcmFtZSogdGFyZ2V0RnJhbWUsIGJvb2wgbXVzdExv
Y2tJZkR1cmluZ0xvYWQpCiB7CisgICAgLy8gTm9uLXVzZXIgbmF2aWdhdGlvbiBiZWZvcmUgdGhl
IHBhZ2UgaGFzIGxvYWRlZCBzaG91bGQgbm90IGNyZWF0ZSBhIG5ldyBiYWNrL2ZvcndhcmQgaXRl
bS4KKyAgICAvLyBTZWUgaHR0cHM6Ly93ZWJraXQub3JnL2IvNDI4NjEgZm9yIHRoZSBvcmlnaW5h
bCBtb3RpdmF0aW9uIGZvciB0aGlzLiAgICAKKyAgICBpZiAobXVzdExvY2tJZkR1cmluZ0xvYWQg
JiYgdGFyZ2V0RnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpICYmIHRhcmdldEZyYW1l
LT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+aXNMb2FkaW5nSW5BUElTZW5zZSgpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICAvLyBOYXZpZ2F0aW9uIG9mIGEgc3ViZnJhbWUg
ZHVyaW5nIGxvYWRpbmcgb2YgYW4gYW5jZXN0b3IgZnJhbWUgZG9lcyBub3QgY3JlYXRlIGEgbmV3
IGJhY2svZm9yd2FyZCBpdGVtLgogICAgIC8vIFRoZSBkZWZpbml0aW9uIG9mICJkdXJpbmcgbG9h
ZCIgaXMgYW55IHRpbWUgYmVmb3JlIGFsbCBoYW5kbGVycyBmb3IgdGhlIGxvYWQgZXZlbnQgaGF2
ZSBiZWVuIHJ1bi4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0OTU3IGZvciB0aGUgb3JpZ2luYWwgbW90aXZhdGlvbiBmb3IgdGhpcy4KLQogICAg
IGZvciAoRnJhbWUqIGFuY2VzdG9yID0gdGFyZ2V0RnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7IGFu
Y2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT50cmVlKCktPnBhcmVudCgpKSB7CiAgICAgICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IGFuY2VzdG9yLT5kb2N1bWVudCgpOwogICAgICAgICBpZiAo
IWFuY2VzdG9yLT5sb2FkZXIoKS0+aXNDb21wbGV0ZSgpIHx8IChkb2N1bWVudCAmJiBkb2N1bWVu
dC0+cHJvY2Vzc2luZ0xvYWRFdmVudCgpKSkKQEAgLTI2Niw3ICsyNzAsNyBAQCB2b2lkIFJlZGly
ZWN0U2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uCiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGxvY2tCYWNrRm9yd2FyZExpc3QgPSBsb2NrQmFja0Zvcndh
cmRMaXN0IHx8IG11c3RMb2NrQmFja0ZvcndhcmRMaXN0KG1fZnJhbWUpOworICAgIGxvY2tCYWNr
Rm9yd2FyZExpc3QgPSBsb2NrQmFja0ZvcndhcmRMaXN0IHx8IG11c3RMb2NrQmFja0ZvcndhcmRM
aXN0KG1fZnJhbWUsICF3YXNVc2VyR2VzdHVyZSk7CiAKICAgICBGcmFtZUxvYWRlciogbG9hZGVy
ID0gbV9mcmFtZS0+bG9hZGVyKCk7CiAgICAgCkBAIC0zMDAsNyArMzA0LDcgQEAgdm9pZCBSZWRp
cmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVGb3JtU3VibQogICAgIC8vIHRvIG1hdGNoIElFIGFuZCBP
cGVyYS4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMyMzgzIGZvciB0aGUgb3JpZ2luYWwgbW90aXZhdGlvbiBmb3IgdGhpcy4KIAotICAgIGJvb2wg
bG9ja0JhY2tGb3J3YXJkTGlzdCA9IG11c3RMb2NrQmFja0ZvcndhcmRMaXN0KG1fZnJhbWUpIHx8
IChzdWJtaXNzaW9uLT5zdGF0ZSgpLT5mb3JtU3VibWlzc2lvblRyaWdnZXIoKSA9PSBTdWJtaXR0
ZWRCeUphdmFTY3JpcHQgJiYgbV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSk7CisgICAgYm9vbCBs
b2NrQmFja0ZvcndhcmRMaXN0ID0gbXVzdExvY2tCYWNrRm9yd2FyZExpc3QobV9mcmFtZSwgZmFs
c2UpIHx8IChzdWJtaXNzaW9uLT5zdGF0ZSgpLT5mb3JtU3VibWlzc2lvblRyaWdnZXIoKSA9PSBT
dWJtaXR0ZWRCeUphdmFTY3JpcHQgJiYgbV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSk7CiAKICAg
ICBzY2hlZHVsZShuZXcgU2NoZWR1bGVkRm9ybVN1Ym1pc3Npb24oc3VibWlzc2lvbiwgbG9ja0Jh
Y2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCkpOwogfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvUmVk
aXJlY3RTY2hlZHVsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNj
aGVkdWxlci5oCShyZXZpc2lvbiA2NDM1OCkKKysrIFdlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2No
ZWR1bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHRpbWVyRmlyZWQoVGltZXI8UmVkaXJlY3RTY2hlZHVsZXI+Kik7CiAgICAgdm9pZCBzY2hl
ZHVsZShQYXNzT3duUHRyPFNjaGVkdWxlZE5hdmlnYXRpb24+KTsKIAotICAgIHN0YXRpYyBib29s
IG11c3RMb2NrQmFja0ZvcndhcmRMaXN0KEZyYW1lKiB0YXJnZXRGcmFtZSk7CisgICAgc3RhdGlj
IGJvb2wgbXVzdExvY2tCYWNrRm9yd2FyZExpc3QoRnJhbWUqIHRhcmdldEZyYW1lLCBib29sIG11
c3RMb2NrSWZEdXJpbmdMb2FkKTsKIAogICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgIFRpbWVyPFJl
ZGlyZWN0U2NoZWR1bGVyPiBtX3RpbWVyOwpAQCAtNzksNCArNzksNCBAQCBwcml2YXRlOgogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBGcmFtZUxvYWRlcl9oCisjZW5kaWYg
Ly8gUmVkaXJlY3RTY2hlZHVsZXJfaApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjQzNTgpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0OSBAQAorMjAxMC0w
Ny0yOCAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXNzaW9uIGhpc3Rvcnkgc2hv
dWxkIHNraXAgb3ZlciBKUyByZWRpcmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQyODYxCisgICAgICAgIAorICAgICAgICBMb2NrIHRoZSBiYWNr
L2ZvcndhcmQgbGlzdCBmb3IgbG9jYXRpb24gY2hhbmdlcyB0aGF0IGhhcHBlbiBiZWZvcmUgdGhl
IAorICAgICAgICBvbmxvYWQgZXZlbnQgZmlyZXMgdGhhdCBhcmUgbm90IHRoZSByZXN1bHQgb2Yg
dXNlciBnZXN0dXJlcy4KKyAgICAgICAgCisgICAgICAgIGh0dHAvdGVzdHMvaGlzdG9yeSB0ZXN0
cyBub3cgcGFzcywgdGhlaXIgZXhwZWN0YXRpb3NuIHdlcmUgdXBkYXRlZCAKKyAgICAgICAgYWNj
b3JkaW5nbHkuIE90aGVyIHRlc3RzIG5lZWRlZCBhIHNldFRpbWVvdXQgd3JhcHBlciBhcm91bmQg
bG9jYXRpb24KKyAgICAgICAgY2hhbmdlcyBkdXJpbmcgb25sb2FkLCBvdGhlcndpc2UgdGhleSB3
b3VsZCBub3QgZ2VuZXJhdGUgaGlzdG9yeSAKKyAgICAgICAgZW50cmllcyBhcyBleHBlY3RlZCBh
bnltb3JlLgorICAgICAgICAKKyAgICAgICAgKiBmYXN0L2Nzcy90YXJnZXQtZnJhZ21lbnQtbWF0
Y2guaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvdGltZXItcmVzdW1lLW9uLW5hdmln
YXRpb24tYmFjay5odG1sOgorICAgICAgICAqIGZhc3QvZG9tL2xvY2F0aW9uLWhhc2guaHRtbDoK
KyAgICAgICAgKiBmYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC13
aXRoLWZyYW1lcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9ldmVudHMvcGFnZXNob3ct
cGFnZWhpZGUtb24tYmFjay1jYWNoZWQtd2l0aC1mcmFtZXMuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMS5odG1sOgorICAgICAgICAqIGZhc3QvZnJh
bWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0yLmh0bWw6CisgICAgICAgICogZmFzdC9oYXJuZXNz
L3Jlc291cmNlcy9jYWNoZWQtcGFnZS0xLmh0bWw6CisgICAgICAgICogZmFzdC9oYXJuZXNzL3Jl
c291cmNlcy9jYWNoZWQtcGFnZS13aXRoLWRhdGEtdXJscy5odG1sOgorICAgICAgICAqIGZhc3Qv
aGlzdG9yeS9nZXN0dXJlLWJlZm9yZS1vbmxvYWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2hpc3RvcnkvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvaGlzdG9yeS9oaXN0b3J5LWxlbmd0aC5odG1sOgorICAgICAgICAqIGZhc3Qv
aGlzdG9yeS9yZXNvdXJjZXMvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLXRhcmdldC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2hpc3Rvcnkvc2F2ZXMtc3RhdGUtYWZ0ZXItZnJhZ21lbnQtbmF2
Lmh0bWw6CisgICAgICAgICogZmFzdC9sb2FkZXIvaW5wdXQtZWxlbWVudC1wYWdlLWNhY2hlLWNy
YXNoLmh0bWw6CisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRl
c3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLmh0bWw6CisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVv
YmplY3RzL3B1c2hzdGF0ZS1jbGVhcnMtZm9yd2FyZC1oaXN0b3J5Lmh0bWw6CisgICAgICAgICog
ZmFzdC9sb2FkZXIvc3ViZnJhbWUtbmF2aWdhdGUtZHVyaW5nLW1haW4tZnJhbWUtbG9hZC5odG1s
OgorICAgICAgICAqIGh0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2Nh
dGlvbi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9oaXN0
b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWFzc2lnbi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWJlZm9y
ZS1sb2FkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJl
Y3QtanMtbG9jYXRpb24taHJlZi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9kb2N1bWVudC1sb2NhdGlvbi5qczoKKyAg
ICAgICAgKHN0YXJ0KToKKyAgICAgICAgKiBzZWN1cml0eS9hdXRvY29tcGxldGUtY2xlYXJlZC1v
bi1iYWNrLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5qczoK
KyAgICAgICAgKHVwZGF0ZURhdGFiYXNlKToKKyAgICAgICAgKGludm9rZUJhY2spOgorICAgICAg
ICAocnVuVGVzdCk6CisgICAgICAgIChydW5UZXN0c0lubmVyKToKKwogMjAxMC0wNy0zMCAgU3Rl
dmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
U3RldmUgQmxvY2suCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy90YXJnZXQtZnJhZ21lbnQt
bWF0Y2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy90YXJnZXQtZnJh
Z21lbnQtbWF0Y2guaHRtbAkocmV2aXNpb24gNjQzNTgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nz
cy90YXJnZXQtZnJhZ21lbnQtbWF0Y2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsNiArMTEs
MTIgQEAgZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCisg
ICAgLy8gTG9jYXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRoZSBvbmxvYWQg
aGFuZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCisgICAgc2V0VGltZW91dChydW5U
ZXN0LCAwKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICB3aW5kb3cubG9jYXRpb24u
aGFzaCA9JyN0YXJnZXQtMDEnOwogICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwogICAgIHdp
bmRvdy5oaXN0b3J5LmJhY2soKTsgLy8gVGhpcyBxdWV1ZXMgdXAgYSBuYXZpZ2F0aW9uLCBzbyB3
ZSBuZWVkIHRvIGRlbGF5IHRoZSBjYWxsIHRvIG5vdGlmeURvbmUuCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9sb2NhdGlvbi1oYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vbG9jYXRpb24taGFzaC5odG1sCShyZXZpc2lvbiA2NDM1OCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL2xvY2F0aW9uLWhhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtODcsOCAr
ODcsOSBAQAogICAgICAgICBudW1FcnJvcnMgPSAwOwogICAgICAgICBvcmlnaW5hbExvY2F0aW9u
ID0gd2luZG93LmxvY2F0aW9uLmhyZWY7CiAgICAgICAgIG9yaWdpbmFsSGlzdG9yeUxlbmd0aCA9
IHdpbmRvdy5oaXN0b3J5Lmxlbmd0aDsKLSAgICAgCi0gICAgICAgIHN0ZXAoKTsKKworICAgICAg
ICAvLyBMb2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBo
YW5kbGVyIHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAgICAgICAgc2V0VGltZW91dChz
dGVwLCAwKTsKICAgICB9CiAgICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9XaW5kb3cvdGltZXItcmVzdW1lLW9uLW5hdmlnYXRpb24tYmFjay5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy90aW1lci1yZXN1bWUtb24t
bmF2aWdhdGlvbi1iYWNrLmh0bWwJKHJldmlzaW9uIDY0MzU4KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L3RpbWVyLXJlc3VtZS1vbi1uYXZpZ2F0aW9uLWJhY2suaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgsOSArMTgsMTIgQEAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VL
ZXkiLCAxKTsKICAgICB9Ci0gICAgd2luZG93LnNldFRpbWVvdXQoInZlcmlmeSgpIiwgdGltZW91
dFZhbHVlKTsKLSAgICB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKLSAgICB3aW5k
b3cubG9jYXRpb24uaHJlZiA9ICJkYXRhOnRleHQvaHRtbCw8Ym9keSBvbmxvYWQ9J2hpc3Rvcnku
YmFjaygpJz48L2JvZHk+IjsKKyAgICAvLyBMb2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVu
IG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4K
KyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgd2luZG93LnNldFRpbWVvdXQodmVy
aWZ5LCB0aW1lb3V0VmFsdWUpOworICAgICAgdGltZXN0YW1wID0gbmV3IERhdGUoKS5nZXRUaW1l
KCk7CisgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICJkYXRhOnRleHQvaHRtbCw8Ym9keSBv
bmxvYWQ9J2hpc3RvcnkuYmFjaygpJz48L2JvZHk+IjsKKyAgICB9LCAwKTsKIH0KIAogPC9zY3Jp
cHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1i
YWNrLWNhY2hlZC13aXRoLWZyYW1lcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUtb24tYmFjay1jYWNoZWQtd2l0aC1m
cmFtZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2NDM1OCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLXdpdGgtZnJhbWVzLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxNiArMSwxNiBAQAorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDIwOiAqKipUb3AgbGV2ZWwgZnJhbWUgYmVpbmcgcGFyc2VkIGZvciB0aGUgaW5pdGlh
bCBwYWdlIGxvYWQqKioKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMDogU3Vic3ViZnJhbWUgd2lu
ZG93Lm9ubG9hZAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIwOiBTdWJzdWJmcmFtZSB3aW5kb3cu
b25wYWdlc2hvdywgdGFyZ2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRdLCBwZXJzaXN0ZWQgPSBm
YWxzZQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIwOiBTdWJmcmFtZSB3aW5kb3cub25sb2FkCitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMjA6IFN1YmZyYW1lIHdpbmRvdy5vbnBhZ2VzaG93LCB0YXJn
ZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IGZhbHNlCitDT05TT0xFIE1F
U1NBR0U6IGxpbmUgMjA6IE1haW4gZnJhbWUgd2luZG93Lm9ubG9hZAorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDIwOiBNYWluIGZyYW1lIHdpbmRvdy5vbnBhZ2VzaG93LCB0YXJnZXQgPSBbb2JqZWN0
IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IGZhbHNlCitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
MjA6ICoqKk5hdmlnYXRpbmcgdG9wLWxldmVsIGZyYW1lIHRvIGEgcGFnZSB0aGF0IHdpbGwgaW1t
ZWRpYXRlbHkgbmF2aWdhdGUgYmFjayB0byB0aGlzIG9uZSoqKgorQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDIwOiBNYWluIGZyYW1lIHdpbmRvdy5vbnBhZ2VoaWRlLCB0YXJnZXQgPSBbb2JqZWN0IEhU
TUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IHRydWUKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMDog
U3ViZnJhbWUgd2luZG93Lm9ucGFnZWhpZGUsIHRhcmdldCA9IFtvYmplY3QgSFRNTERvY3VtZW50
XSwgcGVyc2lzdGVkID0gdHJ1ZQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIwOiBTdWJzdWJmcmFt
ZSB3aW5kb3cub25wYWdlaGlkZSwgdGFyZ2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRdLCBwZXJz
aXN0ZWQgPSB0cnVlCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjA6IFN1YnN1YmZyYW1lIHdpbmRv
dy5vbnBhZ2VzaG93LCB0YXJnZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9
IHRydWUKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMDogU3ViZnJhbWUgd2luZG93Lm9ucGFnZXNo
b3csIHRhcmdldCA9IFtvYmplY3QgSFRNTERvY3VtZW50XSwgcGVyc2lzdGVkID0gdHJ1ZQorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDIwOiBNYWluIGZyYW1lIHdpbmRvdy5vbnBhZ2VzaG93LCB0YXJn
ZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IHRydWUKIFRlc3QgcGFnZXNo
b3cvcGFnZWhpZGUgZXZlbnQgYmVoYXZpb3Igd2hlbiBuYXZpZ2F0aW5nIGF3YXkgZnJvbSBhIHBh
Z2Ugd2l0aCBmcmFtZXMsIHB1dHRpbmcgdGhlIHBhZ2UgaW4gdGhlIHBhZ2UgY2FjaGUsIHRoZW4g
YmFjayB0byBpdC4KLSoqKlRvcCBsZXZlbCBmcmFtZSBiZWluZyBwYXJzZWQgZm9yIHRoZSBpbml0
aWFsIHBhZ2UgbG9hZCoqKgotU3Vic3ViZnJhbWUgd2luZG93Lm9ubG9hZAotU3Vic3ViZnJhbWUg
d2luZG93Lm9ucGFnZXNob3csIHRhcmdldCA9IFtvYmplY3QgSFRNTERvY3VtZW50XSwgcGVyc2lz
dGVkID0gZmFsc2UKLVN1YmZyYW1lIHdpbmRvdy5vbmxvYWQKLVN1YmZyYW1lIHdpbmRvdy5vbnBh
Z2VzaG93LCB0YXJnZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IGZhbHNl
Ci1NYWluIGZyYW1lIHdpbmRvdy5vbmxvYWQKLU1haW4gZnJhbWUgd2luZG93Lm9ucGFnZXNob3cs
IHRhcmdldCA9IFtvYmplY3QgSFRNTERvY3VtZW50XSwgcGVyc2lzdGVkID0gZmFsc2UKLSoqKk5h
dmlnYXRpbmcgdG9wLWxldmVsIGZyYW1lIHRvIGEgcGFnZSB0aGF0IHdpbGwgaW1tZWRpYXRlbHkg
bmF2aWdhdGUgYmFjayB0byB0aGlzIG9uZSoqKgotTWFpbiBmcmFtZSB3aW5kb3cub25wYWdlaGlk
ZSwgdGFyZ2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRdLCBwZXJzaXN0ZWQgPSB0cnVlCi1TdWJm
cmFtZSB3aW5kb3cub25wYWdlaGlkZSwgdGFyZ2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRdLCBw
ZXJzaXN0ZWQgPSB0cnVlCi1TdWJzdWJmcmFtZSB3aW5kb3cub25wYWdlaGlkZSwgdGFyZ2V0ID0g
W29iamVjdCBIVE1MRG9jdW1lbnRdLCBwZXJzaXN0ZWQgPSB0cnVlCi1TdWJzdWJmcmFtZSB3aW5k
b3cub25wYWdlc2hvdywgdGFyZ2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRdLCBwZXJzaXN0ZWQg
PSB0cnVlCi1TdWJmcmFtZSB3aW5kb3cub25wYWdlc2hvdywgdGFyZ2V0ID0gW29iamVjdCBIVE1M
RG9jdW1lbnRdLCBwZXJzaXN0ZWQgPSB0cnVlCi1NYWluIGZyYW1lIHdpbmRvdy5vbnBhZ2VzaG93
LCB0YXJnZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IHRydWUKIApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUtb24tYmFjay1jYWNo
ZWQtd2l0aC1mcmFtZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC13aXRoLWZyYW1lcy5odG1sCShyZXZp
c2lvbiA2NDM1OCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2VzaG93LXBhZ2VoaWRl
LW9uLWJhY2stY2FjaGVkLXdpdGgtZnJhbWVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE0LDgg
KzE0LDEwIEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKIAogZnVuY3Rpb24g
bG9nKG1lc3NhZ2UpCiB7Ci0gICAgdmFyIGxvZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJs
b2ciKTsKLSAgICBsb2cuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiXG4iOworICAgIC8vIExvZ2dp
bmcgdG8gdGhlIGNvbnNvbGUgaW5zdGVhZCBvZiB0aGUgImxvZyIgRElWIGluIHRoZSBET00gYmVj
YXVzZQorICAgIC8vIG90aGVyd2lzZSB3ZSB0cmlnZ2VyIHRoZSBhc3NlcnQgbWVudGlvbmVkIGF0
IGh0dHA6Ly93ZWJraXQub3JnL2IvNDMxNTIKKyAgICAvLyAoc2luY2Ugd2UgbG9nIGR1cmluZyBw
YWdlaGlkZSkKKyAgICBjb25zb2xlLmxvZyhtZXNzYWdlKTsKIH0KIAogbG9nKCIqKipUb3AgbGV2
ZWwgZnJhbWUgYmVpbmcgcGFyc2VkIGZvciB0aGUgaW5pdGlhbCBwYWdlIGxvYWQqKioiKTsKQEAg
LTMxLDcgKzMzLDggQEAgd2luZG93Lm9ucGFnZXNob3cgPSBmdW5jdGlvbihldnQpIHsKICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBsb2coIioqKk5hdmlnYXRpbmcgdG9wLWxldmVsIGZyYW1lIHRvIGEgcGFnZSB0aGF0
IHdpbGwgaW1tZWRpYXRlbHkgbmF2aWdhdGUgYmFjayB0byB0aGlzIG9uZSoqKiIpOwotICAgICAg
ICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICJkYXRhOnRleHQvaHRtbCw8c2NyaXB0Pmhpc3Rvcnku
YmFjaygpOzwvc2NyIiArICJpcHQ+IjsKKyAgICAgICAgLy8gTG9jYXRpb24gY2hhbmdlcyBuZWVk
IHRvIGhhcHBlbiBvdXRzaWRlIHRoZSBvbmxvYWQgaGFuZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5
IGVudHJpZXMuCisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7d2luZG93LmxvY2F0aW9u
LmhyZWYgPSAiZGF0YTp0ZXh0L2h0bWwsPHNjcmlwdD5oaXN0b3J5LmJhY2soKTs8L3NjciIgKyAi
aXB0PiI7fSwgMCk7CiAgICAgfQogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9y
ZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0xLmh0bWwJKHJldmlzaW9uIDY0MzU4KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTEuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTcsNyArMTcsOCBAQCBmdW5jdGlvbiBsb2FkTmV4dCgpIHsKICAg
ICBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoZW5kVGVzdCwgMTAwKTsKIAogICAgIHdpbmRvdy5v
cGVuZXIubG9nKCJwYWdlLTEsIGFib3V0IHRvIG5hdmlnYXRlIHRvIHBhZ2UtMi4iKQotICAgIGxv
Y2F0aW9uLmhyZWYgPSAiY2FjaGVkLXBhZ2UtMi5odG1sIjsKKyAgICAvLyBMb2NhdGlvbiBjaGFu
Z2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdlbmVyYXRl
IGhpc3RvcnkgZW50cmllcy4KKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge2xvY2F0aW9uLmhy
ZWYgPSAiY2FjaGVkLXBhZ2UtMi5odG1sIjt9LCAwKTsKIH0KIAogLy8gVGhpcyB1bmxvYWQgaGFu
ZGxlciBleGlzdHMganVzdCB0byBtYWtlIHN1cmUgdGhpcyBwYWdlIGlzIG5vdCBhZGRlZApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTIuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBh
Z2UtMi5odG1sCShyZXZpc2lvbiA2NDM1OCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jl
c291cmNlcy9jYWNoZWQtcGFnZS0yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE5LDcgKzE5LDgg
QEAgZnVuY3Rpb24gbG9hZE5leHQoKSB7CiAgICAgaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKGdv
QmFjaywgMjApOwogCiAgICAgd2luZG93Lm9wZW5lci5sb2coInBhZ2UtMiwgYWJvdXQgdG8gbmF2
aWdhdGUgdG8gcGFnZS0zLiIpCi0gICAgbG9jYXRpb24uaHJlZiA9ICJjYWNoZWQtcGFnZS0zLmh0
bWwiOworICAgIC8vIExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0byBoYXBwZW4gb3V0c2lkZSB0aGUg
b25sb2FkIGhhbmRsZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBlbnRyaWVzLgorICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7bG9jYXRpb24uaHJlZiA9ICJjYWNoZWQtcGFnZS0zLmh0bWwiO30sIDAp
OwogfQogPC9zY3JpcHQ+CiA8Ym9keSBvbmxvYWQ9ImxvYWROZXh0KCkiPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0xLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0xLmh0
bWwJKHJldmlzaW9uIDY0MzU4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc291cmNl
cy9jYWNoZWQtcGFnZS0xLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDggQEAgZnVu
Y3Rpb24gbG9hZE5leHQoKQogICAgIGludGVydmFsSWQgPSBzZXRJbnRlcnZhbChjaGVjaywgMTAp
OwogCiAgICAgd2luZG93Lm9wZW5lci5sb2coInBhZ2UtMSwgYWJvdXQgdG8gbmF2aWdhdGUgdG8g
cGFnZS0yLiIpCi0gICAgbG9jYXRpb24uaHJlZiA9ICJjYWNoZWQtcGFnZS0yLmh0bWwiOworICAg
IC8vIExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0byBoYXBwZW4gb3V0c2lkZSB0aGUgb25sb2FkIGhh
bmRsZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBlbnRyaWVzLgorICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7bG9jYXRpb24uaHJlZiA9ICJjYWNoZWQtcGFnZS0yLmh0bWwiO30sIDApOwogfQogPC9z
Y3JpcHQ+CiA8Ym9keSBvbmxvYWQ9ImxvYWROZXh0KCkiPjwvYm9keT4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvaGFybmVzcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2Utd2l0aC1kYXRhLXVybHMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcmVzb3VyY2VzL2NhY2hl
ZC1wYWdlLXdpdGgtZGF0YS11cmxzLmh0bWwJKHJldmlzaW9uIDY0MzU4KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9oYXJuZXNzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS13aXRoLWRhdGEtdXJscy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCw4IEBAIGZ1bmN0aW9uIGxvYWROZXh0KCkKICAg
ICBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoY2hlY2ssIDEwKTsKIAogICAgIHdpbmRvdy5vcGVu
ZXIubG9nKCJwYWdlIHdpdGggZGF0YSB1cmxzLCBhYm91dCB0byBuYXZpZ2F0ZSB0byBwYWdlLTIu
IikKLSAgICBsb2NhdGlvbi5ocmVmID0gImNhY2hlZC1wYWdlLTIuaHRtbCI7CisgICAgLy8gTG9j
YXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRoZSBvbmxvYWQgaGFuZGxlciB0
byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHts
b2NhdGlvbi5ocmVmID0gImNhY2hlZC1wYWdlLTIuaHRtbCI7fSwgMCk7CiB9CiA8L3NjcmlwdD4K
IDxib2R5IG9ubG9hZD0ibG9hZE5leHQoKSI+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rv
cnkvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2hpc3RvcnkvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9nZXN0dXJlLWJlZm9yZS1v
bmxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKK1RoaXMgcGFn
ZSBpcyB0aGUgdGFyZ2V0IG9mIGEgcmVkaXJlY3QuCisKK1BBU1M6IEhpc3RvcnkgaXRlbSBjb3Vu
dCBzaG91bGQgYmUgMiBhbmQgaXMuCisKKworPT09PT09PT09PT09PT0gQmFjayBGb3J3YXJkIExp
c3QgPT09PT09PT09PT09PT0KKyAgICAgICAgKGZpbGUgdGVzdCk6ZmFzdC9oaXN0b3J5L2dlc3R1
cmUtYmVmb3JlLW9ubG9hZC5odG1sICAqKm5hdiB0YXJnZXQqKgorY3Vyci0+ICAoZmlsZSB0ZXN0
KTpmYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2dlc3R1cmUtYmVmb3JlLW9ubG9hZC10YXJnZXQuaHRt
bCMyICAqKm5hdiB0YXJnZXQqKgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9nZXN0dXJlLWJlZm9y
ZS1vbmxvYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvZ2Vz
dHVyZS1iZWZvcmUtb25sb2FkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2hpc3RvcnkvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzIgQEAKKzxoZWFkPgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+CisgIDxi
dXR0b24gaWQ9Im5hdi1idXR0b24iIG9uY2xpY2s9Im5hdigpOyI+TmF2aWdhdGU8L2J1dHRvbj4K
KyAgPGRpdiBpZD0ibWFudWFsLWV4cGxhbmF0aW9uIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgY29s
b3I6IGJsdWUiPldoZW4gcnVubmluZyB0aGlzIHRlc3Qgb3V0c2lkZSBvZiBEUlQsIHBsZWFzZSBj
bGljayBvbiB0aGUgIk5hdmlnYXRlIiBidXR0b24uPC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0Pgor
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworICB9CisKKyAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewor
ICAgICAgdmFyIG5hdkJ1dHRvbk5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmF2LWJ1
dHRvbicpOworICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oCisgICAgICAgICAgbmF2QnV0
dG9uTm9kZS5vZmZzZXRMZWZ0ICsgbmF2QnV0dG9uTm9kZS5vZmZzZXRXaWR0aCAvIDIsCisgICAg
ICAgICAgbmF2QnV0dG9uTm9kZS5vZmZzZXRUb3AgKyBuYXZCdXR0b25Ob2RlLm9mZnNldEhlaWdo
dCAvIDIpOworICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICBldmVudFNlbmRl
ci5tb3VzZVVwKCk7CisgIH0gZWxzZSB7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
bWFudWFsLWV4cGxhbmF0aW9uJykuc3R5bGUuZGlzcGxheSA9ICcnOworICB9CisKKyAgZnVuY3Rp
b24gbmF2KCkgeworICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAncmVzb3VyY2VzL2dlc3R1
cmUtYmVmb3JlLW9ubG9hZC10YXJnZXQuaHRtbCMyJzsKKyAgfQorCisgIGZ1bmN0aW9uIG9ubG9h
ZCgpIHsKKyAgICAgIHdpbmRvdy5jb25zb2xlLmxvZygnRkFJTDogU2hvdWxkIG5vdCBoYXZlIHJl
YWNoZWQgb25sb2FkIGJlZm9yZSBuYXZpZ2F0aW5nIGF3YXknKTsKKyAgfQorPC9zY3JpcHQ+CisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9oaXN0b3J5LWxlbmd0aC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9oaXN0b3J5LWxlbmd0aC5odG1sCShy
ZXZpc2lvbiA2NDM1OCkKKysrIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9oaXN0b3J5LWxlbmd0
aC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDMwICs4LDM0IEBAIG9ubG9hZCA9IGZ1bmN0aW9u
KCkgewogICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0K
ICAgfQotICAvLyBUaGlzIHRlc3QgYWR2YW5jZXMgaGlzdG9yeSBieSAyIHBhZ2VzLCB0aGVuIG5h
dmlnYXRlcyBiYWNrIG9uZSwgYW5kCi0gIC8vIHJlY29yZHMgaGlzdG9yeS5sZW5ndGguICBXZSBl
eHBlY3QgaGlzdG9yeS5sZW5ndGggdG8gaW5kaWNhdGUgdGhlIHRvdGFsCi0gIC8vIGxlbmd0aCBv
ZiBzZXNzaW9uIGhpc3RvcnkuICBBdCB0aGUgZW5kIG9mIHRoZSB0ZXN0LCBpdCBzaG91bGQgYmUg
MiBncmVhdGVyCi0gIC8vIHRoYW4gaXQgd2FzIGF0IHRoZSBzdGFydCBvZiB0aGUgdGVzdC4KLSAg
c3dpdGNoIChzZXNzaW9uU3RvcmFnZS50ZXN0U3RhZ2UrKykgewotICBjYXNlIDA6Ci0gICAgc2Vz
c2lvblN0b3JhZ2UuaW5pdGlhbExlbmd0aCA9IGhpc3RvcnkubGVuZ3RoOwotICAgIGxvY2F0aW9u
ID0gIj9hIjsKLSAgICBicmVhazsKLSAgY2FzZSAxOgotICAgIGxvY2F0aW9uID0gIj9iIjsKLSAg
ICBicmVhazsKLSAgY2FzZSAyOgotICAgIGhpc3RvcnkuYmFjaygpOwotICAgIGJyZWFrOwotICBj
YXNlIDM6Ci0gICAgaWYgKGhpc3RvcnkubGVuZ3RoID09IChzZXNzaW9uU3RvcmFnZS5pbml0aWFs
TGVuZ3RoIC0gMCkgKyAyKQotICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAiUEFTUyI7
Ci0gICAgZWxzZQotICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAiRkFJTDogaW5pdGlh
bExlbmd0aD0iICsgc2Vzc2lvblN0b3JhZ2UuaW5pdGlhbExlbmd0aCArICIsIGhpc3RvcnkubGVu
Z3RoPSIgKyBoaXN0b3J5Lmxlbmd0aDsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotICAgIGJyZWFr
OwotICB9CisKKyAgLy8gTG9jYXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRo
ZSBvbmxvYWQgaGFuZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCisgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7CisgICAgLy8gVGhpcyB0ZXN0IGFkdmFuY2VzIGhpc3RvcnkgYnkgMiBw
YWdlcywgdGhlbiBuYXZpZ2F0ZXMgYmFjayBvbmUsIGFuZAorICAgIC8vIHJlY29yZHMgaGlzdG9y
eS5sZW5ndGguICBXZSBleHBlY3QgaGlzdG9yeS5sZW5ndGggdG8gaW5kaWNhdGUgdGhlIHRvdGFs
CisgICAgLy8gbGVuZ3RoIG9mIHNlc3Npb24gaGlzdG9yeS4gIEF0IHRoZSBlbmQgb2YgdGhlIHRl
c3QsIGl0IHNob3VsZCBiZSAyIGdyZWF0ZXIKKyAgICAvLyB0aGFuIGl0IHdhcyBhdCB0aGUgc3Rh
cnQgb2YgdGhlIHRlc3QuCisgICAgc3dpdGNoIChzZXNzaW9uU3RvcmFnZS50ZXN0U3RhZ2UrKykg
eworICAgIGNhc2UgMDoKKyAgICAgIHNlc3Npb25TdG9yYWdlLmluaXRpYWxMZW5ndGggPSBoaXN0
b3J5Lmxlbmd0aDsKKyAgICAgIGxvY2F0aW9uID0gIj9hIjsKKyAgICAgIGJyZWFrOworICAgIGNh
c2UgMToKKyAgICAgIGxvY2F0aW9uID0gIj9iIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgMjoK
KyAgICAgIGhpc3RvcnkuYmFjaygpOworICAgICAgYnJlYWs7CisgICAgY2FzZSAzOgorICAgICAg
aWYgKGhpc3RvcnkubGVuZ3RoID09IChzZXNzaW9uU3RvcmFnZS5pbml0aWFsTGVuZ3RoIC0gMCkg
KyAyKQorICAgICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJQQVNTIjsKKyAgICAgIGVs
c2UKKyAgICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAiRkFJTDogaW5pdGlhbExlbmd0
aD0iICsgc2Vzc2lvblN0b3JhZ2UuaW5pdGlhbExlbmd0aCArICIsIGhpc3RvcnkubGVuZ3RoPSIg
KyBoaXN0b3J5Lmxlbmd0aDsKKyAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgIGJyZWFr
OworICAgIH0KKyAgfSwgMCk7CiB9CiBvbnVubG9hZCA9IGZ1bmN0aW9uKCkgewogICAvLyBkaXNh
YmxlIHBhZ2UgY2FjaGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zYXZlcy1zdGF0
ZS1hZnRlci1mcmFnbWVudC1uYXYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2hpc3Rvcnkvc2F2ZXMtc3RhdGUtYWZ0ZXItZnJhZ21lbnQtbmF2Lmh0bWwJKHJldmlzaW9uIDY0
MzU4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NhdmVzLXN0YXRlLWFmdGVyLWZyYWdt
ZW50LW5hdi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCwxMSBAQCBmdW5jdGlvbiBy
dW5UZXN0U3RlcCgpIHsKICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9Ci0gICAg
bmF2aWdhdGVUb0hhc2goZmllbGQpOwotICAgIG5hdmlnYXRlQXdheUFuZEJhY2soKTsKKyAgICAv
LyBMb2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5k
bGVyIHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeworICAgICAgbmF2aWdhdGVUb0hhc2goZmllbGQpOworICAgICAgbmF2aWdhdGVBd2F5QW5k
QmFjaygpOworICAgIH0sIDApOwogICB9IGVsc2UgewogICAgIGRvY3VtZW50LmJvZHkuaW5uZXJI
VE1MID0gKGZpZWxkLnZhbHVlID09ICcnKSA/ICdGQUlMJyA6ICdQQVNTJzsKICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5
L3Jlc291cmNlcy9nZXN0dXJlLWJlZm9yZS1vbmxvYWQtdGFyZ2V0Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9nZXN0dXJlLWJlZm9yZS1vbmxv
YWQtdGFyZ2V0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkv
cmVzb3VyY2VzL2dlc3R1cmUtYmVmb3JlLW9ubG9hZC10YXJnZXQuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0MSBAQAorPCEtLSBUaGlzIHBhZ2UgYWNjZXB0cyBhIHF1ZXJ5IHN0cmluZyBz
cGVjaWZ5aW5nIGhvdyBtYW55IGhpc3RvcnkgaXRlbXMgc2hvdWxkCitiZSBwcmVzZW50IG9uY2Ug
aXQgZmluaXNoZXMgbG9hZGluZy4gLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+UmVkaXJl
Y3QgVGFyZ2V0PC90aXRsZT4KKworPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhzKQoreworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUocyArICJcbiIpKTsKK30KKworZnVuY3Rpb24gdGVzdEhpc3RvcnlJdGVtQ291
bnQoKQoreworICAgIHZhciBleHBlY3RlZCA9IHBhcnNlSW50KGxvY2F0aW9uLmhhc2guc2xpY2Uo
MSkpOworICAgIHZhciBhY3R1YWwgPSBoaXN0b3J5Lmxlbmd0aDsKKyAgICBpZiAoYWN0dWFsID09
PSBleHBlY3RlZCkKKyAgICAgICAgbG9nKCJQQVNTOiBIaXN0b3J5IGl0ZW0gY291bnQgc2hvdWxk
IGJlICIgKyBleHBlY3RlZCArICIgYW5kIGlzLiIpOworICAgIGVsc2UKKyAgICAgICAgbG9nKCJG
QUlMOiBIaXN0b3J5IGl0ZW0gY291bnQgc2hvdWxkIGJlICIgKyBleHBlY3RlZCArICIgYnV0IGlu
c3RlYWQgaXMgIiArIGFjdHVhbCArICIuIik7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVy
KCJsb2FkIiwgZnVuY3Rpb24gKCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICB0ZXN0SGlzdG9yeUl0ZW1Db3VudCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQmFja0ZvcndhcmRMaXN0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0SGlzdG9yeUl0ZW1Db3VudCgpOwor
ICAgIH0KK30sIGZhbHNlKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxwPlRoaXMg
cGFnZSBpcyB0aGUgdGFyZ2V0IG9mIGEgcmVkaXJlY3QuPC9wPgorPHByZSBpZD0iY29uc29sZSI+
PC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9p
bnB1dC1lbGVtZW50LXBhZ2UtY2FjaGUtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9pbnB1dC1lbGVtZW50LXBhZ2UtY2FjaGUtY3Jhc2guaHRtbAkocmV2
aXNpb24gNjQzNTgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9pbnB1dC1lbGVtZW50LXBh
Z2UtY2FjaGUtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsOCArMTMsOSBAQCBmdW5j
dGlvbiBydW5UZXN0KCkKICAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGVzdGlucHV0Iik7CiAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCJhdXRvY29tcGxldGUiLCAib24i
KTsKICAgICBpbnB1dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGlucHV0KTsKLSAgICAKLSAgICB3
aW5kb3cubG9jYXRpb24gPSAiZGF0YTp0ZXh0L2h0bWwsPHNjcmlwdD5oaXN0b3J5LmJhY2soKTs8
L3NjcmlwIiArICJ0PiI7CisKKyAgICAvLyBMb2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVu
IG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4K
KyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3dpbmRvdy5sb2NhdGlvbiA9ICJkYXRhOnRleHQv
aHRtbCw8c2NyaXB0Pmhpc3RvcnkuYmFjaygpOzwvc2NyaXAiICsgInQ+Ijt9LCAwKTsKIH0KIAog
ZnVuY3Rpb24gcGFnZUhpZGRlbigpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdWJm
cmFtZS1uYXZpZ2F0ZS1kdXJpbmctbWFpbi1mcmFtZS1sb2FkLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3ViZnJhbWUtbmF2aWdhdGUtZHVyaW5nLW1haW4tZnJh
bWUtbG9hZC5odG1sCShyZXZpc2lvbiA2NDM1OCkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L3N1YmZyYW1lLW5hdmlnYXRlLWR1cmluZy1tYWluLWZyYW1lLWxvYWQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtOSw4ICs5LDkgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBCYWNrRm9yd2FyZExpc3QoKTsKICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KLSAgICAKLSAgICBsb2NhdGlvbj0ncmVz
b3VyY2VzL3N1YmZyYW1lLW5hdmlnYXRlLWR1cmluZy1tYWluLWZyYW1lLWxvYWQyLmh0bWwnOwor
CisgICAgLy8gTG9jYXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRoZSBvbmxv
YWQgaGFuZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCisgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHtsb2NhdGlvbj0ncmVzb3VyY2VzL3N1YmZyYW1lLW5hdmlnYXRlLWR1cmluZy1t
YWluLWZyYW1lLWxvYWQyLmh0bWwnO30sIDApOwogfQogCiA8L3NjcmlwdD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdh
dGUtYmFjay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRl
b2JqZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay5odG1sCShyZXZpc2lvbiA2
NDM1OCkKKysrIExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1k
ZXN0cm95ZWQtbmF2aWdhdGUtYmFjay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMywx
MCBAQCBmdW5jdGlvbiBydW5UaGlyZFN0YWdlT2ZUZXN0KCkKIAogZnVuY3Rpb24gbG9hZGVkKCkK
IHsKLSAgICBpZiAoIXNlc3Npb25TdG9yYWdlLnN0YWdlKQotICAgICAgICBydW5GaXJzdFN0YWdl
T2ZUZXN0KCk7Ci0gICAgZWxzZSBpZiAoc2Vzc2lvblN0b3JhZ2Uuc3RhZ2UgPT0gMikKKyAgICBp
ZiAoIXNlc3Npb25TdG9yYWdlLnN0YWdlKSB7CisgICAgICAgIC8vIExvY2F0aW9uIGNoYW5nZXMg
bmVlZCB0byBoYXBwZW4gb3V0c2lkZSB0aGUgb25sb2FkIGhhbmRsZXIgdG8gZ2VuZXJhdGUgaGlz
dG9yeSBlbnRyaWVzLgorICAgICAgICBzZXRUaW1lb3V0KHJ1bkZpcnN0U3RhZ2VPZlRlc3QsIDAp
OworICAgIH0gZWxzZSBpZiAoc2Vzc2lvblN0b3JhZ2Uuc3RhZ2UgPT0gMikKICAgICAgICAgcnVu
U2Vjb25kU3RhZ2VPZlRlc3QoKTsKICAgICBlbHNlIGlmIChzZXNzaW9uU3RvcmFnZS5zdGFnZSA9
PSAzKQogICAgICAgICBydW5UaGlyZFN0YWdlT2ZUZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLWNsZWFycy1mb3J3YXJkLWhpc3Rvcnku
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMv
cHVzaHN0YXRlLWNsZWFycy1mb3J3YXJkLWhpc3RvcnkuaHRtbAkocmV2aXNpb24gNjQzNTgpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLWNsZWFycy1m
b3J3YXJkLWhpc3RvcnkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCwyMiArOCwyNiBAQCBvbmxv
YWQgPSBmdW5jdGlvbigpIHsKICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKICAgICB9CiAgIH0KLSAgc3dpdGNoIChzZXNzaW9uU3RvcmFnZS50ZXN0U3RhZ2UrKykg
ewotICBjYXNlIDA6Ci0gICAgbG9jYXRpb24gPSAiP2EiOwotICAgIGJyZWFrOwotICBjYXNlIDE6
Ci0gICAgbG9jYXRpb24gPSAiP2IiOwotICAgIGJyZWFrOwotICBjYXNlIDI6Ci0gICAgaGlzdG9y
eS5iYWNrKCk7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgMzoKLSAgICBoaXN0b3J5LnB1c2hTdGF0ZShu
dWxsLCBudWxsKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotICAgIGJyZWFrOwotICB9CisKKyAg
Ly8gTG9jYXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRoZSBvbmxvYWQgaGFu
ZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCisgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7CisgICAgICBzd2l0Y2ggKHNlc3Npb25TdG9yYWdlLnRlc3RTdGFnZSsrKSB7CisgICAgICBj
YXNlIDA6CisgICAgICAgIGxvY2F0aW9uID0gIj9hIjsKKyAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIDE6CisgICAgICAgIGxvY2F0aW9uID0gIj9iIjsKKyAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIDI6CisgICAgICAgIGhpc3RvcnkuYmFjaygpOworICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgMzoKKyAgICAgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCk7CisgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9LCAwKTsK
IH0KIG9udW5sb2FkID0gZnVuY3Rpb24oKSB7CiAgIC8vIGRpc2FibGUgcGFnZSBjYWNoZQpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWRvY3VtZW50LWxv
Y2F0aW9uLWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZG9jdW1lbnQtbG9jYXRpb24tYmVmb3Jl
LWxvYWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2NDM1OCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2NhdGlvbi1iZWZvcmUtbG9hZC1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw4IEBACiBUaGlzIHBhZ2UgaXMg
dGhlIHRhcmdldCBvZiBhIHJlZGlyZWN0LgogCi1GQUlMOiBIaXN0b3J5IGl0ZW0gY291bnQgc2hv
dWxkIGJlIDEgYnV0IGluc3RlYWQgaXMgMi4KK1BBU1M6IEhpc3RvcnkgaXRlbSBjb3VudCBzaG91
bGQgYmUgMSBhbmQgaXMuCiAKIAogPT09PT09PT09PT09PT0gQmFjayBGb3J3YXJkIExpc3QgPT09
PT09PT09PT09PT0KLSAgICAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3RvcnkvcmVkaXJl
Y3QtanMtZG9jdW1lbnQtbG9jYXRpb24tYmVmb3JlLWxvYWQuaHRtbCAgKipuYXYgdGFyZ2V0KioK
IGN1cnItPiAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3RvcnkvcmVzb3VyY2VzL3JlZGlyZWN0
LXRhcmdldC5odG1sIzEgICoqbmF2IHRhcmdldCoqCiA9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0
b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWFzc2lnbi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpz
LWxvY2F0aW9uLWFzc2lnbi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDY0MzU4
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9u
LWFzc2lnbi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsOSAr
MSw4IEBACiBUaGlzIHBhZ2UgaXMgdGhlIHRhcmdldCBvZiBhIHJlZGlyZWN0LgogCi1GQUlMOiBI
aXN0b3J5IGl0ZW0gY291bnQgc2hvdWxkIGJlIDEgYnV0IGluc3RlYWQgaXMgMi4KK1BBU1M6IEhp
c3RvcnkgaXRlbSBjb3VudCBzaG91bGQgYmUgMSBhbmQgaXMuCiAKIAogPT09PT09PT09PT09PT0g
QmFjayBGb3J3YXJkIExpc3QgPT09PT09PT09PT09PT0KLSAgICAgICAgaHR0cDovLzEyNy4wLjAu
MTo4MDAwL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tYXNzaWduLWJlZm9yZS1sb2FkLmh0
bWwgICoqbmF2IHRhcmdldCoqCiBjdXJyLT4gIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9oaXN0b3J5
L3Jlc291cmNlcy9yZWRpcmVjdC10YXJnZXQuaHRtbCMxICAqKm5hdiB0YXJnZXQqKgogPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1iZWZvcmUtbG9hZC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5
L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
NjQzNTgpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9j
YXRpb24tYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEs
OCBAQAogVGhpcyBwYWdlIGlzIHRoZSB0YXJnZXQgb2YgYSByZWRpcmVjdC4KIAotRkFJTDogSGlz
dG9yeSBpdGVtIGNvdW50IHNob3VsZCBiZSAxIGJ1dCBpbnN0ZWFkIGlzIDIuCitQQVNTOiBIaXN0
b3J5IGl0ZW0gY291bnQgc2hvdWxkIGJlIDEgYW5kIGlzLgogCiAKID09PT09PT09PT09PT09IEJh
Y2sgRm9yd2FyZCBMaXN0ID09PT09PT09PT09PT09Ci0gICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWJlZm9yZS1sb2FkLmh0bWwgICoqbmF2
IHRhcmdldCoqCiBjdXJyLT4gIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9oaXN0b3J5L3Jlc291cmNl
cy9yZWRpcmVjdC10YXJnZXQuaHRtbCMxICAqKm5hdiB0YXJnZXQqKgogPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1ocmVmLWJlZm9yZS1sb2FkLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVk
aXJlY3QtanMtbG9jYXRpb24taHJlZi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDY0MzU4KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxv
Y2F0aW9uLWhyZWYtYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDkgKzEsOCBAQAogVGhpcyBwYWdlIGlzIHRoZSB0YXJnZXQgb2YgYSByZWRpcmVjdC4KIAotRkFJ
TDogSGlzdG9yeSBpdGVtIGNvdW50IHNob3VsZCBiZSAxIGJ1dCBpbnN0ZWFkIGlzIDIuCitQQVNT
OiBIaXN0b3J5IGl0ZW0gY291bnQgc2hvdWxkIGJlIDEgYW5kIGlzLgogCiAKID09PT09PT09PT09
PT09IEJhY2sgRm9yd2FyZCBMaXN0ID09PT09PT09PT09PT09Ci0gICAgICAgIGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWhyZWYtYmVmb3JlLWxvYWQu
aHRtbCAgKipuYXYgdGFyZ2V0KioKIGN1cnItPiAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3Rv
cnkvcmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzEgICoqbmF2IHRhcmdldCoqCiA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9kb2N1bWVudC1sb2NhdGlvbi5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3Vy
Y2VzL2RvY3VtZW50LWxvY2F0aW9uLmpzCShyZXZpc2lvbiA2NDM1OCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZG9jdW1lbnQtbG9jYXRpb24uanMJKHdv
cmtpbmcgY29weSkKQEAgLTcsNyArNyw4IEBAIGZ1bmN0aW9uIHN0YXJ0KCkgewogICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwogICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOwogCi0gICAgICBydW5UZXN0KCk7CisgICAgICAvLyBMb2NhdGlv
biBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdl
bmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAgICAgIHNldFRpbWVvdXQocnVuVGVzdCwgMCk7CiAg
ICAgfSBlbHNlIHsKICAgICAgIC8vIGxvYWRlZCB0aGUgPzEgbmF2aWdhdGlvbgogICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwpJbmRleDogTGF5b3V0VGVzdHMvc2VjdXJp
dHkvYXV0b2NvbXBsZXRlLWNsZWFyZWQtb24tYmFjay5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3NlY3VyaXR5L2F1dG9jb21wbGV0ZS1jbGVhcmVkLW9uLWJhY2suaHRtbAkocmV2aXNp
b24gNjQzNTgpCisrKyBMYXlvdXRUZXN0cy9zZWN1cml0eS9hdXRvY29tcGxldGUtY2xlYXJlZC1v
bi1iYWNrLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE5LDcgKzE5LDggQEAgZnVuY3Rpb24gcnVu
VGVzdCgpCiAgICAgaWYgKCFzZXNzaW9uU3RvcmFnZS5zZWNvbmRQYWdlUmVhY2hlZCkgewogICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlyc3RJbnB1dCIpLnZhbHVlID0gIlN1cGVy
U2Vla3JpdFZhbHVlIjsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlY29uZElu
cHV0IikudmFsdWUgPSAiU3VwZXJTZWVrcml0VmFsdWUiOwotICAgICAgICB3aW5kb3cubG9jYXRp
b24gPSAicmVzb3VyY2VzL2F1dG9jb21wbGV0ZS1jbGVhcmVkLW9uLWJhY2syLmh0bWwiOworICAg
ICAgICAvLyBMb2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9h
ZCBoYW5kbGVyIHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHt3aW5kb3cubG9jYXRpb24gPSAicmVzb3VyY2VzL2F1dG9jb21wbGV0ZS1j
bGVhcmVkLW9uLWJhY2syLmh0bWwiO30sIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IApJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLmpzCShy
ZXZpc2lvbiA2NDM1OCkKKysrIExheW91dFRlc3RzL3N0b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14
aHIuanMJKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDEyIEBAIGZ1bmN0aW9uIGludm9rZUJh
Y2soKQogCiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKKyAgICAvLyBMb2NhdGlvbiBjaGFuZ2VzIG5l
ZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdlbmVyYXRlIGhpc3Rv
cnkgZW50cmllcy4KKyAgICBzZXRUaW1lb3V0KHJ1blRlc3RzSW5uZXIsIDApOworfQorCitmdW5j
dGlvbiBydW5UZXN0c0lubmVyKCkKK3sKICAgICBiYWNrSXRlcmF0aW9ucyA9IDEwOwogICAgIGNv
bnNlY3V0aXZlRmFpbHVyZXMgPSAwOwogICAgIHN1Y2Nlc3NlcyA9IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63283</attachid>
            <date>2010-08-02 17:54:47 -0700</date>
            <delta_ts>2010-08-03 18:29:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42861-20100802175446.patch</filename>
            <type>text/plain</type>
            <size>60089</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlOGU5Y2YwMGEyY2VmYzk4ZGZjMWVmYWExMDNmNjNkZThjNjAyMmU0Li44NzJiMjI4
ZmIzMTc0YjM1NmQzMzA4MTM3ODMyMzVhZTQ5ZTE1YmNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAK
KzIwMTAtMDgtMDIgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Vzc2lvbiBoaXN0
b3J5IHNob3VsZCBza2lwIG92ZXIgSlMgcmVkaXJlY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjg2MQorICAgICAgICAKKyAgICAgICAgTG9jayB0
aGUgYmFjay9mb3J3YXJkIGxpc3QgZm9yIGxvY2F0aW9uIGNoYW5nZXMgdGhhdCBoYXBwZW4gYmVm
b3JlIHRoZSAKKyAgICAgICAgb25sb2FkIGV2ZW50IGZpcmVzIHRoYXQgYXJlIG5vdCB0aGUgcmVz
dWx0IG9mIHVzZXIgZ2VzdHVyZXMuCisgICAgICAgIAorICAgICAgICBodHRwL3Rlc3RzL2hpc3Rv
cnkgdGVzdHMgbm93IHBhc3MsIHRoZWlyIGV4cGVjdGF0aW9zbiB3ZXJlIHVwZGF0ZWQgCisgICAg
ICAgIGFjY29yZGluZ2x5LiBPdGhlciB0ZXN0cyBuZWVkZWQgYSBzZXRUaW1lb3V0IHdyYXBwZXIg
YXJvdW5kIGxvY2F0aW9uCisgICAgICAgIGNoYW5nZXMgZHVyaW5nIG9ubG9hZCwgb3RoZXJ3aXNl
IHRoZXkgd291bGQgbm90IGdlbmVyYXRlIGhpc3RvcnkgCisgICAgICAgIGVudHJpZXMgYXMgZXhw
ZWN0ZWQgYW55bW9yZS4KKyAgICAgICAgCisgICAgICAgICogZmFzdC9jc3MvdGFyZ2V0LWZyYWdt
ZW50LW1hdGNoLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vV2luZG93L3RpbWVyLXJlc3VtZS1v
bi1uYXZpZ2F0aW9uLWJhY2suaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9sb2NhdGlvbi1oYXNo
Lmh0bWw6CisgICAgICAgICogZmFzdC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUtb24tYmFjay1j
YWNoZWQtd2l0aC1mcmFtZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZXZlbnRzL3Bh
Z2VzaG93LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLXdpdGgtZnJhbWVzLmh0bWw6CisgICAgICAg
ICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTEuaHRtbDoKKyAgICAgICAgKiBm
YXN0L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMi5odG1sOgorICAgICAgICAqIGZhc3Qv
aGFybmVzcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMS5odG1sOgorICAgICAgICAqIGZhc3QvaGFy
bmVzcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2Utd2l0aC1kYXRhLXVybHMuaHRtbDoKKyAgICAgICAg
KiBmYXN0L2hpc3RvcnkvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9oaXN0b3J5L2dlc3R1cmUtYmVmb3JlLW9ubG9hZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2hpc3RvcnkvaGlzdG9yeS1sZW5ndGguaHRtbDoKKyAgICAgICAg
KiBmYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2dlc3R1cmUtYmVmb3JlLW9ubG9hZC10YXJnZXQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9oaXN0b3J5L3NhdmVzLXN0YXRlLWFmdGVyLWZyYWdt
ZW50LW5hdi5odG1sOgorICAgICAgICAqIGZhc3QvbG9hZGVyL2lucHV0LWVsZW1lbnQtcGFnZS1j
YWNoZS1jcmFzaC5odG1sOgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1
bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay5odG1sOgorICAgICAgICAqIGZhc3QvbG9hZGVy
L3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtY2xlYXJzLWZvcndhcmQtaGlzdG9yeS5odG1sOgorICAg
ICAgICAqIGZhc3QvbG9hZGVyL3N1YmZyYW1lLW5hdmlnYXRlLWR1cmluZy1tYWluLWZyYW1lLWxv
YWQuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZG9jdW1l
bnQtbG9jYXRpb24tYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVz
dHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1hc3NpZ24tYmVmb3JlLWxvYWQtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlv
bi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9oaXN0b3J5
L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWhyZWYtYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZG9jdW1lbnQtbG9jYXRpb24u
anM6CisgICAgICAgIChzdGFydCk6CisgICAgICAgICogc2VjdXJpdHkvYXV0b2NvbXBsZXRlLWNs
ZWFyZWQtb24tYmFjay5odG1sOgorICAgICAgICAqIHN0b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14
aHIuanM6CisgICAgICAgICh1cGRhdGVEYXRhYmFzZSk6CisgICAgICAgIChpbnZva2VCYWNrKToK
KyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAocnVuVGVzdHNJbm5lcik6CisKIDIwMTAtMDgt
MDIgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLiBVcGRhdGUgUXQgc3BlY2lmaWMgZXhwZWN0ZWQgcmVzdWx0IGFmdGVyIHI2NDQ3MS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3RhcmdldC1mcmFnbWVudC1tYXRjaC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdGFyZ2V0LWZyYWdtZW50LW1hdGNoLmh0bWwKaW5k
ZXggOWU5OWQ0Nzg1Y2Y2Y2Q2MzA1ZDAxMzQzMzM3ZDg1N2M4OGQ2MTM4Ny4uYTJiNjk3ZjgxNGNi
ZjMyMTRlNGE5MGIwOWZlYTJhY2UzZDkyYjIzNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvdGFyZ2V0LWZyYWdtZW50LW1hdGNoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvdGFyZ2V0LWZyYWdtZW50LW1hdGNoLmh0bWwKQEAgLTExLDYgKzExLDEyIEBAIGZ1bmN0aW9u
IHRlc3QoKQogewogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworICAgIC8vIExvY2F0aW9u
IGNoYW5nZXMgbmVlZCB0byBoYXBwZW4gb3V0c2lkZSB0aGUgb25sb2FkIGhhbmRsZXIgdG8gZ2Vu
ZXJhdGUgaGlzdG9yeSBlbnRyaWVzLgorICAgIHNldFRpbWVvdXQocnVuVGVzdCwgMCk7Cit9CisK
K2Z1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgd2luZG93LmxvY2F0aW9uLmhhc2ggPScjdGFyZ2V0
LTAxJzsKICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKICAgICB3aW5kb3cuaGlzdG9yeS5i
YWNrKCk7IC8vIFRoaXMgcXVldWVzIHVwIGEgbmF2aWdhdGlvbiwgc28gd2UgbmVlZCB0byBkZWxh
eSB0aGUgY2FsbCB0byBub3RpZnlEb25lLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L3RpbWVyLXJlc3VtZS1vbi1uYXZpZ2F0aW9uLWJhY2suaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL1dpbmRvdy90aW1lci1yZXN1bWUtb24tbmF2aWdhdGlvbi1iYWNrLmh0bWwK
aW5kZXggZjdlYTc2YjBjYjhjNmU1NzUyMmQ2YjdhYzBiYWM1YjhkMWU4MzdiNC4uYjQ2ZmIyNTZj
MWY1Yjk3NmJlNWE5NTQ0MDkzMjc4NTQxOTZmMjNmZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vV2luZG93L3RpbWVyLXJlc3VtZS1vbi1uYXZpZ2F0aW9uLWJhY2suaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvdGltZXItcmVzdW1lLW9uLW5hdmlnYXRpb24t
YmFjay5odG1sCkBAIC0xOCw5ICsxOCwxMiBAQCBmdW5jdGlvbiBydW5UZXN0KCkgewogICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5j
ZUtleSIsIDEpOwogICAgIH0KLSAgICB3aW5kb3cuc2V0VGltZW91dCgidmVyaWZ5KCkiLCB0aW1l
b3V0VmFsdWUpOwotICAgIHRpbWVzdGFtcCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOwotICAgIHdp
bmRvdy5sb2NhdGlvbi5ocmVmID0gImRhdGE6dGV4dC9odG1sLDxib2R5IG9ubG9hZD0naGlzdG9y
eS5iYWNrKCknPjwvYm9keT4iOworICAgIC8vIExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0byBoYXBw
ZW4gb3V0c2lkZSB0aGUgb25sb2FkIGhhbmRsZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBlbnRyaWVz
LgorICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICB3aW5kb3cuc2V0VGltZW91dCh2
ZXJpZnksIHRpbWVvdXRWYWx1ZSk7CisgICAgICB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRp
bWUoKTsKKyAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gImRhdGE6dGV4dC9odG1sLDxib2R5
IG9ubG9hZD0naGlzdG9yeS5iYWNrKCknPjwvYm9keT4iOworICAgIH0sIDApOwogfQogCiA8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2xvY2F0aW9uLWhhc2guaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2xvY2F0aW9uLWhhc2guaHRtbAppbmRleCBiMjZlOTA2
YzQ4NWFjYThmNmIyZjMwODZhOTBiYWM1NGNlNTI3NjYxLi5mNTgwZjUyYWQwYjhlNGNkYWUwZGY5
NGIzMzA5ZjU3NjZkODVhOTE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9sb2Nh
dGlvbi1oYXNoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbG9jYXRpb24taGFzaC5o
dG1sCkBAIC04Nyw4ICs4Nyw5IEBACiAgICAgICAgIG51bUVycm9ycyA9IDA7CiAgICAgICAgIG9y
aWdpbmFsTG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb24uaHJlZjsKICAgICAgICAgb3JpZ2luYWxI
aXN0b3J5TGVuZ3RoID0gd2luZG93Lmhpc3RvcnkubGVuZ3RoOwotICAgICAKLSAgICAgICAgc3Rl
cCgpOworCisgICAgICAgIC8vIExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0byBoYXBwZW4gb3V0c2lk
ZSB0aGUgb25sb2FkIGhhbmRsZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBlbnRyaWVzLgorICAgICAg
ICBzZXRUaW1lb3V0KHN0ZXAsIDApOwogICAgIH0KICAgICA8L3NjcmlwdD4KIDwvaGVhZD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9uLWJh
Y2stY2FjaGVkLXdpdGgtZnJhbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLXdpdGgtZnJhbWVzLWV4cGVjdGVk
LnR4dAppbmRleCAxZWU2OWExYzQ0YzI1YTUyZGEwY2U0YTRlODhmNDNjZjAzNTcyMmIzLi45NGYy
NGU2NmQ5OWU3ZjY3NjA5MWJmOGVkNGU2ZmNjZmM3ZWEyODcyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC13aXRoLWZy
YW1lcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZXNob3ct
cGFnZWhpZGUtb24tYmFjay1jYWNoZWQtd2l0aC1mcmFtZXMtZXhwZWN0ZWQudHh0CkBAIC0xLDE2
ICsxLDE2IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjA6ICoqKlRvcCBsZXZlbCBmcmFtZSBi
ZWluZyBwYXJzZWQgZm9yIHRoZSBpbml0aWFsIHBhZ2UgbG9hZCoqKgorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDIwOiBTdWJzdWJmcmFtZSB3aW5kb3cub25sb2FkCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMjA6IFN1YnN1YmZyYW1lIHdpbmRvdy5vbnBhZ2VzaG93LCB0YXJnZXQgPSBbb2JqZWN0IEhU
TUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IGZhbHNlCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjA6
IFN1YmZyYW1lIHdpbmRvdy5vbmxvYWQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMDogU3ViZnJh
bWUgd2luZG93Lm9ucGFnZXNob3csIHRhcmdldCA9IFtvYmplY3QgSFRNTERvY3VtZW50XSwgcGVy
c2lzdGVkID0gZmFsc2UKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMDogTWFpbiBmcmFtZSB3aW5k
b3cub25sb2FkCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjA6IE1haW4gZnJhbWUgd2luZG93Lm9u
cGFnZXNob3csIHRhcmdldCA9IFtvYmplY3QgSFRNTERvY3VtZW50XSwgcGVyc2lzdGVkID0gZmFs
c2UKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMDogKioqTmF2aWdhdGluZyB0b3AtbGV2ZWwgZnJh
bWUgdG8gYSBwYWdlIHRoYXQgd2lsbCBpbW1lZGlhdGVseSBuYXZpZ2F0ZSBiYWNrIHRvIHRoaXMg
b25lKioqCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjA6IE1haW4gZnJhbWUgd2luZG93Lm9ucGFn
ZWhpZGUsIHRhcmdldCA9IFtvYmplY3QgSFRNTERvY3VtZW50XSwgcGVyc2lzdGVkID0gdHJ1ZQor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDIwOiBTdWJmcmFtZSB3aW5kb3cub25wYWdlaGlkZSwgdGFy
Z2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRdLCBwZXJzaXN0ZWQgPSB0cnVlCitDT05TT0xFIE1F
U1NBR0U6IGxpbmUgMjA6IFN1YnN1YmZyYW1lIHdpbmRvdy5vbnBhZ2VoaWRlLCB0YXJnZXQgPSBb
b2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IHRydWUKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSAyMDogU3Vic3ViZnJhbWUgd2luZG93Lm9ucGFnZXNob3csIHRhcmdldCA9IFtvYmplY3Qg
SFRNTERvY3VtZW50XSwgcGVyc2lzdGVkID0gdHJ1ZQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIw
OiBTdWJmcmFtZSB3aW5kb3cub25wYWdlc2hvdywgdGFyZ2V0ID0gW29iamVjdCBIVE1MRG9jdW1l
bnRdLCBwZXJzaXN0ZWQgPSB0cnVlCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjA6IE1haW4gZnJh
bWUgd2luZG93Lm9ucGFnZXNob3csIHRhcmdldCA9IFtvYmplY3QgSFRNTERvY3VtZW50XSwgcGVy
c2lzdGVkID0gdHJ1ZQogVGVzdCBwYWdlc2hvdy9wYWdlaGlkZSBldmVudCBiZWhhdmlvciB3aGVu
IG5hdmlnYXRpbmcgYXdheSBmcm9tIGEgcGFnZSB3aXRoIGZyYW1lcywgcHV0dGluZyB0aGUgcGFn
ZSBpbiB0aGUgcGFnZSBjYWNoZSwgdGhlbiBiYWNrIHRvIGl0LgotKioqVG9wIGxldmVsIGZyYW1l
IGJlaW5nIHBhcnNlZCBmb3IgdGhlIGluaXRpYWwgcGFnZSBsb2FkKioqCi1TdWJzdWJmcmFtZSB3
aW5kb3cub25sb2FkCi1TdWJzdWJmcmFtZSB3aW5kb3cub25wYWdlc2hvdywgdGFyZ2V0ID0gW29i
amVjdCBIVE1MRG9jdW1lbnRdLCBwZXJzaXN0ZWQgPSBmYWxzZQotU3ViZnJhbWUgd2luZG93Lm9u
bG9hZAotU3ViZnJhbWUgd2luZG93Lm9ucGFnZXNob3csIHRhcmdldCA9IFtvYmplY3QgSFRNTERv
Y3VtZW50XSwgcGVyc2lzdGVkID0gZmFsc2UKLU1haW4gZnJhbWUgd2luZG93Lm9ubG9hZAotTWFp
biBmcmFtZSB3aW5kb3cub25wYWdlc2hvdywgdGFyZ2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRd
LCBwZXJzaXN0ZWQgPSBmYWxzZQotKioqTmF2aWdhdGluZyB0b3AtbGV2ZWwgZnJhbWUgdG8gYSBw
YWdlIHRoYXQgd2lsbCBpbW1lZGlhdGVseSBuYXZpZ2F0ZSBiYWNrIHRvIHRoaXMgb25lKioqCi1N
YWluIGZyYW1lIHdpbmRvdy5vbnBhZ2VoaWRlLCB0YXJnZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVu
dF0sIHBlcnNpc3RlZCA9IHRydWUKLVN1YmZyYW1lIHdpbmRvdy5vbnBhZ2VoaWRlLCB0YXJnZXQg
PSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IHRydWUKLVN1YnN1YmZyYW1lIHdp
bmRvdy5vbnBhZ2VoaWRlLCB0YXJnZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3Rl
ZCA9IHRydWUKLVN1YnN1YmZyYW1lIHdpbmRvdy5vbnBhZ2VzaG93LCB0YXJnZXQgPSBbb2JqZWN0
IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IHRydWUKLVN1YmZyYW1lIHdpbmRvdy5vbnBhZ2Vz
aG93LCB0YXJnZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IHRydWUKLU1h
aW4gZnJhbWUgd2luZG93Lm9ucGFnZXNob3csIHRhcmdldCA9IFtvYmplY3QgSFRNTERvY3VtZW50
XSwgcGVyc2lzdGVkID0gdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC13aXRoLWZyYW1lcy5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUtb24tYmFjay1jYWNoZWQtd2l0
aC1mcmFtZXMuaHRtbAppbmRleCA3MmUxNjU4ODJmMTc3ODU3NTIwNjdlMDlhYzI3YzI4NGE5OTQ5
YTg4Li40ODljMDkwNzRlZDI5MTNlYmNkYmZjMjZlOTM3OTdmYjRhMTU1YjI4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hl
ZC13aXRoLWZyYW1lcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2VzaG93
LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLXdpdGgtZnJhbWVzLmh0bWwKQEAgLTE0LDggKzE0LDEw
IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKIAogZnVuY3Rpb24gbG9nKG1l
c3NhZ2UpCiB7Ci0gICAgdmFyIGxvZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKTsK
LSAgICBsb2cuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiXG4iOworICAgIC8vIExvZ2dpbmcgdG8g
dGhlIGNvbnNvbGUgaW5zdGVhZCBvZiB0aGUgImxvZyIgRElWIGluIHRoZSBET00gYmVjYXVzZQor
ICAgIC8vIG90aGVyd2lzZSB3ZSB0cmlnZ2VyIHRoZSBhc3NlcnQgbWVudGlvbmVkIGF0IGh0dHA6
Ly93ZWJraXQub3JnL2IvNDMxNTIKKyAgICAvLyAoc2luY2Ugd2UgbG9nIGR1cmluZyBwYWdlaGlk
ZSkKKyAgICBjb25zb2xlLmxvZyhtZXNzYWdlKTsKIH0KIAogbG9nKCIqKipUb3AgbGV2ZWwgZnJh
bWUgYmVpbmcgcGFyc2VkIGZvciB0aGUgaW5pdGlhbCBwYWdlIGxvYWQqKioiKTsKQEAgLTMxLDcg
KzMzLDggQEAgd2luZG93Lm9ucGFnZXNob3cgPSBmdW5jdGlvbihldnQpIHsKICAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBsb2coIioqKk5hdmlnYXRpbmcgdG9wLWxldmVsIGZyYW1lIHRvIGEgcGFnZSB0aGF0IHdpbGwg
aW1tZWRpYXRlbHkgbmF2aWdhdGUgYmFjayB0byB0aGlzIG9uZSoqKiIpOwotICAgICAgICB3aW5k
b3cubG9jYXRpb24uaHJlZiA9ICJkYXRhOnRleHQvaHRtbCw8c2NyaXB0Pmhpc3RvcnkuYmFjaygp
Ozwvc2NyIiArICJpcHQ+IjsKKyAgICAgICAgLy8gTG9jYXRpb24gY2hhbmdlcyBuZWVkIHRvIGhh
cHBlbiBvdXRzaWRlIHRoZSBvbmxvYWQgaGFuZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJp
ZXMuCisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7d2luZG93LmxvY2F0aW9uLmhyZWYg
PSAiZGF0YTp0ZXh0L2h0bWwsPHNjcmlwdD5oaXN0b3J5LmJhY2soKTs8L3NjciIgKyAiaXB0PiI7
fSwgMCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9y
ZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVz
b3VyY2VzL2NhY2hlZC1wYWdlLTEuaHRtbAppbmRleCA2MTBjOGQ0NDZjMWRhMzM5MjcwYjg3NzVm
NTZhNzU4ZTk5MzZhMjJmLi4yNzE1MTAyZGJhNzhjYWM2YjM4ODJkOWE2Y2JlMzY5YWRmMDI2Y2Qw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBh
Z2UtMS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQt
cGFnZS0xLmh0bWwKQEAgLTE3LDcgKzE3LDggQEAgZnVuY3Rpb24gbG9hZE5leHQoKSB7CiAgICAg
aW50ZXJ2YWxJZCA9IHNldEludGVydmFsKGVuZFRlc3QsIDEwMCk7CiAKICAgICB3aW5kb3cub3Bl
bmVyLmxvZygicGFnZS0xLCBhYm91dCB0byBuYXZpZ2F0ZSB0byBwYWdlLTIuIikKLSAgICBsb2Nh
dGlvbi5ocmVmID0gImNhY2hlZC1wYWdlLTIuaHRtbCI7CisgICAgLy8gTG9jYXRpb24gY2hhbmdl
cyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRoZSBvbmxvYWQgaGFuZGxlciB0byBnZW5lcmF0ZSBo
aXN0b3J5IGVudHJpZXMuCisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtsb2NhdGlvbi5ocmVm
ID0gImNhY2hlZC1wYWdlLTIuaHRtbCI7fSwgMCk7CiB9CiAKIC8vIFRoaXMgdW5sb2FkIGhhbmRs
ZXIgZXhpc3RzIGp1c3QgdG8gbWFrZSBzdXJlIHRoaXMgcGFnZSBpcyBub3QgYWRkZWQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0yLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMi5odG1s
CmluZGV4IGZkNGYyNzIzNWFkZTQ2MTg3OGY2YTJlOTA5ZGU0OTQ0Zjg1MjU5YTAuLmIxNTkyNDIz
NjAwMGM2YzMxYTcyMzNlN2IyNTNlZmE0Y2FhZmE2MjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0yLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTIuaHRtbApAQCAtMTksNyArMTks
OCBAQCBmdW5jdGlvbiBsb2FkTmV4dCgpIHsKICAgICBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwo
Z29CYWNrLCAyMCk7CiAKICAgICB3aW5kb3cub3BlbmVyLmxvZygicGFnZS0yLCBhYm91dCB0byBu
YXZpZ2F0ZSB0byBwYWdlLTMuIikKLSAgICBsb2NhdGlvbi5ocmVmID0gImNhY2hlZC1wYWdlLTMu
aHRtbCI7CisgICAgLy8gTG9jYXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRo
ZSBvbmxvYWQgaGFuZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCisgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHtsb2NhdGlvbi5ocmVmID0gImNhY2hlZC1wYWdlLTMuaHRtbCI7fSwg
MCk7CiB9CiA8L3NjcmlwdD4KIDxib2R5IG9ubG9hZD0ibG9hZE5leHQoKSI+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTEuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMS5odG1sCmlu
ZGV4IDliNjZhNjVmNmFjYzUzYmMyODA2NmE5MDBjZmRmMDVkY2ViYWNhY2YuLjBkYmZkNGQ5OGU5
ODJiMzJiNGI2NWM5OWM0MDlhODgzMjM5Mzk0YjAgMTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvaGFybmVzcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvaGFybmVzcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMS5odG1sCkBAIC0yMiw3ICsyMiw4
IEBAIGZ1bmN0aW9uIGxvYWROZXh0KCkKICAgICBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoY2hl
Y2ssIDEwKTsKIAogICAgIHdpbmRvdy5vcGVuZXIubG9nKCJwYWdlLTEsIGFib3V0IHRvIG5hdmln
YXRlIHRvIHBhZ2UtMi4iKQotICAgIGxvY2F0aW9uLmhyZWYgPSAiY2FjaGVkLXBhZ2UtMi5odG1s
IjsKKyAgICAvLyBMb2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9u
bG9hZCBoYW5kbGVyIHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkge2xvY2F0aW9uLmhyZWYgPSAiY2FjaGVkLXBhZ2UtMi5odG1sIjt9LCAwKTsK
IH0KIDwvc2NyaXB0PgogPGJvZHkgb25sb2FkPSJsb2FkTmV4dCgpIj48L2JvZHk+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLXdpdGgt
ZGF0YS11cmxzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcmVzb3VyY2VzL2NhY2hl
ZC1wYWdlLXdpdGgtZGF0YS11cmxzLmh0bWwKaW5kZXggZjg1MTY2ZDgwZDk5ZDg4MTU3OGU3OGFl
ZmU1MzgzNGI4MGVhOWVkMy4uZjIwZWMwYjg1ZGJkMGI3MDQxNTM5M2UwMDFkZjU2M2NhMTRmMGMy
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc291cmNlcy9jYWNoZWQt
cGFnZS13aXRoLWRhdGEtdXJscy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9y
ZXNvdXJjZXMvY2FjaGVkLXBhZ2Utd2l0aC1kYXRhLXVybHMuaHRtbApAQCAtMTgsNyArMTgsOCBA
QCBmdW5jdGlvbiBsb2FkTmV4dCgpCiAgICAgaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKGNoZWNr
LCAxMCk7CiAKICAgICB3aW5kb3cub3BlbmVyLmxvZygicGFnZSB3aXRoIGRhdGEgdXJscywgYWJv
dXQgdG8gbmF2aWdhdGUgdG8gcGFnZS0yLiIpCi0gICAgbG9jYXRpb24uaHJlZiA9ICJjYWNoZWQt
cGFnZS0yLmh0bWwiOworICAgIC8vIExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0byBoYXBwZW4gb3V0
c2lkZSB0aGUgb25sb2FkIGhhbmRsZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBlbnRyaWVzLgorICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7bG9jYXRpb24uaHJlZiA9ICJjYWNoZWQtcGFnZS0yLmh0
bWwiO30sIDApOwogfQogPC9zY3JpcHQ+CiA8Ym9keSBvbmxvYWQ9ImxvYWROZXh0KCkiPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2dlc3R1cmUtYmVmb3JlLW9ubG9hZC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvZ2VzdHVyZS1iZWZvcmUtb25s
b2FkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMmEwZmFmMTk1OTMyYjE0NDVmZjZlYTZlMWM5
OGYxZGYxMjM2MDk5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5
L2dlc3R1cmUtYmVmb3JlLW9ubG9hZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUaGlz
IHBhZ2UgaXMgdGhlIHRhcmdldCBvZiBhIHJlZGlyZWN0LgorCitQQVNTOiBIaXN0b3J5IGl0ZW0g
Y291bnQgc2hvdWxkIGJlIDIgYW5kIGlzLgorCisKKz09PT09PT09PT09PT09IEJhY2sgRm9yd2Fy
ZCBMaXN0ID09PT09PT09PT09PT09CisgICAgICAgIChmaWxlIHRlc3QpOmZhc3QvaGlzdG9yeS9n
ZXN0dXJlLWJlZm9yZS1vbmxvYWQuaHRtbCAgKipuYXYgdGFyZ2V0KioKK2N1cnItPiAgKGZpbGUg
dGVzdCk6ZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9nZXN0dXJlLWJlZm9yZS1vbmxvYWQtdGFyZ2V0
Lmh0bWwjMiAgKipuYXYgdGFyZ2V0KioKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvZ2Vz
dHVyZS1iZWZvcmUtb25sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvZ2VzdHVy
ZS1iZWZvcmUtb25sb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTYwYWRjYjU3OWNlYWVmNTVhMmRjYWQ0
MjM5YTJiNjE4NTFiNGM3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaGlz
dG9yeS9nZXN0dXJlLWJlZm9yZS1vbmxvYWQuaHRtbApAQCAtMCwwICsxLDMyIEBACis8aGVhZD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgorICA8YnV0dG9uIGlkPSJuYXYtYnV0
dG9uIiBvbmNsaWNrPSJuYXYoKTsiPk5hdmlnYXRlPC9idXR0b24+CisgIDxkaXYgaWQ9Im1hbnVh
bC1leHBsYW5hdGlvbiIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IGNvbG9yOiBibHVlIj5XaGVuIHJ1
bm5pbmcgdGhpcyB0ZXN0IG91dHNpZGUgb2YgRFJULCBwbGVhc2UgY2xpY2sgb24gdGhlICJOYXZp
Z2F0ZSIgYnV0dG9uLjwvZGl2PgorPC9ib2R5PgorPHNjcmlwdD4KKyAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNr
Rm9yd2FyZExpc3QoKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKKyAgfQorCisgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgIHZhciBuYXZCdXR0
b25Ob2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25hdi1idXR0b24nKTsKKyAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKAorICAgICAgICAgIG5hdkJ1dHRvbk5vZGUub2Zmc2V0TGVm
dCArIG5hdkJ1dHRvbk5vZGUub2Zmc2V0V2lkdGggLyAyLAorICAgICAgICAgIG5hdkJ1dHRvbk5v
ZGUub2Zmc2V0VG9wICsgbmF2QnV0dG9uTm9kZS5vZmZzZXRIZWlnaHQgLyAyKTsKKyAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICB9
IGVsc2UgeworICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21hbnVhbC1leHBsYW5hdGlv
bicpLnN0eWxlLmRpc3BsYXkgPSAnJzsKKyAgfQorCisgIGZ1bmN0aW9uIG5hdigpIHsKKyAgICAg
IHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJ3Jlc291cmNlcy9nZXN0dXJlLWJlZm9yZS1vbmxvYWQt
dGFyZ2V0Lmh0bWwjMic7CisgIH0KKworICBmdW5jdGlvbiBvbmxvYWQoKSB7CisgICAgICB3aW5k
b3cuY29uc29sZS5sb2coJ0ZBSUw6IFNob3VsZCBub3QgaGF2ZSByZWFjaGVkIG9ubG9hZCBiZWZv
cmUgbmF2aWdhdGluZyBhd2F5Jyk7CisgIH0KKzwvc2NyaXB0PgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2hpc3RvcnkvaGlzdG9yeS1sZW5ndGguaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvaGlzdG9yeS9oaXN0b3J5LWxlbmd0aC5odG1sCmluZGV4IDRiYWE3ZTdjNzEyNjkxN2I1ZmVi
MGIzODYwNTIxYWY1YjcxMjllOTMuLjk0ZjUwN2QwMDZiM2Y0ZmJmZTVmNmFmOWIyOTA2MTMyZDdk
NzNkYjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9oaXN0b3J5LWxlbmd0
aC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9oaXN0b3J5LWxlbmd0aC5odG1s
CkBAIC04LDMwICs4LDM0IEBAIG9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KICAgfQotICAvLyBUaGlzIHRlc3Qg
YWR2YW5jZXMgaGlzdG9yeSBieSAyIHBhZ2VzLCB0aGVuIG5hdmlnYXRlcyBiYWNrIG9uZSwgYW5k
Ci0gIC8vIHJlY29yZHMgaGlzdG9yeS5sZW5ndGguICBXZSBleHBlY3QgaGlzdG9yeS5sZW5ndGgg
dG8gaW5kaWNhdGUgdGhlIHRvdGFsCi0gIC8vIGxlbmd0aCBvZiBzZXNzaW9uIGhpc3RvcnkuICBB
dCB0aGUgZW5kIG9mIHRoZSB0ZXN0LCBpdCBzaG91bGQgYmUgMiBncmVhdGVyCi0gIC8vIHRoYW4g
aXQgd2FzIGF0IHRoZSBzdGFydCBvZiB0aGUgdGVzdC4KLSAgc3dpdGNoIChzZXNzaW9uU3RvcmFn
ZS50ZXN0U3RhZ2UrKykgewotICBjYXNlIDA6Ci0gICAgc2Vzc2lvblN0b3JhZ2UuaW5pdGlhbExl
bmd0aCA9IGhpc3RvcnkubGVuZ3RoOwotICAgIGxvY2F0aW9uID0gIj9hIjsKLSAgICBicmVhazsK
LSAgY2FzZSAxOgotICAgIGxvY2F0aW9uID0gIj9iIjsKLSAgICBicmVhazsKLSAgY2FzZSAyOgot
ICAgIGhpc3RvcnkuYmFjaygpOwotICAgIGJyZWFrOwotICBjYXNlIDM6Ci0gICAgaWYgKGhpc3Rv
cnkubGVuZ3RoID09IChzZXNzaW9uU3RvcmFnZS5pbml0aWFsTGVuZ3RoIC0gMCkgKyAyKQotICAg
ICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAiUEFTUyI7Ci0gICAgZWxzZQotICAgICAgZG9j
dW1lbnQuYm9keS5pbm5lckhUTUwgPSAiRkFJTDogaW5pdGlhbExlbmd0aD0iICsgc2Vzc2lvblN0
b3JhZ2UuaW5pdGlhbExlbmd0aCArICIsIGhpc3RvcnkubGVuZ3RoPSIgKyBoaXN0b3J5Lmxlbmd0
aDsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotICAgIGJyZWFrOwotICB9CisKKyAgLy8gTG9jYXRp
b24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRoZSBvbmxvYWQgaGFuZGxlciB0byBn
ZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCisgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAg
Ly8gVGhpcyB0ZXN0IGFkdmFuY2VzIGhpc3RvcnkgYnkgMiBwYWdlcywgdGhlbiBuYXZpZ2F0ZXMg
YmFjayBvbmUsIGFuZAorICAgIC8vIHJlY29yZHMgaGlzdG9yeS5sZW5ndGguICBXZSBleHBlY3Qg
aGlzdG9yeS5sZW5ndGggdG8gaW5kaWNhdGUgdGhlIHRvdGFsCisgICAgLy8gbGVuZ3RoIG9mIHNl
c3Npb24gaGlzdG9yeS4gIEF0IHRoZSBlbmQgb2YgdGhlIHRlc3QsIGl0IHNob3VsZCBiZSAyIGdy
ZWF0ZXIKKyAgICAvLyB0aGFuIGl0IHdhcyBhdCB0aGUgc3RhcnQgb2YgdGhlIHRlc3QuCisgICAg
c3dpdGNoIChzZXNzaW9uU3RvcmFnZS50ZXN0U3RhZ2UrKykgeworICAgIGNhc2UgMDoKKyAgICAg
IHNlc3Npb25TdG9yYWdlLmluaXRpYWxMZW5ndGggPSBoaXN0b3J5Lmxlbmd0aDsKKyAgICAgIGxv
Y2F0aW9uID0gIj9hIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgIGxvY2F0aW9u
ID0gIj9iIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgIGhpc3RvcnkuYmFjaygp
OworICAgICAgYnJlYWs7CisgICAgY2FzZSAzOgorICAgICAgaWYgKGhpc3RvcnkubGVuZ3RoID09
IChzZXNzaW9uU3RvcmFnZS5pbml0aWFsTGVuZ3RoIC0gMCkgKyAyKQorICAgICAgICBkb2N1bWVu
dC5ib2R5LmlubmVySFRNTCA9ICJQQVNTIjsKKyAgICAgIGVsc2UKKyAgICAgICAgZG9jdW1lbnQu
Ym9keS5pbm5lckhUTUwgPSAiRkFJTDogaW5pdGlhbExlbmd0aD0iICsgc2Vzc2lvblN0b3JhZ2Uu
aW5pdGlhbExlbmd0aCArICIsIGhpc3RvcnkubGVuZ3RoPSIgKyBoaXN0b3J5Lmxlbmd0aDsKKyAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfSwgMCk7CiB9
CiBvbnVubG9hZCA9IGZ1bmN0aW9uKCkgewogICAvLyBkaXNhYmxlIHBhZ2UgY2FjaGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvZ2VzdHVyZS1iZWZvcmUt
b25sb2FkLXRhcmdldC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9n
ZXN0dXJlLWJlZm9yZS1vbmxvYWQtdGFyZ2V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0M2VjOTFiNzM4
MDg1MzczNjJmMjliZDQxNzg0MDU1NjdmNTk4ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLXRhcmdldC5o
dG1sCkBAIC0wLDAgKzEsNDEgQEAKKzwhLS0gVGhpcyBwYWdlIGFjY2VwdHMgYSBxdWVyeSBzdHJp
bmcgc3BlY2lmeWluZyBob3cgbWFueSBoaXN0b3J5IGl0ZW1zIHNob3VsZAorYmUgcHJlc2VudCBv
bmNlIGl0IGZpbmlzaGVzIGxvYWRpbmcuIC0tPgorCis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlJl
ZGlyZWN0IFRhcmdldDwvdGl0bGU+CisKKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cocykKK3sKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKHMgKyAiXG4iKSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RIaXN0b3J5SXRl
bUNvdW50KCkKK3sKKyAgICB2YXIgZXhwZWN0ZWQgPSBwYXJzZUludChsb2NhdGlvbi5oYXNoLnNs
aWNlKDEpKTsKKyAgICB2YXIgYWN0dWFsID0gaGlzdG9yeS5sZW5ndGg7CisgICAgaWYgKGFjdHVh
bCA9PT0gZXhwZWN0ZWQpCisgICAgICAgIGxvZygiUEFTUzogSGlzdG9yeSBpdGVtIGNvdW50IHNo
b3VsZCBiZSAiICsgZXhwZWN0ZWQgKyAiIGFuZCBpcy4iKTsKKyAgICBlbHNlCisgICAgICAgIGxv
ZygiRkFJTDogSGlzdG9yeSBpdGVtIGNvdW50IHNob3VsZCBiZSAiICsgZXhwZWN0ZWQgKyAiIGJ1
dCBpbnN0ZWFkIGlzICIgKyBhY3R1YWwgKyAiLiIpOworfQorCit3aW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsIGZ1bmN0aW9uICgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgdGVzdEhpc3RvcnlJdGVtQ291bnQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEJhY2tGb3J3YXJkTGlzdCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEhpc3RvcnlJdGVtQ291bnQo
KTsKKyAgICB9Cit9LCBmYWxzZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+Cis8cD5U
aGlzIHBhZ2UgaXMgdGhlIHRhcmdldCBvZiBhIHJlZGlyZWN0LjwvcD4KKzxwcmUgaWQ9ImNvbnNv
bGUiPjwvcHJlPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9oaXN0b3J5L3NhdmVzLXN0YXRlLWFmdGVyLWZyYWdtZW50LW5hdi5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9oaXN0b3J5L3NhdmVzLXN0YXRlLWFmdGVyLWZyYWdtZW50LW5hdi5odG1sCmluZGV4
IDA2NDRkZjg4NDNlODE4YThmNjQ4NTBmMjlkYThmNGRiN2ZiNDA3ODkuLjYwZGVjOTM3MTBjYTNh
YWE2MzI3ZjFkZWMwZjdmMGQ3ZWJlMTAwMjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
aGlzdG9yeS9zYXZlcy1zdGF0ZS1hZnRlci1mcmFnbWVudC1uYXYuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2hpc3Rvcnkvc2F2ZXMtc3RhdGUtYWZ0ZXItZnJhZ21lbnQtbmF2Lmh0bWwKQEAg
LTMwLDggKzMwLDExIEBAIGZ1bmN0aW9uIHJ1blRlc3RTdGVwKCkgewogICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwogICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOwogICAgIH0KLSAgICBuYXZpZ2F0ZVRvSGFzaChmaWVsZCk7Ci0gICAgbmF2
aWdhdGVBd2F5QW5kQmFjaygpOworICAgIC8vIExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0byBoYXBw
ZW4gb3V0c2lkZSB0aGUgb25sb2FkIGhhbmRsZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBlbnRyaWVz
LgorICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICBuYXZpZ2F0ZVRvSGFzaChmaWVs
ZCk7CisgICAgICBuYXZpZ2F0ZUF3YXlBbmRCYWNrKCk7CisgICAgfSwgMCk7CiAgIH0gZWxzZSB7
CiAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAoZmllbGQudmFsdWUgPT0gJycpID8gJ0ZB
SUwnIDogJ1BBU1MnOwogICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9pbnB1dC1lbGVtZW50LXBhZ2UtY2FjaGUt
Y3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2lucHV0LWVsZW1lbnQtcGFnZS1j
YWNoZS1jcmFzaC5odG1sCmluZGV4IGVlNjkzNTU0YWNmNTM5NjgxNGQ5NjNiZjhiZDczZTBhZTRj
YTdmZDUuLjI0OTMyNzIxMThlNWQ0MWEzZmUzZWNiY2RmMTJjZmYyZjQ1MTMyZDkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2lucHV0LWVsZW1lbnQtcGFnZS1jYWNoZS1jcmFz
aC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2lucHV0LWVsZW1lbnQtcGFnZS1j
YWNoZS1jcmFzaC5odG1sCkBAIC0xMyw4ICsxMyw5IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAg
IHZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0aW5wdXQiKTsKICAgICBp
bnB1dC5zZXRBdHRyaWJ1dGUoImF1dG9jb21wbGV0ZSIsICJvbiIpOwogICAgIGlucHV0LnBhcmVu
dE5vZGUucmVtb3ZlQ2hpbGQoaW5wdXQpOwotICAgIAotICAgIHdpbmRvdy5sb2NhdGlvbiA9ICJk
YXRhOnRleHQvaHRtbCw8c2NyaXB0Pmhpc3RvcnkuYmFjaygpOzwvc2NyaXAiICsgInQ+IjsKKwor
ICAgIC8vIExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0byBoYXBwZW4gb3V0c2lkZSB0aGUgb25sb2Fk
IGhhbmRsZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBlbnRyaWVzLgorICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7d2luZG93LmxvY2F0aW9uID0gImRhdGE6dGV4dC9odG1sLDxzY3JpcHQ+aGlzdG9y
eS5iYWNrKCk7PC9zY3JpcCIgKyAidD4iO30sIDApOwogfQogCiBmdW5jdGlvbiBwYWdlSGlkZGVu
KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1
bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLmh0bWwKaW5k
ZXggN2RjYTM2MWJhODcyN2UzNWY2YzEwMDY3NGI3YTViNDNhZjZhNGJkZi4uZWRiYjFjMjg2MTUz
ODI1ODBhNjllZGZiMTNkZTdlMGY3NGJjY2RlZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3VtZW50LWRl
c3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLmh0bWwKQEAgLTMzLDkgKzMzLDEwIEBAIGZ1bmN0aW9uIHJ1
blRoaXJkU3RhZ2VPZlRlc3QoKQogCiBmdW5jdGlvbiBsb2FkZWQoKQogewotICAgIGlmICghc2Vz
c2lvblN0b3JhZ2Uuc3RhZ2UpCi0gICAgICAgIHJ1bkZpcnN0U3RhZ2VPZlRlc3QoKTsKLSAgICBl
bHNlIGlmIChzZXNzaW9uU3RvcmFnZS5zdGFnZSA9PSAyKQorICAgIGlmICghc2Vzc2lvblN0b3Jh
Z2Uuc3RhZ2UpIHsKKyAgICAgICAgLy8gTG9jYXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBv
dXRzaWRlIHRoZSBvbmxvYWQgaGFuZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCisg
ICAgICAgIHNldFRpbWVvdXQocnVuRmlyc3RTdGFnZU9mVGVzdCwgMCk7CisgICAgfSBlbHNlIGlm
IChzZXNzaW9uU3RvcmFnZS5zdGFnZSA9PSAyKQogICAgICAgICBydW5TZWNvbmRTdGFnZU9mVGVz
dCgpOwogICAgIGVsc2UgaWYgKHNlc3Npb25TdG9yYWdlLnN0YWdlID09IDMpCiAgICAgICAgIHJ1
blRoaXJkU3RhZ2VPZlRlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtY2xlYXJzLWZvcndhcmQtaGlzdG9yeS5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1jbGVhcnMtZm9yd2Fy
ZC1oaXN0b3J5Lmh0bWwKaW5kZXggYjA4YzVhNTI3YTQ5OTU0YjIwYzc5YmUwMWQyMjhjODlmOWFl
MTdiMS4uYmJiNDQ3OTVhNDQ1YWE3YjcwY2M2MGE4ZjE0NDY4N2Q5NmVlNzQ1OSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1jbGVhcnMt
Zm9yd2FyZC1oaXN0b3J5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVv
YmplY3RzL3B1c2hzdGF0ZS1jbGVhcnMtZm9yd2FyZC1oaXN0b3J5Lmh0bWwKQEAgLTgsMjIgKzgs
MjYgQEAgb25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CiAgICAgfQogICB9Ci0gIHN3aXRjaCAoc2Vzc2lvblN0b3JhZ2UudGVz
dFN0YWdlKyspIHsKLSAgY2FzZSAwOgotICAgIGxvY2F0aW9uID0gIj9hIjsKLSAgICBicmVhazsK
LSAgY2FzZSAxOgotICAgIGxvY2F0aW9uID0gIj9iIjsKLSAgICBicmVhazsKLSAgY2FzZSAyOgot
ICAgIGhpc3RvcnkuYmFjaygpOwotICAgIGJyZWFrOwotICBjYXNlIDM6Ci0gICAgaGlzdG9yeS5w
dXNoU3RhdGUobnVsbCwgbnVsbCk7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAgICBicmVhazsK
LSAgfQorCisgIC8vIExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0byBoYXBwZW4gb3V0c2lkZSB0aGUg
b25sb2FkIGhhbmRsZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBlbnRyaWVzLgorICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgICAgc3dpdGNoIChzZXNzaW9uU3RvcmFnZS50ZXN0U3RhZ2UrKykg
eworICAgICAgY2FzZSAwOgorICAgICAgICBsb2NhdGlvbiA9ICI/YSI7CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSAxOgorICAgICAgICBsb2NhdGlvbiA9ICI/YiI7CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSAyOgorICAgICAgICBoaXN0b3J5LmJhY2soKTsKKyAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIDM6CisgICAgICAgIGhpc3RvcnkucHVzaFN0YXRlKG51bGwsIG51bGwpOwor
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9Cisg
ICAgfSwgMCk7CiB9CiBvbnVubG9hZCA9IGZ1bmN0aW9uKCkgewogICAvLyBkaXNhYmxlIHBhZ2Ug
Y2FjaGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N1YmZyYW1lLW5hdmln
YXRlLWR1cmluZy1tYWluLWZyYW1lLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L3N1YmZyYW1lLW5hdmlnYXRlLWR1cmluZy1tYWluLWZyYW1lLWxvYWQuaHRtbAppbmRleCAyODUy
MzgxYjFmMzAyYTVmYTA3M2NhNWYzOWY0OWNjMmZjNmJjZWJiLi4yYWIxMmNjMTE4YWU3MDVlZjI1
NzI5MmI4OTU5MDJhNTQxOWNjMjViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9zdWJmcmFtZS1uYXZpZ2F0ZS1kdXJpbmctbWFpbi1mcmFtZS1sb2FkLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3ViZnJhbWUtbmF2aWdhdGUtZHVyaW5nLW1haW4tZnJhbWUt
bG9hZC5odG1sCkBAIC05LDggKzksOSBAQCBmdW5jdGlvbiBydW5UZXN0KCkKICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEJhY2tGb3J3YXJkTGlzdCgpOwogICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAgICAgfQotICAgIAotICAgIGxvY2F0aW9u
PSdyZXNvdXJjZXMvc3ViZnJhbWUtbmF2aWdhdGUtZHVyaW5nLW1haW4tZnJhbWUtbG9hZDIuaHRt
bCc7CisKKyAgICAvLyBMb2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhl
IG9ubG9hZCBoYW5kbGVyIHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkge2xvY2F0aW9uPSdyZXNvdXJjZXMvc3ViZnJhbWUtbmF2aWdhdGUtZHVy
aW5nLW1haW4tZnJhbWUtbG9hZDIuaHRtbCc7fSwgMCk7CiB9CiAKIDwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTIwMC1yZWZyZXNo
LTAtc2Vjb25kcy5wbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0y
MDAtcmVmcmVzaC0wLXNlY29uZHMucGwKaW5kZXggZGIyMzQwZTMzYzhkZTE2YzI1ZjA0MDcxNmQy
YjIzNWEzZTU0N2NjYS4uOWYwYmYzZGEzOTI2MzE0MDY4ZjljNWUwNzQxYjllNTgwN2U2Y2RiZiAx
MDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTIwMC1y
ZWZyZXNoLTAtc2Vjb25kcy5wbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rvcnkv
cmVkaXJlY3QtMjAwLXJlZnJlc2gtMC1zZWNvbmRzLnBsCkBAIC0xMiw3ICsxMiw3IEBAIHByaW50
IDw8SEVSRV9ET0NfRU5ECiA8dGl0bGU+MjAwIFJlZnJlc2ggUmVkaXJlY3Q8L3RpdGxlPgogPHNj
cmlwdD4KIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5rZWVwV2ViSGlzdG9yeSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNs
ZWFyQmFja0ZvcndhcmRMaXN0KCk7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOwogfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2hpc3RvcnkvcmVkaXJlY3QtMjAwLXJlZnJlc2gtMi1zZWNvbmRzLnBsIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTIwMC1yZWZyZXNoLTItc2Vjb25kcy5wbAppbmRl
eCA3MzQ0NDNhOWQ4ZjMyZjgyZjUwZTIxMzNmMzk3YzExMTQ1ZTE5NjZjLi5mMTFjYjZiYTM1ZmQw
YTUzOTQzZTdiNWJiZDRkOWI0NTBlMzhmZWVhIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMjAwLXJlZnJlc2gtMi1zZWNvbmRzLnBsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0yMDAtcmVmcmVzaC0yLXNlY29u
ZHMucGwKQEAgLTEyLDcgKzEyLDcgQEAgcHJpbnQgPDxIRVJFX0RPQ19FTkQKIDx0aXRsZT4yMDAg
UmVmcmVzaCBSZWRpcmVjdDwvdGl0bGU+CiA8c2NyaXB0PgogaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiB9CiA8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDEtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwMS1leHBl
Y3RlZC50eHQKaW5kZXggMDYyYjY5YjRhMGJiYzBhZjBhZjAzOThlZmFmNTIzYzcwNTUwYTExNy4u
NzdhNmVmNjE2OTE1ZGU4ZTIxZGM3YTBmNGRlZmNlZTNmNmUwMjZlNCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwMS1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwMS1leHBlY3RlZC50
eHQKQEAgLTEsOCArMSw5IEBACiBUaGlzIHBhZ2UgaXMgdGhlIHRhcmdldCBvZiBhIHJlZGlyZWN0
LgogCi1QQVNTOiBIaXN0b3J5IGl0ZW0gY291bnQgc2hvdWxkIGJlIDEgYW5kIGlzLgorUEFTUzog
SGlzdG9yeSBpdGVtIGNvdW50IHNob3VsZCBiZSAyIGFuZCBpcy4KIAogCiA9PT09PT09PT09PT09
PSBCYWNrIEZvcndhcmQgTGlzdCA9PT09PT09PT09PT09PQotY3Vyci0+ICBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvaGlzdG9yeS9yZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwjMSAgKipuYXYg
dGFyZ2V0KioKKyAgICAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3RvcnkvcmVkaXJlY3Qt
MzAxLmh0bWwgICoqbmF2IHRhcmdldCoqCitjdXJyLT4gIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9o
aXN0b3J5L3Jlc291cmNlcy9yZWRpcmVjdC10YXJnZXQuaHRtbCMyICAqKm5hdiB0YXJnZXQqKgog
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDEuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDEuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40M2Y5NTIwMTY2NDA1MmQyZGI3NGZmMDdmNTdiOWFiN2RkZTYyYTY5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwMS5odG1sCkBA
IC0wLDAgKzEsMTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+MzAxIFJlZGlyZWN0PC90aXRs
ZT4KKzxzY3JpcHQ+CisgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJh
Y2tGb3J3YXJkTGlzdCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgICAgfQorICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3dpbmRvdy5s
b2NhdGlvbiA9ICdyZXNvdXJjZXMvcmVkaXJlY3QtaGVscGVyLnBsPzMwMSc7fSwgMCk7CisgIH0K
Kzwvc2NyaXB0PgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+VGhpcyBwYWdlIGlzIGEgMzAx
IHJlZGlyZWN0LjwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDEucGwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hp
c3RvcnkvcmVkaXJlY3QtMzAxLnBsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBmMGYx
NWVjMzQ1MTU5MjIyZGJiYzkxM2MxZTU3NDViYTA3MTlkOWUzLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9y
eS9yZWRpcmVjdC0zMDEucGwKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0jIS91c3Iv
YmluL3BlcmwKLSMgU2NyaXB0IHRvIGdlbmVyYXRlIGEgMzAxIEhUVFAgcmVkaXJlY3QKLQotcHJp
bnQgIlN0YXR1czogMzAxIE1vdmVkIFBlcm1hbmVudGx5XHJcbiI7Ci1wcmludCAiTG9jYXRpb246
IHJlc291cmNlcy9yZWRpcmVjdC10YXJnZXQuaHRtbCMxXHJcbiI7Ci1wcmludCAiQ29udGVudC10
eXBlOiB0ZXh0L2h0bWxcclxuIjsKLXByaW50ICJcclxuIjsKLQotcHJpbnQgPDxIRVJFX0RPQ19F
TkQKLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+MzAxIFJlZGlyZWN0PC90aXRsZT4KLTxzY3JpcHQ+
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIua2VlcFdlYkhpc3RvcnkoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Ci19Ci08L3NjcmlwdD4KLQotPGJvZHk+VGhpcyBwYWdlIGlzIGEgMzAxIHJlZGly
ZWN0LjwvYm9keT4KLTwvaHRtbD4KLUhFUkVfRE9DX0VORApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwMi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzAyLWV4cGVjdGVkLnR4dAppbmRleCAw
NjJiNjliNGEwYmJjMGFmMGFmMDM5OGVmYWY1MjNjNzA1NTBhMTE3Li40ZDY5Mjc1ZTZkOWY3Zjc5
Yzk3ZTVlNjBlYjQxMDliYmRhNzBiNzc5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2hpc3RvcnkvcmVkaXJlY3QtMzAyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzAyLWV4cGVjdGVkLnR4dApAQCAtMSw4ICsxLDkg
QEAKIFRoaXMgcGFnZSBpcyB0aGUgdGFyZ2V0IG9mIGEgcmVkaXJlY3QuCiAKLVBBU1M6IEhpc3Rv
cnkgaXRlbSBjb3VudCBzaG91bGQgYmUgMSBhbmQgaXMuCitQQVNTOiBIaXN0b3J5IGl0ZW0gY291
bnQgc2hvdWxkIGJlIDIgYW5kIGlzLgogCiAKID09PT09PT09PT09PT09IEJhY2sgRm9yd2FyZCBM
aXN0ID09PT09PT09PT09PT09Ci1jdXJyLT4gIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9oaXN0b3J5
L3Jlc291cmNlcy9yZWRpcmVjdC10YXJnZXQuaHRtbCMxICAqKm5hdiB0YXJnZXQqKgorICAgICAg
ICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaGlzdG9yeS9yZWRpcmVjdC0zMDIuaHRtbCAgKipuYXYg
dGFyZ2V0KioKK2N1cnItPiAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3RvcnkvcmVzb3VyY2Vz
L3JlZGlyZWN0LXRhcmdldC5odG1sIzIgICoqbmF2IHRhcmdldCoqCiA9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwMi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4M2M3OTI0NTI0OGRj
YjBhZjY1Y2YzZWVlYjU3NDc2ZTJhM2UxMDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzAyLmh0bWwKQEAgLTAsMCArMSwxNSBAQAor
PGh0bWw+Cis8aGVhZD4KKzx0aXRsZT4zMDIgUmVkaXJlY3Q8L3RpdGxlPgorPHNjcmlwdD4KKyAg
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9Cisg
ICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7d2luZG93LmxvY2F0aW9uID0gJ3Jlc291
cmNlcy9yZWRpcmVjdC1oZWxwZXIucGw/MzAyJzt9LCAwKTsKKyAgfQorPC9zY3JpcHQ+CisKKzxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj5UaGlzIHBhZ2UgaXMgYSAzMDIgcmVkaXJlY3QuPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jl
ZGlyZWN0LTMwMi5wbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0z
MDIucGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGUwNjMxMGZjY2QyNTM2YWY5ZTRm
NzIyZjVkOTExMmIxOTVhMTAxYzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwMi5w
bAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLSMhL3Vzci9iaW4vcGVybAotIyBTY3Jp
cHQgdG8gZ2VuZXJhdGUgYSAzMDIgSFRUUCByZWRpcmVjdAotCi1wcmludCAiU3RhdHVzOiAzMDIg
TW92ZWQgVGVtcG9yYXJpbHlcclxuIjsKLXByaW50ICJMb2NhdGlvbjogcmVzb3VyY2VzL3JlZGly
ZWN0LXRhcmdldC5odG1sIzFcclxuIjsKLXByaW50ICJDb250ZW50LXR5cGU6IHRleHQvaHRtbFxy
XG4iOwotcHJpbnQgIlxyXG4iOwotCi1wcmludCA8PEhFUkVfRE9DX0VORAotPGh0bWw+Ci08aGVh
ZD4KLTx0aXRsZT4zMDIgUmVkaXJlY3Q8L3RpdGxlPgotPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5rZWVwV2ViSGlz
dG9yeSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0KLTwv
c2NyaXB0PgotCi08Ym9keT5UaGlzIHBhZ2UgaXMgYSAzMDIgcmVkaXJlY3QuPC9ib2R5PgotPC9o
dG1sPgotSEVSRV9ET0NfRU5ECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hp
c3RvcnkvcmVkaXJlY3QtMzAzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aGlzdG9yeS9yZWRpcmVjdC0zMDMtZXhwZWN0ZWQudHh0CmluZGV4IDA2MmI2OWI0YTBiYmMwYWYw
YWYwMzk4ZWZhZjUyM2M3MDU1MGExMTcuLjlkN2U4NmVhYjg3ZTAxYzYyZmQ0NTg0Y2U0OWIwYmNh
MWU2NGIyNjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRp
cmVjdC0zMDMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9y
eS9yZWRpcmVjdC0zMDMtZXhwZWN0ZWQudHh0CkBAIC0xLDggKzEsOSBAQAogVGhpcyBwYWdlIGlz
IHRoZSB0YXJnZXQgb2YgYSByZWRpcmVjdC4KIAotUEFTUzogSGlzdG9yeSBpdGVtIGNvdW50IHNo
b3VsZCBiZSAxIGFuZCBpcy4KK1BBU1M6IEhpc3RvcnkgaXRlbSBjb3VudCBzaG91bGQgYmUgMiBh
bmQgaXMuCiAKIAogPT09PT09PT09PT09PT0gQmFjayBGb3J3YXJkIExpc3QgPT09PT09PT09PT09
PT0KLWN1cnItPiAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3RvcnkvcmVzb3VyY2VzL3JlZGly
ZWN0LXRhcmdldC5odG1sIzEgICoqbmF2IHRhcmdldCoqCisgICAgICAgIGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9oaXN0b3J5L3JlZGlyZWN0LTMwMy5odG1sICAqKm5hdiB0YXJnZXQqKgorY3Vyci0+
ICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaGlzdG9yeS9yZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0
Lmh0bWwjMiAgKipuYXYgdGFyZ2V0KioKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rv
cnkvcmVkaXJlY3QtMzAzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVk
aXJlY3QtMzAzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTEwN2FkYmZmMzUyZmUxOTBkZjJhOWI2ZDg2YTFj
YjU1YjRkMTFiMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlz
dG9yeS9yZWRpcmVjdC0zMDMuaHRtbApAQCAtMCwwICsxLDE1IEBACis8aHRtbD4KKzxoZWFkPgor
PHRpdGxlPjMwMyBSZWRpcmVjdDwvdGl0bGU+Cis8c2NyaXB0PgorICBmdW5jdGlvbiBydW5UZXN0
KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAgICB3aW5kb3cuc2V0VGlt
ZW91dChmdW5jdGlvbigpIHt3aW5kb3cubG9jYXRpb24gPSAncmVzb3VyY2VzL3JlZGlyZWN0LWhl
bHBlci5wbD8zMDMnO30sIDApOworICB9Cis8L3NjcmlwdD4KKworPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPlRoaXMgcGFnZSBpcyBhIDMwMyByZWRpcmVjdC48L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzAzLnBsIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwMy5wbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA3NTUKaW5kZXggYzc4OTFiZjc1NWZmZWI2OGY0MTE2NzY4OWEwN2U4YWFjOTM4
Zjc3MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzAzLnBsCisrKyAvZGV2L251bGwK
QEAgLTEsMjIgKzAsMCBAQAotIyEvdXNyL2Jpbi9wZXJsCi0jIFNjcmlwdCB0byBnZW5lcmF0ZSBh
IDMwMyBIVFRQIHJlZGlyZWN0Ci0KLXByaW50ICJTdGF0dXM6IDMwMyBTZWUgT3RoZXJcclxuIjsK
LXByaW50ICJMb2NhdGlvbjogcmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzFcclxuIjsK
LXByaW50ICJDb250ZW50LXR5cGU6IHRleHQvaHRtbFxyXG4iOwotcHJpbnQgIlxyXG4iOwotCi1w
cmludCA8PEhFUkVfRE9DX0VORAotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT4zMDMgUmVkaXJlY3Q8
L3RpdGxlPgotPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5rZWVwV2ViSGlzdG9yeSgpOwotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0KLTwvc2NyaXB0PgotCi08Ym9keT5UaGlzIHBh
Z2UgaXMgYSAzMDMgcmVkaXJlY3QuPC9ib2R5PgotPC9odG1sPgotSEVSRV9ET0NfRU5ECmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzA3LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDctZXhw
ZWN0ZWQudHh0CmluZGV4IDA2MmI2OWI0YTBiYmMwYWYwYWYwMzk4ZWZhZjUyM2M3MDU1MGExMTcu
LjcyMWVkMmUzY2NlY2EwMGVmYTNhYTY3NmM4NTc3MDhkZmNlZDllNTcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDctZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDctZXhwZWN0ZWQu
dHh0CkBAIC0xLDggKzEsOSBAQAogVGhpcyBwYWdlIGlzIHRoZSB0YXJnZXQgb2YgYSByZWRpcmVj
dC4KIAotUEFTUzogSGlzdG9yeSBpdGVtIGNvdW50IHNob3VsZCBiZSAxIGFuZCBpcy4KK1BBU1M6
IEhpc3RvcnkgaXRlbSBjb3VudCBzaG91bGQgYmUgMiBhbmQgaXMuCiAKIAogPT09PT09PT09PT09
PT0gQmFjayBGb3J3YXJkIExpc3QgPT09PT09PT09PT09PT0KLWN1cnItPiAgaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2hpc3RvcnkvcmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzEgICoqbmF2
IHRhcmdldCoqCisgICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9oaXN0b3J5L3JlZGlyZWN0
LTMwNy5odG1sICAqKm5hdiB0YXJnZXQqKgorY3Vyci0+ICBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
aGlzdG9yeS9yZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwjMiAgKipuYXYgdGFyZ2V0KioK
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzA3Lmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzA3Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzM0Y2E3Nzg4NGE2NjYyMDVjZThjNDIyNzU1ZjI4MjFkZmQwM2YwMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDcuaHRtbApA
QCAtMCwwICsxLDE1IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPjMwNyBSZWRpcmVjdDwvdGl0
bGU+Cis8c2NyaXB0PgorICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJC
YWNrRm9yd2FyZExpc3QoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworICAgIH0KKyAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHt3aW5kb3cu
bG9jYXRpb24gPSAncmVzb3VyY2VzL3JlZGlyZWN0LWhlbHBlci5wbD8zMDcnO30sIDApOworICB9
Cis8L3NjcmlwdD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPlRoaXMgcGFnZSBpcyBhIDMw
NyByZWRpcmVjdC48L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzA3LnBsIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9o
aXN0b3J5L3JlZGlyZWN0LTMwNy5wbApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYzQ0
ZGI5ZTkzYjE2YjRlMzIwM2Y0MWMwYWFjNzgzYTUxYzI1ZmNkOC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rv
cnkvcmVkaXJlY3QtMzA3LnBsCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotIyEvdXNy
L2Jpbi9wZXJsCi0jIFNjcmlwdCB0byBnZW5lcmF0ZSBhIDMwNyBIVFRQIHJlZGlyZWN0Ci0KLXBy
aW50ICJTdGF0dXM6IDMwNyBNb3ZlZCBUZW1wb3JhcmlseVxyXG4iOwotcHJpbnQgIkxvY2F0aW9u
OiByZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwjMVxyXG4iOwotcHJpbnQgIkNvbnRlbnQt
dHlwZTogdGV4dC9odG1sXHJcbiI7Ci1wcmludCAiXHJcbiI7Ci0KLXByaW50IDw8SEVSRV9ET0Nf
RU5ECi08aHRtbD4KLTxoZWFkPgotPHRpdGxlPjMwNyBSZWRpcmVjdDwvdGl0bGU+Ci08c2NyaXB0
PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci0KLTxib2R5PlRoaXMgcGFnZSBpcyBh
IDMwNyByZWRpcmVjdC48L2JvZHk+Ci08L2h0bWw+Ci1IRVJFX0RPQ19FTkQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2Nh
dGlvbi0wLXNlY29uZHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRp
cmVjdC1qcy1kb2N1bWVudC1sb2NhdGlvbi0wLXNlY29uZHMuaHRtbAppbmRleCA1MTMzMDViYTYy
M2JjZTE0Nzk4MjY0MTgyYjUwMzk0OTEyODM3OTYxLi4wY2UzMDZlYjU4YjEyMzliMDNjMTZiNDU0
NzNjNzk2Y2RkMTgxNzY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rv
cnkvcmVkaXJlY3QtanMtZG9jdW1lbnQtbG9jYXRpb24tMC1zZWNvbmRzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWRvY3VtZW50LWxvY2F0aW9u
LTAtc2Vjb25kcy5odG1sCkBAIC00LDcgKzQsNyBAQAogCiA8c2NyaXB0PgogaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmtlZXBXZWJI
aXN0b3J5KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3Qo
KTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiB9CiBzZXRUaW1l
b3V0KGZ1bmN0aW9uICgpIHsgZG9jdW1lbnQubG9jYXRpb24gPSAicmVzb3VyY2VzL3JlZGlyZWN0
LXRhcmdldC5odG1sIzEiOyB9LCAwKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2NhdGlvbi0yLXNlY29uZHMuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2Nh
dGlvbi0yLXNlY29uZHMuaHRtbAppbmRleCBmMTc1ZTUxZThjODFiNWJkN2RhZGRjOGZlMDFmMGE2
ZGZhYWZiZDRkLi45OWJhMzk3MTA5OGViZjViZTBhMWI5MWJhNGU3MTQ3NjA3NmE5N2I4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZG9jdW1l
bnQtbG9jYXRpb24tMi1zZWNvbmRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9o
aXN0b3J5L3JlZGlyZWN0LWpzLWRvY3VtZW50LWxvY2F0aW9uLTItc2Vjb25kcy5odG1sCkBAIC00
LDcgKzQsNyBAQAogCiA8c2NyaXB0PgogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CiB9CiBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgZG9j
dW1lbnQubG9jYXRpb24gPSAicmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzEiOyB9LCAy
MDAwKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVj
dC1qcy1kb2N1bWVudC1sb2NhdGlvbi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZG9jdW1lbnQtbG9jYXRpb24tYmVm
b3JlLWxvYWQtZXhwZWN0ZWQudHh0CmluZGV4IGVmYmU4MzU4ZDNmOTViYjRjNWE2NzgzZWU4ODk1
OTg0MWY3Zjk5NTMuLjA2MmI2OWI0YTBiYmMwYWYwYWYwMzk4ZWZhZjUyM2M3MDU1MGExMTcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1
bWVudC1sb2NhdGlvbi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWRvY3VtZW50LWxvY2F0aW9uLWJlZm9yZS1s
b2FkLWV4cGVjdGVkLnR4dApAQCAtMSw5ICsxLDggQEAKIFRoaXMgcGFnZSBpcyB0aGUgdGFyZ2V0
IG9mIGEgcmVkaXJlY3QuCiAKLUZBSUw6IEhpc3RvcnkgaXRlbSBjb3VudCBzaG91bGQgYmUgMSBi
dXQgaW5zdGVhZCBpcyAyLgorUEFTUzogSGlzdG9yeSBpdGVtIGNvdW50IHNob3VsZCBiZSAxIGFu
ZCBpcy4KIAogCiA9PT09PT09PT09PT09PSBCYWNrIEZvcndhcmQgTGlzdCA9PT09PT09PT09PT09
PQotICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1
bWVudC1sb2NhdGlvbi1iZWZvcmUtbG9hZC5odG1sICAqKm5hdiB0YXJnZXQqKgogY3Vyci0+ICBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvaGlzdG9yeS9yZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0
bWwjMSAgKipuYXYgdGFyZ2V0KioKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rvcnkv
cmVkaXJlY3QtanMtZG9jdW1lbnQtbG9jYXRpb24tYmVmb3JlLWxvYWQuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2NhdGlvbi1iZWZv
cmUtbG9hZC5odG1sCmluZGV4IGY2MjQwZWJmM2Y0MTdlM2FmN2VjM2YzODQyOTRjNmI2YWIyNWVj
NTAuLjI2YjBjNTdlZTZjMzkwZTI3ODU4YmQ2ODY2MWM0MGY2Mzk3NDIwZWQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2Nh
dGlvbi1iZWZvcmUtbG9hZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9y
eS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2NhdGlvbi1iZWZvcmUtbG9hZC5odG1sCkBAIC00LDcg
KzQsNyBAQAogCiA8c2NyaXB0PgogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CiB9CiBkb2N1bWVudC5sb2NhdGlvbiA9ICJyZXNvdXJjZXMv
cmVkaXJlY3QtdGFyZ2V0Lmh0bWwjMSI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZm9ybS1zdWJtaXQtMC1zZWNvbmRzLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZm9ybS1zdWJtaXQtMC1zZWNv
bmRzLmh0bWwKaW5kZXggZDYyYzYzMWU0Y2Q3ZTk0ZWNhZmIwMWM3Y2YyMWI2YTE0MWM2YzVmNi4u
Y2Y0NjI0NzYxNDg3YjQ2NjJiZGU5NDA4N2Q0YWM3MzE1ZWNhYzBmYiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWZvcm0tc3VibWl0LTAtc2Vj
b25kcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1q
cy1mb3JtLXN1Ym1pdC0wLXNlY29uZHMuaHRtbApAQCAtNCw3ICs0LDcgQEAKIAogPHNjcmlwdD4K
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5rZWVwV2ViSGlzdG9yeSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFj
a0ZvcndhcmRMaXN0KCk7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OwogfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rv
cnkvcmVkaXJlY3QtanMtZm9ybS1zdWJtaXQtMi1zZWNvbmRzLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZm9ybS1zdWJtaXQtMi1zZWNvbmRzLmh0bWwK
aW5kZXggYTQ5YjUxZDAwMzY1MGEzZmZjNWJkY2UzZGJmMmU2NDJjMzI3ZjI1NC4uZWFmZGU0MDEz
MWRiNjA1NWY4OGJkMTM1MDczMjcyNDNmMWUwOGE4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWZvcm0tc3VibWl0LTItc2Vjb25kcy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1mb3JtLXN1
Ym1pdC0yLXNlY29uZHMuaHRtbApAQCAtNCw3ICs0LDcgQEAKIAogPHNjcmlwdD4KIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5rZWVw
V2ViSGlzdG9yeSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRM
aXN0KCk7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogfQogPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJl
Y3QtanMtZm9ybS1zdWJtaXQtYmVmb3JlLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1mb3JtLXN1Ym1pdC1iZWZvcmUtbG9hZC5odG1sCmluZGV4
IGMzMzZiN2E0ZDU1ZjM3MmZlMmNlMDkxNDQyZGVkZmQ5OTY1MDI3NzQuLmJjYTZkNzc2ZTkxZDgx
MWUyMzcwM2E0YzY0MmVhMGZjMTFkNWU1YzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1mb3JtLXN1Ym1pdC1iZWZvcmUtbG9hZC5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1mb3JtLXN1Ym1p
dC1iZWZvcmUtbG9hZC5odG1sCkBAIC00LDcgKzQsNyBAQAogCiA8c2NyaXB0PgogaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmtlZXBX
ZWJIaXN0b3J5KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExp
c3QoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiB9CiA8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVj
dC1qcy1sb2NhdGlvbi0wLXNlY29uZHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlz
dG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi0wLXNlY29uZHMuaHRtbAppbmRleCAzMjU5ZDY0ODM4
NTk0M2NiMzVlNjlmYzFmZDA2YWNjNjQxZjllZDBkLi4xZmQ3YjZmOTg4NmE4YjE2ODFkNGRlZTU5
ZTczNTk2OGQzYzIzOWNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rv
cnkvcmVkaXJlY3QtanMtbG9jYXRpb24tMC1zZWNvbmRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLTAtc2Vjb25kcy5odG1sCkBA
IC00LDcgKzQsNyBAQAogCiA8c2NyaXB0PgogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiB9CiBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsg
bG9jYXRpb24gPSAicmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzEiOyB9LCAwKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2Nh
dGlvbi0yLXNlY29uZHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRp
cmVjdC1qcy1sb2NhdGlvbi0yLXNlY29uZHMuaHRtbAppbmRleCA0YjFlNzZjZDNiOGUzNzcxMTI4
MzViMTBlYzA1ZWIxZjZjYWY5M2E0Li5hYjA1YmE0OWJlNTExZGEwNTA5NGFhZDg1OWQyNGU4NWNi
N2EyZGFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJl
Y3QtanMtbG9jYXRpb24tMi1zZWNvbmRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLTItc2Vjb25kcy5odG1sCkBAIC00LDcgKzQs
NyBAQAogCiA8c2NyaXB0PgogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CiB9CiBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgbG9jYXRpb24g
PSAicmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzEiOyB9LCAyMDAwKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1h
c3NpZ24tMC1zZWNvbmRzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVk
aXJlY3QtanMtbG9jYXRpb24tYXNzaWduLTAtc2Vjb25kcy5odG1sCmluZGV4IDVjMGJkNjcyMjVm
N2FjNzA2ZjRjNWEzMzM1MDg3MTBhY2UyOTg5YjEuLjA3YmYzYWFmNzVlZDNmZWNkOTJjYzkyNTk2
NWE1Y2EzOGMwMDhhOTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9y
eS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1hc3NpZ24tMC1zZWNvbmRzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWFzc2lnbi0wLXNl
Y29uZHMuaHRtbApAQCAtNCw3ICs0LDcgQEAKIAogPHNjcmlwdD4KIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5rZWVwV2ViSGlzdG9y
eSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CiAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogfQogc2V0VGltZW91dChm
dW5jdGlvbiAoKSB7IGxvY2F0aW9uLmFzc2lnbigicmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5o
dG1sIzEiKTsgfSwgMCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rv
cnkvcmVkaXJlY3QtanMtbG9jYXRpb24tYXNzaWduLTItc2Vjb25kcy5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWFzc2lnbi0yLXNlY29u
ZHMuaHRtbAppbmRleCBjOGIyZTI4MmI2OTM4Njg5MmZmMzIyMmY0Njg5NTI0MzNkMTdlYWRlLi42
NDk5YWZmN2Q5OGQ0YjRhZjliZWZmYzQ4OTU1ZGM1YTVlOTkxYThkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tYXNzaWduLTIt
c2Vjb25kcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVj
dC1qcy1sb2NhdGlvbi1hc3NpZ24tMi1zZWNvbmRzLmh0bWwKQEAgLTQsNyArNCw3IEBACiAKIDxz
Y3JpcHQ+CiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIua2VlcFdlYkhpc3RvcnkoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5j
bGVhckJhY2tGb3J3YXJkTGlzdCgpOwogICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKIH0KIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBsb2NhdGlvbi5hc3NpZ24oInJl
c291cmNlcy9yZWRpcmVjdC10YXJnZXQuaHRtbCMxIik7IH0sIDIwMDApOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWFzc2ln
bi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rv
cnkvcmVkaXJlY3QtanMtbG9jYXRpb24tYXNzaWduLWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dApp
bmRleCA0MmExMjU5YmVkZTUxMjRmMmYyM2VkZDU5ZDM1MjhkNDRlMmE3MzY5Li4wNjJiNjliNGEw
YmJjMGFmMGFmMDM5OGVmYWY1MjNjNzA1NTBhMTE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tYXNzaWduLWJlZm9yZS1sb2Fk
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJl
Y3QtanMtbG9jYXRpb24tYXNzaWduLWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dApAQCAtMSw5ICsx
LDggQEAKIFRoaXMgcGFnZSBpcyB0aGUgdGFyZ2V0IG9mIGEgcmVkaXJlY3QuCiAKLUZBSUw6IEhp
c3RvcnkgaXRlbSBjb3VudCBzaG91bGQgYmUgMSBidXQgaW5zdGVhZCBpcyAyLgorUEFTUzogSGlz
dG9yeSBpdGVtIGNvdW50IHNob3VsZCBiZSAxIGFuZCBpcy4KIAogCiA9PT09PT09PT09PT09PSBC
YWNrIEZvcndhcmQgTGlzdCA9PT09PT09PT09PT09PQotICAgICAgICBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1hc3NpZ24tYmVmb3JlLWxvYWQuaHRt
bCAgKipuYXYgdGFyZ2V0KioKIGN1cnItPiAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3Rvcnkv
cmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzEgICoqbmF2IHRhcmdldCoqCiA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWFzc2lnbi1i
ZWZvcmUtbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0
LWpzLWxvY2F0aW9uLWFzc2lnbi1iZWZvcmUtbG9hZC5odG1sCmluZGV4IDc3MTdiMDRhNzMxOGJl
YjcyZDIzNTU2NjZjZjZkZGU0ZDJkNmYyMzAuLjc1MTczZWM1OWZiMTA5MTM1M2ExNGZjNjhlODg1
MjFmYTJjNTA5ZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9y
ZWRpcmVjdC1qcy1sb2NhdGlvbi1hc3NpZ24tYmVmb3JlLWxvYWQuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tYXNzaWduLWJlZm9y
ZS1sb2FkLmh0bWwKQEAgLTQsNyArNCw3IEBACiAKIDxzY3JpcHQ+CiBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIua2VlcFdlYkhpc3Rv
cnkoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOwog
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKIH0KIGxvY2F0aW9uLmFz
c2lnbigicmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzEiKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1iZWZvcmUt
bG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJl
Y3QtanMtbG9jYXRpb24tYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0CmluZGV4IGI2ZGFmOWU5MjE2
ZWY1OWNkNGI5ODFjYWVmMTQyZTBlMmYyZjVhNjIuLjA2MmI2OWI0YTBiYmMwYWYwYWYwMzk4ZWZh
ZjUyM2M3MDU1MGExMTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9y
eS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWJlZm9yZS1s
b2FkLWV4cGVjdGVkLnR4dApAQCAtMSw5ICsxLDggQEAKIFRoaXMgcGFnZSBpcyB0aGUgdGFyZ2V0
IG9mIGEgcmVkaXJlY3QuCiAKLUZBSUw6IEhpc3RvcnkgaXRlbSBjb3VudCBzaG91bGQgYmUgMSBi
dXQgaW5zdGVhZCBpcyAyLgorUEFTUzogSGlzdG9yeSBpdGVtIGNvdW50IHNob3VsZCBiZSAxIGFu
ZCBpcy4KIAogCiA9PT09PT09PT09PT09PSBCYWNrIEZvcndhcmQgTGlzdCA9PT09PT09PT09PT09
PQotICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2Nh
dGlvbi1iZWZvcmUtbG9hZC5odG1sICAqKm5hdiB0YXJnZXQqKgogY3Vyci0+ICBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvaGlzdG9yeS9yZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwjMSAgKipu
YXYgdGFyZ2V0KioKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3Qt
anMtbG9jYXRpb24tYmVmb3JlLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlz
dG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1iZWZvcmUtbG9hZC5odG1sCmluZGV4IDcyMmM3NWIw
NTI1Y2UyMjM2MzkzMTMzMjgyMTM5NmI3MTMzNzk5YWIuLmZlMjA0ZGZiODZhZDkzYmM2Yjg0Yzk1
OTNkNzgyNjhmZTk0Mjg2MDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlz
dG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1iZWZvcmUtbG9hZC5odG1sCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1iZWZvcmUtbG9hZC5o
dG1sCkBAIC00LDcgKzQsNyBAQAogCiA8c2NyaXB0PgogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiB9CiBsb2NhdGlvbiA9ICJyZXNvdXJj
ZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwjMSI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24taHJlZi0wLXNlY29uZHMuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1ocmVm
LTAtc2Vjb25kcy5odG1sCmluZGV4IDNlODRkMWU3YjNmNDg3NTU2MDUxMDAzNDE3OGYyYjI2MWJi
YTdhMDQuLjEwNGQwZTUzY2JkNGY4ZjNlY2IyMjk3MzdjMjMyMzRhMzk0MThjZGEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1o
cmVmLTAtc2Vjb25kcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9y
ZWRpcmVjdC1qcy1sb2NhdGlvbi1ocmVmLTAtc2Vjb25kcy5odG1sCkBAIC00LDcgKzQsNyBAQAog
CiA8c2NyaXB0PgogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CiB9CiBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgbG9jYXRpb24uaHJlZiA9
ICJyZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwjMSI7IH0sIDApOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWhyZWYt
Mi1zZWNvbmRzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3Qt
anMtbG9jYXRpb24taHJlZi0yLXNlY29uZHMuaHRtbAppbmRleCA4MDgzMTg1NWM1ZWViMjJkOTU2
YWU0NGJlYTE4MjQ4NTdhOTlkMDMxLi4yOTlhNDQ5MDg3N2Y3NjQ0NGI0YWE5ODZkYjcwZWY3ZDIz
NDliMTM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJl
Y3QtanMtbG9jYXRpb24taHJlZi0yLXNlY29uZHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24taHJlZi0yLXNlY29uZHMuaHRtbApA
QCAtNCw3ICs0LDcgQEAKIAogPHNjcmlwdD4KIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5rZWVwV2ViSGlzdG9yeSgpOworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CiAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogfQogc2V0VGltZW91dChmdW5jdGlvbiAoKSB7
IGxvY2F0aW9uLmhyZWYgPSAicmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzEiOyB9LCAy
MDAwKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVj
dC1qcy1sb2NhdGlvbi1ocmVmLWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1ocmVmLWJlZm9yZS1sb2Fk
LWV4cGVjdGVkLnR4dAppbmRleCAzY2M5YzZiOTkxNGE2MWMxNzM3YjRkMjM3OGJhOTdhNGZkODg4
ZWI4Li4wNjJiNjliNGEwYmJjMGFmMGFmMDM5OGVmYWY1MjNjNzA1NTBhMTE3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24taHJl
Zi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9o
aXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWhyZWYtYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0
CkBAIC0xLDkgKzEsOCBAQAogVGhpcyBwYWdlIGlzIHRoZSB0YXJnZXQgb2YgYSByZWRpcmVjdC4K
IAotRkFJTDogSGlzdG9yeSBpdGVtIGNvdW50IHNob3VsZCBiZSAxIGJ1dCBpbnN0ZWFkIGlzIDIu
CitQQVNTOiBIaXN0b3J5IGl0ZW0gY291bnQgc2hvdWxkIGJlIDEgYW5kIGlzLgogCiAKID09PT09
PT09PT09PT09IEJhY2sgRm9yd2FyZCBMaXN0ID09PT09PT09PT09PT09Ci0gICAgICAgIGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWhyZWYtYmVmb3Jl
LWxvYWQuaHRtbCAgKipuYXYgdGFyZ2V0KioKIGN1cnItPiAgaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2hpc3RvcnkvcmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzEgICoqbmF2IHRhcmdldCoq
CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9u
LWhyZWYtYmVmb3JlLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9y
ZWRpcmVjdC1qcy1sb2NhdGlvbi1ocmVmLWJlZm9yZS1sb2FkLmh0bWwKaW5kZXggYjk2M2NjZDhl
OTMyYTUzODc3NTlmYTQ5Nzc1MjE5YzdlNTBkNDhlZC4uNjg2MmVkNTliZmQ3MWU3NzhmMWNkODVk
MjA2M2RkMDk1MzRiNGZmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0
b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWhyZWYtYmVmb3JlLWxvYWQuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24taHJlZi1iZWZv
cmUtbG9hZC5odG1sCkBAIC00LDcgKzQsNyBAQAogCiA8c2NyaXB0PgogaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmtlZXBXZWJIaXN0
b3J5KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsK
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiB9CiBsb2NhdGlvbi5o
cmVmID0gInJlc291cmNlcy9yZWRpcmVjdC10YXJnZXQuaHRtbCMxIjsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1yZXBsYWNl
LTAtc2Vjb25kcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0
LWpzLWxvY2F0aW9uLXJlcGxhY2UtMC1zZWNvbmRzLmh0bWwKaW5kZXggMDVjMGNhNGI3Nzg0NzE1
NTFmN2ZlMTc5NTZjMzk3NTI1ZTQyZWUzOS4uOWE3MDU3YmI4ZWM4ZDRiM2MxZjc1NmNiYjYyOWI3
OTQ1ZjdiMGMwMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jl
ZGlyZWN0LWpzLWxvY2F0aW9uLXJlcGxhY2UtMC1zZWNvbmRzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLXJlcGxhY2UtMC1zZWNv
bmRzLmh0bWwKQEAgLTQsNyArNCw3IEBACiAKIDxzY3JpcHQ+CiBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIua2VlcFdlYkhpc3Rvcnko
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOwogICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKIH0KIHNldFRpbWVvdXQoZnVu
Y3Rpb24gKCkgeyBsb2NhdGlvbi5yZXBsYWNlKCJyZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0
bWwjMSIpOyB9LCAwKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9y
eS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1yZXBsYWNlLTItc2Vjb25kcy5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLXJlcGxhY2UtMi1zZWNv
bmRzLmh0bWwKaW5kZXggMmMzMTU4ODc3YTY3MTYzMTg4NGJiMTA3MjZiNjllYTZkZDFmMGVjYS4u
MGZhNDQ4ZTVjNjJlNDQ2MjBmMzBkZjFiZTdiYjVhMjJmY2E3YWMyNCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLXJlcGxhY2Ut
Mi1zZWNvbmRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGly
ZWN0LWpzLWxvY2F0aW9uLXJlcGxhY2UtMi1zZWNvbmRzLmh0bWwKQEAgLTQsNyArNCw3IEBACiAK
IDxzY3JpcHQ+CiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIua2VlcFdlYkhpc3RvcnkoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOwogICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKIH0KIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBsb2NhdGlvbi5yZXBsYWNl
KCJyZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwjMSIpOyB9LCAyMDAwKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1y
ZXBsYWNlLWJlZm9yZS1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rvcnkv
cmVkaXJlY3QtanMtbG9jYXRpb24tcmVwbGFjZS1iZWZvcmUtbG9hZC5odG1sCmluZGV4IDMyMjY2
YTY2NzI2ODBkNDI2ODk4YzliZTBlMTU4ZjA5YTQwZjdkNDkuLjMzZDVlYTA4YjY5YjgwYmZjNTUw
M2FlOTM4MTMzMzBlNzAyODY3ZjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1yZXBsYWNlLWJlZm9yZS1sb2FkLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLXJl
cGxhY2UtYmVmb3JlLWxvYWQuaHRtbApAQCAtNCw3ICs0LDcgQEAKIAogPHNjcmlwdD4KIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5r
ZWVwV2ViSGlzdG9yeSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0Zvcndh
cmRMaXN0KCk7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogfQog
bG9jYXRpb24ucmVwbGFjZSgicmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzEiKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1tZXRhLXJl
ZnJlc2gtMC1zZWNvbmRzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVk
aXJlY3QtbWV0YS1yZWZyZXNoLTAtc2Vjb25kcy5odG1sCmluZGV4IDZlNzhlYzU2Njk5ZGVhNzkx
YzY1NWU3YWZhNWQwZGJkOTlhZDRjMzYuLjBmMGUxNzFlZTExNmJiYmJhYjE1NzczZTk4YTZkODlm
M2FkNGIyYjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRp
cmVjdC1tZXRhLXJlZnJlc2gtMC1zZWNvbmRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LW1ldGEtcmVmcmVzaC0wLXNlY29uZHMuaHRtbApAQCAtNCw3
ICs0LDcgQEAKIDx0aXRsZT5NZXRhIFJlZnJlc2ggUmVkaXJlY3Q8L3RpdGxlPgogPHNjcmlwdD4K
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5rZWVwV2ViSGlzdG9yeSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFj
a0ZvcndhcmRMaXN0KCk7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OwogfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rv
cnkvcmVkaXJlY3QtbWV0YS1yZWZyZXNoLTItc2Vjb25kcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LW1ldGEtcmVmcmVzaC0yLXNlY29uZHMuaHRtbAppbmRl
eCBiOWY2NTQ5NDNhNGE2OTQzMzJkNzRmNTBmYmI3YTc5NTYyMDgwYjU3Li5lOGQ3ODMzMjViZmI4
ZDg0MGMwOTE4ZDlhMzJlNzhiYjU3NjA5NGY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtbWV0YS1yZWZyZXNoLTItc2Vjb25kcy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1tZXRhLXJlZnJlc2gtMi1z
ZWNvbmRzLmh0bWwKQEAgLTQsNyArNCw3IEBACiA8dGl0bGU+TWV0YSBSZWZyZXNoIFJlZGlyZWN0
PC90aXRsZT4KIDxzY3JpcHQ+CiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIua2VlcFdlYkhpc3RvcnkoKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOwogICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKIH0KIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jlc291cmNlcy9yZWRpcmVjdC1oZWxwZXIucGwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVzb3VyY2VzL3JlZGlyZWN0LWhlbHBlci5wbApu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44MGYyZTdkYTNhNDk3MTFjZTYwN2M3NmIzYTE4ZGYyM2E1MTAzOGVlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jlc291cmNlcy9y
ZWRpcmVjdC1oZWxwZXIucGwKQEAgLTAsMCArMSwyNSBAQAorIyEvdXNyL2Jpbi9wZXJsCisjIFNj
cmlwdCB0byBnZW5lcmF0ZSBhIDMweCBIVFRQIHJlZGlyZWN0IChkZXRlcm1pbmVkIGJ5IHRoZSBx
dWVyeSBwYXJhbWV0ZXIpCisKKyRSRURJUkVDVF9DT0RFID0gJEVOVnsnUVVFUllfU1RSSU5HJ30g
fHwgJzMwMSc7CisKKyRTVEFUVVNfVEVYVFMgPSB7CisgICczMDEnID0+ICdNb3ZlZCBQZXJtYW5l
bnRseScsCisgICczMDInID0+ICdNb3ZlZCBUZW1wb3JhcmlseScsCisgICczMDMnID0+ICdTZWUg
T3RoZXInLAorICAnMzA3JyA9PiAnTW92ZWQgVGVtcG9yYXJpbHknCit9OworCitwcmludCAiU3Rh
dHVzOiAkUkVESVJFQ1RfQ09ERSAkU1RBVFVTX1RFWFRTeyRSRURJUkVDVF9DT0RFfVxyXG4iOwor
cHJpbnQgIkxvY2F0aW9uOiByZWRpcmVjdC10YXJnZXQuaHRtbCMyXHJcbiI7CitwcmludCAiQ29u
dGVudC10eXBlOiB0ZXh0L2h0bWxcclxuIjsKK3ByaW50ICJcclxuIjsKKworcHJpbnQgPDxIRVJF
X0RPQ19FTkQKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+JFJFRElSRUNUX0NPREUgUmVkaXJlY3Q8
L3RpdGxlPgorCis8Ym9keT5UaGlzIHBhZ2UgaXMgYSAkUkVESVJFQ1RfQ09ERSByZWRpcmVjdC48
L2JvZHk+Cis8L2h0bWw+CitIRVJFX0RPQ19FTkQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaGlzdG9yeS9yZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sCmlu
ZGV4IGIzZWE0ZWU5MWRmNTkyNmE3Y2YzYTQ2MjUyYWFkMzY3M2Y5MTNiMDkuLjkyMDU5YWVkYzM1
MDAxYmU2OWNjNTlkN2I0ZjFjNGYxNmU4YWZhZjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaGlzdG9yeS9yZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jlc291cmNlcy9yZWRpcmVjdC10YXJnZXQuaHRt
bApAQCAtMTQsNyArMTQsNyBAQCBmdW5jdGlvbiBsb2cocykKIGZ1bmN0aW9uIHRlc3RIaXN0b3J5
SXRlbUNvdW50KCkKIHsKICAgICB2YXIgZXhwZWN0ZWQgPSBwYXJzZUludChsb2NhdGlvbi5oYXNo
LnNsaWNlKDEpKTsKLSAgICB2YXIgYWN0dWFsID0gbGF5b3V0VGVzdENvbnRyb2xsZXIud2ViSGlz
dG9yeUl0ZW1Db3VudCArIDE7IC8vIEFkZCBvbmUgdG8gaW5jbHVkZSB0aGUgcmVmZXJyaW5nIHBh
Z2UsIHdoaWNoIGxvYWRlZCBiZWZvcmUgd2Ugc3RhcnRlZCByZWNvcmRpbmcgaGlzdG9yeS4KKyAg
ICB2YXIgYWN0dWFsID0gaGlzdG9yeS5sZW5ndGg7CiAgICAgaWYgKGFjdHVhbCA9PT0gZXhwZWN0
ZWQpCiAgICAgICAgIGxvZygiUEFTUzogSGlzdG9yeSBpdGVtIGNvdW50IHNob3VsZCBiZSAiICsg
ZXhwZWN0ZWQgKyAiIGFuZCBpcy4iKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2RvY3VtZW50LWxvY2F0aW9uLmpzIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9kb2N1bWVudC1sb2Nh
dGlvbi5qcwppbmRleCAxZGI0OGNkZmZiNmM4ZGNhNWVmZmNkZTYxZjRkMzBjZWQ4MmZhOWUzLi5h
MGFiNGQ4MzI5YjYwMzhhMjlhNDNmNGRiODY0ZDI1Y2QxYWNjMmEwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2RvY3VtZW50LWxvY2F0aW9u
LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZG9j
dW1lbnQtbG9jYXRpb24uanMKQEAgLTcsNyArNyw4IEBAIGZ1bmN0aW9uIHN0YXJ0KCkgewogICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwogICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogCi0gICAgICBydW5UZXN0KCk7CisgICAgICAvLyBM
b2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVy
IHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAgICAgIHNldFRpbWVvdXQocnVuVGVzdCwg
MCk7CiAgICAgfSBlbHNlIHsKICAgICAgIC8vIGxvYWRlZCB0aGUgPzEgbmF2aWdhdGlvbgogICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc2VjdXJpdHkvYXV0b2NvbXBsZXRlLWNsZWFyZWQtb24tYmFjay5odG1sIGIvTGF5b3V0
VGVzdHMvc2VjdXJpdHkvYXV0b2NvbXBsZXRlLWNsZWFyZWQtb24tYmFjay5odG1sCmluZGV4IDA4
MDE4ODFiYzc4OGM4OTJkMWMxMTI5YzE5MWEzMDdhNWIwOWZhNWUuLjk2YzlkODFjOTU2YTdjOGI4
NWY3YTZhZTdhZWUxYmNhM2E3YzI5ZTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3NlY3VyaXR5
L2F1dG9jb21wbGV0ZS1jbGVhcmVkLW9uLWJhY2suaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zZWN1
cml0eS9hdXRvY29tcGxldGUtY2xlYXJlZC1vbi1iYWNrLmh0bWwKQEAgLTE5LDcgKzE5LDggQEAg
ZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgaWYgKCFzZXNzaW9uU3RvcmFnZS5zZWNvbmRQYWdlUmVh
Y2hlZCkgewogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlyc3RJbnB1dCIpLnZh
bHVlID0gIlN1cGVyU2Vla3JpdFZhbHVlIjsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInNlY29uZElucHV0IikudmFsdWUgPSAiU3VwZXJTZWVrcml0VmFsdWUiOwotICAgICAgICB3
aW5kb3cubG9jYXRpb24gPSAicmVzb3VyY2VzL2F1dG9jb21wbGV0ZS1jbGVhcmVkLW9uLWJhY2sy
Lmh0bWwiOworICAgICAgICAvLyBMb2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNp
ZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHt3aW5kb3cubG9jYXRpb24gPSAicmVzb3VyY2VzL2F1
dG9jb21wbGV0ZS1jbGVhcmVkLW9uLWJhY2syLmh0bWwiO30sIDApOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9oYXNoLWNoYW5n
ZS13aXRoLXhoci5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14aHIu
anMKaW5kZXggNDI5MDY4MWVhODJmYWM2ZmIwYmVhNTQzYWYzMzUxYjg5Y2E1MTUwNi4uN2Y1NmY3
OTVhMTgyZTFhODFkYWZiNjQwMGVjODNjOGMzMGMwZDVmYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLmpzCkBAIC04MSw2ICs4MSwxMiBAQCBmdW5jdGlvbiBp
bnZva2VCYWNrKCkKIAogZnVuY3Rpb24gcnVuVGVzdCgpCiB7CisgICAgLy8gTG9jYXRpb24gY2hh
bmdlcyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRoZSBvbmxvYWQgaGFuZGxlciB0byBnZW5lcmF0
ZSBoaXN0b3J5IGVudHJpZXMuCisgICAgc2V0VGltZW91dChydW5UZXN0c0lubmVyLCAwKTsKK30K
KworZnVuY3Rpb24gcnVuVGVzdHNJbm5lcigpCit7CiAgICAgYmFja0l0ZXJhdGlvbnMgPSAxMDsK
ICAgICBjb25zZWN1dGl2ZUZhaWx1cmVzID0gMDsKICAgICBzdWNjZXNzZXMgPSAwOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0YjZkOWYx
ZWJjYzllMjM2NGMxMzhiYjk3NGFiNjA5YzQzNDFiMDI2Li5iYTNlMjk4ZmM2MGZjNzhkN2IwYjVm
ZTM3YjhjNjgyNzFmNDJiNjUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEwLTA4LTAyICBNaWhhaSBQYXJw
YXJpdGEgIDxtaWhhaXBAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFNlc3Npb24gaGlzdG9yeSBzaG91bGQgc2tpcCBvdmVyIEpT
IHJlZGlyZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDI4NjEKKyAgICAgICAgCisgICAgICAgIExvY2sgdGhlIGJhY2svZm9yd2FyZCBsaXN0IGZv
ciBsb2NhdGlvbiBjaGFuZ2VzIHRoYXQgaGFwcGVuIGJlZm9yZSB0aGUgCisgICAgICAgIG9ubG9h
ZCBldmVudCBmaXJlcyB0aGF0IGFyZSBub3QgdGhlIHJlc3VsdCBvZiB1c2VyIGdlc3R1cmVzLgor
CisgICAgICAgIFRlc3Q6IGZhc3QvaGlzdG9yeS9nZXN0dXJlLWJlZm9yZS1vbmxvYWQuaHRtbCBh
bmQgdXBkYXRlZCBleHBlY3RhdGlvbnMgCisgICAgICAgIGZvciBodHRwL3Rlc3RzL2hpc3Rvcnkg
dGVzdHMgdGhhdCB1c2VkIHRvIGZhaWwuCisKKyAgICAgICAgKiBsb2FkZXIvUmVkaXJlY3RTY2hl
ZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxl
UmVkaXJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6Om11c3RMb2Nr
QmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1bGVyOjpz
Y2hlZHVsZUxvY2F0aW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1
bGVyOjpzY2hlZHVsZUZvcm1TdWJtaXNzaW9uKToKKyAgICAgICAgKiBsb2FkZXIvUmVkaXJlY3RT
Y2hlZHVsZXIuaDoKKwogMjAxMC0wOC0wMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1JlZGlyZWN0
U2NoZWR1bGVyLmNwcAppbmRleCAzY2ZlNjFhMDMwNDYzMzUyNzlmZDQ1Y2IzMGM4NTEzNzEzNGYx
OWY3Li5kODZlMjI2MTI5MDgwMDQxN2E3YTNlOWJjYTI4NDViY2Y3NTdiMjBmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHAKKysrIGIvV2ViQ29yZS9sb2Fk
ZXIvUmVkaXJlY3RTY2hlZHVsZXIuY3BwCkBAIC0yNDAsMTcgKzI0MCwyMSBAQCB2b2lkIFJlZGly
ZWN0U2NoZWR1bGVyOjpzY2hlZHVsZVJlZGlyZWN0KGRvdWJsZSBkZWxheSwgY29uc3QgU3RyaW5n
JiB1cmwpCiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8v
IFdlIHdhbnQgYSBuZXcgaGlzdG9yeSBpdGVtIGlmIHRoZSByZWZyZXNoIHRpbWVvdXQgaXMgPiAx
IHNlY29uZC4KKyAgICAvLyBXZSB3YW50IGEgbmV3IGJhY2sgZm9yd2FyZCBsaXN0IGl0ZW0gaWYg
dGhlIHJlZnJlc2ggdGltZW91dCBpcyA+IDEgc2Vjb25kLgogICAgIGlmICghbV9yZWRpcmVjdCB8
fCBkZWxheSA8PSBtX3JlZGlyZWN0LT5kZWxheSgpKQogICAgICAgICBzY2hlZHVsZShuZXcgU2No
ZWR1bGVkUmVkaXJlY3QoZGVsYXksIHVybCwgdHJ1ZSwgZGVsYXkgPD0gMSwgZmFsc2UpKTsKIH0K
IAotYm9vbCBSZWRpcmVjdFNjaGVkdWxlcjo6bXVzdExvY2tCYWNrRm9yd2FyZExpc3QoRnJhbWUq
IHRhcmdldEZyYW1lKQorYm9vbCBSZWRpcmVjdFNjaGVkdWxlcjo6bXVzdExvY2tCYWNrRm9yd2Fy
ZExpc3QoRnJhbWUqIHRhcmdldEZyYW1lLCBib29sIG11c3RMb2NrSWZEdXJpbmdMb2FkKQogewor
ICAgIC8vIE5vbi11c2VyIG5hdmlnYXRpb24gYmVmb3JlIHRoZSBwYWdlIGhhcyBsb2FkZWQgc2hv
dWxkIG5vdCBjcmVhdGUgYSBuZXcgYmFjay9mb3J3YXJkIGl0ZW0uCisgICAgLy8gU2VlIGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzQyODYxIGZvciB0aGUgb3JpZ2luYWwgbW90aXZhdGlvbiBmb3IgdGhp
cy4gICAgCisgICAgaWYgKG11c3RMb2NrSWZEdXJpbmdMb2FkICYmIHRhcmdldEZyYW1lLT5sb2Fk
ZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSAmJiB0YXJnZXRGcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50
TG9hZGVyKCktPmlzTG9hZGluZ0luQVBJU2Vuc2UoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgCiAgICAgLy8gTmF2aWdhdGlvbiBvZiBhIHN1YmZyYW1lIGR1cmluZyBsb2FkaW5nIG9mIGFu
IGFuY2VzdG9yIGZyYW1lIGRvZXMgbm90IGNyZWF0ZSBhIG5ldyBiYWNrL2ZvcndhcmQgaXRlbS4K
ICAgICAvLyBUaGUgZGVmaW5pdGlvbiBvZiAiZHVyaW5nIGxvYWQiIGlzIGFueSB0aW1lIGJlZm9y
ZSBhbGwgaGFuZGxlcnMgZm9yIHRoZSBsb2FkIGV2ZW50IGhhdmUgYmVlbiBydW4uCiAgICAgLy8g
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk1NyBmb3IgdGhl
IG9yaWdpbmFsIG1vdGl2YXRpb24gZm9yIHRoaXMuCi0KICAgICBmb3IgKEZyYW1lKiBhbmNlc3Rv
ciA9IHRhcmdldEZyYW1lLT50cmVlKCktPnBhcmVudCgpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBh
bmNlc3Rvci0+dHJlZSgpLT5wYXJlbnQoKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBhbmNlc3Rvci0+ZG9jdW1lbnQoKTsKICAgICAgICAgaWYgKCFhbmNlc3Rvci0+bG9hZGVyKCkt
PmlzQ29tcGxldGUoKSB8fCAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPnByb2Nlc3NpbmdMb2FkRXZl
bnQoKSkpCkBAIC0yNjYsNyArMjcwLDcgQEAgdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1
bGVMb2NhdGlvbkNoYW5nZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJgogICAgIGlm
ICh1cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBsb2NrQmFja0ZvcndhcmRM
aXN0ID0gbG9ja0JhY2tGb3J3YXJkTGlzdCB8fCBtdXN0TG9ja0JhY2tGb3J3YXJkTGlzdChtX2Zy
YW1lKTsKKyAgICBsb2NrQmFja0ZvcndhcmRMaXN0ID0gbG9ja0JhY2tGb3J3YXJkTGlzdCB8fCBt
dXN0TG9ja0JhY2tGb3J3YXJkTGlzdChtX2ZyYW1lLCAhd2FzVXNlckdlc3R1cmUpOwogCiAgICAg
RnJhbWVMb2FkZXIqIGxvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigpOwogICAgIApAQCAtMzAwLDcg
KzMwNCw3IEBAIHZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1Ym1pc3Npb24o
UGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gc3VibWlzCiAgICAgLy8gdG8gbWF0Y2ggSUUgYW5k
IE9wZXJhLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzIzODMgZm9yIHRoZSBvcmlnaW5hbCBtb3RpdmF0aW9uIGZvciB0aGlzLgogCi0gICAgYm9v
bCBsb2NrQmFja0ZvcndhcmRMaXN0ID0gbXVzdExvY2tCYWNrRm9yd2FyZExpc3QobV9mcmFtZSkg
fHwgKHN1Ym1pc3Npb24tPnN0YXRlKCktPmZvcm1TdWJtaXNzaW9uVHJpZ2dlcigpID09IFN1Ym1p
dHRlZEJ5SmF2YVNjcmlwdCAmJiBtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpKTsKKyAgICBib29s
IGxvY2tCYWNrRm9yd2FyZExpc3QgPSBtdXN0TG9ja0JhY2tGb3J3YXJkTGlzdChtX2ZyYW1lLCBm
YWxzZSkgfHwgKHN1Ym1pc3Npb24tPnN0YXRlKCktPmZvcm1TdWJtaXNzaW9uVHJpZ2dlcigpID09
IFN1Ym1pdHRlZEJ5SmF2YVNjcmlwdCAmJiBtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpKTsKIAog
ICAgIHNjaGVkdWxlKG5ldyBTY2hlZHVsZWRGb3JtU3VibWlzc2lvbihzdWJtaXNzaW9uLCBsb2Nr
QmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2FkKSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xv
YWRlci9SZWRpcmVjdFNjaGVkdWxlci5oIGIvV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hlZHVs
ZXIuaAppbmRleCBlOWQwNGRjNmQzNjk2MGE3NzZkZGY2MGVkODlhM2Q4YmI1MmQzNjY5Li5kZGI5
NmUxMDYwYTkyNmU3ZjBmNTFlMmM4YzUxOGU4NGViYzdiNDA0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL1JlZGlyZWN0
U2NoZWR1bGVyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRpbWVyRmly
ZWQoVGltZXI8UmVkaXJlY3RTY2hlZHVsZXI+Kik7CiAgICAgdm9pZCBzY2hlZHVsZShQYXNzT3du
UHRyPFNjaGVkdWxlZE5hdmlnYXRpb24+KTsKIAotICAgIHN0YXRpYyBib29sIG11c3RMb2NrQmFj
a0ZvcndhcmRMaXN0KEZyYW1lKiB0YXJnZXRGcmFtZSk7CisgICAgc3RhdGljIGJvb2wgbXVzdExv
Y2tCYWNrRm9yd2FyZExpc3QoRnJhbWUqIHRhcmdldEZyYW1lLCBib29sIG11c3RMb2NrSWZEdXJp
bmdMb2FkKTsKIAogICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgIFRpbWVyPFJlZGlyZWN0U2NoZWR1
bGVyPiBtX3RpbWVyOwpAQCAtNzksNCArNzksNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBGcmFtZUxvYWRlcl9oCisjZW5kaWYgLy8gUmVkaXJlY3RT
Y2hlZHVsZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63400</attachid>
            <date>2010-08-03 18:29:36 -0700</date>
            <delta_ts>2010-08-13 14:52:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42861-20100803182935.patch</filename>
            <type>text/plain</type>
            <size>82603</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlOGU5Y2YwMGEyY2VmYzk4ZGZjMWVmYWExMDNmNjNkZThjNjAyMmU0Li5mNGZmMTFm
OGQwMmU1NmIxNzk2MjhmMjdjNWRlNDIwMDZlMzdjMGNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAK
KzIwMTAtMDgtMDMgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Vzc2lvbiBoaXN0
b3J5IHNob3VsZCBza2lwIG92ZXIgSlMgcmVkaXJlY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjg2MQorICAgICAgICAKKyAgICAgICAgTG9jayB0
aGUgYmFjay9mb3J3YXJkIGxpc3QgZm9yIGxvY2F0aW9uIGNoYW5nZXMgYW5kIGZvcm0gc3VibWl0
cyB0aGF0CisgICAgICAgIGhhcHBlbiBiZWZvcmUgdGhlIG9ubG9hZCBldmVudCBmaXJlcyB0aGF0
IGFyZSBub3QgdGhlIHJlc3VsdCBvZiB1c2VyCisgICAgICAgIGdlc3R1cmVzLgorICAgICAgICAK
KyAgICAgICAgaHR0cC90ZXN0cy9oaXN0b3J5IHRlc3RzIG5vdyBwYXNzLCB0aGVpciBleHBlY3Rh
dGlvbnMgd2VyZSB1cGRhdGVkIAorICAgICAgICBhY2NvcmRpbmdseS4gT3RoZXIgdGVzdHMgbmVl
ZGVkIGEgc2V0VGltZW91dCB3cmFwcGVyIGFyb3VuZCBsb2NhdGlvbgorICAgICAgICBjaGFuZ2Vz
IGFuZCBmb3JtIHN1Ym1pdHMgZHVyaW5nIG9ubG9hZCwgb3RoZXJ3aXNlIHRoZXkgd291bGQgbm90
CisgICAgICAgIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcyBhcyBleHBlY3RlZCBhbnltb3JlLgor
ICAgICAgICAKKyAgICAgICAgKiBmYXN0L2Nzcy90YXJnZXQtZnJhZ21lbnQtbWF0Y2guaHRtbDoK
KyAgICAgICAgKiBmYXN0L2RvbS9sb2NhdGlvbi1oYXNoLmh0bWw6CisgICAgICAgICogZmFzdC9k
b20vV2luZG93L3RpbWVyLXJlc3VtZS1vbi1uYXZpZ2F0aW9uLWJhY2suaHRtbDoKKyAgICAgICAg
KiBmYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC13aXRoLWZyYW1l
cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUt
b24tYmFjay1jYWNoZWQtd2l0aC1mcmFtZXMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2J1
dHRvbi1zdGF0ZS1yZXN0b3JlLmh0bWw6CisgICAgICAgICogZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0
b3JlLXRvLW5vbi1hdXRvY29tcGxldGUtZm9ybS5odG1sOgorICAgICAgICAqIGZhc3QvZm9ybXMv
c3RhdGUtcmVzdG9yZS10by1ub24tZWRpdGVkLWNvbnRyb2xzLmh0bWw6CisgICAgICAgICogZmFz
dC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTEuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Zy
YW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMi5odG1sOgorICAgICAgICAqIGZhc3QvaGFybmVz
cy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMS5odG1sOgorICAgICAgICAqIGZhc3QvaGFybmVzcy9y
ZXNvdXJjZXMvY2FjaGVkLXBhZ2Utd2l0aC1kYXRhLXVybHMuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2hpc3RvcnkvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9oaXN0b3J5L2dlc3R1cmUtYmVmb3JlLW9ubG9hZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2hpc3RvcnkvaGlzdG9yeS1sZW5ndGguaHRtbDoKKyAgICAgICAgKiBmYXN0
L2hpc3RvcnkvcmVzb3VyY2VzL2dlc3R1cmUtYmVmb3JlLW9ubG9hZC10YXJnZXQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9oaXN0b3J5L3NhdmVzLXN0YXRlLWFmdGVyLWZyYWdtZW50LW5h
di5odG1sOgorICAgICAgICAqIGZhc3QvbG9hZGVyL2lucHV0LWVsZW1lbnQtcGFnZS1jYWNoZS1j
cmFzaC5odG1sOgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1k
ZXN0cm95ZWQtbmF2aWdhdGUtYmFjay5odG1sOgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRl
b2JqZWN0cy9wdXNoc3RhdGUtY2xlYXJzLWZvcndhcmQtaGlzdG9yeS5odG1sOgorICAgICAgICAq
IGZhc3QvbG9hZGVyL3N1YmZyYW1lLW5hdmlnYXRlLWR1cmluZy1tYWluLWZyYW1lLWxvYWQuaHRt
bDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2hpc3RvcnkvYmFjay10by1wb3N0LnBocDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZG9jdW1lbnQtbG9jYXRpb24tYmVm
b3JlLWxvYWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvaGlzdG9yeS9yZWRp
cmVjdC1qcy1mb3JtLXN1Ym1pdC1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWFzc2lnbi1iZWZvcmUtbG9h
ZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpz
LWxvY2F0aW9uLWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24taHJlZi1iZWZvcmUtbG9hZC1leHBlY3RlZC50
eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nLzMwNy1hZnRlci0zMDMtYWZ0ZXItcG9z
dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL3JlZGlyZWN0LW1l
dGhvZHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNv
dXJjZXMvYmFjay1zZW5kLXJlZmVycmVyLWhlbHBlci5waHA6CisgICAgICAgICogaHR0cC90ZXN0
cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9kb2N1bWVudC1sb2NhdGlvbi5qczoKKyAgICAgICAgKHN0
YXJ0KToKKyAgICAgICAgKiBzZWN1cml0eS9hdXRvY29tcGxldGUtY2xlYXJlZC1vbi1iYWNrLmh0
bWw6CisgICAgICAgICogc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5qczoKKyAgICAgICAg
KHVwZGF0ZURhdGFiYXNlKToKKyAgICAgICAgKGludm9rZUJhY2spOgorICAgICAgICAocnVuVGVz
dCk6CisgICAgICAgIChydW5UZXN0c0lubmVyKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL25hdmln
YXRpb24vcmVzb3VyY2VzL3N1Ym1pdC10by1mcmFnbWVudC5wbDoKKwogMjAxMC0wOC0wMiAgQ3Nh
YmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQu
IFVwZGF0ZSBRdCBzcGVjaWZpYyBleHBlY3RlZCByZXN1bHQgYWZ0ZXIgcjY0NDcxLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdGFyZ2V0LWZyYWdtZW50LW1hdGNoLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy90YXJnZXQtZnJhZ21lbnQtbWF0Y2guaHRtbAppbmRleCA5ZTk5
ZDQ3ODVjZjZjZDYzMDVkMDEzNDMzMzdkODU3Yzg4ZDYxMzg3Li5hMmI2OTdmODE0Y2JmMzIxNGU0
YTkwYjA5ZmVhMmFjZTNkOTJiMjM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy90
YXJnZXQtZnJhZ21lbnQtbWF0Y2guaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy90YXJn
ZXQtZnJhZ21lbnQtbWF0Y2guaHRtbApAQCAtMTEsNiArMTEsMTIgQEAgZnVuY3Rpb24gdGVzdCgp
CiB7CiAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgLy8gTG9jYXRpb24gY2hhbmdl
cyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRoZSBvbmxvYWQgaGFuZGxlciB0byBnZW5lcmF0ZSBo
aXN0b3J5IGVudHJpZXMuCisgICAgc2V0VGltZW91dChydW5UZXN0LCAwKTsKK30KKworZnVuY3Rp
b24gcnVuVGVzdCgpIHsKICAgICB3aW5kb3cubG9jYXRpb24uaGFzaCA9JyN0YXJnZXQtMDEnOwog
ICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwogICAgIHdpbmRvdy5oaXN0b3J5LmJhY2soKTsg
Ly8gVGhpcyBxdWV1ZXMgdXAgYSBuYXZpZ2F0aW9uLCBzbyB3ZSBuZWVkIHRvIGRlbGF5IHRoZSBj
YWxsIHRvIG5vdGlmeURvbmUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvdGltZXItcmVzdW1lLW9uLW5hdmlnYXRpb24tYmFjay5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L3RpbWVyLXJlc3VtZS1vbi1uYXZpZ2F0aW9uLWJhY2suaHRtbAppbmRleCBm
N2VhNzZiMGNiOGM2ZTU3NTIyZDZiN2FjMGJhYzViOGQxZTgzN2I0Li5iNDZmYjI1NmMxZjViOTc2
YmU1YTk1NDQwOTMyNzg1NDE5NmYyM2ZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9XaW5kb3cvdGltZXItcmVzdW1lLW9uLW5hdmlnYXRpb24tYmFjay5odG1sCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy90aW1lci1yZXN1bWUtb24tbmF2aWdhdGlvbi1iYWNrLmh0
bWwKQEAgLTE4LDkgKzE4LDEyIEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5Iiwg
MSk7CiAgICAgfQotICAgIHdpbmRvdy5zZXRUaW1lb3V0KCJ2ZXJpZnkoKSIsIHRpbWVvdXRWYWx1
ZSk7Ci0gICAgdGltZXN0YW1wID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7Ci0gICAgd2luZG93Lmxv
Y2F0aW9uLmhyZWYgPSAiZGF0YTp0ZXh0L2h0bWwsPGJvZHkgb25sb2FkPSdoaXN0b3J5LmJhY2so
KSc+PC9ib2R5PiI7CisgICAgLy8gTG9jYXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBvdXRz
aWRlIHRoZSBvbmxvYWQgaGFuZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCisgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KHZlcmlmeSwg
dGltZW91dFZhbHVlKTsKKyAgICAgIHRpbWVzdGFtcCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOwor
ICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAiZGF0YTp0ZXh0L2h0bWwsPGJvZHkgb25sb2Fk
PSdoaXN0b3J5LmJhY2soKSc+PC9ib2R5PiI7CisgICAgfSwgMCk7CiB9CiAKIDwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbG9jYXRpb24taGFzaC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vbG9jYXRpb24taGFzaC5odG1sCmluZGV4IGIyNmU5MDZjNDg1YWNh
OGY2YjJmMzA4NmE5MGJhYzU0Y2U1Mjc2NjEuLmY1ODBmNTJhZDBiOGU0Y2RhZTBkZjk0YjMzMDlm
NTc2NmQ4NWE5MTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2xvY2F0aW9uLWhh
c2guaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9sb2NhdGlvbi1oYXNoLmh0bWwKQEAg
LTg3LDggKzg3LDkgQEAKICAgICAgICAgbnVtRXJyb3JzID0gMDsKICAgICAgICAgb3JpZ2luYWxM
b2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmOwogICAgICAgICBvcmlnaW5hbEhpc3RvcnlM
ZW5ndGggPSB3aW5kb3cuaGlzdG9yeS5sZW5ndGg7Ci0gICAgIAotICAgICAgICBzdGVwKCk7CisK
KyAgICAgICAgLy8gTG9jYXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRoZSBv
bmxvYWQgaGFuZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCisgICAgICAgIHNldFRp
bWVvdXQoc3RlcCwgMCk7CiAgICAgfQogICAgIDwvc2NyaXB0PgogPC9oZWFkPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUtb24tYmFjay1jYWNo
ZWQtd2l0aC1mcmFtZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFn
ZXNob3ctcGFnZWhpZGUtb24tYmFjay1jYWNoZWQtd2l0aC1mcmFtZXMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDFlZTY5YTFjNDRjMjVhNTJkYTBjZTRhNGU4OGY0M2NmMDM1NzIyYjMuLjk0ZjI0ZTY2ZDk5
ZTdmNjc2MDkxYmY4ZWQ0ZTZmY2NmYzdlYTI4NzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLXdpdGgtZnJhbWVzLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlk
ZS1vbi1iYWNrLWNhY2hlZC13aXRoLWZyYW1lcy1leHBlY3RlZC50eHQKQEAgLTEsMTYgKzEsMTYg
QEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMDogKioqVG9wIGxldmVsIGZyYW1lIGJlaW5nIHBh
cnNlZCBmb3IgdGhlIGluaXRpYWwgcGFnZSBsb2FkKioqCitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
MjA6IFN1YnN1YmZyYW1lIHdpbmRvdy5vbmxvYWQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMDog
U3Vic3ViZnJhbWUgd2luZG93Lm9ucGFnZXNob3csIHRhcmdldCA9IFtvYmplY3QgSFRNTERvY3Vt
ZW50XSwgcGVyc2lzdGVkID0gZmFsc2UKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMDogU3ViZnJh
bWUgd2luZG93Lm9ubG9hZAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIwOiBTdWJmcmFtZSB3aW5k
b3cub25wYWdlc2hvdywgdGFyZ2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRdLCBwZXJzaXN0ZWQg
PSBmYWxzZQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIwOiBNYWluIGZyYW1lIHdpbmRvdy5vbmxv
YWQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMDogTWFpbiBmcmFtZSB3aW5kb3cub25wYWdlc2hv
dywgdGFyZ2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRdLCBwZXJzaXN0ZWQgPSBmYWxzZQorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDIwOiAqKipOYXZpZ2F0aW5nIHRvcC1sZXZlbCBmcmFtZSB0byBh
IHBhZ2UgdGhhdCB3aWxsIGltbWVkaWF0ZWx5IG5hdmlnYXRlIGJhY2sgdG8gdGhpcyBvbmUqKioK
K0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMDogTWFpbiBmcmFtZSB3aW5kb3cub25wYWdlaGlkZSwg
dGFyZ2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRdLCBwZXJzaXN0ZWQgPSB0cnVlCitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgMjA6IFN1YmZyYW1lIHdpbmRvdy5vbnBhZ2VoaWRlLCB0YXJnZXQgPSBb
b2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IHRydWUKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSAyMDogU3Vic3ViZnJhbWUgd2luZG93Lm9ucGFnZWhpZGUsIHRhcmdldCA9IFtvYmplY3Qg
SFRNTERvY3VtZW50XSwgcGVyc2lzdGVkID0gdHJ1ZQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIw
OiBTdWJzdWJmcmFtZSB3aW5kb3cub25wYWdlc2hvdywgdGFyZ2V0ID0gW29iamVjdCBIVE1MRG9j
dW1lbnRdLCBwZXJzaXN0ZWQgPSB0cnVlCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjA6IFN1YmZy
YW1lIHdpbmRvdy5vbnBhZ2VzaG93LCB0YXJnZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBl
cnNpc3RlZCA9IHRydWUKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMDogTWFpbiBmcmFtZSB3aW5k
b3cub25wYWdlc2hvdywgdGFyZ2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRdLCBwZXJzaXN0ZWQg
PSB0cnVlCiBUZXN0IHBhZ2VzaG93L3BhZ2VoaWRlIGV2ZW50IGJlaGF2aW9yIHdoZW4gbmF2aWdh
dGluZyBhd2F5IGZyb20gYSBwYWdlIHdpdGggZnJhbWVzLCBwdXR0aW5nIHRoZSBwYWdlIGluIHRo
ZSBwYWdlIGNhY2hlLCB0aGVuIGJhY2sgdG8gaXQuCi0qKipUb3AgbGV2ZWwgZnJhbWUgYmVpbmcg
cGFyc2VkIGZvciB0aGUgaW5pdGlhbCBwYWdlIGxvYWQqKioKLVN1YnN1YmZyYW1lIHdpbmRvdy5v
bmxvYWQKLVN1YnN1YmZyYW1lIHdpbmRvdy5vbnBhZ2VzaG93LCB0YXJnZXQgPSBbb2JqZWN0IEhU
TUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IGZhbHNlCi1TdWJmcmFtZSB3aW5kb3cub25sb2FkCi1T
dWJmcmFtZSB3aW5kb3cub25wYWdlc2hvdywgdGFyZ2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRd
LCBwZXJzaXN0ZWQgPSBmYWxzZQotTWFpbiBmcmFtZSB3aW5kb3cub25sb2FkCi1NYWluIGZyYW1l
IHdpbmRvdy5vbnBhZ2VzaG93LCB0YXJnZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNp
c3RlZCA9IGZhbHNlCi0qKipOYXZpZ2F0aW5nIHRvcC1sZXZlbCBmcmFtZSB0byBhIHBhZ2UgdGhh
dCB3aWxsIGltbWVkaWF0ZWx5IG5hdmlnYXRlIGJhY2sgdG8gdGhpcyBvbmUqKioKLU1haW4gZnJh
bWUgd2luZG93Lm9ucGFnZWhpZGUsIHRhcmdldCA9IFtvYmplY3QgSFRNTERvY3VtZW50XSwgcGVy
c2lzdGVkID0gdHJ1ZQotU3ViZnJhbWUgd2luZG93Lm9ucGFnZWhpZGUsIHRhcmdldCA9IFtvYmpl
Y3QgSFRNTERvY3VtZW50XSwgcGVyc2lzdGVkID0gdHJ1ZQotU3Vic3ViZnJhbWUgd2luZG93Lm9u
cGFnZWhpZGUsIHRhcmdldCA9IFtvYmplY3QgSFRNTERvY3VtZW50XSwgcGVyc2lzdGVkID0gdHJ1
ZQotU3Vic3ViZnJhbWUgd2luZG93Lm9ucGFnZXNob3csIHRhcmdldCA9IFtvYmplY3QgSFRNTERv
Y3VtZW50XSwgcGVyc2lzdGVkID0gdHJ1ZQotU3ViZnJhbWUgd2luZG93Lm9ucGFnZXNob3csIHRh
cmdldCA9IFtvYmplY3QgSFRNTERvY3VtZW50XSwgcGVyc2lzdGVkID0gdHJ1ZQotTWFpbiBmcmFt
ZSB3aW5kb3cub25wYWdlc2hvdywgdGFyZ2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRdLCBwZXJz
aXN0ZWQgPSB0cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2Vz
aG93LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLXdpdGgtZnJhbWVzLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC13aXRoLWZyYW1l
cy5odG1sCmluZGV4IDcyZTE2NTg4MmYxNzc4NTc1MjA2N2UwOWFjMjdjMjg0YTk5NDlhODguLjQ4
OWMwOTA3NGVkMjkxM2ViY2RiZmMyNmU5Mzc5N2ZiNGExNTViMjggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLXdpdGgt
ZnJhbWVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZXNob3ctcGFnZWhp
ZGUtb24tYmFjay1jYWNoZWQtd2l0aC1mcmFtZXMuaHRtbApAQCAtMTQsOCArMTQsMTAgQEAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkK
IHsKLSAgICB2YXIgbG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpOwotICAgIGxv
Zy5pbm5lckhUTUwgKz0gbWVzc2FnZSArICJcbiI7CisgICAgLy8gTG9nZ2luZyB0byB0aGUgY29u
c29sZSBpbnN0ZWFkIG9mIHRoZSAibG9nIiBESVYgaW4gdGhlIERPTSBiZWNhdXNlCisgICAgLy8g
b3RoZXJ3aXNlIHdlIHRyaWdnZXIgdGhlIGFzc2VydCBtZW50aW9uZWQgYXQgaHR0cDovL3dlYmtp
dC5vcmcvYi80MzE1MgorICAgIC8vIChzaW5jZSB3ZSBsb2cgZHVyaW5nIHBhZ2VoaWRlKQorICAg
IGNvbnNvbGUubG9nKG1lc3NhZ2UpOwogfQogCiBsb2coIioqKlRvcCBsZXZlbCBmcmFtZSBiZWlu
ZyBwYXJzZWQgZm9yIHRoZSBpbml0aWFsIHBhZ2UgbG9hZCoqKiIpOwpAQCAtMzEsNyArMzMsOCBA
QCB3aW5kb3cub25wYWdlc2hvdyA9IGZ1bmN0aW9uKGV2dCkgewogICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGxvZygi
KioqTmF2aWdhdGluZyB0b3AtbGV2ZWwgZnJhbWUgdG8gYSBwYWdlIHRoYXQgd2lsbCBpbW1lZGlh
dGVseSBuYXZpZ2F0ZSBiYWNrIHRvIHRoaXMgb25lKioqIik7Ci0gICAgICAgIHdpbmRvdy5sb2Nh
dGlvbi5ocmVmID0gImRhdGE6dGV4dC9odG1sLDxzY3JpcHQ+aGlzdG9yeS5iYWNrKCk7PC9zY3Ii
ICsgImlwdD4iOworICAgICAgICAvLyBMb2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91
dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHt3aW5kb3cubG9jYXRpb24uaHJlZiA9ICJkYXRh
OnRleHQvaHRtbCw8c2NyaXB0Pmhpc3RvcnkuYmFjaygpOzwvc2NyIiArICJpcHQ+Ijt9LCAwKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYnV0dG9uLXN0
YXRlLXJlc3RvcmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYnV0dG9uLXN0YXRlLXJl
c3RvcmUuaHRtbAppbmRleCAyZjk3ZjdlZWNhMmVlMTJiY2NmNWIwZWI5NjUyMmQwYzhjNDdmODcx
Li40MzY4YTQ5OTFiMDFlZTUyMTExNjY2ZDdlYTc4ZWVhMDhkOTIwM2RiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2J1dHRvbi1zdGF0ZS1yZXN0b3JlLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9idXR0b24tc3RhdGUtcmVzdG9yZS5odG1sCkBAIC0zMSw3ICsz
MSw5IEBACiAgICAgICAgICAgICBpbnB1dC52YWx1ZSA9ICJGQUlMIjsKIAogICAgICAgICAgICAg
dmFyIGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9ybSIpOwotICAgICAgICAgICAg
Zm9ybS5zdWJtaXQoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gU3VibWl0IGZvcm0g
aW4gYSB0aW1lb3V0IHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGNyZWF0ZSBhIG5ldyBiYWNrL2Zvcndh
cmQgbGlzdCBpdGVtLiAgICAgICAgICAgIAorICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHtmb3JtLnN1Ym1pdCgpO30sIDApOwogICAgICAgICB9CiAgICAgPC9zY3JpcHQ+CiA8L2hl
YWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdG8t
bm9uLWF1dG9jb21wbGV0ZS1mb3JtLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N0YXRl
LXJlc3RvcmUtdG8tbm9uLWF1dG9jb21wbGV0ZS1mb3JtLmh0bWwKaW5kZXggZjAwOTliNTZlOTQ5
NjZiMWU1ZWY0OTk0MzRhOTE5M2IyMDJkNDdmYS4uZGVlNWMzNzAzYzcwNWJlNmYwNGY1Nzk5YWE0
ZmVlNDExMGI3MDkxZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdGF0ZS1y
ZXN0b3JlLXRvLW5vbi1hdXRvY29tcGxldGUtZm9ybS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvc3RhdGUtcmVzdG9yZS10by1ub24tYXV0b2NvbXBsZXRlLWZvcm0uaHRtbApAQCAt
MzgsNyArMzgsOCBAQCBpZiAoIXN0YXRlLnZhbHVlKSB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2lucHV0MicpLnZhbHVlID0gJ3ZhbHVlMic7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3RleHRhcmVhMicpLnZhbHVlID0gJ2dvb2QnOwogICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdzZWxlY3QyJykudmFsdWUgPSAnQlNEJzsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZm9ybTInKS5zdWJtaXQoKTsKKyAgICAvLyBTdWJtaXQgZm9ybSBpbiBhIHRpbWVvdXQg
dG8gbWFrZSBzdXJlIHRoYXQgd2UgY3JlYXRlIGEgbmV3IGJhY2svZm9yd2FyZCBsaXN0IGl0ZW0u
ICAgICAgICAgICAgCisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnZm9ybTInKS5zdWJtaXQoKTt9LCAwKTsKIH0gZWxzZSB7CiAgICAgLy8gU2Vjb25k
IHZpc2l0LgogICAgIGRlYnVnKCdDb250cm9scyBpbiB0aGUgZmlyc3QgZm9ybSBzaG91bGQgaGF2
ZSB0aGVpciBkZWZhdWx0IHZhbHVlczonKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvc3RhdGUtcmVzdG9yZS10by1ub24tZWRpdGVkLWNvbnRyb2xzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdG8tbm9uLWVkaXRlZC1jb250cm9scy5odG1s
CmluZGV4IGUyYWE3ZTllMjM1ODRhMDhmZGJmNjE0OGFkN2ExZWZhYmYzZTA4MDAuLmIzYjI1YmQ5
MWE4MzA3YjRiY2Q2ODEyMDNlMjY3MmQyMDhhY2M2ZjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS10by1ub24tZWRpdGVkLWNvbnRyb2xzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXRvLW5vbi1lZGl0ZWQtY29u
dHJvbHMuaHRtbApAQCAtMzcsNyArMzcsOCBAQCBpZiAoIXN0YXRlLnZhbHVlKSB7CiAgICAgbWFr
ZUZvcm0ocGFyZW50LCAnMScsICcxJywgJzEnLCAnMScsICcxJywgJzEnLCAnMScsICcxJyk7CiAK
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dDEnKS52YWx1ZSA9ICdlZGl0JzsKLSAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ybTEnKS5zdWJtaXQoKTsKKyAgICAvLyBTdWJt
aXQgZm9ybSBpbiBhIHRpbWVvdXQgdG8gbWFrZSBzdXJlIHRoYXQgd2UgY3JlYXRlIGEgbmV3IGJh
Y2svZm9yd2FyZCBsaXN0IGl0ZW0uICAgICAgICAgICAgCisgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm9ybTEnKS5zdWJtaXQoKTt9LCAwKTsKIH0g
ZWxzZSB7CiAgICAgLy8gU2Vjb25kIHZpc2l0LgogICAgIG1ha2VGb3JtKHBhcmVudCwgJzInLCAn
MicsICcyJywgJzInLCAnMicsICcyJywgJzInLCAnMicpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTEuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0xLmh0bWwKaW5kZXggNjEwYzhkNDQ2
YzFkYTMzOTI3MGI4Nzc1ZjU2YTc1OGU5OTM2YTIyZi4uMjcxNTEwMmRiYTc4Y2FjNmIzODgyZDlh
NmNiZTM2OWFkZjAyNmNkMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVz
b3VyY2VzL2NhY2hlZC1wYWdlLTEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9y
ZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMS5odG1sCkBAIC0xNyw3ICsxNyw4IEBAIGZ1bmN0aW9uIGxv
YWROZXh0KCkgewogICAgIGludGVydmFsSWQgPSBzZXRJbnRlcnZhbChlbmRUZXN0LCAxMDApOwog
CiAgICAgd2luZG93Lm9wZW5lci5sb2coInBhZ2UtMSwgYWJvdXQgdG8gbmF2aWdhdGUgdG8gcGFn
ZS0yLiIpCi0gICAgbG9jYXRpb24uaHJlZiA9ICJjYWNoZWQtcGFnZS0yLmh0bWwiOworICAgIC8v
IExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0byBoYXBwZW4gb3V0c2lkZSB0aGUgb25sb2FkIGhhbmRs
ZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBlbnRyaWVzLgorICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7bG9jYXRpb24uaHJlZiA9ICJjYWNoZWQtcGFnZS0yLmh0bWwiO30sIDApOwogfQogCiAvLyBU
aGlzIHVubG9hZCBoYW5kbGVyIGV4aXN0cyBqdXN0IHRvIG1ha2Ugc3VyZSB0aGlzIHBhZ2UgaXMg
bm90IGFkZGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMv
Y2FjaGVkLXBhZ2UtMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2Nh
Y2hlZC1wYWdlLTIuaHRtbAppbmRleCBmZDRmMjcyMzVhZGU0NjE4NzhmNmEyZTkwOWRlNDk0NGY4
NTI1OWEwLi5iMTU5MjQyMzYwMDBjNmMzMWE3MjMzZTdiMjUzZWZhNGNhYWZhNjI4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMi5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0yLmh0
bWwKQEAgLTE5LDcgKzE5LDggQEAgZnVuY3Rpb24gbG9hZE5leHQoKSB7CiAgICAgaW50ZXJ2YWxJ
ZCA9IHNldEludGVydmFsKGdvQmFjaywgMjApOwogCiAgICAgd2luZG93Lm9wZW5lci5sb2coInBh
Z2UtMiwgYWJvdXQgdG8gbmF2aWdhdGUgdG8gcGFnZS0zLiIpCi0gICAgbG9jYXRpb24uaHJlZiA9
ICJjYWNoZWQtcGFnZS0zLmh0bWwiOworICAgIC8vIExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0byBo
YXBwZW4gb3V0c2lkZSB0aGUgb25sb2FkIGhhbmRsZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBlbnRy
aWVzLgorICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7bG9jYXRpb24uaHJlZiA9ICJjYWNoZWQt
cGFnZS0zLmh0bWwiO30sIDApOwogfQogPC9zY3JpcHQ+CiA8Ym9keSBvbmxvYWQ9ImxvYWROZXh0
KCkiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc291cmNlcy9jYWNo
ZWQtcGFnZS0xLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcmVzb3VyY2VzL2NhY2hl
ZC1wYWdlLTEuaHRtbAppbmRleCA5YjY2YTY1ZjZhY2M1M2JjMjgwNjZhOTAwY2ZkZjA1ZGNlYmFj
YWNmLi4wZGJmZDRkOThlOTgyYjMyYjRiNjVjOTljNDA5YTg4MzIzOTM5NGIwIDEwMDc1NQotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTEuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTEuaHRt
bApAQCAtMjIsNyArMjIsOCBAQCBmdW5jdGlvbiBsb2FkTmV4dCgpCiAgICAgaW50ZXJ2YWxJZCA9
IHNldEludGVydmFsKGNoZWNrLCAxMCk7CiAKICAgICB3aW5kb3cub3BlbmVyLmxvZygicGFnZS0x
LCBhYm91dCB0byBuYXZpZ2F0ZSB0byBwYWdlLTIuIikKLSAgICBsb2NhdGlvbi5ocmVmID0gImNh
Y2hlZC1wYWdlLTIuaHRtbCI7CisgICAgLy8gTG9jYXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBl
biBvdXRzaWRlIHRoZSBvbmxvYWQgaGFuZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMu
CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtsb2NhdGlvbi5ocmVmID0gImNhY2hlZC1wYWdl
LTIuaHRtbCI7fSwgMCk7CiB9CiA8L3NjcmlwdD4KIDxib2R5IG9ubG9hZD0ibG9hZE5leHQoKSI+
PC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc291cmNlcy9j
YWNoZWQtcGFnZS13aXRoLWRhdGEtdXJscy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNz
L3Jlc291cmNlcy9jYWNoZWQtcGFnZS13aXRoLWRhdGEtdXJscy5odG1sCmluZGV4IGY4NTE2NmQ4
MGQ5OWQ4ODE1NzhlNzhhZWZlNTM4MzRiODBlYTllZDMuLmYyMGVjMGI4NWRiZDBiNzA0MTUzOTNl
MDAxZGY1NjNjYTE0ZjBjMjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9y
ZXNvdXJjZXMvY2FjaGVkLXBhZ2Utd2l0aC1kYXRhLXVybHMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2hhcm5lc3MvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLXdpdGgtZGF0YS11cmxzLmh0bWwK
QEAgLTE4LDcgKzE4LDggQEAgZnVuY3Rpb24gbG9hZE5leHQoKQogICAgIGludGVydmFsSWQgPSBz
ZXRJbnRlcnZhbChjaGVjaywgMTApOwogCiAgICAgd2luZG93Lm9wZW5lci5sb2coInBhZ2Ugd2l0
aCBkYXRhIHVybHMsIGFib3V0IHRvIG5hdmlnYXRlIHRvIHBhZ2UtMi4iKQotICAgIGxvY2F0aW9u
LmhyZWYgPSAiY2FjaGVkLXBhZ2UtMi5odG1sIjsKKyAgICAvLyBMb2NhdGlvbiBjaGFuZ2VzIG5l
ZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdlbmVyYXRlIGhpc3Rv
cnkgZW50cmllcy4KKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge2xvY2F0aW9uLmhyZWYgPSAi
Y2FjaGVkLXBhZ2UtMi5odG1sIjt9LCAwKTsKIH0KIDwvc2NyaXB0PgogPGJvZHkgb25sb2FkPSJs
b2FkTmV4dCgpIj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9nZXN0dXJl
LWJlZm9yZS1vbmxvYWQtZm9ybS1zdWJtaXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9oaXN0b3J5L2dlc3R1cmUtYmVmb3JlLW9ubG9hZC1mb3JtLXN1Ym1pdC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWY5NjhkY2YwMWUyNTA1NmMyYTJiZjYxOTU3MzZkZjNhZjQzZTc3YQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9nZXN0dXJlLWJlZm9yZS1v
bmxvYWQtZm9ybS1zdWJtaXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGhpcyBwYWdl
IGlzIHRoZSB0YXJnZXQgb2YgYSByZWRpcmVjdC4KKworUEFTUzogSGlzdG9yeSBpdGVtIGNvdW50
IHNob3VsZCBiZSAyIGFuZCBpcy4KKworCis9PT09PT09PT09PT09PSBCYWNrIEZvcndhcmQgTGlz
dCA9PT09PT09PT09PT09PQorICAgICAgICAoZmlsZSB0ZXN0KTpmYXN0L2hpc3RvcnkvZ2VzdHVy
ZS1iZWZvcmUtb25sb2FkLWZvcm0tc3VibWl0Lmh0bWwgICoqbmF2IHRhcmdldCoqCitjdXJyLT4g
IChmaWxlIHRlc3QpOmZhc3QvaGlzdG9yeS9yZXNvdXJjZXMvZ2VzdHVyZS1iZWZvcmUtb25sb2Fk
LXRhcmdldC5odG1sPyMyICAqKm5hdiB0YXJnZXQqKgorPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaGlz
dG9yeS9nZXN0dXJlLWJlZm9yZS1vbmxvYWQtZm9ybS1zdWJtaXQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvaGlzdG9yeS9nZXN0dXJlLWJlZm9yZS1vbmxvYWQtZm9ybS1zdWJtaXQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44NWYyNjg4ZjMzN2I0ODM1OTgxMTk3YWQ2ZjI0ZmE4YjhhNzk1YWVjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2dlc3R1cmUtYmVmb3JlLW9ubG9h
ZC1mb3JtLXN1Ym1pdC5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzxoZWFkPgorPC9oZWFkPgorPGJv
ZHkgb25sb2FkPSJvbmxvYWQoKSI+CisgIDxmb3JtIGFjdGlvbj0icmVzb3VyY2VzL2dlc3R1cmUt
YmVmb3JlLW9ubG9hZC10YXJnZXQuaHRtbCMyIj4KKyAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBp
ZD0ibmF2LWJ1dHRvbiIgdmFsdWU9Ik5hdmlnYXRlIj4KKyAgPC9mb3JtPgorICA8ZGl2IGlkPSJt
YW51YWwtZXhwbGFuYXRpb24iIHN0eWxlPSJkaXNwbGF5OiBub25lOyBjb2xvcjogYmx1ZSI+V2hl
biBydW5uaW5nIHRoaXMgdGVzdCBvdXRzaWRlIG9mIERSVCwgcGxlYXNlIGNsaWNrIG9uIHRoZSAi
TmF2aWdhdGUiIGJ1dHRvbi48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFy
QmFja0ZvcndhcmRMaXN0KCk7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisgIH0KKworICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICB2YXIgbmF2
QnV0dG9uTm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduYXYtYnV0dG9uJyk7CisgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygKKyAgICAgICAgICBuYXZCdXR0b25Ob2RlLm9mZnNl
dExlZnQgKyBuYXZCdXR0b25Ob2RlLm9mZnNldFdpZHRoIC8gMiwKKyAgICAgICAgICBuYXZCdXR0
b25Ob2RlLm9mZnNldFRvcCArIG5hdkJ1dHRvbk5vZGUub2Zmc2V0SGVpZ2h0IC8gMik7CisgICAg
ICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsK
KyAgfSBlbHNlIHsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYW51YWwtZXhwbGFu
YXRpb24nKS5zdHlsZS5kaXNwbGF5ID0gJyc7CisgIH0KKworICBmdW5jdGlvbiBvbmxvYWQoKSB7
CisgICAgICB3aW5kb3cuY29uc29sZS5sb2coJ0ZBSUw6IFNob3VsZCBub3QgaGF2ZSByZWFjaGVk
IG9ubG9hZCBiZWZvcmUgbmF2aWdhdGluZyBhd2F5Jyk7CisgIH0KKzwvc2NyaXB0PgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLWxv
Y2F0aW9uLWhyZWYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2dlc3R1
cmUtYmVmb3JlLW9ubG9hZC1sb2NhdGlvbi1ocmVmLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
NGZlYTExM2I0MzZlM2RjN2UzOWQxNDhjYzUxNDk5NmQ1NzUxMjVmCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2dlc3R1cmUtYmVmb3JlLW9ubG9hZC1sb2NhdGlv
bi1ocmVmLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK1RoaXMgcGFnZSBpcyB0aGUgdGFy
Z2V0IG9mIGEgcmVkaXJlY3QuCisKK1BBU1M6IEhpc3RvcnkgaXRlbSBjb3VudCBzaG91bGQgYmUg
MiBhbmQgaXMuCisKKworPT09PT09PT09PT09PT0gQmFjayBGb3J3YXJkIExpc3QgPT09PT09PT09
PT09PT0KKyAgICAgICAgKGZpbGUgdGVzdCk6ZmFzdC9oaXN0b3J5L2dlc3R1cmUtYmVmb3JlLW9u
bG9hZC1sb2NhdGlvbi1ocmVmLmh0bWwgICoqbmF2IHRhcmdldCoqCitjdXJyLT4gIChmaWxlIHRl
c3QpOmZhc3QvaGlzdG9yeS9yZXNvdXJjZXMvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLXRhcmdldC5o
dG1sIzIgICoqbmF2IHRhcmdldCoqCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2dlc3R1
cmUtYmVmb3JlLW9ubG9hZC1sb2NhdGlvbi1ocmVmLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2hp
c3RvcnkvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLWxvY2F0aW9uLWhyZWYuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41NjBhZGNiNTc5Y2VhZWY1NWEyZGNhZDQyMzlhMmI2MTg1MWI0YzdkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2dlc3R1cmUtYmVmb3JlLW9ubG9hZC1sb2Nh
dGlvbi1ocmVmLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPGhlYWQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9Im9ubG9hZCgpIj4KKyAgPGJ1dHRvbiBpZD0ibmF2LWJ1dHRvbiIgb25jbGljaz0ibmF2
KCk7Ij5OYXZpZ2F0ZTwvYnV0dG9uPgorICA8ZGl2IGlkPSJtYW51YWwtZXhwbGFuYXRpb24iIHN0
eWxlPSJkaXNwbGF5OiBub25lOyBjb2xvcjogYmx1ZSI+V2hlbiBydW5uaW5nIHRoaXMgdGVzdCBv
dXRzaWRlIG9mIERSVCwgcGxlYXNlIGNsaWNrIG9uIHRoZSAiTmF2aWdhdGUiIGJ1dHRvbi48L2Rp
dj4KKzwvYm9keT4KKzxzY3JpcHQ+CisgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7Cisg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgIH0KKworICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICB2YXIgbmF2QnV0dG9uTm9kZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCduYXYtYnV0dG9uJyk7CisgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbygKKyAgICAgICAgICBuYXZCdXR0b25Ob2RlLm9mZnNldExlZnQgKyBuYXZCdXR0b25Ob2Rl
Lm9mZnNldFdpZHRoIC8gMiwKKyAgICAgICAgICBuYXZCdXR0b25Ob2RlLm9mZnNldFRvcCArIG5h
dkJ1dHRvbk5vZGUub2Zmc2V0SGVpZ2h0IC8gMik7CisgICAgICBldmVudFNlbmRlci5tb3VzZURv
d24oKTsKKyAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgfSBlbHNlIHsKKyAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYW51YWwtZXhwbGFuYXRpb24nKS5zdHlsZS5kaXNwbGF5
ID0gJyc7CisgIH0KKworICBmdW5jdGlvbiBuYXYoKSB7CisgICAgICB3aW5kb3cubG9jYXRpb24u
aHJlZiA9ICdyZXNvdXJjZXMvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLXRhcmdldC5odG1sIzInOwor
ICB9CisKKyAgZnVuY3Rpb24gb25sb2FkKCkgeworICAgICAgd2luZG93LmNvbnNvbGUubG9nKCdG
QUlMOiBTaG91bGQgbm90IGhhdmUgcmVhY2hlZCBvbmxvYWQgYmVmb3JlIG5hdmlnYXRpbmcgYXdh
eScpOworICB9Cis8L3NjcmlwdD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0
b3J5L2hpc3RvcnktbGVuZ3RoLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvaGlzdG9y
eS1sZW5ndGguaHRtbAppbmRleCA0YmFhN2U3YzcxMjY5MTdiNWZlYjBiMzg2MDUyMWFmNWI3MTI5
ZTkzLi45NGY1MDdkMDA2YjNmNGZiZmU1ZjZhZjliMjkwNjEzMmQ3ZDczZGI4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvaGlzdG9yeS1sZW5ndGguaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2hpc3RvcnkvaGlzdG9yeS1sZW5ndGguaHRtbApAQCAtOCwzMCArOCwzNCBA
QCBvbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKICAgICB9CiAgIH0KLSAgLy8gVGhpcyB0ZXN0IGFkdmFuY2VzIGhpc3Rvcnkg
YnkgMiBwYWdlcywgdGhlbiBuYXZpZ2F0ZXMgYmFjayBvbmUsIGFuZAotICAvLyByZWNvcmRzIGhp
c3RvcnkubGVuZ3RoLiAgV2UgZXhwZWN0IGhpc3RvcnkubGVuZ3RoIHRvIGluZGljYXRlIHRoZSB0
b3RhbAotICAvLyBsZW5ndGggb2Ygc2Vzc2lvbiBoaXN0b3J5LiAgQXQgdGhlIGVuZCBvZiB0aGUg
dGVzdCwgaXQgc2hvdWxkIGJlIDIgZ3JlYXRlcgotICAvLyB0aGFuIGl0IHdhcyBhdCB0aGUgc3Rh
cnQgb2YgdGhlIHRlc3QuCi0gIHN3aXRjaCAoc2Vzc2lvblN0b3JhZ2UudGVzdFN0YWdlKyspIHsK
LSAgY2FzZSAwOgotICAgIHNlc3Npb25TdG9yYWdlLmluaXRpYWxMZW5ndGggPSBoaXN0b3J5Lmxl
bmd0aDsKLSAgICBsb2NhdGlvbiA9ICI/YSI7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgMToKLSAgICBs
b2NhdGlvbiA9ICI/YiI7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgMjoKLSAgICBoaXN0b3J5LmJhY2so
KTsKLSAgICBicmVhazsKLSAgY2FzZSAzOgotICAgIGlmIChoaXN0b3J5Lmxlbmd0aCA9PSAoc2Vz
c2lvblN0b3JhZ2UuaW5pdGlhbExlbmd0aCAtIDApICsgMikKLSAgICAgIGRvY3VtZW50LmJvZHku
aW5uZXJIVE1MID0gIlBBU1MiOwotICAgIGVsc2UKLSAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJI
VE1MID0gIkZBSUw6IGluaXRpYWxMZW5ndGg9IiArIHNlc3Npb25TdG9yYWdlLmluaXRpYWxMZW5n
dGggKyAiLCBoaXN0b3J5Lmxlbmd0aD0iICsgaGlzdG9yeS5sZW5ndGg7Ci0gICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKLSAgICBicmVhazsKLSAgfQorCisgIC8vIExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0
byBoYXBwZW4gb3V0c2lkZSB0aGUgb25sb2FkIGhhbmRsZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBl
bnRyaWVzLgorICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIC8vIFRoaXMgdGVzdCBhZHZh
bmNlcyBoaXN0b3J5IGJ5IDIgcGFnZXMsIHRoZW4gbmF2aWdhdGVzIGJhY2sgb25lLCBhbmQKKyAg
ICAvLyByZWNvcmRzIGhpc3RvcnkubGVuZ3RoLiAgV2UgZXhwZWN0IGhpc3RvcnkubGVuZ3RoIHRv
IGluZGljYXRlIHRoZSB0b3RhbAorICAgIC8vIGxlbmd0aCBvZiBzZXNzaW9uIGhpc3RvcnkuICBB
dCB0aGUgZW5kIG9mIHRoZSB0ZXN0LCBpdCBzaG91bGQgYmUgMiBncmVhdGVyCisgICAgLy8gdGhh
biBpdCB3YXMgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXN0LgorICAgIHN3aXRjaCAoc2Vzc2lvblN0
b3JhZ2UudGVzdFN0YWdlKyspIHsKKyAgICBjYXNlIDA6CisgICAgICBzZXNzaW9uU3RvcmFnZS5p
bml0aWFsTGVuZ3RoID0gaGlzdG9yeS5sZW5ndGg7CisgICAgICBsb2NhdGlvbiA9ICI/YSI7Cisg
ICAgICBicmVhazsKKyAgICBjYXNlIDE6CisgICAgICBsb2NhdGlvbiA9ICI/YiI7CisgICAgICBi
cmVhazsKKyAgICBjYXNlIDI6CisgICAgICBoaXN0b3J5LmJhY2soKTsKKyAgICAgIGJyZWFrOwor
ICAgIGNhc2UgMzoKKyAgICAgIGlmIChoaXN0b3J5Lmxlbmd0aCA9PSAoc2Vzc2lvblN0b3JhZ2Uu
aW5pdGlhbExlbmd0aCAtIDApICsgMikKKyAgICAgICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwg
PSAiUEFTUyI7CisgICAgICBlbHNlCisgICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0g
IkZBSUw6IGluaXRpYWxMZW5ndGg9IiArIHNlc3Npb25TdG9yYWdlLmluaXRpYWxMZW5ndGggKyAi
LCBoaXN0b3J5Lmxlbmd0aD0iICsgaGlzdG9yeS5sZW5ndGg7CisgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgICBicmVhazsKKyAgICB9CisgIH0sIDApOwogfQogb251bmxvYWQgPSBmdW5j
dGlvbigpIHsKICAgLy8gZGlzYWJsZSBwYWdlIGNhY2hlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2dlc3R1cmUtYmVmb3JlLW9ubG9hZC10YXJnZXQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvZ2VzdHVyZS1iZWZvcmUtb25s
b2FkLXRhcmdldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmNDNlYzkxYjczODA4NTM3MzYyZjI5YmQ0MTc4
NDA1NTY3ZjU5OGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkv
cmVzb3VyY2VzL2dlc3R1cmUtYmVmb3JlLW9ubG9hZC10YXJnZXQuaHRtbApAQCAtMCwwICsxLDQx
IEBACis8IS0tIFRoaXMgcGFnZSBhY2NlcHRzIGEgcXVlcnkgc3RyaW5nIHNwZWNpZnlpbmcgaG93
IG1hbnkgaGlzdG9yeSBpdGVtcyBzaG91bGQKK2JlIHByZXNlbnQgb25jZSBpdCBmaW5pc2hlcyBs
b2FkaW5nLiAtLT4KKworPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5SZWRpcmVjdCBUYXJnZXQ8L3Rp
dGxlPgorCis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKHMpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShz
ICsgIlxuIikpOworfQorCitmdW5jdGlvbiB0ZXN0SGlzdG9yeUl0ZW1Db3VudCgpCit7CisgICAg
dmFyIGV4cGVjdGVkID0gcGFyc2VJbnQobG9jYXRpb24uaGFzaC5zbGljZSgxKSk7CisgICAgdmFy
IGFjdHVhbCA9IGhpc3RvcnkubGVuZ3RoOworICAgIGlmIChhY3R1YWwgPT09IGV4cGVjdGVkKQor
ICAgICAgICBsb2coIlBBU1M6IEhpc3RvcnkgaXRlbSBjb3VudCBzaG91bGQgYmUgIiArIGV4cGVj
dGVkICsgIiBhbmQgaXMuIik7CisgICAgZWxzZQorICAgICAgICBsb2coIkZBSUw6IEhpc3Rvcnkg
aXRlbSBjb3VudCBzaG91bGQgYmUgIiArIGV4cGVjdGVkICsgIiBidXQgaW5zdGVhZCBpcyAiICsg
YWN0dWFsICsgIi4iKTsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5j
dGlvbiAoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RIaXN0b3J5
SXRlbUNvdW50KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBCYWNrRm9yd2Fy
ZExpc3QoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
IH0gZWxzZSB7CisgICAgICAgIHRlc3RIaXN0b3J5SXRlbUNvdW50KCk7CisgICAgfQorfSwgZmFs
c2UpOworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorPHA+VGhpcyBwYWdlIGlzIHRoZSB0
YXJnZXQgb2YgYSByZWRpcmVjdC48L3A+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zYXZlcy1z
dGF0ZS1hZnRlci1mcmFnbWVudC1uYXYuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9z
YXZlcy1zdGF0ZS1hZnRlci1mcmFnbWVudC1uYXYuaHRtbAppbmRleCAwNjQ0ZGY4ODQzZTgxOGE4
ZjY0ODUwZjI5ZGE4ZjRkYjdmYjQwNzg5Li42MGRlYzkzNzEwY2EzYWFhNjMyN2YxZGVjMGY3ZjBk
N2ViZTEwMDI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2F2ZXMtc3Rh
dGUtYWZ0ZXItZnJhZ21lbnQtbmF2Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5
L3NhdmVzLXN0YXRlLWFmdGVyLWZyYWdtZW50LW5hdi5odG1sCkBAIC0zMCw4ICszMCwxMSBAQCBm
dW5jdGlvbiBydW5UZXN0U3RlcCgpIHsKICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKICAg
ICB9Ci0gICAgbmF2aWdhdGVUb0hhc2goZmllbGQpOwotICAgIG5hdmlnYXRlQXdheUFuZEJhY2so
KTsKKyAgICAvLyBMb2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9u
bG9hZCBoYW5kbGVyIHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgICAgbmF2aWdhdGVUb0hhc2goZmllbGQpOworICAgICAgbmF2aWdh
dGVBd2F5QW5kQmFjaygpOworICAgIH0sIDApOwogICB9IGVsc2UgewogICAgIGRvY3VtZW50LmJv
ZHkuaW5uZXJIVE1MID0gKGZpZWxkLnZhbHVlID09ICcnKSA/ICdGQUlMJyA6ICdQQVNTJzsKICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvaW5wdXQtZWxlbWVudC1wYWdlLWNhY2hlLWNyYXNoLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9pbnB1dC1lbGVtZW50LXBhZ2UtY2FjaGUtY3Jhc2guaHRtbApp
bmRleCBlZTY5MzU1NGFjZjUzOTY4MTRkOTYzYmY4YmQ3M2UwYWU0Y2E3ZmQ1Li4yNDkzMjcyMTE4
ZTVkNDFhM2ZlM2VjYmNkZjEyY2ZmMmY0NTEzMmQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9pbnB1dC1lbGVtZW50LXBhZ2UtY2FjaGUtY3Jhc2guaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9pbnB1dC1lbGVtZW50LXBhZ2UtY2FjaGUtY3Jhc2guaHRtbApA
QCAtMTMsOCArMTMsOSBAQCBmdW5jdGlvbiBydW5UZXN0KCkKICAgICB2YXIgaW5wdXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdGlucHV0Iik7CiAgICAgaW5wdXQuc2V0QXR0cmlidXRl
KCJhdXRvY29tcGxldGUiLCAib24iKTsKICAgICBpbnB1dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxk
KGlucHV0KTsKLSAgICAKLSAgICB3aW5kb3cubG9jYXRpb24gPSAiZGF0YTp0ZXh0L2h0bWwsPHNj
cmlwdD5oaXN0b3J5LmJhY2soKTs8L3NjcmlwIiArICJ0PiI7CisKKyAgICAvLyBMb2NhdGlvbiBj
aGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdlbmVy
YXRlIGhpc3RvcnkgZW50cmllcy4KKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3dpbmRvdy5s
b2NhdGlvbiA9ICJkYXRhOnRleHQvaHRtbCw8c2NyaXB0Pmhpc3RvcnkuYmFjaygpOzwvc2NyaXAi
ICsgInQ+Ijt9LCAwKTsKIH0KIAogZnVuY3Rpb24gcGFnZUhpZGRlbigpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJveWVkLW5h
dmlnYXRlLWJhY2suaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9k
b2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay5odG1sCmluZGV4IDdkY2EzNjFiYTg3Mjdl
MzVmNmMxMDA2NzRiN2E1YjQzYWY2YTRiZGYuLmVkYmIxYzI4NjE1MzgyNTgwYTY5ZWRmYjEzZGU3
ZTBmNzRiY2NkZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2Jq
ZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUtYmFjay5odG1sCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9kb2N1bWVudC1kZXN0cm95ZWQtbmF2aWdhdGUt
YmFjay5odG1sCkBAIC0zMyw5ICszMywxMCBAQCBmdW5jdGlvbiBydW5UaGlyZFN0YWdlT2ZUZXN0
KCkKIAogZnVuY3Rpb24gbG9hZGVkKCkKIHsKLSAgICBpZiAoIXNlc3Npb25TdG9yYWdlLnN0YWdl
KQotICAgICAgICBydW5GaXJzdFN0YWdlT2ZUZXN0KCk7Ci0gICAgZWxzZSBpZiAoc2Vzc2lvblN0
b3JhZ2Uuc3RhZ2UgPT0gMikKKyAgICBpZiAoIXNlc3Npb25TdG9yYWdlLnN0YWdlKSB7CisgICAg
ICAgIC8vIExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0byBoYXBwZW4gb3V0c2lkZSB0aGUgb25sb2Fk
IGhhbmRsZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBlbnRyaWVzLgorICAgICAgICBzZXRUaW1lb3V0
KHJ1bkZpcnN0U3RhZ2VPZlRlc3QsIDApOworICAgIH0gZWxzZSBpZiAoc2Vzc2lvblN0b3JhZ2Uu
c3RhZ2UgPT0gMikKICAgICAgICAgcnVuU2Vjb25kU3RhZ2VPZlRlc3QoKTsKICAgICBlbHNlIGlm
IChzZXNzaW9uU3RvcmFnZS5zdGFnZSA9PSAzKQogICAgICAgICBydW5UaGlyZFN0YWdlT2ZUZXN0
KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVz
aHN0YXRlLWNsZWFycy1mb3J3YXJkLWhpc3RvcnkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtY2xlYXJzLWZvcndhcmQtaGlzdG9yeS5odG1sCmlu
ZGV4IGIwOGM1YTUyN2E0OTk1NGIyMGM3OWJlMDFkMjI4Yzg5ZjlhZTE3YjEuLmJiYjQ0Nzk1YTQ0
NWFhN2I3MGNjNjBhOGYxNDQ2ODdkOTZlZTc0NTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtY2xlYXJzLWZvcndhcmQtaGlzdG9yeS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUt
Y2xlYXJzLWZvcndhcmQtaGlzdG9yeS5odG1sCkBAIC04LDIyICs4LDI2IEBAIG9ubG9hZCA9IGZ1
bmN0aW9uKCkgewogICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwog
ICAgIH0KICAgfQotICBzd2l0Y2ggKHNlc3Npb25TdG9yYWdlLnRlc3RTdGFnZSsrKSB7Ci0gIGNh
c2UgMDoKLSAgICBsb2NhdGlvbiA9ICI/YSI7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgMToKLSAgICBs
b2NhdGlvbiA9ICI/YiI7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgMjoKLSAgICBoaXN0b3J5LmJhY2so
KTsKLSAgICBicmVhazsKLSAgY2FzZSAzOgotICAgIGhpc3RvcnkucHVzaFN0YXRlKG51bGwsIG51
bGwpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci0gICAgYnJlYWs7Ci0gIH0KKworICAvLyBMb2Nh
dGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRv
IGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg
ICAgIHN3aXRjaCAoc2Vzc2lvblN0b3JhZ2UudGVzdFN0YWdlKyspIHsKKyAgICAgIGNhc2UgMDoK
KyAgICAgICAgbG9jYXRpb24gPSAiP2EiOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMToK
KyAgICAgICAgbG9jYXRpb24gPSAiP2IiOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMjoK
KyAgICAgICAgaGlzdG9yeS5iYWNrKCk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAzOgor
ICAgICAgICBoaXN0b3J5LnB1c2hTdGF0ZShudWxsLCBudWxsKTsKKyAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0sIDApOwogfQogb251
bmxvYWQgPSBmdW5jdGlvbigpIHsKICAgLy8gZGlzYWJsZSBwYWdlIGNhY2hlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdWJmcmFtZS1uYXZpZ2F0ZS1kdXJpbmctbWFpbi1m
cmFtZS1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdWJmcmFtZS1uYXZpZ2F0
ZS1kdXJpbmctbWFpbi1mcmFtZS1sb2FkLmh0bWwKaW5kZXggMjg1MjM4MWIxZjMwMmE1ZmEwNzNj
YTVmMzlmNDljYzJmYzZiY2ViYi4uMmFiMTJjYzExOGFlNzA1ZWYyNTcyOTJiODk1OTAyYTU0MTlj
YzI1YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3ViZnJhbWUtbmF2aWdh
dGUtZHVyaW5nLW1haW4tZnJhbWUtbG9hZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL3N1YmZyYW1lLW5hdmlnYXRlLWR1cmluZy1tYWluLWZyYW1lLWxvYWQuaHRtbApAQCAtOSw4
ICs5LDkgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBCYWNrRm9yd2FyZExpc3QoKTsKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOwogICAgIH0KLSAgICAKLSAgICBsb2NhdGlvbj0ncmVzb3VyY2VzL3N1YmZy
YW1lLW5hdmlnYXRlLWR1cmluZy1tYWluLWZyYW1lLWxvYWQyLmh0bWwnOworCisgICAgLy8gTG9j
YXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRoZSBvbmxvYWQgaGFuZGxlciB0
byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHts
b2NhdGlvbj0ncmVzb3VyY2VzL3N1YmZyYW1lLW5hdmlnYXRlLWR1cmluZy1tYWluLWZyYW1lLWxv
YWQyLmh0bWwnO30sIDApOwogfQogCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaGlzdG9yeS9iYWNrLXRvLXBvc3QucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9oaXN0b3J5L2JhY2stdG8tcG9zdC5waHAKaW5kZXggODg0YjMyYmRhZDcyNDMxMDQ4YmNj
ODQ1Yjk2NmRiNDFmOWMwM2YyOS4uOTYwYjA0YjIzYmZkNzExZDliZjc2NzJmODYxNmM1Mjg3Nzk0
ODc0NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L2JhY2stdG8t
cG9zdC5waHAKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L2JhY2stdG8tcG9z
dC5waHAKQEAgLTE0LDYgKzE0LDEzIEBAIEdldHRpbmcgYW4gZXJyb3IgcGFnZSBpbnN0ZWFkIG9m
IGxvZ2luIHBhZ2UgbmF2aWdhdGluZyBiYWNrIGluIGdtYWlsLjwvcD4KIDxpbnB1dCBpZD0ibXlz
dWJtaXQiIHR5cGU9InN1Ym1pdCIgbmFtZT0iU3VibWl0IiB2YWx1ZT0iU3VibWl0Ij4KIDwvZm9y
bT4KIDxzY3JpcHQ+CisKK2Z1bmN0aW9uIHN1Ym1pdEZvcm0oKQoreworICAgIC8vIFN1Ym1pdCBm
b3JtIGluIGEgdGltZW91dCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBjcmVhdGUgYSBuZXcgYmFjay9m
b3J3YXJkIGxpc3QgaXRlbS4KKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge2RvY3VtZW50LmZv
cm1zWzBdLnN1Ym1pdCgpfSwgMCk7Cit9CisKIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CiAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwpAQCAtMjUsNyArMzIsNyBAQCBpZiAoIXdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKIAogaWYgKGRvY3VtZW50LmxvY2F0aW9uLnNlYXJj
aCA9PSAiIikgewogICAgIHdpbmRvdy5uYW1lID0gIiI7IC8vIFVzZSB3aW5kb3cubmFtZSB0byBj
b21tdW5pY2F0ZSBiZXR3ZWVuIHN0ZXBzLgotICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgp
OworICAgIHN1Ym1pdEZvcm0oKTsKIH0gZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uc2VhcmNo
ID09ICI/MSIpIHsKICAgICBpZiAod2luZG93Lm5hbWUgPT0gImZpbmlzaCIpIHsKICAgICAgICAg
d2luZG93Lm5hbWUgPSAiIjsKQEAgLTM0LDcgKzQxLDcgQEAgaWYgKGRvY3VtZW50LmxvY2F0aW9u
LnNlYXJjaCA9PSAiIikgewogICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLmFjdGlvbiA9
ICI/MiI7Ci0gICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOworICAgICAgICBzdWJt
aXRGb3JtKCk7CiAgICAgfQogfSBlbHNlIHsKICAgICAvLyBUZXN0IHRoYXQgZ29pbmcgYmFjayB0
byBmb3JtIHN1Ym1pc3Npb24gcmVzdWx0IHdvcmtzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTIwMC1yZWZyZXNoLTAtc2Vjb25kcy5wbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0yMDAtcmVmcmVzaC0wLXNlY29u
ZHMucGwKaW5kZXggZGIyMzQwZTMzYzhkZTE2YzI1ZjA0MDcxNmQyYjIzNWEzZTU0N2NjYS4uOWYw
YmYzZGEzOTI2MzE0MDY4ZjljNWUwNzQxYjllNTgwN2U2Y2RiZiAxMDA3NTUKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTIwMC1yZWZyZXNoLTAtc2Vjb25kcy5w
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMjAwLXJlZnJl
c2gtMC1zZWNvbmRzLnBsCkBAIC0xMiw3ICsxMiw3IEBAIHByaW50IDw8SEVSRV9ET0NfRU5ECiA8
dGl0bGU+MjAwIFJlZnJlc2ggUmVkaXJlY3Q8L3RpdGxlPgogPHNjcmlwdD4KIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5rZWVwV2Vi
SGlzdG9yeSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0
KCk7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogfQogPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3Qt
MjAwLXJlZnJlc2gtMi1zZWNvbmRzLnBsIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5
L3JlZGlyZWN0LTIwMC1yZWZyZXNoLTItc2Vjb25kcy5wbAppbmRleCA3MzQ0NDNhOWQ4ZjMyZjgy
ZjUwZTIxMzNmMzk3YzExMTQ1ZTE5NjZjLi5mMTFjYjZiYTM1ZmQwYTUzOTQzZTdiNWJiZDRkOWI0
NTBlMzhmZWVhIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVk
aXJlY3QtMjAwLXJlZnJlc2gtMi1zZWNvbmRzLnBsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaGlzdG9yeS9yZWRpcmVjdC0yMDAtcmVmcmVzaC0yLXNlY29uZHMucGwKQEAgLTEyLDcgKzEy
LDcgQEAgcHJpbnQgPDxIRVJFX0RPQ19FTkQKIDx0aXRsZT4yMDAgUmVmcmVzaCBSZWRpcmVjdDwv
dGl0bGU+CiA8c2NyaXB0PgogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CiB9CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwMS1leHBlY3RlZC50eHQKaW5kZXggMDYy
YjY5YjRhMGJiYzBhZjBhZjAzOThlZmFmNTIzYzcwNTUwYTExNy4uNzdhNmVmNjE2OTE1ZGU4ZTIx
ZGM3YTBmNGRlZmNlZTNmNmUwMjZlNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9oaXN0b3J5L3JlZGlyZWN0LTMwMS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwMS1leHBlY3RlZC50eHQKQEAgLTEsOCArMSw5IEBA
CiBUaGlzIHBhZ2UgaXMgdGhlIHRhcmdldCBvZiBhIHJlZGlyZWN0LgogCi1QQVNTOiBIaXN0b3J5
IGl0ZW0gY291bnQgc2hvdWxkIGJlIDEgYW5kIGlzLgorUEFTUzogSGlzdG9yeSBpdGVtIGNvdW50
IHNob3VsZCBiZSAyIGFuZCBpcy4KIAogCiA9PT09PT09PT09PT09PSBCYWNrIEZvcndhcmQgTGlz
dCA9PT09PT09PT09PT09PQotY3Vyci0+ICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaGlzdG9yeS9y
ZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwjMSAgKipuYXYgdGFyZ2V0KioKKyAgICAgICAg
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3RvcnkvcmVkaXJlY3QtMzAxLmh0bWwgICoqbmF2IHRh
cmdldCoqCitjdXJyLT4gIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9oaXN0b3J5L3Jlc291cmNlcy9y
ZWRpcmVjdC10YXJnZXQuaHRtbCMyICAqKm5hdiB0YXJnZXQqKgogPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDEuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaGlzdG9yeS9yZWRpcmVjdC0zMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40M2Y5NTIwMTY2NDA1MmQy
ZGI3NGZmMDdmNTdiOWFiN2RkZTYyYTY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwMS5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8dGl0bGU+MzAxIFJlZGlyZWN0PC90aXRsZT4KKzxzY3JpcHQ+CisgIGZ1
bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOwor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQorICAg
IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3dpbmRvdy5sb2NhdGlvbiA9ICdyZXNvdXJj
ZXMvcmVkaXJlY3QtaGVscGVyLnBsPzMwMSc7fSwgMCk7CisgIH0KKzwvc2NyaXB0PgorCis8Ym9k
eSBvbmxvYWQ9InJ1blRlc3QoKSI+VGhpcyBwYWdlIGlzIGEgMzAxIHJlZGlyZWN0LjwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRp
cmVjdC0zMDEucGwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzAx
LnBsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBmMGYxNWVjMzQ1MTU5MjIyZGJiYzkx
M2MxZTU3NDViYTA3MTlkOWUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDEucGwK
KysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0jIS91c3IvYmluL3BlcmwKLSMgU2NyaXB0
IHRvIGdlbmVyYXRlIGEgMzAxIEhUVFAgcmVkaXJlY3QKLQotcHJpbnQgIlN0YXR1czogMzAxIE1v
dmVkIFBlcm1hbmVudGx5XHJcbiI7Ci1wcmludCAiTG9jYXRpb246IHJlc291cmNlcy9yZWRpcmVj
dC10YXJnZXQuaHRtbCMxXHJcbiI7Ci1wcmludCAiQ29udGVudC10eXBlOiB0ZXh0L2h0bWxcclxu
IjsKLXByaW50ICJcclxuIjsKLQotcHJpbnQgPDxIRVJFX0RPQ19FTkQKLTxodG1sPgotPGhlYWQ+
Ci08dGl0bGU+MzAxIFJlZGlyZWN0PC90aXRsZT4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIua2VlcFdlYkhpc3Rv
cnkoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci08L3Nj
cmlwdD4KLQotPGJvZHk+VGhpcyBwYWdlIGlzIGEgMzAxIHJlZGlyZWN0LjwvYm9keT4KLTwvaHRt
bD4KLUhFUkVfRE9DX0VORApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0
b3J5L3JlZGlyZWN0LTMwMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hp
c3RvcnkvcmVkaXJlY3QtMzAyLWV4cGVjdGVkLnR4dAppbmRleCAwNjJiNjliNGEwYmJjMGFmMGFm
MDM5OGVmYWY1MjNjNzA1NTBhMTE3Li40ZDY5Mjc1ZTZkOWY3Zjc5Yzk3ZTVlNjBlYjQxMDliYmRh
NzBiNzc5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJl
Y3QtMzAyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rvcnkv
cmVkaXJlY3QtMzAyLWV4cGVjdGVkLnR4dApAQCAtMSw4ICsxLDkgQEAKIFRoaXMgcGFnZSBpcyB0
aGUgdGFyZ2V0IG9mIGEgcmVkaXJlY3QuCiAKLVBBU1M6IEhpc3RvcnkgaXRlbSBjb3VudCBzaG91
bGQgYmUgMSBhbmQgaXMuCitQQVNTOiBIaXN0b3J5IGl0ZW0gY291bnQgc2hvdWxkIGJlIDIgYW5k
IGlzLgogCiAKID09PT09PT09PT09PT09IEJhY2sgRm9yd2FyZCBMaXN0ID09PT09PT09PT09PT09
Ci1jdXJyLT4gIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9oaXN0b3J5L3Jlc291cmNlcy9yZWRpcmVj
dC10YXJnZXQuaHRtbCMxICAqKm5hdiB0YXJnZXQqKgorICAgICAgICBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvaGlzdG9yeS9yZWRpcmVjdC0zMDIuaHRtbCAgKipuYXYgdGFyZ2V0KioKK2N1cnItPiAg
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3RvcnkvcmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5o
dG1sIzIgICoqbmF2IHRhcmdldCoqCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5
L3JlZGlyZWN0LTMwMi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGly
ZWN0LTMwMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4M2M3OTI0NTI0OGRjYjBhZjY1Y2YzZWVlYjU3NDc2
ZTJhM2UxMDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rv
cnkvcmVkaXJlY3QtMzAyLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0
aXRsZT4zMDIgUmVkaXJlY3Q8L3RpdGxlPgorPHNjcmlwdD4KKyAgZnVuY3Rpb24gcnVuVGVzdCgp
IHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisgICAgd2luZG93LnNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7d2luZG93LmxvY2F0aW9uID0gJ3Jlc291cmNlcy9yZWRpcmVjdC1oZWxw
ZXIucGw/MzAyJzt9LCAwKTsKKyAgfQorPC9zY3JpcHQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVz
dCgpIj5UaGlzIHBhZ2UgaXMgYSAzMDIgcmVkaXJlY3QuPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwMi5wbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDIucGwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IGUwNjMxMGZjY2QyNTM2YWY5ZTRmNzIyZjVkOTExMmIxOTVhMTAx
YzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwMi5wbAorKysgL2Rldi9udWxsCkBA
IC0xLDIyICswLDAgQEAKLSMhL3Vzci9iaW4vcGVybAotIyBTY3JpcHQgdG8gZ2VuZXJhdGUgYSAz
MDIgSFRUUCByZWRpcmVjdAotCi1wcmludCAiU3RhdHVzOiAzMDIgTW92ZWQgVGVtcG9yYXJpbHlc
clxuIjsKLXByaW50ICJMb2NhdGlvbjogcmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzFc
clxuIjsKLXByaW50ICJDb250ZW50LXR5cGU6IHRleHQvaHRtbFxyXG4iOwotcHJpbnQgIlxyXG4i
OwotCi1wcmludCA8PEhFUkVfRE9DX0VORAotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT4zMDIgUmVk
aXJlY3Q8L3RpdGxlPgotPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5rZWVwV2ViSGlzdG9yeSgpOwotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0KLTwvc2NyaXB0PgotCi08Ym9keT5U
aGlzIHBhZ2UgaXMgYSAzMDIgcmVkaXJlY3QuPC9ib2R5PgotPC9odG1sPgotSEVSRV9ET0NfRU5E
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzAz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0z
MDMtZXhwZWN0ZWQudHh0CmluZGV4IDA2MmI2OWI0YTBiYmMwYWYwYWYwMzk4ZWZhZjUyM2M3MDU1
MGExMTcuLjlkN2U4NmVhYjg3ZTAxYzYyZmQ0NTg0Y2U0OWIwYmNhMWU2NGIyNjIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDMtZXhw
ZWN0ZWQudHh0CkBAIC0xLDggKzEsOSBAQAogVGhpcyBwYWdlIGlzIHRoZSB0YXJnZXQgb2YgYSBy
ZWRpcmVjdC4KIAotUEFTUzogSGlzdG9yeSBpdGVtIGNvdW50IHNob3VsZCBiZSAxIGFuZCBpcy4K
K1BBU1M6IEhpc3RvcnkgaXRlbSBjb3VudCBzaG91bGQgYmUgMiBhbmQgaXMuCiAKIAogPT09PT09
PT09PT09PT0gQmFjayBGb3J3YXJkIExpc3QgPT09PT09PT09PT09PT0KLWN1cnItPiAgaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2hpc3RvcnkvcmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzEg
ICoqbmF2IHRhcmdldCoqCisgICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9oaXN0b3J5L3Jl
ZGlyZWN0LTMwMy5odG1sICAqKm5hdiB0YXJnZXQqKgorY3Vyci0+ICBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvaGlzdG9yeS9yZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwjMiAgKipuYXYgdGFy
Z2V0KioKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzAzLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzAzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTEwN2FkYmZmMzUyZmUxOTBkZjJhOWI2ZDg2YTFjYjU1YjRkMTFiMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDMu
aHRtbApAQCAtMCwwICsxLDE1IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPjMwMyBSZWRpcmVj
dDwvdGl0bGU+Cis8c2NyaXB0PgorICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
Y2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworICAgIH0KKyAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHt3
aW5kb3cubG9jYXRpb24gPSAncmVzb3VyY2VzL3JlZGlyZWN0LWhlbHBlci5wbD8zMDMnO30sIDAp
OworICB9Cis8L3NjcmlwdD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPlRoaXMgcGFnZSBp
cyBhIDMwMyByZWRpcmVjdC48L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzAzLnBsIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwMy5wbApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5k
ZXggYzc4OTFiZjc1NWZmZWI2OGY0MTE2NzY4OWEwN2U4YWFjOTM4Zjc3MS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2hpc3RvcnkvcmVkaXJlY3QtMzAzLnBsCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAot
IyEvdXNyL2Jpbi9wZXJsCi0jIFNjcmlwdCB0byBnZW5lcmF0ZSBhIDMwMyBIVFRQIHJlZGlyZWN0
Ci0KLXByaW50ICJTdGF0dXM6IDMwMyBTZWUgT3RoZXJcclxuIjsKLXByaW50ICJMb2NhdGlvbjog
cmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzFcclxuIjsKLXByaW50ICJDb250ZW50LXR5
cGU6IHRleHQvaHRtbFxyXG4iOwotcHJpbnQgIlxyXG4iOwotCi1wcmludCA8PEhFUkVfRE9DX0VO
RAotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT4zMDMgUmVkaXJlY3Q8L3RpdGxlPgotPHNjcmlwdD4K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5rZWVwV2ViSGlzdG9yeSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKLX0KLTwvc2NyaXB0PgotCi08Ym9keT5UaGlzIHBhZ2UgaXMgYSAzMDMgcmVkaXJl
Y3QuPC9ib2R5PgotPC9odG1sPgotSEVSRV9ET0NfRU5ECmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzA3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDctZXhwZWN0ZWQudHh0CmluZGV4IDA2
MmI2OWI0YTBiYmMwYWYwYWYwMzk4ZWZhZjUyM2M3MDU1MGExMTcuLjcyMWVkMmUzY2NlY2EwMGVm
YTNhYTY3NmM4NTc3MDhkZmNlZDllNTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaGlzdG9yeS9yZWRpcmVjdC0zMDctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDctZXhwZWN0ZWQudHh0CkBAIC0xLDggKzEsOSBA
QAogVGhpcyBwYWdlIGlzIHRoZSB0YXJnZXQgb2YgYSByZWRpcmVjdC4KIAotUEFTUzogSGlzdG9y
eSBpdGVtIGNvdW50IHNob3VsZCBiZSAxIGFuZCBpcy4KK1BBU1M6IEhpc3RvcnkgaXRlbSBjb3Vu
dCBzaG91bGQgYmUgMiBhbmQgaXMuCiAKIAogPT09PT09PT09PT09PT0gQmFjayBGb3J3YXJkIExp
c3QgPT09PT09PT09PT09PT0KLWN1cnItPiAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3Rvcnkv
cmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzEgICoqbmF2IHRhcmdldCoqCisgICAgICAg
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9oaXN0b3J5L3JlZGlyZWN0LTMwNy5odG1sICAqKm5hdiB0
YXJnZXQqKgorY3Vyci0+ICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaGlzdG9yeS9yZXNvdXJjZXMv
cmVkaXJlY3QtdGFyZ2V0Lmh0bWwjMiAgKipuYXYgdGFyZ2V0KioKID09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzA3Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2hpc3RvcnkvcmVkaXJlY3QtMzA3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzM0Y2E3Nzg4NGE2NjYy
MDVjZThjNDIyNzU1ZjI4MjFkZmQwM2YwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDcuaHRtbApAQCAtMCwwICsxLDE1IEBACis8
aHRtbD4KKzxoZWFkPgorPHRpdGxlPjMwNyBSZWRpcmVjdDwvdGl0bGU+Cis8c2NyaXB0PgorICBm
dW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAg
ICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHt3aW5kb3cubG9jYXRpb24gPSAncmVzb3Vy
Y2VzL3JlZGlyZWN0LWhlbHBlci5wbD8zMDcnO30sIDApOworICB9Cis8L3NjcmlwdD4KKworPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCkiPlRoaXMgcGFnZSBpcyBhIDMwNyByZWRpcmVjdC48L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVk
aXJlY3QtMzA3LnBsIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMw
Ny5wbApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYzQ0ZGI5ZTkzYjE2YjRlMzIwM2Y0
MWMwYWFjNzgzYTUxYzI1ZmNkOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzA3LnBs
CisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotIyEvdXNyL2Jpbi9wZXJsCi0jIFNjcmlw
dCB0byBnZW5lcmF0ZSBhIDMwNyBIVFRQIHJlZGlyZWN0Ci0KLXByaW50ICJTdGF0dXM6IDMwNyBN
b3ZlZCBUZW1wb3JhcmlseVxyXG4iOwotcHJpbnQgIkxvY2F0aW9uOiByZXNvdXJjZXMvcmVkaXJl
Y3QtdGFyZ2V0Lmh0bWwjMVxyXG4iOwotcHJpbnQgIkNvbnRlbnQtdHlwZTogdGV4dC9odG1sXHJc
biI7Ci1wcmludCAiXHJcbiI7Ci0KLXByaW50IDw8SEVSRV9ET0NfRU5ECi08aHRtbD4KLTxoZWFk
PgotPHRpdGxlPjMwNyBSZWRpcmVjdDwvdGl0bGU+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmtlZXBXZWJIaXN0
b3J5KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotfQotPC9z
Y3JpcHQ+Ci08L2hlYWQ+Ci0KLTxib2R5PlRoaXMgcGFnZSBpcyBhIDMwNyByZWRpcmVjdC48L2Jv
ZHk+Ci08L2h0bWw+Ci1IRVJFX0RPQ19FTkQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2NhdGlvbi0wLXNlY29uZHMuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1s
b2NhdGlvbi0wLXNlY29uZHMuaHRtbAppbmRleCA1MTMzMDViYTYyM2JjZTE0Nzk4MjY0MTgyYjUw
Mzk0OTEyODM3OTYxLi4wY2UzMDZlYjU4YjEyMzliMDNjMTZiNDU0NzNjNzk2Y2RkMTgxNzY5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZG9j
dW1lbnQtbG9jYXRpb24tMC1zZWNvbmRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWRvY3VtZW50LWxvY2F0aW9uLTAtc2Vjb25kcy5odG1sCkBA
IC00LDcgKzQsNyBAQAogCiA8c2NyaXB0PgogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiB9CiBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsg
ZG9jdW1lbnQubG9jYXRpb24gPSAicmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzEiOyB9
LCAwKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVj
dC1qcy1kb2N1bWVudC1sb2NhdGlvbi0yLXNlY29uZHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2NhdGlvbi0yLXNlY29uZHMuaHRt
bAppbmRleCBmMTc1ZTUxZThjODFiNWJkN2RhZGRjOGZlMDFmMGE2ZGZhYWZiZDRkLi45OWJhMzk3
MTA5OGViZjViZTBhMWI5MWJhNGU3MTQ3NjA3NmE5N2I4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZG9jdW1lbnQtbG9jYXRpb24tMi1zZWNv
bmRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpz
LWRvY3VtZW50LWxvY2F0aW9uLTItc2Vjb25kcy5odG1sCkBAIC00LDcgKzQsNyBAQAogCiA8c2Ny
aXB0PgogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xl
YXJCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CiB9CiBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgZG9jdW1lbnQubG9jYXRpb24gPSAi
cmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzEiOyB9LCAyMDAwKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2Nh
dGlvbi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hp
c3RvcnkvcmVkaXJlY3QtanMtZG9jdW1lbnQtbG9jYXRpb24tYmVmb3JlLWxvYWQtZXhwZWN0ZWQu
dHh0CmluZGV4IGVmYmU4MzU4ZDNmOTViYjRjNWE2NzgzZWU4ODk1OTg0MWY3Zjk5NTMuLjA2MmI2
OWI0YTBiYmMwYWYwYWYwMzk4ZWZhZjUyM2M3MDU1MGExMTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2NhdGlvbi1iZWZv
cmUtbG9hZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5
L3JlZGlyZWN0LWpzLWRvY3VtZW50LWxvY2F0aW9uLWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dApA
QCAtMSw5ICsxLDggQEAKIFRoaXMgcGFnZSBpcyB0aGUgdGFyZ2V0IG9mIGEgcmVkaXJlY3QuCiAK
LUZBSUw6IEhpc3RvcnkgaXRlbSBjb3VudCBzaG91bGQgYmUgMSBidXQgaW5zdGVhZCBpcyAyLgor
UEFTUzogSGlzdG9yeSBpdGVtIGNvdW50IHNob3VsZCBiZSAxIGFuZCBpcy4KIAogCiA9PT09PT09
PT09PT09PSBCYWNrIEZvcndhcmQgTGlzdCA9PT09PT09PT09PT09PQotICAgICAgICBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2NhdGlvbi1iZWZv
cmUtbG9hZC5odG1sICAqKm5hdiB0YXJnZXQqKgogY3Vyci0+ICBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvaGlzdG9yeS9yZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwjMSAgKipuYXYgdGFyZ2V0
KioKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZG9jdW1l
bnQtbG9jYXRpb24tYmVmb3JlLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlz
dG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2NhdGlvbi1iZWZvcmUtbG9hZC5odG1sCmluZGV4
IGY2MjQwZWJmM2Y0MTdlM2FmN2VjM2YzODQyOTRjNmI2YWIyNWVjNTAuLjI2YjBjNTdlZTZjMzkw
ZTI3ODU4YmQ2ODY2MWM0MGY2Mzk3NDIwZWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2NhdGlvbi1iZWZvcmUtbG9hZC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1
bWVudC1sb2NhdGlvbi1iZWZvcmUtbG9hZC5odG1sCkBAIC00LDcgKzQsNyBAQAogCiA8c2NyaXB0
PgogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJC
YWNrRm9yd2FyZExpc3QoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CiB9CiBkb2N1bWVudC5sb2NhdGlvbiA9ICJyZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0
bWwjMSI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJl
Y3QtanMtZm9ybS1zdWJtaXQtMC1zZWNvbmRzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2hpc3RvcnkvcmVkaXJlY3QtanMtZm9ybS1zdWJtaXQtMC1zZWNvbmRzLmh0bWwKaW5kZXggZDYy
YzYzMWU0Y2Q3ZTk0ZWNhZmIwMWM3Y2YyMWI2YTE0MWM2YzVmNi4uY2Y0NjI0NzYxNDg3YjQ2NjJi
ZGU5NDA4N2Q0YWM3MzE1ZWNhYzBmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWZvcm0tc3VibWl0LTAtc2Vjb25kcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1mb3JtLXN1Ym1pdC0wLXNl
Y29uZHMuaHRtbApAQCAtNCw3ICs0LDcgQEAKIAogPHNjcmlwdD4KIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5rZWVwV2ViSGlzdG9y
eSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CiAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogfQogPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZm9y
bS1zdWJtaXQtMi1zZWNvbmRzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rvcnkv
cmVkaXJlY3QtanMtZm9ybS1zdWJtaXQtMi1zZWNvbmRzLmh0bWwKaW5kZXggYTQ5YjUxZDAwMzY1
MGEzZmZjNWJkY2UzZGJmMmU2NDJjMzI3ZjI1NC4uZWFmZGU0MDEzMWRiNjA1NWY4OGJkMTM1MDcz
MjcyNDNmMWUwOGE4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5
L3JlZGlyZWN0LWpzLWZvcm0tc3VibWl0LTItc2Vjb25kcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1mb3JtLXN1Ym1pdC0yLXNlY29uZHMuaHRt
bApAQCAtNCw3ICs0LDcgQEAKIAogPHNjcmlwdD4KIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5rZWVwV2ViSGlzdG9yeSgpOworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CiAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZm9ybS1zdWJtaXQt
YmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5
L3JlZGlyZWN0LWpzLWZvcm0tc3VibWl0LWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dAppbmRleCA3
NTliNGM4NjI1MDVhMWE4NmM4ODZlNTNmN2FjZmI0Mzk4OWI3MjBmLi40Y2JhNDk2NDc5ZDJkYTM0
Yjk3YjRhY2YxNDY4MzFjMjZiZDJiNTNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZm9ybS1zdWJtaXQtYmVmb3JlLWxvYWQtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1mb3Jt
LXN1Ym1pdC1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQKQEAgLTEsOSArMSw4IEBACiBUaGlzIHBh
Z2UgaXMgdGhlIHRhcmdldCBvZiBhIHJlZGlyZWN0LgogCi1GQUlMOiBIaXN0b3J5IGl0ZW0gY291
bnQgc2hvdWxkIGJlIDEgYnV0IGluc3RlYWQgaXMgMi4KK1BBU1M6IEhpc3RvcnkgaXRlbSBjb3Vu
dCBzaG91bGQgYmUgMSBhbmQgaXMuCiAKIAogPT09PT09PT09PT09PT0gQmFjayBGb3J3YXJkIExp
c3QgPT09PT09PT09PT09PT0KLSAgICAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3Rvcnkv
cmVkaXJlY3QtanMtZm9ybS1zdWJtaXQtYmVmb3JlLWxvYWQuaHRtbCAgKipuYXYgdGFyZ2V0KioK
IGN1cnItPiAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3RvcnkvcmVzb3VyY2VzL3JlZGlyZWN0
LXRhcmdldC5odG1sPyMxICAqKm5hdiB0YXJnZXQqKgogPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1mb3JtLXN1Ym1pdC1iZWZvcmUtbG9hZC5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWZvcm0tc3VibWl0LWJlZm9y
ZS1sb2FkLmh0bWwKaW5kZXggYzMzNmI3YTRkNTVmMzcyZmUyY2UwOTE0NDJkZWRmZDk5NjUwMjc3
NC4uYmNhNmQ3NzZlOTFkODExZTIzNzAzYTRjNjQyZWEwZmMxMWQ1ZTVjNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWZvcm0tc3VibWl0LWJl
Zm9yZS1sb2FkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGly
ZWN0LWpzLWZvcm0tc3VibWl0LWJlZm9yZS1sb2FkLmh0bWwKQEAgLTQsNyArNCw3IEBACiAKIDxz
Y3JpcHQ+CiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIua2VlcFdlYkhpc3RvcnkoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5j
bGVhckJhY2tGb3J3YXJkTGlzdCgpOwogICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKIH0KIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLTAtc2Vjb25kcy5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLTAtc2Vjb25kcy5odG1s
CmluZGV4IDMyNTlkNjQ4Mzg1OTQzY2IzNWU2OWZjMWZkMDZhY2M2NDFmOWVkMGQuLjFmZDdiNmY5
ODg2YThiMTY4MWQ0ZGVlNTllNzM1OTY4ZDNjMjM5Y2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi0wLXNlY29uZHMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24t
MC1zZWNvbmRzLmh0bWwKQEAgLTQsNyArNCw3IEBACiAKIDxzY3JpcHQ+CiBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIua2VlcFdlYkhp
c3RvcnkoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgp
OwogICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKIH0KIHNldFRpbWVv
dXQoZnVuY3Rpb24gKCkgeyBsb2NhdGlvbiA9ICJyZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0
bWwjMSI7IH0sIDApOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5
L3JlZGlyZWN0LWpzLWxvY2F0aW9uLTItc2Vjb25kcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLTItc2Vjb25kcy5odG1sCmluZGV4IDRi
MWU3NmNkM2I4ZTM3NzExMjgzNWIxMGVjMDVlYjFmNmNhZjkzYTQuLmFiMDViYTQ5YmU1MTFkYTA1
MDk0YWFkODU5ZDI0ZTg1Y2I3YTJkYWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi0yLXNlY29uZHMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tMi1zZWNvbmRz
Lmh0bWwKQEAgLTQsNyArNCw3IEBACiAKIDxzY3JpcHQ+CiBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIua2VlcFdlYkhpc3RvcnkoKTsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOwogICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKIH0KIHNldFRpbWVvdXQoZnVuY3Rp
b24gKCkgeyBsb2NhdGlvbiA9ICJyZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwjMSI7IH0s
IDIwMDApOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGly
ZWN0LWpzLWxvY2F0aW9uLWFzc2lnbi0wLXNlY29uZHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1hc3NpZ24tMC1zZWNvbmRzLmh0bWwK
aW5kZXggNWMwYmQ2NzIyNWY3YWM3MDZmNGM1YTMzMzUwODcxMGFjZTI5ODliMS4uMDdiZjNhYWY3
NWVkM2ZlY2Q5MmNjOTI1OTY1YTVjYTM4YzAwOGE5MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWFzc2lnbi0wLXNlY29uZHMu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9j
YXRpb24tYXNzaWduLTAtc2Vjb25kcy5odG1sCkBAIC00LDcgKzQsNyBAQAogCiA8c2NyaXB0Pgog
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmtlZXBXZWJIaXN0b3J5KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNr
Rm9yd2FyZExpc3QoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CiB9CiBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgbG9jYXRpb24uYXNzaWduKCJyZXNvdXJjZXMv
cmVkaXJlY3QtdGFyZ2V0Lmh0bWwjMSIpOyB9LCAwKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1hc3NpZ24tMi1zZWNvbmRz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRp
b24tYXNzaWduLTItc2Vjb25kcy5odG1sCmluZGV4IGM4YjJlMjgyYjY5Mzg2ODkyZmYzMjIyZjQ2
ODk1MjQzM2QxN2VhZGUuLjY0OTlhZmY3ZDk4ZDRiNGFmOWJlZmZjNDg5NTVkYzVhNWU5OTFhOGQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1s
b2NhdGlvbi1hc3NpZ24tMi1zZWNvbmRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWFzc2lnbi0yLXNlY29uZHMuaHRtbApAQCAt
NCw3ICs0LDcgQEAKIAogPHNjcmlwdD4KIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5rZWVwV2ViSGlzdG9yeSgpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CiAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogfQogc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IGxv
Y2F0aW9uLmFzc2lnbigicmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzEiKTsgfSwgMjAw
MCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3Qt
anMtbG9jYXRpb24tYXNzaWduLWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1hc3NpZ24tYmVmb3JlLWxv
YWQtZXhwZWN0ZWQudHh0CmluZGV4IDQyYTEyNTliZWRlNTEyNGYyZjIzZWRkNTlkMzUyOGQ0NGUy
YTczNjkuLjA2MmI2OWI0YTBiYmMwYWYwYWYwMzk4ZWZhZjUyM2M3MDU1MGExMTcgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1h
c3NpZ24tYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1hc3NpZ24tYmVmb3JlLWxvYWQtZXhwZWN0
ZWQudHh0CkBAIC0xLDkgKzEsOCBAQAogVGhpcyBwYWdlIGlzIHRoZSB0YXJnZXQgb2YgYSByZWRp
cmVjdC4KIAotRkFJTDogSGlzdG9yeSBpdGVtIGNvdW50IHNob3VsZCBiZSAxIGJ1dCBpbnN0ZWFk
IGlzIDIuCitQQVNTOiBIaXN0b3J5IGl0ZW0gY291bnQgc2hvdWxkIGJlIDEgYW5kIGlzLgogCiAK
ID09PT09PT09PT09PT09IEJhY2sgRm9yd2FyZCBMaXN0ID09PT09PT09PT09PT09Ci0gICAgICAg
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWFzc2ln
bi1iZWZvcmUtbG9hZC5odG1sICAqKm5hdiB0YXJnZXQqKgogY3Vyci0+ICBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvaGlzdG9yeS9yZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwjMSAgKipuYXYg
dGFyZ2V0KioKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMt
bG9jYXRpb24tYXNzaWduLWJlZm9yZS1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tYXNzaWduLWJlZm9yZS1sb2FkLmh0bWwKaW5k
ZXggNzcxN2IwNGE3MzE4YmViNzJkMjM1NTY2NmNmNmRkZTRkMmQ2ZjIzMC4uNzUxNzNlYzU5ZmIx
MDkxMzUzYTE0ZmM2OGU4ODUyMWZhMmM1MDllMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWFzc2lnbi1iZWZvcmUtbG9hZC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2Nh
dGlvbi1hc3NpZ24tYmVmb3JlLWxvYWQuaHRtbApAQCAtNCw3ICs0LDcgQEAKIAogPHNjcmlwdD4K
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5rZWVwV2ViSGlzdG9yeSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFj
a0ZvcndhcmRMaXN0KCk7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OwogfQogbG9jYXRpb24uYXNzaWduKCJyZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwjMSIp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpz
LWxvY2F0aW9uLWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQK
aW5kZXggYjZkYWY5ZTkyMTZlZjU5Y2Q0Yjk4MWNhZWYxNDJlMGUyZjJmNWE2Mi4uMDYyYjY5YjRh
MGJiYzBhZjBhZjAzOThlZmFmNTIzYzcwNTUwYTExNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWJlZm9yZS1sb2FkLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMt
bG9jYXRpb24tYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsOCBAQAogVGhpcyBw
YWdlIGlzIHRoZSB0YXJnZXQgb2YgYSByZWRpcmVjdC4KIAotRkFJTDogSGlzdG9yeSBpdGVtIGNv
dW50IHNob3VsZCBiZSAxIGJ1dCBpbnN0ZWFkIGlzIDIuCitQQVNTOiBIaXN0b3J5IGl0ZW0gY291
bnQgc2hvdWxkIGJlIDEgYW5kIGlzLgogCiAKID09PT09PT09PT09PT09IEJhY2sgRm9yd2FyZCBM
aXN0ID09PT09PT09PT09PT09Ci0gICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9oaXN0b3J5
L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWJlZm9yZS1sb2FkLmh0bWwgICoqbmF2IHRhcmdldCoqCiBj
dXJyLT4gIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9oaXN0b3J5L3Jlc291cmNlcy9yZWRpcmVjdC10
YXJnZXQuaHRtbCMxICAqKm5hdiB0YXJnZXQqKgogPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1iZWZvcmUtbG9hZC5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWJlZm9yZS1sb2FkLmh0
bWwKaW5kZXggNzIyYzc1YjA1MjVjZTIyMzYzOTMxMzMyODIxMzk2YjcxMzM3OTlhYi4uZmUyMDRk
ZmI4NmFkOTNiYzZiODRjOTU5M2Q3ODI2OGZlOTQyODYwOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWJlZm9yZS1sb2FkLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0
aW9uLWJlZm9yZS1sb2FkLmh0bWwKQEAgLTQsNyArNCw3IEBACiAKIDxzY3JpcHQ+CiBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIua2Vl
cFdlYkhpc3RvcnkoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJk
TGlzdCgpOwogICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKIH0KIGxv
Y2F0aW9uID0gInJlc291cmNlcy9yZWRpcmVjdC10YXJnZXQuaHRtbCMxIjsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1ocmVm
LTAtc2Vjb25kcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0
LWpzLWxvY2F0aW9uLWhyZWYtMC1zZWNvbmRzLmh0bWwKaW5kZXggM2U4NGQxZTdiM2Y0ODc1NTYw
NTEwMDM0MTc4ZjJiMjYxYmJhN2EwNC4uMTA0ZDBlNTNjYmQ0ZjhmM2VjYjIyOTczN2MyMzIzNGEz
OTQxOGNkYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGly
ZWN0LWpzLWxvY2F0aW9uLWhyZWYtMC1zZWNvbmRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWhyZWYtMC1zZWNvbmRzLmh0bWwK
QEAgLTQsNyArNCw3IEBACiAKIDxzY3JpcHQ+CiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIua2VlcFdlYkhpc3RvcnkoKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOwogICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKIH0KIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkg
eyBsb2NhdGlvbi5ocmVmID0gInJlc291cmNlcy9yZWRpcmVjdC10YXJnZXQuaHRtbCMxIjsgfSwg
MCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3Qt
anMtbG9jYXRpb24taHJlZi0yLXNlY29uZHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1ocmVmLTItc2Vjb25kcy5odG1sCmluZGV4IDgw
ODMxODU1YzVlZWIyMmQ5NTZhZTQ0YmVhMTgyNDg1N2E5OWQwMzEuLjI5OWE0NDkwODc3Zjc2NDQ0
YjRhYTk4NmRiNzBlZjdkMjM0OWIxMzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1ocmVmLTItc2Vjb25kcy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1ocmVm
LTItc2Vjb25kcy5odG1sCkBAIC00LDcgKzQsNyBAQAogCiA8c2NyaXB0PgogaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmtlZXBXZWJI
aXN0b3J5KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3Qo
KTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiB9CiBzZXRUaW1l
b3V0KGZ1bmN0aW9uICgpIHsgbG9jYXRpb24uaHJlZiA9ICJyZXNvdXJjZXMvcmVkaXJlY3QtdGFy
Z2V0Lmh0bWwjMSI7IH0sIDIwMDApOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWhyZWYtYmVmb3JlLWxvYWQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9u
LWhyZWYtYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0CmluZGV4IDNjYzljNmI5OTE0YTYxYzE3Mzdi
NGQyMzc4YmE5N2E0ZmQ4ODhlYjguLjA2MmI2OWI0YTBiYmMwYWYwYWYwMzk4ZWZhZjUyM2M3MDU1
MGExMTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVj
dC1qcy1sb2NhdGlvbi1ocmVmLWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24taHJlZi1iZWZvcmUt
bG9hZC1leHBlY3RlZC50eHQKQEAgLTEsOSArMSw4IEBACiBUaGlzIHBhZ2UgaXMgdGhlIHRhcmdl
dCBvZiBhIHJlZGlyZWN0LgogCi1GQUlMOiBIaXN0b3J5IGl0ZW0gY291bnQgc2hvdWxkIGJlIDEg
YnV0IGluc3RlYWQgaXMgMi4KK1BBU1M6IEhpc3RvcnkgaXRlbSBjb3VudCBzaG91bGQgYmUgMSBh
bmQgaXMuCiAKIAogPT09PT09PT09PT09PT0gQmFjayBGb3J3YXJkIExpc3QgPT09PT09PT09PT09
PT0KLSAgICAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9j
YXRpb24taHJlZi1iZWZvcmUtbG9hZC5odG1sICAqKm5hdiB0YXJnZXQqKgogY3Vyci0+ICBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvaGlzdG9yeS9yZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwj
MSAgKipuYXYgdGFyZ2V0KioKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVk
aXJlY3QtanMtbG9jYXRpb24taHJlZi1iZWZvcmUtbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWhyZWYtYmVmb3JlLWxvYWQuaHRt
bAppbmRleCBiOTYzY2NkOGU5MzJhNTM4Nzc1OWZhNDk3NzUyMTljN2U1MGQ0OGVkLi42ODYyZWQ1
OWJmZDcxZTc3OGYxY2Q4NWQyMDYzZGQwOTUzNGI0ZmY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24taHJlZi1iZWZvcmUtbG9h
ZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1s
b2NhdGlvbi1ocmVmLWJlZm9yZS1sb2FkLmh0bWwKQEAgLTQsNyArNCw3IEBACiAKIDxzY3JpcHQ+
CiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIua2VlcFdlYkhpc3RvcnkoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJh
Y2tGb3J3YXJkTGlzdCgpOwogICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKIH0KIGxvY2F0aW9uLmhyZWYgPSAicmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzEi
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpz
LWxvY2F0aW9uLXJlcGxhY2UtMC1zZWNvbmRzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tcmVwbGFjZS0wLXNlY29uZHMuaHRtbAppbmRl
eCAwNWMwY2E0Yjc3ODQ3MTU1MWY3ZmUxNzk1NmMzOTc1MjVlNDJlZTM5Li45YTcwNTdiYjhlYzhk
NGIzYzFmNzU2Y2JiNjI5Yjc5NDVmN2IwYzAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tcmVwbGFjZS0wLXNlY29uZHMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRp
b24tcmVwbGFjZS0wLXNlY29uZHMuaHRtbApAQCAtNCw3ICs0LDcgQEAKIAogPHNjcmlwdD4KIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5rZWVwV2ViSGlzdG9yeSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0Zv
cndhcmRMaXN0KCk7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwog
fQogc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IGxvY2F0aW9uLnJlcGxhY2UoInJlc291cmNlcy9y
ZWRpcmVjdC10YXJnZXQuaHRtbCMxIik7IH0sIDApOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLXJlcGxhY2UtMi1zZWNvbmRz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRp
b24tcmVwbGFjZS0yLXNlY29uZHMuaHRtbAppbmRleCAyYzMxNTg4NzdhNjcxNjMxODg0YmIxMDcy
NmI2OWVhNmRkMWYwZWNhLi4wZmE0NDhlNWM2MmU0NDYyMGYzMGRmMWJlN2JiNWEyMmZjYTdhYzI0
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMt
bG9jYXRpb24tcmVwbGFjZS0yLXNlY29uZHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tcmVwbGFjZS0yLXNlY29uZHMuaHRtbApA
QCAtNCw3ICs0LDcgQEAKIAogPHNjcmlwdD4KIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5rZWVwV2ViSGlzdG9yeSgpOworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CiAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogfQogc2V0VGltZW91dChmdW5jdGlvbiAoKSB7
IGxvY2F0aW9uLnJlcGxhY2UoInJlc291cmNlcy9yZWRpcmVjdC10YXJnZXQuaHRtbCMxIik7IH0s
IDIwMDApOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGly
ZWN0LWpzLWxvY2F0aW9uLXJlcGxhY2UtYmVmb3JlLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1yZXBsYWNlLWJlZm9yZS1sb2Fk
Lmh0bWwKaW5kZXggMzIyNjZhNjY3MjY4MGQ0MjY4OThjOWJlMGUxNThmMDlhNDBmN2Q0OS4uMzNk
NWVhMDhiNjliODBiZmM1NTAzYWU5MzgxMzMzMGU3MDI4NjdmMiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLXJlcGxhY2UtYmVm
b3JlLWxvYWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJl
Y3QtanMtbG9jYXRpb24tcmVwbGFjZS1iZWZvcmUtbG9hZC5odG1sCkBAIC00LDcgKzQsNyBAQAog
CiA8c2NyaXB0PgogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CiB9CiBsb2NhdGlvbi5yZXBsYWNlKCJyZXNvdXJjZXMvcmVkaXJlY3QtdGFy
Z2V0Lmh0bWwjMSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5
L3JlZGlyZWN0LW1ldGEtcmVmcmVzaC0wLXNlY29uZHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1tZXRhLXJlZnJlc2gtMC1zZWNvbmRzLmh0bWwKaW5kZXgg
NmU3OGVjNTY2OTlkZWE3OTFjNjU1ZTdhZmE1ZDBkYmQ5OWFkNGMzNi4uMGYwZTE3MWVlMTE2YmJi
YmFiMTU3NzNlOThhNmQ4OWYzYWQ0YjJiNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LW1ldGEtcmVmcmVzaC0wLXNlY29uZHMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtbWV0YS1yZWZyZXNoLTAtc2Vj
b25kcy5odG1sCkBAIC00LDcgKzQsNyBAQAogPHRpdGxlPk1ldGEgUmVmcmVzaCBSZWRpcmVjdDwv
dGl0bGU+CiA8c2NyaXB0PgogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CiB9CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1tZXRhLXJlZnJlc2gtMi1zZWNvbmRzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtbWV0YS1yZWZyZXNoLTIt
c2Vjb25kcy5odG1sCmluZGV4IGI5ZjY1NDk0M2E0YTY5NDMzMmQ3NGY1MGZiYjdhNzk1NjIwODBi
NTcuLmU4ZDc4MzMyNWJmYjhkODQwYzA5MThkOWEzMmU3OGJiNTc2MDk0ZjggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1tZXRhLXJlZnJlc2gtMi1z
ZWNvbmRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0
LW1ldGEtcmVmcmVzaC0yLXNlY29uZHMuaHRtbApAQCAtNCw3ICs0LDcgQEAKIDx0aXRsZT5NZXRh
IFJlZnJlc2ggUmVkaXJlY3Q8L3RpdGxlPgogPHNjcmlwdD4KIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5rZWVwV2ViSGlzdG9yeSgp
OworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CiAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogfQogPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVzb3VyY2VzL3JlZGlyZWN0
LWhlbHBlci5wbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZXNvdXJjZXMvcmVk
aXJlY3QtaGVscGVyLnBsCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwZjJlN2RhM2E0OTcxMWNlNjA3Yzc2YjNhMThk
ZjIzYTUxMDM4ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hp
c3RvcnkvcmVzb3VyY2VzL3JlZGlyZWN0LWhlbHBlci5wbApAQCAtMCwwICsxLDI1IEBACisjIS91
c3IvYmluL3BlcmwKKyMgU2NyaXB0IHRvIGdlbmVyYXRlIGEgMzB4IEhUVFAgcmVkaXJlY3QgKGRl
dGVybWluZWQgYnkgdGhlIHF1ZXJ5IHBhcmFtZXRlcikKKworJFJFRElSRUNUX0NPREUgPSAkRU5W
eydRVUVSWV9TVFJJTkcnfSB8fCAnMzAxJzsKKworJFNUQVRVU19URVhUUyA9IHsKKyAgJzMwMScg
PT4gJ01vdmVkIFBlcm1hbmVudGx5JywKKyAgJzMwMicgPT4gJ01vdmVkIFRlbXBvcmFyaWx5JywK
KyAgJzMwMycgPT4gJ1NlZSBPdGhlcicsCisgICczMDcnID0+ICdNb3ZlZCBUZW1wb3JhcmlseScK
K307CisKK3ByaW50ICJTdGF0dXM6ICRSRURJUkVDVF9DT0RFICRTVEFUVVNfVEVYVFN7JFJFRElS
RUNUX0NPREV9XHJcbiI7CitwcmludCAiTG9jYXRpb246IHJlZGlyZWN0LXRhcmdldC5odG1sIzJc
clxuIjsKK3ByaW50ICJDb250ZW50LXR5cGU6IHRleHQvaHRtbFxyXG4iOworcHJpbnQgIlxyXG4i
OworCitwcmludCA8PEhFUkVfRE9DX0VORAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT4kUkVESVJF
Q1RfQ09ERSBSZWRpcmVjdDwvdGl0bGU+CisKKzxib2R5PlRoaXMgcGFnZSBpcyBhICRSRURJUkVD
VF9DT0RFIHJlZGlyZWN0LjwvYm9keT4KKzwvaHRtbD4KK0hFUkVfRE9DX0VORApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jlc291cmNlcy9yZWRpcmVjdC10YXJn
ZXQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZXNvdXJjZXMvcmVkaXJl
Y3QtdGFyZ2V0Lmh0bWwKaW5kZXggYjNlYTRlZTkxZGY1OTI2YTdjZjNhNDYyNTJhYWQzNjczZjkx
M2IwOS4uOTIwNTlhZWRjMzUwMDFiZTY5Y2M1OWQ3YjRmMWM0ZjE2ZThhZmFmNCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jlc291cmNlcy9yZWRpcmVjdC10YXJn
ZXQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVzb3VyY2VzL3Jl
ZGlyZWN0LXRhcmdldC5odG1sCkBAIC0xNCw3ICsxNCw3IEBAIGZ1bmN0aW9uIGxvZyhzKQogZnVu
Y3Rpb24gdGVzdEhpc3RvcnlJdGVtQ291bnQoKQogewogICAgIHZhciBleHBlY3RlZCA9IHBhcnNl
SW50KGxvY2F0aW9uLmhhc2guc2xpY2UoMSkpOwotICAgIHZhciBhY3R1YWwgPSBsYXlvdXRUZXN0
Q29udHJvbGxlci53ZWJIaXN0b3J5SXRlbUNvdW50ICsgMTsgLy8gQWRkIG9uZSB0byBpbmNsdWRl
IHRoZSByZWZlcnJpbmcgcGFnZSwgd2hpY2ggbG9hZGVkIGJlZm9yZSB3ZSBzdGFydGVkIHJlY29y
ZGluZyBoaXN0b3J5LgorICAgIHZhciBhY3R1YWwgPSBoaXN0b3J5Lmxlbmd0aDsKICAgICBpZiAo
YWN0dWFsID09PSBleHBlY3RlZCkKICAgICAgICAgbG9nKCJQQVNTOiBIaXN0b3J5IGl0ZW0gY291
bnQgc2hvdWxkIGJlICIgKyBleHBlY3RlZCArICIgYW5kIGlzLiIpOwogICAgIGVsc2UKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy8zMDctYWZ0ZXItMzAzLWFmdGVy
LXBvc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nLzMwNy1h
ZnRlci0zMDMtYWZ0ZXItcG9zdC1leHBlY3RlZC50eHQKaW5kZXggYTBhZDY3NDQ0ZGYzMzY3NTM4
ZjgyZTBmNWE3NDAxNzAzZTNiM2Q0Zi4uY2YwMGVmODIyM2I1YzgyNWNiMzhmZGIxN2JhN2Q5NTEy
MWQ4ZDQyMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nLzMwNy1h
ZnRlci0zMDMtYWZ0ZXItcG9zdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9sb2FkaW5nLzMwNy1hZnRlci0zMDMtYWZ0ZXItcG9zdC1leHBlY3RlZC50eHQKQEAgLTEs
NiArMSw3IEBACiBtYWluIGZyYW1lIC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQog
bWFpbiBmcmFtZSAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQogbWFpbiBmcmFtZSAtIGRpZEZpbmlz
aERvY3VtZW50TG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRp
cmVjdFRvVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcG9zdC10
by0zMDMtdGFyZ2V0LnBocCAKIG1haW4gZnJhbWUgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JG
cmFtZQogbWFpbiBmcmFtZSAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQogPHVua25vd24+IC0gZGlk
RmluaXNoTG9hZGluZwpAQCAtMTEsNiArMTIsNyBAQCBtYWluIGZyYW1lIC0gZGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKIGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9wb3N0LXRvLTMwMy10YXJnZXQucGhwIC0gd2lsbFNlbmRS
ZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jl
c291cmNlcy8zMDctcG9zdC1vdXRwdXQtdGFyZ2V0LnBocCwgbWFpbiBkb2N1bWVudCBVUkwgaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzLzMwNy1wb3N0LW91dHB1dC10YXJn
ZXQucGhwLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgPE5TVVJMUmVzcG9uc2Ug
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzLzMwMy10by0zMDctdGFyZ2V0
LnBocCwgaHR0cCBzdGF0dXMgY29kZSAzMDc+CiBtYWluIGZyYW1lIC0gZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKIGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9sb2FkaW5nL3Jlc291cmNlcy9wb3N0LXRvLTMwMy10YXJnZXQucGhwIC0gZGlkUmVjZWl2ZVJl
c3BvbnNlIDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291
cmNlcy8zMDctcG9zdC1vdXRwdXQtdGFyZ2V0LnBocCwgaHR0cCBzdGF0dXMgY29kZSAyMDA+Citt
YWluIGZyYW1lIC0gZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZQogbWFpbiBmcmFtZSAt
IGRpZENvbW1pdExvYWRGb3JGcmFtZQogbWFpbiBmcmFtZSAtIGRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lCiBtYWluIGZyYW1lIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZWRpcmVjdC1tZXRob2Rz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9yZWRpcmVjdC1t
ZXRob2RzLWV4cGVjdGVkLnR4dAppbmRleCA4YWRhNjM2MWFmNzExOGYzMzI2MmNjOWQ2MTY5YTUz
OTk4NDU0OTBjLi4wNDlmNGJlM2Q3NzVhNTJkMDI5ZWQ1YzM2MGMzOGEwZjUyYzBjZDRkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5nL3JlZGlyZWN0
LW1ldGhvZHMtZXhwZWN0ZWQudHh0CkBAIC0xOSw2ICsxOSw3IEBAIGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAtIGRpZFJl
Y2VpdmVSCiBmcmFtZSAiMCIgLSBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lCiBmcmFt
ZSAiMCIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKIGZyYW1lICIwIiAtIGRpZEZpbmlzaERvY3Vt
ZW50TG9hZEZvckZyYW1lCitmcmFtZSAiMCIgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9V
Ukw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRo
b2RzLXJlc3VsdC5waHAgCiBmcmFtZSAiMCIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFt
ZQogZnJhbWUgIjAiIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCiBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRGaW5p
c2hMb2FkaW5nCkBAIC0yNyw2ICsyOCw3IEBAIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5n
L3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAgLSB3aWxsU2VuZFJlCiBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1
bHQucGhwIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHA/cmVk
aXJlY3RlZD10cnVlLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9h
ZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwLCBodHRwIG1ldGhvZCBH
RVQ+IHJlZGlyZWN0UmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCwgaHR0cCBzdGF0
dXMgY29kZSAzMDE+CiBmcmFtZSAiMCIgLSBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWRGb3JGcmFtZQogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3Vy
Y2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNV
UkxSZXNwb25zZSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJl
Y3QtbWV0aG9kcy1yZXN1bHQucGhwP3JlZGlyZWN0ZWQ9dHJ1ZSwgaHR0cCBzdGF0dXMgY29kZSAy
MDA+CitmcmFtZSAiMCIgLSBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lCiBmcmFtZSAi
MCIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKIGZyYW1lICIwIiAtIGRpZEZpbmlzaERvY3VtZW50
TG9hZEZvckZyYW1lCiBmcmFtZSAiMSIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
CkBAIC00Nyw2ICs0OSw3IEBAIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNl
cy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAtIGRpZFJlY2VpdmVSCiBmcmFtZSAiMSIgLSBk
aWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lCiBmcmFtZSAiMSIgLSBkaWRDb21taXRMb2Fk
Rm9yRnJhbWUKIGZyYW1lICIxIiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCitmcmFt
ZSAiMSIgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6IGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAgCiBmcmFt
ZSAiMSIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQogZnJhbWUgIjEiIC0gZGlkRmlu
aXNoTG9hZEZvckZyYW1lCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMv
cmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5nCkBAIC01NSw2ICs1
OCw3IEBAIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1t
ZXRob2RzLXJlc3VsdC5waHAgLSB3aWxsU2VuZFJlCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9h
ZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIC0gd2lsbFNlbmRSZXF1
ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291
cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHA/cmVkaXJlY3RlZD10cnVlLCBtYWluIGRv
Y3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJl
Y3QtbWV0aG9kcy1yZXN1bHQucGhwLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2Ug
PE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3Jl
ZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCwgaHR0cCBzdGF0dXMgY29kZSAzMDI+CiBmcmFtZSAi
MSIgLSBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZQog
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMt
cmVzdWx0LnBocCAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhw
P3JlZGlyZWN0ZWQ9dHJ1ZSwgaHR0cCBzdGF0dXMgY29kZSAyMDA+CitmcmFtZSAiMSIgLSBkaWRD
YW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lCiBmcmFtZSAiMSIgLSBkaWRDb21taXRMb2FkRm9y
RnJhbWUKIGZyYW1lICIxIiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCiBmcmFtZSAi
MiIgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCkBAIC03NSw2ICs3OSw3IEBAIGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZv
cm0uaHRtbCAtIGRpZFJlY2VpdmVSCiBmcmFtZSAiMiIgLSBkaWRDYW5jZWxDbGllbnRSZWRpcmVj
dEZvckZyYW1lCiBmcmFtZSAiMiIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKIGZyYW1lICIyIiAt
IGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCitmcmFtZSAiMiIgLSB3aWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0VG9VUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNl
cy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAgCiBmcmFtZSAiMiIgLSBkaWRIYW5kbGVPbmxv
YWRFdmVudHNGb3JGcmFtZQogZnJhbWUgIjIiIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCiBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3Jt
Lmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5nCkBAIC04Myw2ICs4OCw3IEBAIGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAgLSB3
aWxsU2VuZFJlCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJl
Y3QtbWV0aG9kcy1yZXN1bHQucGhwIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJM
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2Rz
LXJlc3VsdC5waHA/cmVkaXJlY3RlZD10cnVlLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhw
LCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0
LnBocCwgaHR0cCBzdGF0dXMgY29kZSAzMDM+CiBmcmFtZSAiMiIgLSBkaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZQogaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCAtIGRpZFJlY2Vp
dmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9y
ZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwP3JlZGlyZWN0ZWQ9dHJ1ZSwgaHR0
cCBzdGF0dXMgY29kZSAyMDA+CitmcmFtZSAiMiIgLSBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZv
ckZyYW1lCiBmcmFtZSAiMiIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKIGZyYW1lICIyIiAtIGRp
ZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCiBmcmFtZSAiMyIgLSBkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lCkBAIC0xMDMsNiArMTA5LDcgQEAgaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIC0gZGlkUmVjZWl2
ZVIKIGZyYW1lICIzIiAtIGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUKIGZyYW1lICIz
IiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQogZnJhbWUgIjMiIC0gZGlkRmluaXNoRG9jdW1lbnRM
b2FkRm9yRnJhbWUKK2ZyYW1lICIzIiAtIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDog
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMt
cmVzdWx0LnBocCAKIGZyYW1lICIzIiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiBm
cmFtZSAiMyIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9s
b2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZvcm0uaHRtbCAtIGRpZEZpbmlzaExv
YWRpbmcKQEAgLTExMSw2ICsxMTgsNyBAQCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9y
ZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIC0gd2lsbFNlbmRSZQogaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0
LnBocCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwP3JlZGly
ZWN0ZWQ9dHJ1ZSwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRp
bmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCwgaHR0cCBtZXRob2QgUE9T
VD4gcmVkaXJlY3RSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
bG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwLCBodHRwIHN0YXR1
cyBjb2RlIDMwNz4KIGZyYW1lICIzIiAtIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lCiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJj
ZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VS
TFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVj
dC1tZXRob2RzLXJlc3VsdC5waHA/cmVkaXJlY3RlZD10cnVlLCBodHRwIHN0YXR1cyBjb2RlIDIw
MD4KK2ZyYW1lICIzIiAtIGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUKIGZyYW1lICIz
IiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQogZnJhbWUgIjMiIC0gZGlkRmluaXNoRG9jdW1lbnRM
b2FkRm9yRnJhbWUKIGZyYW1lICIzIiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2Jh
Y2stc2VuZC1yZWZlcnJlci1oZWxwZXIucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL3Jlc291cmNlcy9iYWNrLXNlbmQtcmVmZXJyZXItaGVscGVyLnBocAppbmRleCBiZjYy
OWVmNTE1YTY5MWIyZDdmMDZlNDVmOGE2MGI3NmU5OWE0M2IxLi5iNTQ5NTZhMmQ2ZTljMTMxYTk1
NDliZmZiYWZiNDhjZjY0NGUxYjUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L25hdmlnYXRpb24vcmVzb3VyY2VzL2JhY2stc2VuZC1yZWZlcnJlci1oZWxwZXIucGhwCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay1zZW5kLXJl
ZmVycmVyLWhlbHBlci5waHAKQEAgLTE4LDggKzE4LDggQEAgd2luZG93Lm5hbWU6IDxzY3JpcHQ+
ZG9jdW1lbnQud3JpdGUod2luZG93Lm5hbWUpPC9zY3JpcHQ+CiAKIDxzY3JpcHQ+CiAgICAgaWYg
KHdpbmRvdy5uYW1lID09IDEpIHsKLSAgICAgICAgLy8gTmF2aWdhdGUgb25jZSBtb3JlIHRvIGFk
ZCBhIGhpc3RvcnkgZW50cnkuCi0gICAgICAgIGRvY3VtZW50Lmxvb3BiYWNrLnN1Ym1pdCgpOwor
ICAgICAgICAvLyBOYXZpZ2F0ZSBvbmNlIG1vcmUgKGluIGEgdGltZW91dCkgdG8gYWRkIGEgaGlz
dG9yeSBlbnRyeS4KKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtkb2N1bWVudC5sb29w
YmFjay5zdWJtaXQoKTt9LCAwKTsKICAgICB9IGVsc2UgaWYgKHdpbmRvdy5uYW1lID09IDIpIHsK
ICAgICAgICAgaGlzdG9yeS5nbygtMSk7CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZG9jdW1lbnQtbG9jYXRpb24u
anMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2RvY3VtZW50
LWxvY2F0aW9uLmpzCmluZGV4IDFkYjQ4Y2RmZmI2YzhkY2E1ZWZmY2RlNjFmNGQzMGNlZDgyZmE5
ZTMuLmEwYWI0ZDgzMjliNjAzOGEyOWE0M2Y0ZGI4NjRkMjVjZDFhY2MyYTAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvZG9jdW1lbnQtbG9j
YXRpb24uanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNl
cy9kb2N1bWVudC1sb2NhdGlvbi5qcwpAQCAtNyw3ICs3LDggQEAgZnVuY3Rpb24gc3RhcnQoKSB7
CiAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CiAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAKLSAgICAgIHJ1blRlc3QoKTsKKyAgICAg
IC8vIExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0byBoYXBwZW4gb3V0c2lkZSB0aGUgb25sb2FkIGhh
bmRsZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBlbnRyaWVzLgorICAgICAgc2V0VGltZW91dChydW5U
ZXN0LCAwKTsKICAgICB9IGVsc2UgewogICAgICAgLy8gbG9hZGVkIHRoZSA/MSBuYXZpZ2F0aW9u
CiAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL3N1Ym1pdC10by1mcmFn
bWVudC5wbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvc3Vi
bWl0LXRvLWZyYWdtZW50LnBsCmluZGV4IDMwYmYxNTY1ODE5ZDk3NzcyYWRkOGVkY2E2YTc4YmMz
YjY3NDUwOGMuLjk3ZWU5N2JkYzA4YzQyNjdmYmUzOTYwZjVhYjE1MjhkNTIzMzkzMmMgMTAwNzU1
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvc3VibWl0
LXRvLWZyYWdtZW50LnBsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9y
ZXNvdXJjZXMvc3VibWl0LXRvLWZyYWdtZW50LnBsCkBAIC0yMiw3ICsyMiw4IEBAIG9ubG9hZCA9
IGZ1bmN0aW9uKCkgewogICBhbGVydCgic3RhZ2U6ICIgKyBzZXNzaW9uU3RvcmFnZS5zdGFnZSk7
CiAgIHN3aXRjaCAoc2Vzc2lvblN0b3JhZ2Uuc3RhZ2UrKykgewogICBjYXNlIDE6Ci0gICAgZG9j
dW1lbnQuZm9ybXNbMF0uc3VibWl0KCk7CisgICAgLy8gU3VibWl0IGZvcm0gaW4gYSB0aW1lb3V0
IHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGNyZWF0ZSBhIG5ldyBiYWNrL2ZvcndhcmQgbGlzdCBpdGVt
LgorICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7ZG9jdW1lbnQuZm9ybXNbMF0uc3VibWl0KCk7
fSwgMCk7CiAgICAgYnJlYWs7CiAgIGNhc2UgMjoKICAgICBoaXN0b3J5LmJhY2soKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3NlY3VyaXR5L2F1dG9jb21wbGV0ZS1jbGVhcmVkLW9uLWJhY2su
aHRtbCBiL0xheW91dFRlc3RzL3NlY3VyaXR5L2F1dG9jb21wbGV0ZS1jbGVhcmVkLW9uLWJhY2su
aHRtbAppbmRleCAwODAxODgxYmM3ODhjODkyZDFjMTEyOWMxOTFhMzA3YTViMDlmYTVlLi45NmM5
ZDgxYzk1NmE3YzhiODVmN2E2YWU3YWVlMWJjYTNhN2MyOWU5IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zZWN1cml0eS9hdXRvY29tcGxldGUtY2xlYXJlZC1vbi1iYWNrLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvc2VjdXJpdHkvYXV0b2NvbXBsZXRlLWNsZWFyZWQtb24tYmFjay5odG1sCkBAIC0x
OSw3ICsxOSw4IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgIGlmICghc2Vzc2lvblN0b3JhZ2Uu
c2Vjb25kUGFnZVJlYWNoZWQpIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZp
cnN0SW5wdXQiKS52YWx1ZSA9ICJTdXBlclNlZWtyaXRWYWx1ZSI7CiAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJzZWNvbmRJbnB1dCIpLnZhbHVlID0gIlN1cGVyU2Vla3JpdFZhbHVl
IjsKLSAgICAgICAgd2luZG93LmxvY2F0aW9uID0gInJlc291cmNlcy9hdXRvY29tcGxldGUtY2xl
YXJlZC1vbi1iYWNrMi5odG1sIjsKKyAgICAgICAgLy8gTG9jYXRpb24gY2hhbmdlcyBuZWVkIHRv
IGhhcHBlbiBvdXRzaWRlIHRoZSBvbmxvYWQgaGFuZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVu
dHJpZXMuCisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7d2luZG93LmxvY2F0aW9uID0g
InJlc291cmNlcy9hdXRvY29tcGxldGUtY2xlYXJlZC1vbi1iYWNrMi5odG1sIjt9LCAwKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaGFzaC1jaGFuZ2Utd2l0aC14aHIuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2hhc2gtY2hh
bmdlLXdpdGgteGhyLmpzCmluZGV4IDQyOTA2ODFlYTgyZmFjNmZiMGJlYTU0M2FmMzM1MWI4OWNh
NTE1MDYuLjdmNTZmNzk1YTE4MmUxYTgxZGFmYjY0MDBlYzgzYzhjMzBjMGQ1ZmEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14aHIuanMKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5qcwpAQCAtODEsNiArODEsMTIg
QEAgZnVuY3Rpb24gaW52b2tlQmFjaygpCiAKIGZ1bmN0aW9uIHJ1blRlc3QoKQogeworICAgIC8v
IExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0byBoYXBwZW4gb3V0c2lkZSB0aGUgb25sb2FkIGhhbmRs
ZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBlbnRyaWVzLgorICAgIHNldFRpbWVvdXQocnVuVGVzdHNJ
bm5lciwgMCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RzSW5uZXIoKQorewogICAgIGJhY2tJdGVy
YXRpb25zID0gMTA7CiAgICAgY29uc2VjdXRpdmVGYWlsdXJlcyA9IDA7CiAgICAgc3VjY2Vzc2Vz
ID0gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggNGI2ZDlmMWViY2M5ZTIzNjRjMTM4YmI5NzRhYjYwOWM0MzQxYjAyNi4uYzRlZTE1OTJk
ZTE0OGRjYTNjMmQ2M2RhYWUwMmE5NmEwMzI0ZDBlYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMC0wOC0w
MyAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXNzaW9uIGhpc3Rvcnkgc2hvdWxk
IHNraXAgb3ZlciBKUyByZWRpcmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQyODYxCisgICAgICAgIAorICAgICAgICBMb2NrIHRoZSBiYWNrL2Zv
cndhcmQgbGlzdCBmb3IgbG9jYXRpb24gY2hhbmdlcyBhbmQgZm9ybSBzdWJtaXRzIHRoYXQKKyAg
ICAgICAgaGFwcGVuIGJlZm9yZSB0aGUgb25sb2FkIGV2ZW50IGZpcmVzIHRoYXQgYXJlIG5vdCB0
aGUgcmVzdWx0IG9mIHVzZXIKKyAgICAgICAgZ2VzdHVyZXMuCisgICAgICAgIAorICAgICAgICBN
YWRlIGZvcm0gc3VibWlzc2lvbiAoYXQgdGhlIFNjaGVkdWxlZEZvcm1TdWJtaXNzaW9uIGxldmVs
KSBtb3JlIHNpbWlsYXIKKyAgICAgICAgdG8gU2NoZWR1bGVkVVJMTmF2aWdhdGlvbiBieSBoYXZp
bmcgaXQgY2FsbCBjbGllbnRSZWRpcmVjdGVkIHRvbywgZml4aW5nCisgICAgICAgIGEgbG9uZy1z
dGFuZGluZyBGSVhNRS4KKworICAgICAgICBUZXN0OiBmYXN0L2hpc3RvcnkvZ2VzdHVyZS1iZWZv
cmUtb25sb2FkLWxvY2F0aW9uLWhyZWYuaHRtbCwKKyAgICAgICAgZmFzdC9oaXN0b3J5L2dlc3R1
cmUtYmVmb3JlLW9ubG9hZC1mb3JtLXN1Ym1pdC5odG1sIGFuZCB1cGRhdGVkCisgICAgICAgIGV4
cGVjdGF0aW9ucyBmb3IgaHR0cC90ZXN0cy9oaXN0b3J5IHRlc3RzIHRoYXQgdXNlZCB0byBmYWls
LgorCisgICAgICAgICogbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvcm1TdWJtaXNzaW9uOjpyZXF1ZXN0VVJMKTogCisgICAgICAgIChXZWJDb3JlOjpGb3Jt
U3VibWlzc2lvbjo6cG9wdWxhdGVGcmFtZUxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIv
Rm9ybVN1Ym1pc3Npb24uaDoKKyAgICAgICAgKiBsb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkRm9ybVN1Ym1pc3Npb246OlNjaGVkdWxlZEZv
cm1TdWJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEZvcm1TdWJtaXNzaW9u
OjpmaXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEZvcm1TdWJtaXNzaW9uOjpkaWRT
dGFydFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEZvcm1TdWJtaXNzaW9uOjpk
aWRTdG9wVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVk
dWxlUmVkaXJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6Om11c3RM
b2NrQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1bGVy
OjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0U2No
ZWR1bGVyOjpzY2hlZHVsZUZvcm1TdWJtaXNzaW9uKToKKyAgICAgICAgKiBsb2FkZXIvUmVkaXJl
Y3RTY2hlZHVsZXIuaDoKKwogMjAxMC0wOC0wMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJt
aXNzaW9uLmNwcAppbmRleCBmNjYxMjczNWJjNzMxM2E1YTNhMmI0ZWVlOGI4ZjFmNzA5ZDk1Yzli
Li4yMmU4OWQ3Y2QxMDYwM2FlMDljZWQ3NWFmMzYxMDYzZjk5NDBiZWU1IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRm9y
bVN1Ym1pc3Npb24uY3BwCkBAIC0xNzksNiArMTc5LDE2IEBAIFBhc3NSZWZQdHI8Rm9ybVN1Ym1p
c3Npb24+IEZvcm1TdWJtaXNzaW9uOjpjcmVhdGUoSFRNTEZvcm1FbGVtZW50KiBmb3JtLCBjb25z
dCBBCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGb3JtU3VibWlzc2lvbihhdHRyaWJ1dGVzLm1l
dGhvZCgpLCBhY3Rpb25VUkwsIHRhcmdldE9yQmFzZVRhcmdldCwgZW5jb2RpbmdUeXBlLCBmb3Jt
U3RhdGUucmVsZWFzZSgpLCBmb3JtRGF0YS5yZWxlYXNlKCksIGJvdW5kYXJ5LCBsb2NrSGlzdG9y
eSwgZXZlbnQpKTsKIH0KIAorS1VSTCBGb3JtU3VibWlzc2lvbjo6cmVxdWVzdFVSTCgpIGNvbnN0
Cit7CisgICAgaWYgKG1fbWV0aG9kID09IEZvcm1TdWJtaXNzaW9uOjpQb3N0TWV0aG9kKQorICAg
ICAgICByZXR1cm4gbV9hY3Rpb247CisKKyAgICBLVVJMIHJlcXVlc3RVUkwobV9hY3Rpb24pOwor
ICAgIHJlcXVlc3RVUkwuc2V0UXVlcnkobV9mb3JtRGF0YS0+ZmxhdHRlblRvU3RyaW5nKCkpOyAg
ICAKKyAgICByZXR1cm4gcmVxdWVzdFVSTDsKK30KKwogdm9pZCBGb3JtU3VibWlzc2lvbjo6cG9w
dWxhdGVGcmFtZUxvYWRSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lUmVxdWVzdCkKIHsK
ICAgICBpZiAoIW1fdGFyZ2V0LmlzRW1wdHkoKSkKQEAgLTE4Nyw5ICsxOTcsNyBAQCB2b2lkIEZv
cm1TdWJtaXNzaW9uOjpwb3B1bGF0ZUZyYW1lTG9hZFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYg
ZnJhbWVSZXF1ZXN0KQogICAgIGlmICghbV9yZWZlcnJlci5pc0VtcHR5KCkpCiAgICAgICAgIGZy
YW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQUmVmZXJyZXIobV9yZWZlcnJlcik7
CiAKLSAgICBpZiAobV9tZXRob2QgPT0gRm9ybVN1Ym1pc3Npb246OkdldE1ldGhvZCkKLSAgICAg
ICAgbV9hY3Rpb24uc2V0UXVlcnkobV9mb3JtRGF0YS0+ZmxhdHRlblRvU3RyaW5nKCkpOwotICAg
IGVsc2UgeworICAgIGlmIChtX21ldGhvZCA9PSBGb3JtU3VibWlzc2lvbjo6UG9zdE1ldGhvZCkg
ewogICAgICAgICBmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUE1ldGhvZCgi
UE9TVCIpOwogICAgICAgICBmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUEJv
ZHkobV9mb3JtRGF0YSk7CiAKQEAgLTIwMCw3ICsyMDgsNyBAQCB2b2lkIEZvcm1TdWJtaXNzaW9u
Ojpwb3B1bGF0ZUZyYW1lTG9hZFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVSZXF1ZXN0
KQogICAgICAgICAgICAgZnJhbWVSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBDb250
ZW50VHlwZShtX2NvbnRlbnRUeXBlICsgIjsgYm91bmRhcnk9IiArIG1fYm91bmRhcnkpOwogICAg
IH0KIAotICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRVUkwobV9hY3Rpb24p
OworICAgIGZyYW1lUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRVUkwocmVxdWVzdFVSTCgp
KTsKICAgICBGcmFtZUxvYWRlcjo6YWRkSFRUUE9yaWdpbklmTmVlZGVkKGZyYW1lUmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKSwgbV9vcmlnaW4pOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xv
YWRlci9Gb3JtU3VibWlzc2lvbi5oIGIvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaApp
bmRleCBiZWU0ZTcxNTFhODkzNDZkMDMyOTNkZTMyNGZkNTdkYTkyYzI2ZGY2Li5iOTM1ODgyYzQx
MTU1YjhlZWE4ZDZiNTU0ZWI0YTZhYWM3NzMyZjhhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRl
ci9Gb3JtU3VibWlzc2lvbi5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgK
QEAgLTg1LDYgKzg1LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1TdWJt
aXNzaW9uPiBjcmVhdGUoSFRNTEZvcm1FbGVtZW50KiwgY29uc3QgQXR0cmlidXRlcyYsIFBhc3NS
ZWZQdHI8RXZlbnQ+IGV2ZW50LCBib29sIGxvY2tIaXN0b3J5LCBGb3JtU3VibWlzc2lvblRyaWdn
ZXIpOwogCiAgICAgdm9pZCBwb3B1bGF0ZUZyYW1lTG9hZFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVz
dCYpOworICAgIAorICAgIEtVUkwgcmVxdWVzdFVSTCgpIGNvbnN0OwogCiAgICAgTWV0aG9kIG1l
dGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0aG9kOyB9CiAgICAgY29uc3QgS1VSTCYgYWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb247IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVy
L1JlZGlyZWN0U2NoZWR1bGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVy
LmNwcAppbmRleCAzY2ZlNjFhMDMwNDYzMzUyNzlmZDQ1Y2IzMGM4NTEzNzEzNGYxOWY3Li5hYTAy
YzMwNzYzYjc1MzU4ZTVmNzhhYjBiOGMxYTUxZjUzOGQ4OWMxIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvUmVkaXJl
Y3RTY2hlZHVsZXIuY3BwCkBAIC0xNzUsMTUgKzE3NSwxMyBAQCBwdWJsaWM6CiAgICAgU2NoZWR1
bGVkRm9ybVN1Ym1pc3Npb24oUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gc3VibWlzc2lvbiwg
Ym9vbCBsb2NrQmFja0ZvcndhcmRMaXN0LCBib29sIGR1cmluZ0xvYWQpCiAgICAgICAgIDogU2No
ZWR1bGVkTmF2aWdhdGlvbigwLCBzdWJtaXNzaW9uLT5sb2NrSGlzdG9yeSgpLCBsb2NrQmFja0Zv
cndhcmRMaXN0LCBkdXJpbmdMb2FkLCB0cnVlKQogICAgICAgICAsIG1fc3VibWlzc2lvbihzdWJt
aXNzaW9uKQotICAgICAgICAsIG1fd2FzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKFVzZXJHZXN0dXJl
SW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKKyAgICAgICAgLCBtX2hhdmVUb2xk
Q2xpZW50KGZhbHNlKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fc3VibWlzc2lvbi0+c3RhdGUo
KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGZpcmUoRnJhbWUqIGZyYW1lKQogICAgIHsK
LSAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihtX3dhc1Byb2Nl
c3NpbmdVc2VyR2VzdHVyZSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBEZWZp
bml0ZWx5Tm90UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKLQogICAgICAgICAvLyBUaGUgc3VibWl0
Rm9ybSBmdW5jdGlvbiB3aWxsIGZpbmQgYSB0YXJnZXQgZnJhbWUgYmVmb3JlIHVzaW5nIHRoZSBy
ZWRpcmVjdGlvbiB0aW1lci4KICAgICAgICAgLy8gTm93IHRoYXQgdGhlIHRpbWVyIGhhcyBmaXJl
ZCwgd2UgbmVlZCB0byByZXBlYXQgdGhlIHNlY3VyaXR5IGNoZWNrIHdoaWNoIG5vcm1hbGx5IGlz
IGRvbmUgd2hlbgogICAgICAgICAvLyBzZWxlY3RpbmcgYSB0YXJnZXQsIGluIGNhc2UgY29uZGl0
aW9ucyBoYXZlIGNoYW5nZWQuIE90aGVyIGNvZGUgcGF0aHMgYXZvaWQgdGhpcyBieSB0YXJnZXRp
bmcKQEAgLTE5NCwxNSArMTkyLDI1IEBAIHB1YmxpYzoKICAgICAgICAgbV9zdWJtaXNzaW9uLT5w
b3B1bGF0ZUZyYW1lTG9hZFJlcXVlc3QoZnJhbWVSZXF1ZXN0KTsKICAgICAgICAgZnJhbWUtPmxv
YWRlcigpLT5sb2FkRnJhbWVSZXF1ZXN0KGZyYW1lUmVxdWVzdCwgbG9ja0hpc3RvcnkoKSwgbG9j
a0JhY2tGb3J3YXJkTGlzdCgpLCBtX3N1Ym1pc3Npb24tPmV2ZW50KCksIG1fc3VibWlzc2lvbi0+
c3RhdGUoKSwgU2VuZFJlZmVycmVyKTsKICAgICB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIGRp
ZFN0YXJ0VGltZXIoRnJhbWUqIGZyYW1lLCBUaW1lcjxSZWRpcmVjdFNjaGVkdWxlcj4qIHRpbWVy
KQorICAgIHsKKyAgICAgICAgaWYgKG1faGF2ZVRvbGRDbGllbnQpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIG1faGF2ZVRvbGRDbGllbnQgPSB0cnVlOworICAgICAgICBmcmFtZS0+bG9h
ZGVyKCktPmNsaWVudFJlZGlyZWN0ZWQobV9zdWJtaXNzaW9uLT5yZXF1ZXN0VVJMKCksIGRlbGF5
KCksIGN1cnJlbnRUaW1lKCkgKyB0aW1lci0+bmV4dEZpcmVJbnRlcnZhbCgpLCBsb2NrQmFja0Zv
cndhcmRMaXN0KCkpOworICAgIH0KIAotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZGlkU3RhcnRU
aW1lcj8gSXQgd291bGQgbWFrZSBzZW5zZSB0byByZXBvcnQgZm9ybQotICAgIC8vIHN1Ym1pc3Np
b25zIGFzIGNsaWVudCByZWRpcmVjdHMgdG9vLiBCdXQgd2UgZGlkbid0IGRvIHRoYXQgaW4gdGhl
IHBhc3QKLSAgICAvLyB3aGVuIGZvcm0gc3VibWlzc2lvbiB1c2VkIGEgc2VwYXJhdGUgZGVsYXkg
bWVjaGFuaXNtLCBzbyBkb2luZyBpdCB3aWxsCi0gICAgLy8gYmUgYSBiZWhhdmlvciBjaGFuZ2Uu
CisgICAgdmlydHVhbCB2b2lkIGRpZFN0b3BUaW1lcihGcmFtZSogZnJhbWUsIGJvb2wgbmV3TG9h
ZEluUHJvZ3Jlc3MpCisgICAgeworICAgICAgICBpZiAoIW1faGF2ZVRvbGRDbGllbnQpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50UmVkaXJlY3RD
YW5jZWxsZWRPckZpbmlzaGVkKG5ld0xvYWRJblByb2dyZXNzKTsKKyAgICB9CiAKIHByaXZhdGU6
CiAgICAgUmVmUHRyPEZvcm1TdWJtaXNzaW9uPiBtX3N1Ym1pc3Npb247Ci0gICAgYm9vbCBtX3dh
c1Byb2Nlc3NpbmdVc2VyR2VzdHVyZTsKKyAgICBib29sIG1faGF2ZVRvbGRDbGllbnQ7CiB9Owog
CiBSZWRpcmVjdFNjaGVkdWxlcjo6UmVkaXJlY3RTY2hlZHVsZXIoRnJhbWUqIGZyYW1lKQpAQCAt
MjQwLDE3ICsyNDgsMjEgQEAgdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVj
dChkb3VibGUgZGVsYXksIGNvbnN0IFN0cmluZyYgdXJsKQogICAgIGlmICh1cmwuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBXZSB3YW50IGEgbmV3IGhpc3RvcnkgaXRlbSBp
ZiB0aGUgcmVmcmVzaCB0aW1lb3V0IGlzID4gMSBzZWNvbmQuCisgICAgLy8gV2Ugd2FudCBhIG5l
dyBiYWNrL2ZvcndhcmQgbGlzdCBpdGVtIGlmIHRoZSByZWZyZXNoIHRpbWVvdXQgaXMgPiAxIHNl
Y29uZC4KICAgICBpZiAoIW1fcmVkaXJlY3QgfHwgZGVsYXkgPD0gbV9yZWRpcmVjdC0+ZGVsYXko
KSkKICAgICAgICAgc2NoZWR1bGUobmV3IFNjaGVkdWxlZFJlZGlyZWN0KGRlbGF5LCB1cmwsIHRy
dWUsIGRlbGF5IDw9IDEsIGZhbHNlKSk7CiB9CiAKLWJvb2wgUmVkaXJlY3RTY2hlZHVsZXI6Om11
c3RMb2NrQmFja0ZvcndhcmRMaXN0KEZyYW1lKiB0YXJnZXRGcmFtZSkKK2Jvb2wgUmVkaXJlY3RT
Y2hlZHVsZXI6Om11c3RMb2NrQmFja0ZvcndhcmRMaXN0KEZyYW1lKiB0YXJnZXRGcmFtZSwgYm9v
bCB3YXNVc2VyR2VzdHVyZSkKIHsKKyAgICAvLyBOb24tdXNlciBuYXZpZ2F0aW9uIGJlZm9yZSB0
aGUgcGFnZSBoYXMgbG9hZGVkIHNob3VsZCBub3QgY3JlYXRlIGEgbmV3IGJhY2svZm9yd2FyZCBp
dGVtLgorICAgIC8vIFNlZSBodHRwczovL3dlYmtpdC5vcmcvYi80Mjg2MSBmb3IgdGhlIG9yaWdp
bmFsIG1vdGl2YXRpb24gZm9yIHRoaXMuICAgIAorICAgIGlmICghd2FzVXNlckdlc3R1cmUgJiYg
dGFyZ2V0RnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpICYmIHRhcmdldEZyYW1lLT5s
b2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+aXNMb2FkaW5nSW5BUElTZW5zZSgpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICAvLyBOYXZpZ2F0aW9uIG9mIGEgc3ViZnJhbWUgZHVy
aW5nIGxvYWRpbmcgb2YgYW4gYW5jZXN0b3IgZnJhbWUgZG9lcyBub3QgY3JlYXRlIGEgbmV3IGJh
Y2svZm9yd2FyZCBpdGVtLgogICAgIC8vIFRoZSBkZWZpbml0aW9uIG9mICJkdXJpbmcgbG9hZCIg
aXMgYW55IHRpbWUgYmVmb3JlIGFsbCBoYW5kbGVycyBmb3IgdGhlIGxvYWQgZXZlbnQgaGF2ZSBi
ZWVuIHJ1bi4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0OTU3IGZvciB0aGUgb3JpZ2luYWwgbW90aXZhdGlvbiBmb3IgdGhpcy4KLQogICAgIGZv
ciAoRnJhbWUqIGFuY2VzdG9yID0gdGFyZ2V0RnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7IGFuY2Vz
dG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT50cmVlKCktPnBhcmVudCgpKSB7CiAgICAgICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IGFuY2VzdG9yLT5kb2N1bWVudCgpOwogICAgICAgICBpZiAoIWFu
Y2VzdG9yLT5sb2FkZXIoKS0+aXNDb21wbGV0ZSgpIHx8IChkb2N1bWVudCAmJiBkb2N1bWVudC0+
cHJvY2Vzc2luZ0xvYWRFdmVudCgpKSkKQEAgLTI2Niw3ICsyNzgsNyBAQCB2b2lkIFJlZGlyZWN0
U2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmCiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGxvY2tCYWNrRm9yd2FyZExpc3QgPSBsb2NrQmFja0ZvcndhcmRMaXN0IHx8IG11c3RMb2NrQmFj
a0ZvcndhcmRMaXN0KG1fZnJhbWUpOworICAgIGxvY2tCYWNrRm9yd2FyZExpc3QgPSBsb2NrQmFj
a0ZvcndhcmRMaXN0IHx8IG11c3RMb2NrQmFja0ZvcndhcmRMaXN0KG1fZnJhbWUsIHdhc1VzZXJH
ZXN0dXJlKTsKIAogICAgIEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKTsK
ICAgICAKQEAgLTMwMCw3ICszMTIsNyBAQCB2b2lkIFJlZGlyZWN0U2NoZWR1bGVyOjpzY2hlZHVs
ZUZvcm1TdWJtaXNzaW9uKFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+IHN1Ym1pcwogICAgIC8v
IHRvIG1hdGNoIElFIGFuZCBPcGVyYS4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMyMzgzIGZvciB0aGUgb3JpZ2luYWwgbW90aXZhdGlvbiBmb3Ig
dGhpcy4KIAotICAgIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCA9IG11c3RMb2NrQmFja0Zvcndh
cmRMaXN0KG1fZnJhbWUpIHx8IChzdWJtaXNzaW9uLT5zdGF0ZSgpLT5mb3JtU3VibWlzc2lvblRy
aWdnZXIoKSA9PSBTdWJtaXR0ZWRCeUphdmFTY3JpcHQgJiYgbV9mcmFtZS0+dHJlZSgpLT5wYXJl
bnQoKSk7CisgICAgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0ID0gbXVzdExvY2tCYWNrRm9yd2Fy
ZExpc3QobV9mcmFtZSwgVXNlckdlc3R1cmVJbmRpY2F0b3I6OnByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSgpKSB8fCAoc3VibWlzc2lvbi0+c3RhdGUoKS0+Zm9ybVN1Ym1pc3Npb25UcmlnZ2VyKCkgPT0g
U3VibWl0dGVkQnlKYXZhU2NyaXB0ICYmIG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpOwogCiAg
ICAgc2NoZWR1bGUobmV3IFNjaGVkdWxlZEZvcm1TdWJtaXNzaW9uKHN1Ym1pc3Npb24sIGxvY2tC
YWNrRm9yd2FyZExpc3QsIGR1cmluZ0xvYWQpKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9h
ZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmggYi9XZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNjaGVkdWxl
ci5oCmluZGV4IGU5ZDA0ZGM2ZDM2OTYwYTc3NmRkZjYwZWQ4OWEzZDhiYjUyZDM2NjkuLmRkYjk2
ZTEwNjBhOTI2ZTdmMGY1MWUyYzhjNTE4ZTg0ZWJjN2I0MDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
bG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RT
Y2hlZHVsZXIuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdGltZXJGaXJl
ZChUaW1lcjxSZWRpcmVjdFNjaGVkdWxlcj4qKTsKICAgICB2b2lkIHNjaGVkdWxlKFBhc3NPd25Q
dHI8U2NoZWR1bGVkTmF2aWdhdGlvbj4pOwogCi0gICAgc3RhdGljIGJvb2wgbXVzdExvY2tCYWNr
Rm9yd2FyZExpc3QoRnJhbWUqIHRhcmdldEZyYW1lKTsKKyAgICBzdGF0aWMgYm9vbCBtdXN0TG9j
a0JhY2tGb3J3YXJkTGlzdChGcmFtZSogdGFyZ2V0RnJhbWUsIGJvb2wgbXVzdExvY2tJZkR1cmlu
Z0xvYWQpOwogCiAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgVGltZXI8UmVkaXJlY3RTY2hlZHVs
ZXI+IG1fdGltZXI7CkBAIC03OSw0ICs3OSw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAotI2VuZGlmIC8vIEZyYW1lTG9hZGVyX2gKKyNlbmRpZiAvLyBSZWRpcmVjdFNj
aGVkdWxlcl9oCg==
</data>
<flag name="commit-queue"
          id="52928"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64375</attachid>
            <date>2010-08-13 14:33:27 -0700</date>
            <delta_ts>2010-08-13 16:36:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42861-20100813143326.patch</filename>
            <type>text/plain</type>
            <size>83546</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzOWNiYjdlOTNlMjJkYTRlMjk3YTQ0NjRjOTY4NGJjZDUwZGE1OTljLi45MTMxYWIw
YjUzNTliZTExMmE4ZDZiYzgxNDA5YWFlMTI5ZTM2MmE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAK
KzIwMTAtMDgtMDMgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Vzc2lvbiBoaXN0
b3J5IHNob3VsZCBza2lwIG92ZXIgSlMgcmVkaXJlY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjg2MQorICAgICAgICAKKyAgICAgICAgTG9jayB0
aGUgYmFjay9mb3J3YXJkIGxpc3QgZm9yIGxvY2F0aW9uIGNoYW5nZXMgYW5kIGZvcm0gc3VibWl0
cyB0aGF0CisgICAgICAgIGhhcHBlbiBiZWZvcmUgdGhlIG9ubG9hZCBldmVudCBmaXJlcyB0aGF0
IGFyZSBub3QgdGhlIHJlc3VsdCBvZiB1c2VyCisgICAgICAgIGdlc3R1cmVzLgorICAgICAgICAK
KyAgICAgICAgaHR0cC90ZXN0cy9oaXN0b3J5IHRlc3RzIG5vdyBwYXNzLCB0aGVpciBleHBlY3Rh
dGlvbnMgd2VyZSB1cGRhdGVkIAorICAgICAgICBhY2NvcmRpbmdseS4gT3RoZXIgdGVzdHMgbmVl
ZGVkIGEgc2V0VGltZW91dCB3cmFwcGVyIGFyb3VuZCBsb2NhdGlvbgorICAgICAgICBjaGFuZ2Vz
IGFuZCBmb3JtIHN1Ym1pdHMgZHVyaW5nIG9ubG9hZCwgb3RoZXJ3aXNlIHRoZXkgd291bGQgbm90
CisgICAgICAgIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcyBhcyBleHBlY3RlZCBhbnltb3JlLgor
ICAgICAgICAKKyAgICAgICAgKiBmYXN0L2Nzcy90YXJnZXQtZnJhZ21lbnQtbWF0Y2guaHRtbDoK
KyAgICAgICAgKiBmYXN0L2RvbS9sb2NhdGlvbi1oYXNoLmh0bWw6CisgICAgICAgICogZmFzdC9k
b20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTEuaHRtbDoKKyAgICAgICAgKiBm
YXN0L2RvbS9XaW5kb3cvdGltZXItcmVzdW1lLW9uLW5hdmlnYXRpb24tYmFjay5odG1sOgorICAg
ICAgICAqIGZhc3QvZXZlbnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLXdpdGgt
ZnJhbWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdl
aGlkZS1vbi1iYWNrLWNhY2hlZC13aXRoLWZyYW1lcy5odG1sOgorICAgICAgICAqIGZhc3QvZm9y
bXMvYnV0dG9uLXN0YXRlLXJlc3RvcmUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3N0YXRl
LXJlc3RvcmUtdG8tbm9uLWF1dG9jb21wbGV0ZS1mb3JtLmh0bWw6CisgICAgICAgICogZmFzdC9m
b3Jtcy9zdGF0ZS1yZXN0b3JlLXRvLW5vbi1lZGl0ZWQtY29udHJvbHMuaHRtbDoKKyAgICAgICAg
KiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMS5odG1sOgorICAgICAgICAqIGZh
c3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0yLmh0bWw6CisgICAgICAgICogZmFzdC9o
YXJuZXNzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0xLmh0bWw6CisgICAgICAgICogZmFzdC9oYXJu
ZXNzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS13aXRoLWRhdGEtdXJscy5odG1sOgorICAgICAgICAq
IGZhc3QvaGlzdG9yeS9nZXN0dXJlLWJlZm9yZS1vbmxvYWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2hpc3RvcnkvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9oaXN0b3J5LWxlbmd0aC5odG1sOgorICAgICAgICAq
IGZhc3QvaGlzdG9yeS9yZXNvdXJjZXMvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLXRhcmdldC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2hpc3Rvcnkvc2F2ZXMtc3RhdGUtYWZ0ZXItZnJhZ21l
bnQtbmF2Lmh0bWw6CisgICAgICAgICogZmFzdC9sb2FkZXIvaW5wdXQtZWxlbWVudC1wYWdlLWNh
Y2hlLWNyYXNoLmh0bWw6CisgICAgICAgICogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2RvY3Vt
ZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLmh0bWw6CisgICAgICAgICogZmFzdC9sb2FkZXIv
c3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1jbGVhcnMtZm9yd2FyZC1oaXN0b3J5Lmh0bWw6CisgICAg
ICAgICogZmFzdC9sb2FkZXIvc3ViZnJhbWUtbmF2aWdhdGUtZHVyaW5nLW1haW4tZnJhbWUtbG9h
ZC5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaGlzdG9yeS9iYWNrLXRvLXBvc3QucGhwOgor
ICAgICAgICAqIGh0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2NhdGlv
bi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9oaXN0b3J5
L3JlZGlyZWN0LWpzLWZvcm0tc3VibWl0LWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tYXNzaWduLWJlZm9y
ZS1sb2FkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJl
Y3QtanMtbG9jYXRpb24tYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAv
dGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1ocmVmLWJlZm9yZS1sb2FkLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvMzA3LWFmdGVyLTMwMy1hZnRl
ci1wb3N0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvcmVkaXJl
Y3QtbWV0aG9kcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9u
L3Jlc291cmNlcy9iYWNrLXNlbmQtcmVmZXJyZXItaGVscGVyLnBocDoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2RvY3VtZW50LWxvY2F0aW9uLmpzOgorICAgICAg
ICAoc3RhcnQpOgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvc3Vi
bWl0LXRvLWZyYWdtZW50LnBsOgorICAgICAgICAqIHNlY3VyaXR5L2F1dG9jb21wbGV0ZS1jbGVh
cmVkLW9uLWJhY2suaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhy
LmpzOgorICAgICAgICAodXBkYXRlRGF0YWJhc2UpOgorICAgICAgICAoaW52b2tlQmFjayk6Cisg
ICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKHJ1blRlc3RzSW5uZXIpOgorICAgICAgICAKKyAg
ICAgICAgCiAyMDEwLTA4LTEzICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+
CiAKICAgICAgICAgQVg6IGlzTmF0aXZlQ2hlY2tib3ggZG9lcyBub3Qgd29yayBhcyBhZHZlcnRp
c2VkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy90YXJnZXQtZnJhZ21lbnQtbWF0
Y2guaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3RhcmdldC1mcmFnbWVudC1tYXRjaC5odG1s
CmluZGV4IDllOTlkNDc4NWNmNmNkNjMwNWQwMTM0MzMzN2Q4NTdjODhkNjEzODcuLmEyYjY5N2Y4
MTRjYmYzMjE0ZTRhOTBiMDlmZWEyYWNlM2Q5MmIyMzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3RhcmdldC1mcmFnbWVudC1tYXRjaC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzL3RhcmdldC1mcmFnbWVudC1tYXRjaC5odG1sCkBAIC0xMSw2ICsxMSwxMiBAQCBmdW5j
dGlvbiB0ZXN0KCkKIHsKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKKyAgICAvLyBMb2Nh
dGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRv
IGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAgICBzZXRUaW1lb3V0KHJ1blRlc3QsIDApOwor
fQorCitmdW5jdGlvbiBydW5UZXN0KCkgewogICAgIHdpbmRvdy5sb2NhdGlvbi5oYXNoID0nI3Rh
cmdldC0wMSc7CiAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CiAgICAgd2luZG93Lmhpc3Rv
cnkuYmFjaygpOyAvLyBUaGlzIHF1ZXVlcyB1cCBhIG5hdmlnYXRpb24sIHNvIHdlIG5lZWQgdG8g
ZGVsYXkgdGhlIGNhbGwgdG8gbm90aWZ5RG9uZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0xLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMS5odG1sCmlu
ZGV4IDMwNWJhYWVhZTY4YzBkOGY2ZTFhYjAwMWM3N2MwZTMzYzI5ZjY4MjIuLmY3ZWMzOTdiMzBi
ZTJlZjU0NTI0NzM1YjQ2NmNkN2MxMDdlMzk5ZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0xLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTEuaHRt
bApAQCAtMyw3ICszLDggQEAgZnVuY3Rpb24gbG9hZE5leHQoKSB7CiAgICAgdmFyIGdlb2xvY2F0
aW9uID0gbmF2aWdhdG9yLmdlb2xvY2F0aW9uOwogICAgIGlmICh3aW5kb3cub3BlbmVyLnJlcG9y
dFBhZ2VPbmVPbmxvYWQoKSA9PSAxKSB7CiAgICAgICAgIHdpbmRvdy5vcGVuZXIuZGVidWcoJ3Jl
c291cmNlcy9jYWNoZWQtcGFnZS0xLmh0bWwgYWJvdXQgdG8gbmF2aWdhdGUgdG8gcmVzb3VyY2Vz
L2NhY2hlZC1wYWdlLTIuaHRtbCcpCi0gICAgICAgIGxvY2F0aW9uLmhyZWYgPSAnY2FjaGVkLXBh
Z2UtMi5odG1sJzsKKyAgICAgICAgLy8gTG9jYXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBv
dXRzaWRlIHRoZSBvbmxvYWQgaGFuZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCisg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7bG9jYXRpb24uaHJlZiA9ICdjYWNoZWQtcGFn
ZS0yLmh0bWwnO30sIDApOwogICAgIH0KIH0KIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vV2luZG93L3RpbWVyLXJlc3VtZS1vbi1uYXZpZ2F0aW9uLWJhY2suaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy90aW1lci1yZXN1bWUtb24tbmF2aWdhdGlv
bi1iYWNrLmh0bWwKaW5kZXggZjdlYTc2YjBjYjhjNmU1NzUyMmQ2YjdhYzBiYWM1YjhkMWU4Mzdi
NC4uYjQ2ZmIyNTZjMWY1Yjk3NmJlNWE5NTQ0MDkzMjc4NTQxOTZmMjNmZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3RpbWVyLXJlc3VtZS1vbi1uYXZpZ2F0aW9uLWJh
Y2suaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvdGltZXItcmVzdW1lLW9u
LW5hdmlnYXRpb24tYmFjay5odG1sCkBAIC0xOCw5ICsxOCwxMiBAQCBmdW5jdGlvbiBydW5UZXN0
KCkgewogICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRVc2VzUGFnZUNh
Y2hlUHJlZmVyZW5jZUtleSIsIDEpOwogICAgIH0KLSAgICB3aW5kb3cuc2V0VGltZW91dCgidmVy
aWZ5KCkiLCB0aW1lb3V0VmFsdWUpOwotICAgIHRpbWVzdGFtcCA9IG5ldyBEYXRlKCkuZ2V0VGlt
ZSgpOwotICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gImRhdGE6dGV4dC9odG1sLDxib2R5IG9u
bG9hZD0naGlzdG9yeS5iYWNrKCknPjwvYm9keT4iOworICAgIC8vIExvY2F0aW9uIGNoYW5nZXMg
bmVlZCB0byBoYXBwZW4gb3V0c2lkZSB0aGUgb25sb2FkIGhhbmRsZXIgdG8gZ2VuZXJhdGUgaGlz
dG9yeSBlbnRyaWVzLgorICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICB3aW5kb3cu
c2V0VGltZW91dCh2ZXJpZnksIHRpbWVvdXRWYWx1ZSk7CisgICAgICB0aW1lc3RhbXAgPSBuZXcg
RGF0ZSgpLmdldFRpbWUoKTsKKyAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gImRhdGE6dGV4
dC9odG1sLDxib2R5IG9ubG9hZD0naGlzdG9yeS5iYWNrKCknPjwvYm9keT4iOworICAgIH0sIDAp
OwogfQogCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2xvY2F0
aW9uLWhhc2guaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2xvY2F0aW9uLWhhc2guaHRtbApp
bmRleCBiMjZlOTA2YzQ4NWFjYThmNmIyZjMwODZhOTBiYWM1NGNlNTI3NjYxLi5mNTgwZjUyYWQw
YjhlNGNkYWUwZGY5NGIzMzA5ZjU3NjZkODVhOTE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9sb2NhdGlvbi1oYXNoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbG9j
YXRpb24taGFzaC5odG1sCkBAIC04Nyw4ICs4Nyw5IEBACiAgICAgICAgIG51bUVycm9ycyA9IDA7
CiAgICAgICAgIG9yaWdpbmFsTG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb24uaHJlZjsKICAgICAg
ICAgb3JpZ2luYWxIaXN0b3J5TGVuZ3RoID0gd2luZG93Lmhpc3RvcnkubGVuZ3RoOwotICAgICAK
LSAgICAgICAgc3RlcCgpOworCisgICAgICAgIC8vIExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0byBo
YXBwZW4gb3V0c2lkZSB0aGUgb25sb2FkIGhhbmRsZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBlbnRy
aWVzLgorICAgICAgICBzZXRUaW1lb3V0KHN0ZXAsIDApOwogICAgIH0KICAgICA8L3NjcmlwdD4K
IDwvaGVhZD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2VzaG93LXBh
Z2VoaWRlLW9uLWJhY2stY2FjaGVkLXdpdGgtZnJhbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLXdpdGgtZnJh
bWVzLWV4cGVjdGVkLnR4dAppbmRleCAxZWU2OWExYzQ0YzI1YTUyZGEwY2U0YTRlODhmNDNjZjAz
NTcyMmIzLi45NGYyNGU2NmQ5OWU3ZjY3NjA5MWJmOGVkNGU2ZmNjZmM3ZWEyODcyIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNh
Y2hlZC13aXRoLWZyYW1lcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvcGFnZXNob3ctcGFnZWhpZGUtb24tYmFjay1jYWNoZWQtd2l0aC1mcmFtZXMtZXhwZWN0ZWQu
dHh0CkBAIC0xLDE2ICsxLDE2IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjA6ICoqKlRvcCBs
ZXZlbCBmcmFtZSBiZWluZyBwYXJzZWQgZm9yIHRoZSBpbml0aWFsIHBhZ2UgbG9hZCoqKgorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDIwOiBTdWJzdWJmcmFtZSB3aW5kb3cub25sb2FkCitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgMjA6IFN1YnN1YmZyYW1lIHdpbmRvdy5vbnBhZ2VzaG93LCB0YXJnZXQg
PSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IGZhbHNlCitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgMjA6IFN1YmZyYW1lIHdpbmRvdy5vbmxvYWQKK0NPTlNPTEUgTUVTU0FHRTogbGlu
ZSAyMDogU3ViZnJhbWUgd2luZG93Lm9ucGFnZXNob3csIHRhcmdldCA9IFtvYmplY3QgSFRNTERv
Y3VtZW50XSwgcGVyc2lzdGVkID0gZmFsc2UKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMDogTWFp
biBmcmFtZSB3aW5kb3cub25sb2FkCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjA6IE1haW4gZnJh
bWUgd2luZG93Lm9ucGFnZXNob3csIHRhcmdldCA9IFtvYmplY3QgSFRNTERvY3VtZW50XSwgcGVy
c2lzdGVkID0gZmFsc2UKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMDogKioqTmF2aWdhdGluZyB0
b3AtbGV2ZWwgZnJhbWUgdG8gYSBwYWdlIHRoYXQgd2lsbCBpbW1lZGlhdGVseSBuYXZpZ2F0ZSBi
YWNrIHRvIHRoaXMgb25lKioqCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjA6IE1haW4gZnJhbWUg
d2luZG93Lm9ucGFnZWhpZGUsIHRhcmdldCA9IFtvYmplY3QgSFRNTERvY3VtZW50XSwgcGVyc2lz
dGVkID0gdHJ1ZQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIwOiBTdWJmcmFtZSB3aW5kb3cub25w
YWdlaGlkZSwgdGFyZ2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRdLCBwZXJzaXN0ZWQgPSB0cnVl
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjA6IFN1YnN1YmZyYW1lIHdpbmRvdy5vbnBhZ2VoaWRl
LCB0YXJnZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IHRydWUKK0NPTlNP
TEUgTUVTU0FHRTogbGluZSAyMDogU3Vic3ViZnJhbWUgd2luZG93Lm9ucGFnZXNob3csIHRhcmdl
dCA9IFtvYmplY3QgSFRNTERvY3VtZW50XSwgcGVyc2lzdGVkID0gdHJ1ZQorQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDIwOiBTdWJmcmFtZSB3aW5kb3cub25wYWdlc2hvdywgdGFyZ2V0ID0gW29iamVj
dCBIVE1MRG9jdW1lbnRdLCBwZXJzaXN0ZWQgPSB0cnVlCitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
MjA6IE1haW4gZnJhbWUgd2luZG93Lm9ucGFnZXNob3csIHRhcmdldCA9IFtvYmplY3QgSFRNTERv
Y3VtZW50XSwgcGVyc2lzdGVkID0gdHJ1ZQogVGVzdCBwYWdlc2hvdy9wYWdlaGlkZSBldmVudCBi
ZWhhdmlvciB3aGVuIG5hdmlnYXRpbmcgYXdheSBmcm9tIGEgcGFnZSB3aXRoIGZyYW1lcywgcHV0
dGluZyB0aGUgcGFnZSBpbiB0aGUgcGFnZSBjYWNoZSwgdGhlbiBiYWNrIHRvIGl0LgotKioqVG9w
IGxldmVsIGZyYW1lIGJlaW5nIHBhcnNlZCBmb3IgdGhlIGluaXRpYWwgcGFnZSBsb2FkKioqCi1T
dWJzdWJmcmFtZSB3aW5kb3cub25sb2FkCi1TdWJzdWJmcmFtZSB3aW5kb3cub25wYWdlc2hvdywg
dGFyZ2V0ID0gW29iamVjdCBIVE1MRG9jdW1lbnRdLCBwZXJzaXN0ZWQgPSBmYWxzZQotU3ViZnJh
bWUgd2luZG93Lm9ubG9hZAotU3ViZnJhbWUgd2luZG93Lm9ucGFnZXNob3csIHRhcmdldCA9IFtv
YmplY3QgSFRNTERvY3VtZW50XSwgcGVyc2lzdGVkID0gZmFsc2UKLU1haW4gZnJhbWUgd2luZG93
Lm9ubG9hZAotTWFpbiBmcmFtZSB3aW5kb3cub25wYWdlc2hvdywgdGFyZ2V0ID0gW29iamVjdCBI
VE1MRG9jdW1lbnRdLCBwZXJzaXN0ZWQgPSBmYWxzZQotKioqTmF2aWdhdGluZyB0b3AtbGV2ZWwg
ZnJhbWUgdG8gYSBwYWdlIHRoYXQgd2lsbCBpbW1lZGlhdGVseSBuYXZpZ2F0ZSBiYWNrIHRvIHRo
aXMgb25lKioqCi1NYWluIGZyYW1lIHdpbmRvdy5vbnBhZ2VoaWRlLCB0YXJnZXQgPSBbb2JqZWN0
IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IHRydWUKLVN1YmZyYW1lIHdpbmRvdy5vbnBhZ2Vo
aWRlLCB0YXJnZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IHRydWUKLVN1
YnN1YmZyYW1lIHdpbmRvdy5vbnBhZ2VoaWRlLCB0YXJnZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVu
dF0sIHBlcnNpc3RlZCA9IHRydWUKLVN1YnN1YmZyYW1lIHdpbmRvdy5vbnBhZ2VzaG93LCB0YXJn
ZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3RlZCA9IHRydWUKLVN1YmZyYW1lIHdp
bmRvdy5vbnBhZ2VzaG93LCB0YXJnZXQgPSBbb2JqZWN0IEhUTUxEb2N1bWVudF0sIHBlcnNpc3Rl
ZCA9IHRydWUKLU1haW4gZnJhbWUgd2luZG93Lm9ucGFnZXNob3csIHRhcmdldCA9IFtvYmplY3Qg
SFRNTERvY3VtZW50XSwgcGVyc2lzdGVkID0gdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC13aXRoLWZyYW1l
cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUtb24tYmFj
ay1jYWNoZWQtd2l0aC1mcmFtZXMuaHRtbAppbmRleCA3MmUxNjU4ODJmMTc3ODU3NTIwNjdlMDlh
YzI3YzI4NGE5OTQ5YTg4Li40ODljMDkwNzRlZDI5MTNlYmNkYmZjMjZlOTM3OTdmYjRhMTU1YjI4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1v
bi1iYWNrLWNhY2hlZC13aXRoLWZyYW1lcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLXdpdGgtZnJhbWVzLmh0bWwKQEAg
LTE0LDggKzE0LDEwIEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKIAogZnVu
Y3Rpb24gbG9nKG1lc3NhZ2UpCiB7Ci0gICAgdmFyIGxvZyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJsb2ciKTsKLSAgICBsb2cuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiXG4iOworICAgIC8v
IExvZ2dpbmcgdG8gdGhlIGNvbnNvbGUgaW5zdGVhZCBvZiB0aGUgImxvZyIgRElWIGluIHRoZSBE
T00gYmVjYXVzZQorICAgIC8vIG90aGVyd2lzZSB3ZSB0cmlnZ2VyIHRoZSBhc3NlcnQgbWVudGlv
bmVkIGF0IGh0dHA6Ly93ZWJraXQub3JnL2IvNDMxNTIKKyAgICAvLyAoc2luY2Ugd2UgbG9nIGR1
cmluZyBwYWdlaGlkZSkKKyAgICBjb25zb2xlLmxvZyhtZXNzYWdlKTsKIH0KIAogbG9nKCIqKipU
b3AgbGV2ZWwgZnJhbWUgYmVpbmcgcGFyc2VkIGZvciB0aGUgaW5pdGlhbCBwYWdlIGxvYWQqKioi
KTsKQEAgLTMxLDcgKzMzLDggQEAgd2luZG93Lm9ucGFnZXNob3cgPSBmdW5jdGlvbihldnQpIHsK
ICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKICAgICB9IGVs
c2UgewogICAgICAgICBsb2coIioqKk5hdmlnYXRpbmcgdG9wLWxldmVsIGZyYW1lIHRvIGEgcGFn
ZSB0aGF0IHdpbGwgaW1tZWRpYXRlbHkgbmF2aWdhdGUgYmFjayB0byB0aGlzIG9uZSoqKiIpOwot
ICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICJkYXRhOnRleHQvaHRtbCw8c2NyaXB0Pmhp
c3RvcnkuYmFjaygpOzwvc2NyIiArICJpcHQ+IjsKKyAgICAgICAgLy8gTG9jYXRpb24gY2hhbmdl
cyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRoZSBvbmxvYWQgaGFuZGxlciB0byBnZW5lcmF0ZSBo
aXN0b3J5IGVudHJpZXMuCisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7d2luZG93Lmxv
Y2F0aW9uLmhyZWYgPSAiZGF0YTp0ZXh0L2h0bWwsPHNjcmlwdD5oaXN0b3J5LmJhY2soKTs8L3Nj
ciIgKyAiaXB0PiI7fSwgMCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2J1dHRvbi1zdGF0ZS1yZXN0b3JlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2J1dHRvbi1zdGF0ZS1yZXN0b3JlLmh0bWwKaW5kZXggMmY5N2Y3ZWVjYTJlZTEyYmNjZjVi
MGViOTY1MjJkMGM4YzQ3Zjg3MS4uNDM2OGE0OTkxYjAxZWU1MjExMTY2NmQ3ZWE3OGVlYTA4ZDky
MDNkYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9idXR0b24tc3RhdGUtcmVz
dG9yZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYnV0dG9uLXN0YXRlLXJlc3Rv
cmUuaHRtbApAQCAtMzEsNyArMzEsOSBAQAogICAgICAgICAgICAgaW5wdXQudmFsdWUgPSAiRkFJ
TCI7CiAKICAgICAgICAgICAgIHZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZv
cm0iKTsKLSAgICAgICAgICAgIGZvcm0uc3VibWl0KCk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIC8vIFN1Ym1pdCBmb3JtIGluIGEgdGltZW91dCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBjcmVh
dGUgYSBuZXcgYmFjay9mb3J3YXJkIGxpc3QgaXRlbS4gICAgICAgICAgICAKKyAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Zm9ybS5zdWJtaXQoKTt9LCAwKTsKICAgICAgICAgfQog
ICAgIDwvc2NyaXB0PgogPC9oZWFkPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9zdGF0ZS1yZXN0b3JlLXRvLW5vbi1hdXRvY29tcGxldGUtZm9ybS5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXRvLW5vbi1hdXRvY29tcGxldGUtZm9ybS5odG1s
CmluZGV4IGYwMDk5YjU2ZTk0OTY2YjFlNWVmNDk5NDM0YTkxOTNiMjAyZDQ3ZmEuLmRlZTVjMzcw
M2M3MDViZTZmMDRmNTc5OWFhNGZlZTQxMTBiNzA5MWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS10by1ub24tYXV0b2NvbXBsZXRlLWZvcm0uaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdG8tbm9uLWF1dG9jb21w
bGV0ZS1mb3JtLmh0bWwKQEAgLTM4LDcgKzM4LDggQEAgaWYgKCFzdGF0ZS52YWx1ZSkgewogICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnB1dDInKS52YWx1ZSA9ICd2YWx1ZTInOwogICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0YXJlYTInKS52YWx1ZSA9ICdnb29kJzsKICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VsZWN0MicpLnZhbHVlID0gJ0JTRCc7Ci0gICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zvcm0yJykuc3VibWl0KCk7CisgICAgLy8gU3VibWl0
IGZvcm0gaW4gYSB0aW1lb3V0IHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGNyZWF0ZSBhIG5ldyBiYWNr
L2ZvcndhcmQgbGlzdCBpdGVtLiAgICAgICAgICAgIAorICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zvcm0yJykuc3VibWl0KCk7fSwgMCk7CiB9IGVs
c2UgewogICAgIC8vIFNlY29uZCB2aXNpdC4KICAgICBkZWJ1ZygnQ29udHJvbHMgaW4gdGhlIGZp
cnN0IGZvcm0gc2hvdWxkIGhhdmUgdGhlaXIgZGVmYXVsdCB2YWx1ZXM6Jyk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdG8tbm9uLWVkaXRlZC1jb250
cm9scy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXRvLW5vbi1l
ZGl0ZWQtY29udHJvbHMuaHRtbAppbmRleCBlMmFhN2U5ZTIzNTg0YTA4ZmRiZjYxNDhhZDdhMWVm
YWJmM2UwODAwLi5iM2IyNWJkOTFhODMwN2I0YmNkNjgxMjAzZTI2NzJkMjA4YWNjNmY5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdG8tbm9uLWVkaXRl
ZC1jb250cm9scy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9y
ZS10by1ub24tZWRpdGVkLWNvbnRyb2xzLmh0bWwKQEAgLTM3LDcgKzM3LDggQEAgaWYgKCFzdGF0
ZS52YWx1ZSkgewogICAgIG1ha2VGb3JtKHBhcmVudCwgJzEnLCAnMScsICcxJywgJzEnLCAnMScs
ICcxJywgJzEnLCAnMScpOwogCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQxJyku
dmFsdWUgPSAnZWRpdCc7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zvcm0xJykuc3Vi
bWl0KCk7CisgICAgLy8gU3VibWl0IGZvcm0gaW4gYSB0aW1lb3V0IHRvIG1ha2Ugc3VyZSB0aGF0
IHdlIGNyZWF0ZSBhIG5ldyBiYWNrL2ZvcndhcmQgbGlzdCBpdGVtLiAgICAgICAgICAgIAorICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zvcm0xJyku
c3VibWl0KCk7fSwgMCk7CiB9IGVsc2UgewogICAgIC8vIFNlY29uZCB2aXNpdC4KICAgICBtYWtl
Rm9ybShwYXJlbnQsICcyJywgJzInLCAnMicsICcyJywgJzInLCAnMicsICcyJywgJzInKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0x
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMS5o
dG1sCmluZGV4IDYxMGM4ZDQ0NmMxZGEzMzkyNzBiODc3NWY1NmE3NThlOTkzNmEyMmYuLjI3MTUx
MDJkYmE3OGNhYzZiMzg4MmQ5YTZjYmUzNjlhZGYwMjZjZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0xLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTEuaHRtbApAQCAtMTcsNyAr
MTcsOCBAQCBmdW5jdGlvbiBsb2FkTmV4dCgpIHsKICAgICBpbnRlcnZhbElkID0gc2V0SW50ZXJ2
YWwoZW5kVGVzdCwgMTAwKTsKIAogICAgIHdpbmRvdy5vcGVuZXIubG9nKCJwYWdlLTEsIGFib3V0
IHRvIG5hdmlnYXRlIHRvIHBhZ2UtMi4iKQotICAgIGxvY2F0aW9uLmhyZWYgPSAiY2FjaGVkLXBh
Z2UtMi5odG1sIjsKKyAgICAvLyBMb2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNp
ZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkge2xvY2F0aW9uLmhyZWYgPSAiY2FjaGVkLXBhZ2UtMi5odG1s
Ijt9LCAwKTsKIH0KIAogLy8gVGhpcyB1bmxvYWQgaGFuZGxlciBleGlzdHMganVzdCB0byBtYWtl
IHN1cmUgdGhpcyBwYWdlIGlzIG5vdCBhZGRlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mcmFtZXMvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZnJhbWVzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0yLmh0bWwKaW5kZXggZmQ0ZjI3MjM1YWRlNDYx
ODc4ZjZhMmU5MDlkZTQ5NDRmODUyNTlhMC4uYjE1OTI0MjM2MDAwYzZjMzFhNzIzM2U3YjI1M2Vm
YTRjYWFmYTYyOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvcmVzb3VyY2Vz
L2NhY2hlZC1wYWdlLTIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJj
ZXMvY2FjaGVkLXBhZ2UtMi5odG1sCkBAIC0xOSw3ICsxOSw4IEBAIGZ1bmN0aW9uIGxvYWROZXh0
KCkgewogICAgIGludGVydmFsSWQgPSBzZXRJbnRlcnZhbChnb0JhY2ssIDIwKTsKIAogICAgIHdp
bmRvdy5vcGVuZXIubG9nKCJwYWdlLTIsIGFib3V0IHRvIG5hdmlnYXRlIHRvIHBhZ2UtMy4iKQot
ICAgIGxvY2F0aW9uLmhyZWYgPSAiY2FjaGVkLXBhZ2UtMy5odG1sIjsKKyAgICAvLyBMb2NhdGlv
biBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdl
bmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge2xvY2F0
aW9uLmhyZWYgPSAiY2FjaGVkLXBhZ2UtMy5odG1sIjt9LCAwKTsKIH0KIDwvc2NyaXB0PgogPGJv
ZHkgb25sb2FkPSJsb2FkTmV4dCgpIj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaGFy
bmVzcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2UtMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9oYXJu
ZXNzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS0xLmh0bWwKaW5kZXggOWI2NmE2NWY2YWNjNTNiYzI4
MDY2YTkwMGNmZGYwNWRjZWJhY2FjZi4uMGRiZmQ0ZDk4ZTk4MmIzMmI0YjY1Yzk5YzQwOWE4ODMy
MzkzOTRiMCAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc291cmNlcy9j
YWNoZWQtcGFnZS0xLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc291cmNl
cy9jYWNoZWQtcGFnZS0xLmh0bWwKQEAgLTIyLDcgKzIyLDggQEAgZnVuY3Rpb24gbG9hZE5leHQo
KQogICAgIGludGVydmFsSWQgPSBzZXRJbnRlcnZhbChjaGVjaywgMTApOwogCiAgICAgd2luZG93
Lm9wZW5lci5sb2coInBhZ2UtMSwgYWJvdXQgdG8gbmF2aWdhdGUgdG8gcGFnZS0yLiIpCi0gICAg
bG9jYXRpb24uaHJlZiA9ICJjYWNoZWQtcGFnZS0yLmh0bWwiOworICAgIC8vIExvY2F0aW9uIGNo
YW5nZXMgbmVlZCB0byBoYXBwZW4gb3V0c2lkZSB0aGUgb25sb2FkIGhhbmRsZXIgdG8gZ2VuZXJh
dGUgaGlzdG9yeSBlbnRyaWVzLgorICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7bG9jYXRpb24u
aHJlZiA9ICJjYWNoZWQtcGFnZS0yLmh0bWwiO30sIDApOwogfQogPC9zY3JpcHQ+CiA8Ym9keSBv
bmxvYWQ9ImxvYWROZXh0KCkiPjwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
aGFybmVzcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2Utd2l0aC1kYXRhLXVybHMuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvaGFybmVzcy9yZXNvdXJjZXMvY2FjaGVkLXBhZ2Utd2l0aC1kYXRhLXVybHMu
aHRtbAppbmRleCBmODUxNjZkODBkOTlkODgxNTc4ZTc4YWVmZTUzODM0YjgwZWE5ZWQzLi5mMjBl
YzBiODVkYmQwYjcwNDE1MzkzZTAwMWRmNTYzY2ExNGYwYzI5IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2hhcm5lc3MvcmVzb3VyY2VzL2NhY2hlZC1wYWdlLXdpdGgtZGF0YS11cmxzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc291cmNlcy9jYWNoZWQtcGFnZS13
aXRoLWRhdGEtdXJscy5odG1sCkBAIC0xOCw3ICsxOCw4IEBAIGZ1bmN0aW9uIGxvYWROZXh0KCkK
ICAgICBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoY2hlY2ssIDEwKTsKIAogICAgIHdpbmRvdy5v
cGVuZXIubG9nKCJwYWdlIHdpdGggZGF0YSB1cmxzLCBhYm91dCB0byBuYXZpZ2F0ZSB0byBwYWdl
LTIuIikKLSAgICBsb2NhdGlvbi5ocmVmID0gImNhY2hlZC1wYWdlLTIuaHRtbCI7CisgICAgLy8g
TG9jYXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRoZSBvbmxvYWQgaGFuZGxl
ciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCisgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHtsb2NhdGlvbi5ocmVmID0gImNhY2hlZC1wYWdlLTIuaHRtbCI7fSwgMCk7CiB9CiA8L3Njcmlw
dD4KIDxib2R5IG9ubG9hZD0ibG9hZE5leHQoKSI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2hpc3RvcnkvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLWZvcm0tc3VibWl0LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9nZXN0dXJlLWJlZm9yZS1vbmxvYWQtZm9ybS1z
dWJtaXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmOTY4ZGNmMDFlMjUwNTZjMmEyYmY2MTk1
NzM2ZGYzYWY0M2U3N2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rv
cnkvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLWZvcm0tc3VibWl0LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDkgQEAKK1RoaXMgcGFnZSBpcyB0aGUgdGFyZ2V0IG9mIGEgcmVkaXJlY3QuCisKK1BBU1M6
IEhpc3RvcnkgaXRlbSBjb3VudCBzaG91bGQgYmUgMiBhbmQgaXMuCisKKworPT09PT09PT09PT09
PT0gQmFjayBGb3J3YXJkIExpc3QgPT09PT09PT09PT09PT0KKyAgICAgICAgKGZpbGUgdGVzdCk6
ZmFzdC9oaXN0b3J5L2dlc3R1cmUtYmVmb3JlLW9ubG9hZC1mb3JtLXN1Ym1pdC5odG1sICAqKm5h
diB0YXJnZXQqKgorY3Vyci0+ICAoZmlsZSB0ZXN0KTpmYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2dl
c3R1cmUtYmVmb3JlLW9ubG9hZC10YXJnZXQuaHRtbD8jMiAgKipuYXYgdGFyZ2V0KioKKz09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLWZvcm0tc3VibWl0
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLWZv
cm0tc3VibWl0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODVmMjY4OGYzMzdiNDgzNTk4MTE5N2FkNmYyNGZh
OGI4YTc5NWFlYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9n
ZXN0dXJlLWJlZm9yZS1vbmxvYWQtZm9ybS1zdWJtaXQuaHRtbApAQCAtMCwwICsxLDMwIEBACis8
aGVhZD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgorICA8Zm9ybSBhY3Rpb249
InJlc291cmNlcy9nZXN0dXJlLWJlZm9yZS1vbmxvYWQtdGFyZ2V0Lmh0bWwjMiI+CisgICAgPGlu
cHV0IHR5cGU9InN1Ym1pdCIgaWQ9Im5hdi1idXR0b24iIHZhbHVlPSJOYXZpZ2F0ZSI+CisgIDwv
Zm9ybT4KKyAgPGRpdiBpZD0ibWFudWFsLWV4cGxhbmF0aW9uIiBzdHlsZT0iZGlzcGxheTogbm9u
ZTsgY29sb3I6IGJsdWUiPldoZW4gcnVubmluZyB0aGlzIHRlc3Qgb3V0c2lkZSBvZiBEUlQsIHBs
ZWFzZSBjbGljayBvbiB0aGUgIk5hdmlnYXRlIiBidXR0b24uPC9kaXY+Cis8L2JvZHk+Cis8c2Ny
aXB0PgorICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOworICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICB9CisKKyAgaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgICAgdmFyIG5hdkJ1dHRvbk5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
bmF2LWJ1dHRvbicpOworICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oCisgICAgICAgICAg
bmF2QnV0dG9uTm9kZS5vZmZzZXRMZWZ0ICsgbmF2QnV0dG9uTm9kZS5vZmZzZXRXaWR0aCAvIDIs
CisgICAgICAgICAgbmF2QnV0dG9uTm9kZS5vZmZzZXRUb3AgKyBuYXZCdXR0b25Ob2RlLm9mZnNl
dEhlaWdodCAvIDIpOworICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICBldmVu
dFNlbmRlci5tb3VzZVVwKCk7CisgIH0gZWxzZSB7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnbWFudWFsLWV4cGxhbmF0aW9uJykuc3R5bGUuZGlzcGxheSA9ICcnOworICB9CisKKyAg
ZnVuY3Rpb24gb25sb2FkKCkgeworICAgICAgd2luZG93LmNvbnNvbGUubG9nKCdGQUlMOiBTaG91
bGQgbm90IGhhdmUgcmVhY2hlZCBvbmxvYWQgYmVmb3JlIG5hdmlnYXRpbmcgYXdheScpOworICB9
Cis8L3NjcmlwdD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2dlc3R1
cmUtYmVmb3JlLW9ubG9hZC1sb2NhdGlvbi1ocmVmLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvaGlzdG9yeS9nZXN0dXJlLWJlZm9yZS1vbmxvYWQtbG9jYXRpb24taHJlZi1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTRmZWExMTNiNDM2ZTNkYzdlMzlkMTQ4Y2M1MTQ5OTZkNTc1MTI1
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9nZXN0dXJlLWJl
Zm9yZS1vbmxvYWQtbG9jYXRpb24taHJlZi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitU
aGlzIHBhZ2UgaXMgdGhlIHRhcmdldCBvZiBhIHJlZGlyZWN0LgorCitQQVNTOiBIaXN0b3J5IGl0
ZW0gY291bnQgc2hvdWxkIGJlIDIgYW5kIGlzLgorCisKKz09PT09PT09PT09PT09IEJhY2sgRm9y
d2FyZCBMaXN0ID09PT09PT09PT09PT09CisgICAgICAgIChmaWxlIHRlc3QpOmZhc3QvaGlzdG9y
eS9nZXN0dXJlLWJlZm9yZS1vbmxvYWQtbG9jYXRpb24taHJlZi5odG1sICAqKm5hdiB0YXJnZXQq
KgorY3Vyci0+ICAoZmlsZSB0ZXN0KTpmYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2dlc3R1cmUtYmVm
b3JlLW9ubG9hZC10YXJnZXQuaHRtbCMyICAqKm5hdiB0YXJnZXQqKgorPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvaGlzdG9yeS9nZXN0dXJlLWJlZm9yZS1vbmxvYWQtbG9jYXRpb24taHJlZi5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2dlc3R1cmUtYmVmb3JlLW9ubG9hZC1sb2NhdGlvbi1o
cmVmLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTYwYWRjYjU3OWNlYWVmNTVhMmRjYWQ0MjM5YTJiNjE4NTFi
NGM3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9nZXN0dXJl
LWJlZm9yZS1vbmxvYWQtbG9jYXRpb24taHJlZi5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzxoZWFk
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJvbmxvYWQoKSI+CisgIDxidXR0b24gaWQ9Im5hdi1i
dXR0b24iIG9uY2xpY2s9Im5hdigpOyI+TmF2aWdhdGU8L2J1dHRvbj4KKyAgPGRpdiBpZD0ibWFu
dWFsLWV4cGxhbmF0aW9uIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgY29sb3I6IGJsdWUiPldoZW4g
cnVubmluZyB0aGlzIHRlc3Qgb3V0c2lkZSBvZiBEUlQsIHBsZWFzZSBjbGljayBvbiB0aGUgIk5h
dmlnYXRlIiBidXR0b24uPC9kaXY+Cis8L2JvZHk+Cis8c2NyaXB0PgorICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJh
Y2tGb3J3YXJkTGlzdCgpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworICB9CisKKyAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgdmFyIG5hdkJ1
dHRvbk5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmF2LWJ1dHRvbicpOworICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oCisgICAgICAgICAgbmF2QnV0dG9uTm9kZS5vZmZzZXRM
ZWZ0ICsgbmF2QnV0dG9uTm9kZS5vZmZzZXRXaWR0aCAvIDIsCisgICAgICAgICAgbmF2QnV0dG9u
Tm9kZS5vZmZzZXRUb3AgKyBuYXZCdXR0b25Ob2RlLm9mZnNldEhlaWdodCAvIDIpOworICAgICAg
ZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cisg
IH0gZWxzZSB7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFudWFsLWV4cGxhbmF0
aW9uJykuc3R5bGUuZGlzcGxheSA9ICcnOworICB9CisKKyAgZnVuY3Rpb24gbmF2KCkgeworICAg
ICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAncmVzb3VyY2VzL2dlc3R1cmUtYmVmb3JlLW9ubG9h
ZC10YXJnZXQuaHRtbCMyJzsKKyAgfQorCisgIGZ1bmN0aW9uIG9ubG9hZCgpIHsKKyAgICAgIHdp
bmRvdy5jb25zb2xlLmxvZygnRkFJTDogU2hvdWxkIG5vdCBoYXZlIHJlYWNoZWQgb25sb2FkIGJl
Zm9yZSBuYXZpZ2F0aW5nIGF3YXknKTsKKyAgfQorPC9zY3JpcHQ+CisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9oaXN0b3J5LWxlbmd0aC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9oaXN0b3J5L2hpc3RvcnktbGVuZ3RoLmh0bWwKaW5kZXggNGJhYTdlN2M3MTI2OTE3YjVm
ZWIwYjM4NjA1MjFhZjViNzEyOWU5My4uOTRmNTA3ZDAwNmIzZjRmYmZlNWY2YWY5YjI5MDYxMzJk
N2Q3M2RiOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2hpc3RvcnktbGVu
Z3RoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2hpc3RvcnktbGVuZ3RoLmh0
bWwKQEAgLTgsMzAgKzgsMzQgQEAgb25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAgICAgfQogICB9Ci0gIC8vIFRoaXMgdGVz
dCBhZHZhbmNlcyBoaXN0b3J5IGJ5IDIgcGFnZXMsIHRoZW4gbmF2aWdhdGVzIGJhY2sgb25lLCBh
bmQKLSAgLy8gcmVjb3JkcyBoaXN0b3J5Lmxlbmd0aC4gIFdlIGV4cGVjdCBoaXN0b3J5Lmxlbmd0
aCB0byBpbmRpY2F0ZSB0aGUgdG90YWwKLSAgLy8gbGVuZ3RoIG9mIHNlc3Npb24gaGlzdG9yeS4g
IEF0IHRoZSBlbmQgb2YgdGhlIHRlc3QsIGl0IHNob3VsZCBiZSAyIGdyZWF0ZXIKLSAgLy8gdGhh
biBpdCB3YXMgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXN0LgotICBzd2l0Y2ggKHNlc3Npb25TdG9y
YWdlLnRlc3RTdGFnZSsrKSB7Ci0gIGNhc2UgMDoKLSAgICBzZXNzaW9uU3RvcmFnZS5pbml0aWFs
TGVuZ3RoID0gaGlzdG9yeS5sZW5ndGg7Ci0gICAgbG9jYXRpb24gPSAiP2EiOwotICAgIGJyZWFr
OwotICBjYXNlIDE6Ci0gICAgbG9jYXRpb24gPSAiP2IiOwotICAgIGJyZWFrOwotICBjYXNlIDI6
Ci0gICAgaGlzdG9yeS5iYWNrKCk7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgMzoKLSAgICBpZiAoaGlz
dG9yeS5sZW5ndGggPT0gKHNlc3Npb25TdG9yYWdlLmluaXRpYWxMZW5ndGggLSAwKSArIDIpCi0g
ICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJQQVNTIjsKLSAgICBlbHNlCi0gICAgICBk
b2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJGQUlMOiBpbml0aWFsTGVuZ3RoPSIgKyBzZXNzaW9u
U3RvcmFnZS5pbml0aWFsTGVuZ3RoICsgIiwgaGlzdG9yeS5sZW5ndGg9IiArIGhpc3RvcnkubGVu
Z3RoOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci0gICAgYnJlYWs7Ci0gIH0KKworICAvLyBMb2Nh
dGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRv
IGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg
ICAvLyBUaGlzIHRlc3QgYWR2YW5jZXMgaGlzdG9yeSBieSAyIHBhZ2VzLCB0aGVuIG5hdmlnYXRl
cyBiYWNrIG9uZSwgYW5kCisgICAgLy8gcmVjb3JkcyBoaXN0b3J5Lmxlbmd0aC4gIFdlIGV4cGVj
dCBoaXN0b3J5Lmxlbmd0aCB0byBpbmRpY2F0ZSB0aGUgdG90YWwKKyAgICAvLyBsZW5ndGggb2Yg
c2Vzc2lvbiBoaXN0b3J5LiAgQXQgdGhlIGVuZCBvZiB0aGUgdGVzdCwgaXQgc2hvdWxkIGJlIDIg
Z3JlYXRlcgorICAgIC8vIHRoYW4gaXQgd2FzIGF0IHRoZSBzdGFydCBvZiB0aGUgdGVzdC4KKyAg
ICBzd2l0Y2ggKHNlc3Npb25TdG9yYWdlLnRlc3RTdGFnZSsrKSB7CisgICAgY2FzZSAwOgorICAg
ICAgc2Vzc2lvblN0b3JhZ2UuaW5pdGlhbExlbmd0aCA9IGhpc3RvcnkubGVuZ3RoOworICAgICAg
bG9jYXRpb24gPSAiP2EiOworICAgICAgYnJlYWs7CisgICAgY2FzZSAxOgorICAgICAgbG9jYXRp
b24gPSAiP2IiOworICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgaGlzdG9yeS5iYWNr
KCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIDM6CisgICAgICBpZiAoaGlzdG9yeS5sZW5ndGgg
PT0gKHNlc3Npb25TdG9yYWdlLmluaXRpYWxMZW5ndGggLSAwKSArIDIpCisgICAgICAgIGRvY3Vt
ZW50LmJvZHkuaW5uZXJIVE1MID0gIlBBU1MiOworICAgICAgZWxzZQorICAgICAgICBkb2N1bWVu
dC5ib2R5LmlubmVySFRNTCA9ICJGQUlMOiBpbml0aWFsTGVuZ3RoPSIgKyBzZXNzaW9uU3RvcmFn
ZS5pbml0aWFsTGVuZ3RoICsgIiwgaGlzdG9yeS5sZW5ndGg9IiArIGhpc3RvcnkubGVuZ3RoOwor
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgYnJlYWs7CisgICAgfQorICB9LCAwKTsK
IH0KIG9udW5sb2FkID0gZnVuY3Rpb24oKSB7CiAgIC8vIGRpc2FibGUgcGFnZSBjYWNoZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9nZXN0dXJlLWJlZm9y
ZS1vbmxvYWQtdGFyZ2V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2Vz
L2dlc3R1cmUtYmVmb3JlLW9ubG9hZC10YXJnZXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjQzZWM5MWI3
MzgwODUzNzM2MmYyOWJkNDE3ODQwNTU2N2Y1OThmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9nZXN0dXJlLWJlZm9yZS1vbmxvYWQtdGFyZ2V0
Lmh0bWwKQEAgLTAsMCArMSw0MSBAQAorPCEtLSBUaGlzIHBhZ2UgYWNjZXB0cyBhIHF1ZXJ5IHN0
cmluZyBzcGVjaWZ5aW5nIGhvdyBtYW55IGhpc3RvcnkgaXRlbXMgc2hvdWxkCitiZSBwcmVzZW50
IG9uY2UgaXQgZmluaXNoZXMgbG9hZGluZy4gLS0+CisKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+
UmVkaXJlY3QgVGFyZ2V0PC90aXRsZT4KKworPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhzKQorewor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUocyArICJcbiIpKTsKK30KKworZnVuY3Rpb24gdGVzdEhpc3RvcnlJ
dGVtQ291bnQoKQoreworICAgIHZhciBleHBlY3RlZCA9IHBhcnNlSW50KGxvY2F0aW9uLmhhc2gu
c2xpY2UoMSkpOworICAgIHZhciBhY3R1YWwgPSBoaXN0b3J5Lmxlbmd0aDsKKyAgICBpZiAoYWN0
dWFsID09PSBleHBlY3RlZCkKKyAgICAgICAgbG9nKCJQQVNTOiBIaXN0b3J5IGl0ZW0gY291bnQg
c2hvdWxkIGJlICIgKyBleHBlY3RlZCArICIgYW5kIGlzLiIpOworICAgIGVsc2UKKyAgICAgICAg
bG9nKCJGQUlMOiBIaXN0b3J5IGl0ZW0gY291bnQgc2hvdWxkIGJlICIgKyBleHBlY3RlZCArICIg
YnV0IGluc3RlYWQgaXMgIiArIGFjdHVhbCArICIuIik7Cit9CisKK3dpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24gKCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICB0ZXN0SGlzdG9yeUl0ZW1Db3VudCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQmFja0ZvcndhcmRMaXN0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0SGlzdG9yeUl0ZW1Db3Vu
dCgpOworICAgIH0KK30sIGZhbHNlKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxw
PlRoaXMgcGFnZSBpcyB0aGUgdGFyZ2V0IG9mIGEgcmVkaXJlY3QuPC9wPgorPHByZSBpZD0iY29u
c29sZSI+PC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2hpc3Rvcnkvc2F2ZXMtc3RhdGUtYWZ0ZXItZnJhZ21lbnQtbmF2Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2hpc3Rvcnkvc2F2ZXMtc3RhdGUtYWZ0ZXItZnJhZ21lbnQtbmF2Lmh0bWwKaW5k
ZXggMDY0NGRmODg0M2U4MThhOGY2NDg1MGYyOWRhOGY0ZGI3ZmI0MDc4OS4uNjBkZWM5MzcxMGNh
M2FhYTYzMjdmMWRlYzBmN2YwZDdlYmUxMDAyOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9oaXN0b3J5L3NhdmVzLXN0YXRlLWFmdGVyLWZyYWdtZW50LW5hdi5odG1sCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvaGlzdG9yeS9zYXZlcy1zdGF0ZS1hZnRlci1mcmFnbWVudC1uYXYuaHRtbApA
QCAtMzAsOCArMzAsMTEgQEAgZnVuY3Rpb24gcnVuVGVzdFN0ZXAoKSB7CiAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CiAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CiAgICAgfQotICAgIG5hdmlnYXRlVG9IYXNoKGZpZWxkKTsKLSAgICBu
YXZpZ2F0ZUF3YXlBbmRCYWNrKCk7CisgICAgLy8gTG9jYXRpb24gY2hhbmdlcyBuZWVkIHRvIGhh
cHBlbiBvdXRzaWRlIHRoZSBvbmxvYWQgaGFuZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJp
ZXMuCisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgIG5hdmlnYXRlVG9IYXNoKGZp
ZWxkKTsKKyAgICAgIG5hdmlnYXRlQXdheUFuZEJhY2soKTsKKyAgICB9LCAwKTsKICAgfSBlbHNl
IHsKICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9IChmaWVsZC52YWx1ZSA9PSAnJykgPyAn
RkFJTCcgOiAnUEFTUyc7CiAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2lucHV0LWVsZW1lbnQtcGFnZS1jYWNo
ZS1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW5wdXQtZWxlbWVudC1wYWdl
LWNhY2hlLWNyYXNoLmh0bWwKaW5kZXggZWU2OTM1NTRhY2Y1Mzk2ODE0ZDk2M2JmOGJkNzNlMGFl
NGNhN2ZkNS4uMjQ5MzI3MjExOGU1ZDQxYTNmZTNlY2JjZGYxMmNmZjJmNDUxMzJkOSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW5wdXQtZWxlbWVudC1wYWdlLWNhY2hlLWNy
YXNoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW5wdXQtZWxlbWVudC1wYWdl
LWNhY2hlLWNyYXNoLmh0bWwKQEAgLTEzLDggKzEzLDkgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAg
ICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RpbnB1dCIpOwogICAg
IGlucHV0LnNldEF0dHJpYnV0ZSgiYXV0b2NvbXBsZXRlIiwgIm9uIik7CiAgICAgaW5wdXQucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZChpbnB1dCk7Ci0gICAgCi0gICAgd2luZG93LmxvY2F0aW9uID0g
ImRhdGE6dGV4dC9odG1sLDxzY3JpcHQ+aGlzdG9yeS5iYWNrKCk7PC9zY3JpcCIgKyAidD4iOwor
CisgICAgLy8gTG9jYXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRoZSBvbmxv
YWQgaGFuZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCisgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHt3aW5kb3cubG9jYXRpb24gPSAiZGF0YTp0ZXh0L2h0bWwsPHNjcmlwdD5oaXN0
b3J5LmJhY2soKTs8L3NjcmlwIiArICJ0PiI7fSwgMCk7CiB9CiAKIGZ1bmN0aW9uIHBhZ2VIaWRk
ZW4oKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL2Rv
Y3VtZW50LWRlc3Ryb3llZC1uYXZpZ2F0ZS1iYWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2suaHRtbApp
bmRleCA3ZGNhMzYxYmE4NzI3ZTM1ZjZjMTAwNjc0YjdhNWI0M2FmNmE0YmRmLi5lZGJiMWMyODYx
NTM4MjU4MGE2OWVkZmIxM2RlN2UwZjc0YmNjZGVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQtZGVzdHJveWVkLW5hdmlnYXRlLWJhY2su
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvZG9jdW1lbnQt
ZGVzdHJveWVkLW5hdmlnYXRlLWJhY2suaHRtbApAQCAtMzMsOSArMzMsMTAgQEAgZnVuY3Rpb24g
cnVuVGhpcmRTdGFnZU9mVGVzdCgpCiAKIGZ1bmN0aW9uIGxvYWRlZCgpCiB7Ci0gICAgaWYgKCFz
ZXNzaW9uU3RvcmFnZS5zdGFnZSkKLSAgICAgICAgcnVuRmlyc3RTdGFnZU9mVGVzdCgpOwotICAg
IGVsc2UgaWYgKHNlc3Npb25TdG9yYWdlLnN0YWdlID09IDIpCisgICAgaWYgKCFzZXNzaW9uU3Rv
cmFnZS5zdGFnZSkgeworICAgICAgICAvLyBMb2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVu
IG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4K
KyAgICAgICAgc2V0VGltZW91dChydW5GaXJzdFN0YWdlT2ZUZXN0LCAwKTsKKyAgICB9IGVsc2Ug
aWYgKHNlc3Npb25TdG9yYWdlLnN0YWdlID09IDIpCiAgICAgICAgIHJ1blNlY29uZFN0YWdlT2ZU
ZXN0KCk7CiAgICAgZWxzZSBpZiAoc2Vzc2lvblN0b3JhZ2Uuc3RhZ2UgPT0gMykKICAgICAgICAg
cnVuVGhpcmRTdGFnZU9mVGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1jbGVhcnMtZm9yd2FyZC1oaXN0b3J5Lmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLWNsZWFycy1mb3J3
YXJkLWhpc3RvcnkuaHRtbAppbmRleCBiMDhjNWE1MjdhNDk5NTRiMjBjNzliZTAxZDIyOGM4OWY5
YWUxN2IxLi5iYmI0NDc5NWE0NDVhYTdiNzBjYzYwYThmMTQ0Njg3ZDk2ZWU3NDU5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLWNsZWFy
cy1mb3J3YXJkLWhpc3RvcnkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0
ZW9iamVjdHMvcHVzaHN0YXRlLWNsZWFycy1mb3J3YXJkLWhpc3RvcnkuaHRtbApAQCAtOCwyMiAr
OCwyNiBAQCBvbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKICAgICB9CiAgIH0KLSAgc3dpdGNoIChzZXNzaW9uU3RvcmFnZS50
ZXN0U3RhZ2UrKykgewotICBjYXNlIDA6Ci0gICAgbG9jYXRpb24gPSAiP2EiOwotICAgIGJyZWFr
OwotICBjYXNlIDE6Ci0gICAgbG9jYXRpb24gPSAiP2IiOwotICAgIGJyZWFrOwotICBjYXNlIDI6
Ci0gICAgaGlzdG9yeS5iYWNrKCk7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgMzoKLSAgICBoaXN0b3J5
LnB1c2hTdGF0ZShudWxsLCBudWxsKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotICAgIGJyZWFr
OwotICB9CisKKyAgLy8gTG9jYXRpb24gY2hhbmdlcyBuZWVkIHRvIGhhcHBlbiBvdXRzaWRlIHRo
ZSBvbmxvYWQgaGFuZGxlciB0byBnZW5lcmF0ZSBoaXN0b3J5IGVudHJpZXMuCisgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7CisgICAgICBzd2l0Y2ggKHNlc3Npb25TdG9yYWdlLnRlc3RTdGFnZSsr
KSB7CisgICAgICBjYXNlIDA6CisgICAgICAgIGxvY2F0aW9uID0gIj9hIjsKKyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIDE6CisgICAgICAgIGxvY2F0aW9uID0gIj9iIjsKKyAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIDI6CisgICAgICAgIGhpc3RvcnkuYmFjaygpOworICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgMzoKKyAgICAgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCk7
CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICBicmVhazsKKyAgICAgIH0K
KyAgICB9LCAwKTsKIH0KIG9udW5sb2FkID0gZnVuY3Rpb24oKSB7CiAgIC8vIGRpc2FibGUgcGFn
ZSBjYWNoZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3ViZnJhbWUtbmF2
aWdhdGUtZHVyaW5nLW1haW4tZnJhbWUtbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvc3ViZnJhbWUtbmF2aWdhdGUtZHVyaW5nLW1haW4tZnJhbWUtbG9hZC5odG1sCmluZGV4IDI4
NTIzODFiMWYzMDJhNWZhMDczY2E1ZjM5ZjQ5Y2MyZmM2YmNlYmIuLjJhYjEyY2MxMThhZTcwNWVm
MjU3MjkyYjg5NTkwMmE1NDE5Y2MyNWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL3N1YmZyYW1lLW5hdmlnYXRlLWR1cmluZy1tYWluLWZyYW1lLWxvYWQuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdWJmcmFtZS1uYXZpZ2F0ZS1kdXJpbmctbWFpbi1mcmFt
ZS1sb2FkLmh0bWwKQEAgLTksOCArOSw5IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQmFja0ZvcndhcmRMaXN0KCk7CiAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKICAgICB9Ci0gICAgCi0gICAgbG9jYXRp
b249J3Jlc291cmNlcy9zdWJmcmFtZS1uYXZpZ2F0ZS1kdXJpbmctbWFpbi1mcmFtZS1sb2FkMi5o
dG1sJzsKKworICAgIC8vIExvY2F0aW9uIGNoYW5nZXMgbmVlZCB0byBoYXBwZW4gb3V0c2lkZSB0
aGUgb25sb2FkIGhhbmRsZXIgdG8gZ2VuZXJhdGUgaGlzdG9yeSBlbnRyaWVzLgorICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7bG9jYXRpb249J3Jlc291cmNlcy9zdWJmcmFtZS1uYXZpZ2F0ZS1k
dXJpbmctbWFpbi1mcmFtZS1sb2FkMi5odG1sJzt9LCAwKTsKIH0KIAogPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvYmFjay10by1wb3N0LnBocCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9iYWNrLXRvLXBvc3QucGhwCmluZGV4IDg4
NGIzMmJkYWQ3MjQzMTA0OGJjYzg0NWI5NjZkYjQxZjljMDNmMjkuLjk2MGIwNGIyM2JmZDcxMWQ5
YmY3NjcyZjg2MTZjNTI4Nzc5NDg3NDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaGlzdG9yeS9iYWNrLXRvLXBvc3QucGhwCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aGlzdG9yeS9iYWNrLXRvLXBvc3QucGhwCkBAIC0xNCw2ICsxNCwxMyBAQCBHZXR0aW5nIGFuIGVy
cm9yIHBhZ2UgaW5zdGVhZCBvZiBsb2dpbiBwYWdlIG5hdmlnYXRpbmcgYmFjayBpbiBnbWFpbC48
L3A+CiA8aW5wdXQgaWQ9Im15c3VibWl0IiB0eXBlPSJzdWJtaXQiIG5hbWU9IlN1Ym1pdCIgdmFs
dWU9IlN1Ym1pdCI+CiA8L2Zvcm0+CiA8c2NyaXB0PgorCitmdW5jdGlvbiBzdWJtaXRGb3JtKCkK
K3sKKyAgICAvLyBTdWJtaXQgZm9ybSBpbiBhIHRpbWVvdXQgdG8gbWFrZSBzdXJlIHRoYXQgd2Ug
Y3JlYXRlIGEgbmV3IGJhY2svZm9yd2FyZCBsaXN0IGl0ZW0uCisgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHtkb2N1bWVudC5mb3Jtc1swXS5zdWJtaXQoKX0sIDApOworfQorCiBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOwogICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKQEAgLTI1
LDcgKzMyLDcgQEAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAKIGlmIChkb2N1
bWVudC5sb2NhdGlvbi5zZWFyY2ggPT0gIiIpIHsKICAgICB3aW5kb3cubmFtZSA9ICIiOyAvLyBV
c2Ugd2luZG93Lm5hbWUgdG8gY29tbXVuaWNhdGUgYmV0d2VlbiBzdGVwcy4KLSAgICBkb2N1bWVu
dC5mb3Jtc1swXS5zdWJtaXQoKTsKKyAgICBzdWJtaXRGb3JtKCk7CiB9IGVsc2UgaWYgKGRvY3Vt
ZW50LmxvY2F0aW9uLnNlYXJjaCA9PSAiPzEiKSB7CiAgICAgaWYgKHdpbmRvdy5uYW1lID09ICJm
aW5pc2giKSB7CiAgICAgICAgIHdpbmRvdy5uYW1lID0gIiI7CkBAIC0zNCw3ICs0MSw3IEBAIGlm
IChkb2N1bWVudC5sb2NhdGlvbi5zZWFyY2ggPT0gIiIpIHsKICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKICAgICB9IGVsc2UgewogICAgICAgICBkb2N1bWVu
dC5mb3Jtc1swXS5hY3Rpb24gPSAiPzIiOwotICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5zdWJt
aXQoKTsKKyAgICAgICAgc3VibWl0Rm9ybSgpOwogICAgIH0KIH0gZWxzZSB7CiAgICAgLy8gVGVz
dCB0aGF0IGdvaW5nIGJhY2sgdG8gZm9ybSBzdWJtaXNzaW9uIHJlc3VsdCB3b3Jrcy4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0yMDAtcmVmcmVz
aC0wLXNlY29uZHMucGwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3Qt
MjAwLXJlZnJlc2gtMC1zZWNvbmRzLnBsCmluZGV4IGRiMjM0MGUzM2M4ZGUxNmMyNWYwNDA3MTZk
MmIyMzVhM2U1NDdjY2EuLjlmMGJmM2RhMzkyNjMxNDA2OGY5YzVlMDc0MWI5ZTU4MDdlNmNkYmYg
MTAwNzU1Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0yMDAt
cmVmcmVzaC0wLXNlY29uZHMucGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5
L3JlZGlyZWN0LTIwMC1yZWZyZXNoLTAtc2Vjb25kcy5wbApAQCAtMTIsNyArMTIsNyBAQCBwcmlu
dCA8PEhFUkVfRE9DX0VORAogPHRpdGxlPjIwMCBSZWZyZXNoIFJlZGlyZWN0PC90aXRsZT4KIDxz
Y3JpcHQ+CiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIua2VlcFdlYkhpc3RvcnkoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5j
bGVhckJhY2tGb3J3YXJkTGlzdCgpOwogICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKIH0KIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9oaXN0b3J5L3JlZGlyZWN0LTIwMC1yZWZyZXNoLTItc2Vjb25kcy5wbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0yMDAtcmVmcmVzaC0yLXNlY29uZHMucGwKaW5k
ZXggNzM0NDQzYTlkOGYzMmY4MmY1MGUyMTMzZjM5N2MxMTE0NWUxOTY2Yy4uZjExY2I2YmEzNWZk
MGE1Mzk0M2U3YjViYmQ0ZDliNDUwZTM4ZmVlYSAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTIwMC1yZWZyZXNoLTItc2Vjb25kcy5wbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMjAwLXJlZnJlc2gtMi1zZWNv
bmRzLnBsCkBAIC0xMiw3ICsxMiw3IEBAIHByaW50IDw8SEVSRV9ET0NfRU5ECiA8dGl0bGU+MjAw
IFJlZnJlc2ggUmVkaXJlY3Q8L3RpdGxlPgogPHNjcmlwdD4KIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5rZWVwV2ViSGlzdG9yeSgp
OworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CiAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogfQogPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzAxLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDEtZXhw
ZWN0ZWQudHh0CmluZGV4IDA2MmI2OWI0YTBiYmMwYWYwYWYwMzk4ZWZhZjUyM2M3MDU1MGExMTcu
Ljc3YTZlZjYxNjkxNWRlOGUyMWRjN2EwZjRkZWZjZWUzZjZlMDI2ZTQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDEtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDEtZXhwZWN0ZWQu
dHh0CkBAIC0xLDggKzEsOSBAQAogVGhpcyBwYWdlIGlzIHRoZSB0YXJnZXQgb2YgYSByZWRpcmVj
dC4KIAotUEFTUzogSGlzdG9yeSBpdGVtIGNvdW50IHNob3VsZCBiZSAxIGFuZCBpcy4KK1BBU1M6
IEhpc3RvcnkgaXRlbSBjb3VudCBzaG91bGQgYmUgMiBhbmQgaXMuCiAKIAogPT09PT09PT09PT09
PT0gQmFjayBGb3J3YXJkIExpc3QgPT09PT09PT09PT09PT0KLWN1cnItPiAgaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2hpc3RvcnkvcmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzEgICoqbmF2
IHRhcmdldCoqCisgICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9oaXN0b3J5L3JlZGlyZWN0
LTMwMS5odG1sICAqKm5hdiB0YXJnZXQqKgorY3Vyci0+ICBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
aGlzdG9yeS9yZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwjMiAgKipuYXYgdGFyZ2V0KioK
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzAxLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzAxLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDNmOTUyMDE2NjQwNTJkMmRiNzRmZjA3ZjU3YjlhYjdkZGU2MmE2OQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDEuaHRtbApA
QCAtMCwwICsxLDE1IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPjMwMSBSZWRpcmVjdDwvdGl0
bGU+Cis8c2NyaXB0PgorICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJC
YWNrRm9yd2FyZExpc3QoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworICAgIH0KKyAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHt3aW5kb3cu
bG9jYXRpb24gPSAncmVzb3VyY2VzL3JlZGlyZWN0LWhlbHBlci5wbD8zMDEnO30sIDApOworICB9
Cis8L3NjcmlwdD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPlRoaXMgcGFnZSBpcyBhIDMw
MSByZWRpcmVjdC48L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzAxLnBsIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9o
aXN0b3J5L3JlZGlyZWN0LTMwMS5wbApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZjBm
MTVlYzM0NTE1OTIyMmRiYmM5MTNjMWU1NzQ1YmEwNzE5ZDllMy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rv
cnkvcmVkaXJlY3QtMzAxLnBsCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotIyEvdXNy
L2Jpbi9wZXJsCi0jIFNjcmlwdCB0byBnZW5lcmF0ZSBhIDMwMSBIVFRQIHJlZGlyZWN0Ci0KLXBy
aW50ICJTdGF0dXM6IDMwMSBNb3ZlZCBQZXJtYW5lbnRseVxyXG4iOwotcHJpbnQgIkxvY2F0aW9u
OiByZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwjMVxyXG4iOwotcHJpbnQgIkNvbnRlbnQt
dHlwZTogdGV4dC9odG1sXHJcbiI7Ci1wcmludCAiXHJcbiI7Ci0KLXByaW50IDw8SEVSRV9ET0Nf
RU5ECi08aHRtbD4KLTxoZWFkPgotPHRpdGxlPjMwMSBSZWRpcmVjdDwvdGl0bGU+Ci08c2NyaXB0
PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOwotfQotPC9zY3JpcHQ+Ci0KLTxib2R5PlRoaXMgcGFnZSBpcyBhIDMwMSByZWRp
cmVjdC48L2JvZHk+Ci08L2h0bWw+Ci1IRVJFX0RPQ19FTkQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwMi1leHBlY3RlZC50eHQKaW5kZXgg
MDYyYjY5YjRhMGJiYzBhZjBhZjAzOThlZmFmNTIzYzcwNTUwYTExNy4uNGQ2OTI3NWU2ZDlmN2Y3
OWM5N2U1ZTYwZWI0MTA5YmJkYTcwYjc3OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwMi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwMi1leHBlY3RlZC50eHQKQEAgLTEsOCArMSw5
IEBACiBUaGlzIHBhZ2UgaXMgdGhlIHRhcmdldCBvZiBhIHJlZGlyZWN0LgogCi1QQVNTOiBIaXN0
b3J5IGl0ZW0gY291bnQgc2hvdWxkIGJlIDEgYW5kIGlzLgorUEFTUzogSGlzdG9yeSBpdGVtIGNv
dW50IHNob3VsZCBiZSAyIGFuZCBpcy4KIAogCiA9PT09PT09PT09PT09PSBCYWNrIEZvcndhcmQg
TGlzdCA9PT09PT09PT09PT09PQotY3Vyci0+ICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaGlzdG9y
eS9yZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwjMSAgKipuYXYgdGFyZ2V0KioKKyAgICAg
ICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3RvcnkvcmVkaXJlY3QtMzAyLmh0bWwgICoqbmF2
IHRhcmdldCoqCitjdXJyLT4gIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9oaXN0b3J5L3Jlc291cmNl
cy9yZWRpcmVjdC10YXJnZXQuaHRtbCMyICAqKm5hdiB0YXJnZXQqKgogPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODNjNzkyNDUyNDhk
Y2IwYWY2NWNmM2VlZWI1NzQ3NmUyYTNlMTAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwMi5odG1sCkBAIC0wLDAgKzEsMTUgQEAK
KzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+MzAyIFJlZGlyZWN0PC90aXRsZT4KKzxzY3JpcHQ+Cisg
IGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgp
OworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQor
ICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3dpbmRvdy5sb2NhdGlvbiA9ICdyZXNv
dXJjZXMvcmVkaXJlY3QtaGVscGVyLnBsPzMwMic7fSwgMCk7CisgIH0KKzwvc2NyaXB0PgorCis8
Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+VGhpcyBwYWdlIGlzIGEgMzAyIHJlZGlyZWN0LjwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9y
ZWRpcmVjdC0zMDIucGwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3Qt
MzAyLnBsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlMDYzMTBmY2NkMjUzNmFmOWU0
ZjcyMmY1ZDkxMTJiMTk1YTEwMWM2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDIu
cGwKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0jIS91c3IvYmluL3BlcmwKLSMgU2Ny
aXB0IHRvIGdlbmVyYXRlIGEgMzAyIEhUVFAgcmVkaXJlY3QKLQotcHJpbnQgIlN0YXR1czogMzAy
IE1vdmVkIFRlbXBvcmFyaWx5XHJcbiI7Ci1wcmludCAiTG9jYXRpb246IHJlc291cmNlcy9yZWRp
cmVjdC10YXJnZXQuaHRtbCMxXHJcbiI7Ci1wcmludCAiQ29udGVudC10eXBlOiB0ZXh0L2h0bWxc
clxuIjsKLXByaW50ICJcclxuIjsKLQotcHJpbnQgPDxIRVJFX0RPQ19FTkQKLTxodG1sPgotPGhl
YWQ+Ci08dGl0bGU+MzAyIFJlZGlyZWN0PC90aXRsZT4KLTxzY3JpcHQ+Ci1pZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIua2VlcFdlYkhp
c3RvcnkoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci08
L3NjcmlwdD4KLQotPGJvZHk+VGhpcyBwYWdlIGlzIGEgMzAyIHJlZGlyZWN0LjwvYm9keT4KLTwv
aHRtbD4KLUhFUkVfRE9DX0VORApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9o
aXN0b3J5L3JlZGlyZWN0LTMwMy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2hpc3RvcnkvcmVkaXJlY3QtMzAzLWV4cGVjdGVkLnR4dAppbmRleCAwNjJiNjliNGEwYmJjMGFm
MGFmMDM5OGVmYWY1MjNjNzA1NTBhMTE3Li45ZDdlODZlYWI4N2UwMWM2MmZkNDU4NGNlNDliMGJj
YTFlNjRiMjYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVk
aXJlY3QtMzAzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rv
cnkvcmVkaXJlY3QtMzAzLWV4cGVjdGVkLnR4dApAQCAtMSw4ICsxLDkgQEAKIFRoaXMgcGFnZSBp
cyB0aGUgdGFyZ2V0IG9mIGEgcmVkaXJlY3QuCiAKLVBBU1M6IEhpc3RvcnkgaXRlbSBjb3VudCBz
aG91bGQgYmUgMSBhbmQgaXMuCitQQVNTOiBIaXN0b3J5IGl0ZW0gY291bnQgc2hvdWxkIGJlIDIg
YW5kIGlzLgogCiAKID09PT09PT09PT09PT09IEJhY2sgRm9yd2FyZCBMaXN0ID09PT09PT09PT09
PT09Ci1jdXJyLT4gIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9oaXN0b3J5L3Jlc291cmNlcy9yZWRp
cmVjdC10YXJnZXQuaHRtbCMxICAqKm5hdiB0YXJnZXQqKgorICAgICAgICBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvaGlzdG9yeS9yZWRpcmVjdC0zMDMuaHRtbCAgKipuYXYgdGFyZ2V0KioKK2N1cnIt
PiAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3RvcnkvcmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdl
dC5odG1sIzIgICoqbmF2IHRhcmdldCoqCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0
b3J5L3JlZGlyZWN0LTMwMy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jl
ZGlyZWN0LTMwMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExMDdhZGJmZjM1MmZlMTkwZGYyYTliNmQ4NmEx
Y2I1NWI0ZDExYjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hp
c3RvcnkvcmVkaXJlY3QtMzAzLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4K
Kzx0aXRsZT4zMDMgUmVkaXJlY3Q8L3RpdGxlPgorPHNjcmlwdD4KKyAgZnVuY3Rpb24gcnVuVGVz
dCgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisgICAgd2luZG93LnNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7d2luZG93LmxvY2F0aW9uID0gJ3Jlc291cmNlcy9yZWRpcmVjdC1o
ZWxwZXIucGw/MzAzJzt9LCAwKTsKKyAgfQorPC9zY3JpcHQ+CisKKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj5UaGlzIHBhZ2UgaXMgYSAzMDMgcmVkaXJlY3QuPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwMy5wbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC0zMDMucGwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IGM3ODkxYmY3NTVmZmViNjhmNDExNjc2ODlhMDdlOGFhYzkz
OGY3NzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwMy5wbAorKysgL2Rldi9udWxs
CkBAIC0xLDIyICswLDAgQEAKLSMhL3Vzci9iaW4vcGVybAotIyBTY3JpcHQgdG8gZ2VuZXJhdGUg
YSAzMDMgSFRUUCByZWRpcmVjdAotCi1wcmludCAiU3RhdHVzOiAzMDMgU2VlIE90aGVyXHJcbiI7
Ci1wcmludCAiTG9jYXRpb246IHJlc291cmNlcy9yZWRpcmVjdC10YXJnZXQuaHRtbCMxXHJcbiI7
Ci1wcmludCAiQ29udGVudC10eXBlOiB0ZXh0L2h0bWxcclxuIjsKLXByaW50ICJcclxuIjsKLQot
cHJpbnQgPDxIRVJFX0RPQ19FTkQKLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+MzAzIFJlZGlyZWN0
PC90aXRsZT4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIua2VlcFdlYkhpc3RvcnkoKTsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci08L3NjcmlwdD4KLQotPGJvZHk+VGhpcyBw
YWdlIGlzIGEgMzAzIHJlZGlyZWN0LjwvYm9keT4KLTwvaHRtbD4KLUhFUkVfRE9DX0VORApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwNy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzA3LWV4
cGVjdGVkLnR4dAppbmRleCAwNjJiNjliNGEwYmJjMGFmMGFmMDM5OGVmYWY1MjNjNzA1NTBhMTE3
Li43MjFlZDJlM2NjZWNhMDBlZmEzYWE2NzZjODU3NzA4ZGZjZWQ5ZTU3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzA3LWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzA3LWV4cGVjdGVk
LnR4dApAQCAtMSw4ICsxLDkgQEAKIFRoaXMgcGFnZSBpcyB0aGUgdGFyZ2V0IG9mIGEgcmVkaXJl
Y3QuCiAKLVBBU1M6IEhpc3RvcnkgaXRlbSBjb3VudCBzaG91bGQgYmUgMSBhbmQgaXMuCitQQVNT
OiBIaXN0b3J5IGl0ZW0gY291bnQgc2hvdWxkIGJlIDIgYW5kIGlzLgogCiAKID09PT09PT09PT09
PT09IEJhY2sgRm9yd2FyZCBMaXN0ID09PT09PT09PT09PT09Ci1jdXJyLT4gIGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9oaXN0b3J5L3Jlc291cmNlcy9yZWRpcmVjdC10YXJnZXQuaHRtbCMxICAqKm5h
diB0YXJnZXQqKgorICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaGlzdG9yeS9yZWRpcmVj
dC0zMDcuaHRtbCAgKipuYXYgdGFyZ2V0KioKK2N1cnItPiAgaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2hpc3RvcnkvcmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzIgICoqbmF2IHRhcmdldCoq
CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwNy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwNy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmMzNGNhNzc4ODRhNjY2MjA1Y2U4YzQyMjc1NWYyODIxZGZkMDNmMDEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtMzA3Lmh0bWwK
QEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT4zMDcgUmVkaXJlY3Q8L3Rp
dGxlPgorPHNjcmlwdD4KKyAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFy
QmFja0ZvcndhcmRMaXN0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICB9CisgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7d2luZG93
LmxvY2F0aW9uID0gJ3Jlc291cmNlcy9yZWRpcmVjdC1oZWxwZXIucGw/MzA3Jzt9LCAwKTsKKyAg
fQorPC9zY3JpcHQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj5UaGlzIHBhZ2UgaXMgYSAz
MDcgcmVkaXJlY3QuPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LTMwNy5wbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aGlzdG9yeS9yZWRpcmVjdC0zMDcucGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGM0
NGRiOWU5M2IxNmI0ZTMyMDNmNDFjMGFhYzc4M2E1MWMyNWZjZDguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0
b3J5L3JlZGlyZWN0LTMwNy5wbAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLSMhL3Vz
ci9iaW4vcGVybAotIyBTY3JpcHQgdG8gZ2VuZXJhdGUgYSAzMDcgSFRUUCByZWRpcmVjdAotCi1w
cmludCAiU3RhdHVzOiAzMDcgTW92ZWQgVGVtcG9yYXJpbHlcclxuIjsKLXByaW50ICJMb2NhdGlv
bjogcmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzFcclxuIjsKLXByaW50ICJDb250ZW50
LXR5cGU6IHRleHQvaHRtbFxyXG4iOwotcHJpbnQgIlxyXG4iOwotCi1wcmludCA8PEhFUkVfRE9D
X0VORAotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT4zMDcgUmVkaXJlY3Q8L3RpdGxlPgotPHNjcmlw
dD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5rZWVwV2ViSGlzdG9yeSgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgotCi08Ym9keT5UaGlzIHBhZ2UgaXMg
YSAzMDcgcmVkaXJlY3QuPC9ib2R5PgotPC9odG1sPgotSEVSRV9ET0NfRU5ECmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZG9jdW1lbnQtbG9j
YXRpb24tMC1zZWNvbmRzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVk
aXJlY3QtanMtZG9jdW1lbnQtbG9jYXRpb24tMC1zZWNvbmRzLmh0bWwKaW5kZXggNTEzMzA1YmE2
MjNiY2UxNDc5ODI2NDE4MmI1MDM5NDkxMjgzNzk2MS4uMGNlMzA2ZWI1OGIxMjM5YjAzYzE2YjQ1
NDczYzc5NmNkZDE4MTc2OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0
b3J5L3JlZGlyZWN0LWpzLWRvY3VtZW50LWxvY2F0aW9uLTAtc2Vjb25kcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2NhdGlv
bi0wLXNlY29uZHMuaHRtbApAQCAtNCw3ICs0LDcgQEAKIAogPHNjcmlwdD4KIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5rZWVwV2Vi
SGlzdG9yeSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0
KCk7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogfQogc2V0VGlt
ZW91dChmdW5jdGlvbiAoKSB7IGRvY3VtZW50LmxvY2F0aW9uID0gInJlc291cmNlcy9yZWRpcmVj
dC10YXJnZXQuaHRtbCMxIjsgfSwgMCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZG9jdW1lbnQtbG9jYXRpb24tMi1zZWNvbmRzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZG9jdW1lbnQtbG9j
YXRpb24tMi1zZWNvbmRzLmh0bWwKaW5kZXggZjE3NWU1MWU4YzgxYjViZDdkYWRkYzhmZTAxZjBh
NmRmYWFmYmQ0ZC4uOTliYTM5NzEwOThlYmY1YmUwYTFiOTFiYTRlNzE0NzYwNzZhOTdiOCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWRvY3Vt
ZW50LWxvY2F0aW9uLTItc2Vjb25kcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2NhdGlvbi0yLXNlY29uZHMuaHRtbApAQCAt
NCw3ICs0LDcgQEAKIAogPHNjcmlwdD4KIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5rZWVwV2ViSGlzdG9yeSgpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CiAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogfQogc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IGRv
Y3VtZW50LmxvY2F0aW9uID0gInJlc291cmNlcy9yZWRpcmVjdC10YXJnZXQuaHRtbCMxIjsgfSwg
MjAwMCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJl
Y3QtanMtZG9jdW1lbnQtbG9jYXRpb24tYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWRvY3VtZW50LWxvY2F0aW9uLWJl
Zm9yZS1sb2FkLWV4cGVjdGVkLnR4dAppbmRleCBlZmJlODM1OGQzZjk1YmI0YzVhNjc4M2VlODg5
NTk4NDFmN2Y5OTUzLi4wNjJiNjliNGEwYmJjMGFmMGFmMDM5OGVmYWY1MjNjNzA1NTBhMTE3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZG9j
dW1lbnQtbG9jYXRpb24tYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1kb2N1bWVudC1sb2NhdGlvbi1iZWZvcmUt
bG9hZC1leHBlY3RlZC50eHQKQEAgLTEsOSArMSw4IEBACiBUaGlzIHBhZ2UgaXMgdGhlIHRhcmdl
dCBvZiBhIHJlZGlyZWN0LgogCi1GQUlMOiBIaXN0b3J5IGl0ZW0gY291bnQgc2hvdWxkIGJlIDEg
YnV0IGluc3RlYWQgaXMgMi4KK1BBU1M6IEhpc3RvcnkgaXRlbSBjb3VudCBzaG91bGQgYmUgMSBh
bmQgaXMuCiAKIAogPT09PT09PT09PT09PT0gQmFjayBGb3J3YXJkIExpc3QgPT09PT09PT09PT09
PT0KLSAgICAgICAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3RvcnkvcmVkaXJlY3QtanMtZG9j
dW1lbnQtbG9jYXRpb24tYmVmb3JlLWxvYWQuaHRtbCAgKipuYXYgdGFyZ2V0KioKIGN1cnItPiAg
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3RvcnkvcmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5o
dG1sIzEgICoqbmF2IHRhcmdldCoqCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5
L3JlZGlyZWN0LWpzLWRvY3VtZW50LWxvY2F0aW9uLWJlZm9yZS1sb2FkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZG9jdW1lbnQtbG9jYXRpb24tYmVm
b3JlLWxvYWQuaHRtbAppbmRleCBmNjI0MGViZjNmNDE3ZTNhZjdlYzNmMzg0Mjk0YzZiNmFiMjVl
YzUwLi4yNmIwYzU3ZWU2YzM5MGUyNzg1OGJkNjg2NjFjNDBmNjM5NzQyMGVkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZG9jdW1lbnQtbG9j
YXRpb24tYmVmb3JlLWxvYWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rv
cnkvcmVkaXJlY3QtanMtZG9jdW1lbnQtbG9jYXRpb24tYmVmb3JlLWxvYWQuaHRtbApAQCAtNCw3
ICs0LDcgQEAKIAogPHNjcmlwdD4KIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5rZWVwV2ViSGlzdG9yeSgpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CiAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOwogfQogZG9jdW1lbnQubG9jYXRpb24gPSAicmVzb3VyY2Vz
L3JlZGlyZWN0LXRhcmdldC5odG1sIzEiOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWZvcm0tc3VibWl0LTAtc2Vjb25kcy5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWZvcm0tc3VibWl0LTAtc2Vj
b25kcy5odG1sCmluZGV4IGQ2MmM2MzFlNGNkN2U5NGVjYWZiMDFjN2NmMjFiNmExNDFjNmM1ZjYu
LmNmNDYyNDc2MTQ4N2I0NjYyYmRlOTQwODdkNGFjNzMxNWVjYWMwZmIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1mb3JtLXN1Ym1pdC0wLXNl
Y29uZHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3Qt
anMtZm9ybS1zdWJtaXQtMC1zZWNvbmRzLmh0bWwKQEAgLTQsNyArNCw3IEBACiAKIDxzY3JpcHQ+
CiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIua2VlcFdlYkhpc3RvcnkoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJh
Y2tGb3J3YXJkTGlzdCgpOwogICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKIH0KIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0
b3J5L3JlZGlyZWN0LWpzLWZvcm0tc3VibWl0LTItc2Vjb25kcy5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWZvcm0tc3VibWl0LTItc2Vjb25kcy5odG1s
CmluZGV4IGE0OWI1MWQwMDM2NTBhM2ZmYzViZGNlM2RiZjJlNjQyYzMyN2YyNTQuLmVhZmRlNDAx
MzFkYjYwNTVmODhiZDEzNTA3MzI3MjQzZjFlMDhhODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1mb3JtLXN1Ym1pdC0yLXNlY29uZHMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZm9ybS1z
dWJtaXQtMi1zZWNvbmRzLmh0bWwKQEAgLTQsNyArNCw3IEBACiAKIDxzY3JpcHQ+CiBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIua2Vl
cFdlYkhpc3RvcnkoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJk
TGlzdCgpOwogICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKIH0KIDwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGly
ZWN0LWpzLWZvcm0tc3VibWl0LWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1mb3JtLXN1Ym1pdC1iZWZvcmUtbG9hZC1l
eHBlY3RlZC50eHQKaW5kZXggNzU5YjRjODYyNTA1YTFhODZjODg2ZTUzZjdhY2ZiNDM5ODliNzIw
Zi4uNGNiYTQ5NjQ3OWQyZGEzNGI5N2I0YWNmMTQ2ODMxYzI2YmQyYjUzZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWZvcm0tc3VibWl0LWJl
Zm9yZS1sb2FkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rv
cnkvcmVkaXJlY3QtanMtZm9ybS1zdWJtaXQtYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0CkBAIC0x
LDkgKzEsOCBAQAogVGhpcyBwYWdlIGlzIHRoZSB0YXJnZXQgb2YgYSByZWRpcmVjdC4KIAotRkFJ
TDogSGlzdG9yeSBpdGVtIGNvdW50IHNob3VsZCBiZSAxIGJ1dCBpbnN0ZWFkIGlzIDIuCitQQVNT
OiBIaXN0b3J5IGl0ZW0gY291bnQgc2hvdWxkIGJlIDEgYW5kIGlzLgogCiAKID09PT09PT09PT09
PT09IEJhY2sgRm9yd2FyZCBMaXN0ID09PT09PT09PT09PT09Ci0gICAgICAgIGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9oaXN0b3J5L3JlZGlyZWN0LWpzLWZvcm0tc3VibWl0LWJlZm9yZS1sb2FkLmh0
bWwgICoqbmF2IHRhcmdldCoqCiBjdXJyLT4gIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9oaXN0b3J5
L3Jlc291cmNlcy9yZWRpcmVjdC10YXJnZXQuaHRtbD8jMSAgKipuYXYgdGFyZ2V0KioKID09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtZm9ybS1zdWJtaXQtYmVm
b3JlLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1q
cy1mb3JtLXN1Ym1pdC1iZWZvcmUtbG9hZC5odG1sCmluZGV4IGMzMzZiN2E0ZDU1ZjM3MmZlMmNl
MDkxNDQyZGVkZmQ5OTY1MDI3NzQuLmJjYTZkNzc2ZTkxZDgxMWUyMzcwM2E0YzY0MmVhMGZjMTFk
NWU1YzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVj
dC1qcy1mb3JtLXN1Ym1pdC1iZWZvcmUtbG9hZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1mb3JtLXN1Ym1pdC1iZWZvcmUtbG9hZC5odG1sCkBA
IC00LDcgKzQsNyBAQAogCiA8c2NyaXB0PgogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiB9CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi0wLXNlY29u
ZHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2Nh
dGlvbi0wLXNlY29uZHMuaHRtbAppbmRleCAzMjU5ZDY0ODM4NTk0M2NiMzVlNjlmYzFmZDA2YWNj
NjQxZjllZDBkLi4xZmQ3YjZmOTg4NmE4YjE2ODFkNGRlZTU5ZTczNTk2OGQzYzIzOWNmIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRp
b24tMC1zZWNvbmRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jl
ZGlyZWN0LWpzLWxvY2F0aW9uLTAtc2Vjb25kcy5odG1sCkBAIC00LDcgKzQsNyBAQAogCiA8c2Ny
aXB0PgogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xl
YXJCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CiB9CiBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgbG9jYXRpb24gPSAicmVzb3VyY2Vz
L3JlZGlyZWN0LXRhcmdldC5odG1sIzEiOyB9LCAwKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi0yLXNlY29uZHMuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi0yLXNl
Y29uZHMuaHRtbAppbmRleCA0YjFlNzZjZDNiOGUzNzcxMTI4MzViMTBlYzA1ZWIxZjZjYWY5M2E0
Li5hYjA1YmE0OWJlNTExZGEwNTA5NGFhZDg1OWQyNGU4NWNiN2EyZGFkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tMi1zZWNv
bmRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpz
LWxvY2F0aW9uLTItc2Vjb25kcy5odG1sCkBAIC00LDcgKzQsNyBAQAogCiA8c2NyaXB0PgogaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmtlZXBXZWJIaXN0b3J5KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9y
d2FyZExpc3QoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiB9
CiBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgbG9jYXRpb24gPSAicmVzb3VyY2VzL3JlZGlyZWN0
LXRhcmdldC5odG1sIzEiOyB9LCAyMDAwKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1hc3NpZ24tMC1zZWNvbmRzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tYXNz
aWduLTAtc2Vjb25kcy5odG1sCmluZGV4IDVjMGJkNjcyMjVmN2FjNzA2ZjRjNWEzMzM1MDg3MTBh
Y2UyOTg5YjEuLjA3YmYzYWFmNzVlZDNmZWNkOTJjYzkyNTk2NWE1Y2EzOGMwMDhhOTEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlv
bi1hc3NpZ24tMC1zZWNvbmRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0
b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWFzc2lnbi0wLXNlY29uZHMuaHRtbApAQCAtNCw3ICs0
LDcgQEAKIAogPHNjcmlwdD4KIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5rZWVwV2ViSGlzdG9yeSgpOworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOwogfQogc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IGxvY2F0aW9u
LmFzc2lnbigicmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzEiKTsgfSwgMCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRp
b24tYXNzaWduLTItc2Vjb25kcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5
L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWFzc2lnbi0yLXNlY29uZHMuaHRtbAppbmRleCBjOGIyZTI4
MmI2OTM4Njg5MmZmMzIyMmY0Njg5NTI0MzNkMTdlYWRlLi42NDk5YWZmN2Q5OGQ0YjRhZjliZWZm
YzQ4OTU1ZGM1YTVlOTkxYThkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hp
c3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tYXNzaWduLTItc2Vjb25kcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1hc3NpZ24t
Mi1zZWNvbmRzLmh0bWwKQEAgLTQsNyArNCw3IEBACiAKIDxzY3JpcHQ+CiBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIua2VlcFdlYkhp
c3RvcnkoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgp
OwogICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKIH0KIHNldFRpbWVv
dXQoZnVuY3Rpb24gKCkgeyBsb2NhdGlvbi5hc3NpZ24oInJlc291cmNlcy9yZWRpcmVjdC10YXJn
ZXQuaHRtbCMxIik7IH0sIDIwMDApOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWFzc2lnbi1iZWZvcmUtbG9hZC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRp
b24tYXNzaWduLWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dAppbmRleCA0MmExMjU5YmVkZTUxMjRm
MmYyM2VkZDU5ZDM1MjhkNDRlMmE3MzY5Li4wNjJiNjliNGEwYmJjMGFmMGFmMDM5OGVmYWY1MjNj
NzA1NTBhMTE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVk
aXJlY3QtanMtbG9jYXRpb24tYXNzaWduLWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tYXNzaWdu
LWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dApAQCAtMSw5ICsxLDggQEAKIFRoaXMgcGFnZSBpcyB0
aGUgdGFyZ2V0IG9mIGEgcmVkaXJlY3QuCiAKLUZBSUw6IEhpc3RvcnkgaXRlbSBjb3VudCBzaG91
bGQgYmUgMSBidXQgaW5zdGVhZCBpcyAyLgorUEFTUzogSGlzdG9yeSBpdGVtIGNvdW50IHNob3Vs
ZCBiZSAxIGFuZCBpcy4KIAogCiA9PT09PT09PT09PT09PSBCYWNrIEZvcndhcmQgTGlzdCA9PT09
PT09PT09PT09PQotICAgICAgICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaGlzdG9yeS9yZWRpcmVj
dC1qcy1sb2NhdGlvbi1hc3NpZ24tYmVmb3JlLWxvYWQuaHRtbCAgKipuYXYgdGFyZ2V0KioKIGN1
cnItPiAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3RvcnkvcmVzb3VyY2VzL3JlZGlyZWN0LXRh
cmdldC5odG1sIzEgICoqbmF2IHRhcmdldCoqCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9o
aXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWFzc2lnbi1iZWZvcmUtbG9hZC5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWFzc2lnbi1i
ZWZvcmUtbG9hZC5odG1sCmluZGV4IDc3MTdiMDRhNzMxOGJlYjcyZDIzNTU2NjZjZjZkZGU0ZDJk
NmYyMzAuLjc1MTczZWM1OWZiMTA5MTM1M2ExNGZjNjhlODg1MjFmYTJjNTA5ZTMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1h
c3NpZ24tYmVmb3JlLWxvYWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rv
cnkvcmVkaXJlY3QtanMtbG9jYXRpb24tYXNzaWduLWJlZm9yZS1sb2FkLmh0bWwKQEAgLTQsNyAr
NCw3IEBACiAKIDxzY3JpcHQ+CiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIua2VlcFdlYkhpc3RvcnkoKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOwogICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKIH0KIGxvY2F0aW9uLmFzc2lnbigicmVzb3VyY2VzL3JlZGly
ZWN0LXRhcmdldC5odG1sIzEiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tYmVmb3Jl
LWxvYWQtZXhwZWN0ZWQudHh0CmluZGV4IGI2ZGFmOWU5MjE2ZWY1OWNkNGI5ODFjYWVmMTQyZTBl
MmYyZjVhNjIuLjA2MmI2OWI0YTBiYmMwYWYwYWYwMzk4ZWZhZjUyM2M3MDU1MGExMTcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlv
bi1iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9o
aXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dApAQCAt
MSw5ICsxLDggQEAKIFRoaXMgcGFnZSBpcyB0aGUgdGFyZ2V0IG9mIGEgcmVkaXJlY3QuCiAKLUZB
SUw6IEhpc3RvcnkgaXRlbSBjb3VudCBzaG91bGQgYmUgMSBidXQgaW5zdGVhZCBpcyAyLgorUEFT
UzogSGlzdG9yeSBpdGVtIGNvdW50IHNob3VsZCBiZSAxIGFuZCBpcy4KIAogCiA9PT09PT09PT09
PT09PSBCYWNrIEZvcndhcmQgTGlzdCA9PT09PT09PT09PT09PQotICAgICAgICBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1iZWZvcmUtbG9hZC5odG1s
ICAqKm5hdiB0YXJnZXQqKgogY3Vyci0+ICBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaGlzdG9yeS9y
ZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwjMSAgKipuYXYgdGFyZ2V0KioKID09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24tYmVmb3JlLWxv
YWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2Nh
dGlvbi1iZWZvcmUtbG9hZC5odG1sCmluZGV4IDcyMmM3NWIwNTI1Y2UyMjM2MzkzMTMzMjgyMTM5
NmI3MTMzNzk5YWIuLmZlMjA0ZGZiODZhZDkzYmM2Yjg0Yzk1OTNkNzgyNjhmZTk0Mjg2MDkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2Nh
dGlvbi1iZWZvcmUtbG9hZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9y
eS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1iZWZvcmUtbG9hZC5odG1sCkBAIC00LDcgKzQsNyBAQAog
CiA8c2NyaXB0PgogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CiB9CiBsb2NhdGlvbiA9ICJyZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0
bWwjMSI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJl
Y3QtanMtbG9jYXRpb24taHJlZi0wLXNlY29uZHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1ocmVmLTAtc2Vjb25kcy5odG1sCmluZGV4
IDNlODRkMWU3YjNmNDg3NTU2MDUxMDAzNDE3OGYyYjI2MWJiYTdhMDQuLjEwNGQwZTUzY2JkNGY4
ZjNlY2IyMjk3MzdjMjMyMzRhMzk0MThjZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1ocmVmLTAtc2Vjb25kcy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1o
cmVmLTAtc2Vjb25kcy5odG1sCkBAIC00LDcgKzQsNyBAQAogCiA8c2NyaXB0PgogaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmtlZXBX
ZWJIaXN0b3J5KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExp
c3QoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiB9CiBzZXRU
aW1lb3V0KGZ1bmN0aW9uICgpIHsgbG9jYXRpb24uaHJlZiA9ICJyZXNvdXJjZXMvcmVkaXJlY3Qt
dGFyZ2V0Lmh0bWwjMSI7IH0sIDApOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWhyZWYtMi1zZWNvbmRzLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24taHJlZi0yLXNl
Y29uZHMuaHRtbAppbmRleCA4MDgzMTg1NWM1ZWViMjJkOTU2YWU0NGJlYTE4MjQ4NTdhOTlkMDMx
Li4yOTlhNDQ5MDg3N2Y3NjQ0NGI0YWE5ODZkYjcwZWY3ZDIzNDliMTM0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24taHJlZi0y
LXNlY29uZHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJl
Y3QtanMtbG9jYXRpb24taHJlZi0yLXNlY29uZHMuaHRtbApAQCAtNCw3ICs0LDcgQEAKIAogPHNj
cmlwdD4KIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5rZWVwV2ViSGlzdG9yeSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNs
ZWFyQmFja0ZvcndhcmRMaXN0KCk7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOwogfQogc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IGxvY2F0aW9uLmhyZWYgPSAicmVz
b3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzEiOyB9LCAyMDAwKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1ocmVmLWJl
Zm9yZS1sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9y
ZWRpcmVjdC1qcy1sb2NhdGlvbi1ocmVmLWJlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dAppbmRleCAz
Y2M5YzZiOTkxNGE2MWMxNzM3YjRkMjM3OGJhOTdhNGZkODg4ZWI4Li4wNjJiNjliNGEwYmJjMGFm
MGFmMDM5OGVmYWY1MjNjNzA1NTBhMTE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24taHJlZi1iZWZvcmUtbG9hZC1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxv
Y2F0aW9uLWhyZWYtYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsOCBAQAogVGhp
cyBwYWdlIGlzIHRoZSB0YXJnZXQgb2YgYSByZWRpcmVjdC4KIAotRkFJTDogSGlzdG9yeSBpdGVt
IGNvdW50IHNob3VsZCBiZSAxIGJ1dCBpbnN0ZWFkIGlzIDIuCitQQVNTOiBIaXN0b3J5IGl0ZW0g
Y291bnQgc2hvdWxkIGJlIDEgYW5kIGlzLgogCiAKID09PT09PT09PT09PT09IEJhY2sgRm9yd2Fy
ZCBMaXN0ID09PT09PT09PT09PT09Ci0gICAgICAgIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9oaXN0
b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWhyZWYtYmVmb3JlLWxvYWQuaHRtbCAgKipuYXYgdGFy
Z2V0KioKIGN1cnItPiAgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2hpc3RvcnkvcmVzb3VyY2VzL3Jl
ZGlyZWN0LXRhcmdldC5odG1sIzEgICoqbmF2IHRhcmdldCoqCiA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLWhyZWYtYmVmb3JlLWxvYWQuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1o
cmVmLWJlZm9yZS1sb2FkLmh0bWwKaW5kZXggYjk2M2NjZDhlOTMyYTUzODc3NTlmYTQ5Nzc1MjE5
YzdlNTBkNDhlZC4uNjg2MmVkNTliZmQ3MWU3NzhmMWNkODVkMjA2M2RkMDk1MzRiNGZmOCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0
aW9uLWhyZWYtYmVmb3JlLWxvYWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hp
c3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24taHJlZi1iZWZvcmUtbG9hZC5odG1sCkBAIC00LDcg
KzQsNyBAQAogCiA8c2NyaXB0PgogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CiB9CiBsb2NhdGlvbi5ocmVmID0gInJlc291cmNlcy9yZWRp
cmVjdC10YXJnZXQuaHRtbCMxIjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1yZXBsYWNlLTAtc2Vjb25kcy5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLXJlcGxhY2Ut
MC1zZWNvbmRzLmh0bWwKaW5kZXggMDVjMGNhNGI3Nzg0NzE1NTFmN2ZlMTc5NTZjMzk3NTI1ZTQy
ZWUzOS4uOWE3MDU3YmI4ZWM4ZDRiM2MxZjc1NmNiYjYyOWI3OTQ1ZjdiMGMwMCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLXJl
cGxhY2UtMC1zZWNvbmRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5
L3JlZGlyZWN0LWpzLWxvY2F0aW9uLXJlcGxhY2UtMC1zZWNvbmRzLmh0bWwKQEAgLTQsNyArNCw3
IEBACiAKIDxzY3JpcHQ+CiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIua2VlcFdlYkhpc3RvcnkoKTsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOwogICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKIH0KIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBsb2NhdGlvbi5y
ZXBsYWNlKCJyZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwjMSIpOyB9LCAwKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlv
bi1yZXBsYWNlLTItc2Vjb25kcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5
L3JlZGlyZWN0LWpzLWxvY2F0aW9uLXJlcGxhY2UtMi1zZWNvbmRzLmh0bWwKaW5kZXggMmMzMTU4
ODc3YTY3MTYzMTg4NGJiMTA3MjZiNjllYTZkZDFmMGVjYS4uMGZhNDQ4ZTVjNjJlNDQ2MjBmMzBk
ZjFiZTdiYjVhMjJmY2E3YWMyNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9o
aXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLXJlcGxhY2UtMi1zZWNvbmRzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLXJlcGxh
Y2UtMi1zZWNvbmRzLmh0bWwKQEAgLTQsNyArNCw3IEBACiAKIDxzY3JpcHQ+CiBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIua2VlcFdl
Ykhpc3RvcnkoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tGb3J3YXJkTGlz
dCgpOwogICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKIH0KIHNldFRp
bWVvdXQoZnVuY3Rpb24gKCkgeyBsb2NhdGlvbi5yZXBsYWNlKCJyZXNvdXJjZXMvcmVkaXJlY3Qt
dGFyZ2V0Lmh0bWwjMSIpOyB9LCAyMDAwKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1sb2NhdGlvbi1yZXBsYWNlLWJlZm9yZS1sb2FkLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtanMtbG9jYXRpb24t
cmVwbGFjZS1iZWZvcmUtbG9hZC5odG1sCmluZGV4IDMyMjY2YTY2NzI2ODBkNDI2ODk4YzliZTBl
MTU4ZjA5YTQwZjdkNDkuLjMzZDVlYTA4YjY5YjgwYmZjNTUwM2FlOTM4MTMzMzBlNzAyODY3ZjIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1qcy1s
b2NhdGlvbi1yZXBsYWNlLWJlZm9yZS1sb2FkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9oaXN0b3J5L3JlZGlyZWN0LWpzLWxvY2F0aW9uLXJlcGxhY2UtYmVmb3JlLWxvYWQuaHRt
bApAQCAtNCw3ICs0LDcgQEAKIAogPHNjcmlwdD4KIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5rZWVwV2ViSGlzdG9yeSgpOworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CiAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogfQogbG9jYXRpb24ucmVwbGFjZSgicmVz
b3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sIzEiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1tZXRhLXJlZnJlc2gtMC1zZWNvbmRzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtbWV0YS1yZWZyZXNoLTAt
c2Vjb25kcy5odG1sCmluZGV4IDZlNzhlYzU2Njk5ZGVhNzkxYzY1NWU3YWZhNWQwZGJkOTlhZDRj
MzYuLjBmMGUxNzFlZTExNmJiYmJhYjE1NzczZTk4YTZkODlmM2FkNGIyYjUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZWRpcmVjdC1tZXRhLXJlZnJlc2gtMC1z
ZWNvbmRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGlyZWN0
LW1ldGEtcmVmcmVzaC0wLXNlY29uZHMuaHRtbApAQCAtNCw3ICs0LDcgQEAKIDx0aXRsZT5NZXRh
IFJlZnJlc2ggUmVkaXJlY3Q8L3RpdGxlPgogPHNjcmlwdD4KIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5rZWVwV2ViSGlzdG9yeSgp
OworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CiAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogfQogPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJlY3QtbWV0YS1yZWZy
ZXNoLTItc2Vjb25kcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3JlZGly
ZWN0LW1ldGEtcmVmcmVzaC0yLXNlY29uZHMuaHRtbAppbmRleCBiOWY2NTQ5NDNhNGE2OTQzMzJk
NzRmNTBmYmI3YTc5NTYyMDgwYjU3Li5lOGQ3ODMzMjViZmI4ZDg0MGMwOTE4ZDlhMzJlNzhiYjU3
NjA5NGY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3RvcnkvcmVkaXJl
Y3QtbWV0YS1yZWZyZXNoLTItc2Vjb25kcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaGlzdG9yeS9yZWRpcmVjdC1tZXRhLXJlZnJlc2gtMi1zZWNvbmRzLmh0bWwKQEAgLTQsNyAr
NCw3IEBACiA8dGl0bGU+TWV0YSBSZWZyZXNoIFJlZGlyZWN0PC90aXRsZT4KIDxzY3JpcHQ+CiBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIua2VlcFdlYkhpc3RvcnkoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5jbGVhckJhY2tG
b3J3YXJkTGlzdCgpOwogICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
IH0KIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5
L3Jlc291cmNlcy9yZWRpcmVjdC1oZWxwZXIucGwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hp
c3RvcnkvcmVzb3VyY2VzL3JlZGlyZWN0LWhlbHBlci5wbApuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MGYyZTdkYTNh
NDk3MTFjZTYwN2M3NmIzYTE4ZGYyM2E1MTAzOGVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9oaXN0b3J5L3Jlc291cmNlcy9yZWRpcmVjdC1oZWxwZXIucGwKQEAg
LTAsMCArMSwyNSBAQAorIyEvdXNyL2Jpbi9wZXJsCisjIFNjcmlwdCB0byBnZW5lcmF0ZSBhIDMw
eCBIVFRQIHJlZGlyZWN0IChkZXRlcm1pbmVkIGJ5IHRoZSBxdWVyeSBwYXJhbWV0ZXIpCisKKyRS
RURJUkVDVF9DT0RFID0gJEVOVnsnUVVFUllfU1RSSU5HJ30gfHwgJzMwMSc7CisKKyRTVEFUVVNf
VEVYVFMgPSB7CisgICczMDEnID0+ICdNb3ZlZCBQZXJtYW5lbnRseScsCisgICczMDInID0+ICdN
b3ZlZCBUZW1wb3JhcmlseScsCisgICczMDMnID0+ICdTZWUgT3RoZXInLAorICAnMzA3JyA9PiAn
TW92ZWQgVGVtcG9yYXJpbHknCit9OworCitwcmludCAiU3RhdHVzOiAkUkVESVJFQ1RfQ09ERSAk
U1RBVFVTX1RFWFRTeyRSRURJUkVDVF9DT0RFfVxyXG4iOworcHJpbnQgIkxvY2F0aW9uOiByZWRp
cmVjdC10YXJnZXQuaHRtbCMyXHJcbiI7CitwcmludCAiQ29udGVudC10eXBlOiB0ZXh0L2h0bWxc
clxuIjsKK3ByaW50ICJcclxuIjsKKworcHJpbnQgPDxIRVJFX0RPQ19FTkQKKzxodG1sPgorPGhl
YWQ+Cis8dGl0bGU+JFJFRElSRUNUX0NPREUgUmVkaXJlY3Q8L3RpdGxlPgorCis8Ym9keT5UaGlz
IHBhZ2UgaXMgYSAkUkVESVJFQ1RfQ09ERSByZWRpcmVjdC48L2JvZHk+Cis8L2h0bWw+CitIRVJF
X0RPQ19FTkQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZXNv
dXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2hpc3Rv
cnkvcmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sCmluZGV4IGIzZWE0ZWU5MWRmNTkyNmE3
Y2YzYTQ2MjUyYWFkMzY3M2Y5MTNiMDkuLjkyMDU5YWVkYzM1MDAxYmU2OWNjNTlkN2I0ZjFjNGYx
NmU4YWZhZjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaGlzdG9yeS9yZXNv
dXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9o
aXN0b3J5L3Jlc291cmNlcy9yZWRpcmVjdC10YXJnZXQuaHRtbApAQCAtMTQsNyArMTQsNyBAQCBm
dW5jdGlvbiBsb2cocykKIGZ1bmN0aW9uIHRlc3RIaXN0b3J5SXRlbUNvdW50KCkKIHsKICAgICB2
YXIgZXhwZWN0ZWQgPSBwYXJzZUludChsb2NhdGlvbi5oYXNoLnNsaWNlKDEpKTsKLSAgICB2YXIg
YWN0dWFsID0gbGF5b3V0VGVzdENvbnRyb2xsZXIud2ViSGlzdG9yeUl0ZW1Db3VudCArIDE7IC8v
IEFkZCBvbmUgdG8gaW5jbHVkZSB0aGUgcmVmZXJyaW5nIHBhZ2UsIHdoaWNoIGxvYWRlZCBiZWZv
cmUgd2Ugc3RhcnRlZCByZWNvcmRpbmcgaGlzdG9yeS4KKyAgICB2YXIgYWN0dWFsID0gaGlzdG9y
eS5sZW5ndGg7CiAgICAgaWYgKGFjdHVhbCA9PT0gZXhwZWN0ZWQpCiAgICAgICAgIGxvZygiUEFT
UzogSGlzdG9yeSBpdGVtIGNvdW50IHNob3VsZCBiZSAiICsgZXhwZWN0ZWQgKyAiIGFuZCBpcy4i
KTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcv
MzA3LWFmdGVyLTMwMy1hZnRlci1wb3N0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvbG9hZGluZy8zMDctYWZ0ZXItMzAzLWFmdGVyLXBvc3QtZXhwZWN0ZWQudHh0CmluZGV4
IGEwYWQ2NzQ0NGRmMzM2NzUzOGY4MmUwZjVhNzQwMTcwM2UzYjNkNGYuLmNmMDBlZjgyMjNiNWM4
MjVjYjM4ZmRiMTdiYTdkOTUxMjFkOGQ0MjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvbG9hZGluZy8zMDctYWZ0ZXItMzAzLWFmdGVyLXBvc3QtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy8zMDctYWZ0ZXItMzAzLWFmdGVyLXBvc3Qt
ZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsNyBAQAogbWFpbiBmcmFtZSAtIGRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUKIG1haW4gZnJhbWUgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKIG1h
aW4gZnJhbWUgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIHdp
bGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRp
bmcvcmVzb3VyY2VzL3Bvc3QtdG8tMzAzLXRhcmdldC5waHAgCiBtYWluIGZyYW1lIC0gZGlkSGFu
ZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIG1haW4gZnJhbWUgLSBkaWRGaW5pc2hMb2FkRm9yRnJh
bWUKIDx1bmtub3duPiAtIGRpZEZpbmlzaExvYWRpbmcKQEAgLTExLDYgKzEyLDcgQEAgbWFpbiBm
cmFtZSAtIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
CiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcG9zdC10by0zMDMtdGFy
Z2V0LnBocCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvMzA3LXBvc3Qtb3V0cHV0LXRhcmdldC5waHAsIG1h
aW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy8z
MDctcG9zdC1vdXRwdXQtdGFyZ2V0LnBocCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3Bv
bnNlIDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNl
cy8zMDMtdG8tMzA3LXRhcmdldC5waHAsIGh0dHAgc3RhdHVzIGNvZGUgMzA3PgogbWFpbiBmcmFt
ZSAtIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCiBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcG9zdC10by0zMDMtdGFyZ2V0
LnBocCAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvMzA3LXBvc3Qtb3V0cHV0LXRhcmdldC5waHAsIGh0dHAg
c3RhdHVzIGNvZGUgMjAwPgorbWFpbiBmcmFtZSAtIGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9y
RnJhbWUKIG1haW4gZnJhbWUgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKIG1haW4gZnJhbWUgLSBk
aWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogbWFpbiBmcmFtZSAtIGRpZEhhbmRsZU9ubG9h
ZEV2ZW50c0ZvckZyYW1lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRp
bmcvcmVkaXJlY3QtbWV0aG9kcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2xvYWRpbmcvcmVkaXJlY3QtbWV0aG9kcy1leHBlY3RlZC50eHQKaW5kZXggOGFkYTYzNjFhZjcx
MThmMzMyNjJjYzlkNjE2OWE1Mzk5ODQ1NDkwYy4uMDQ5ZjRiZTNkNzc1YTUyZDAyOWVkNWMzNjBj
MzhhMGY1MmMwY2Q0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2FkaW5n
L3JlZGlyZWN0LW1ldGhvZHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvbG9hZGluZy9yZWRpcmVjdC1tZXRob2RzLWV4cGVjdGVkLnR4dApAQCAtMTksNiArMTksNyBA
QCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9k
cy1mb3JtLmh0bWwgLSBkaWRSZWNlaXZlUgogZnJhbWUgIjAiIC0gZGlkQ2FuY2VsQ2xpZW50UmVk
aXJlY3RGb3JGcmFtZQogZnJhbWUgIjAiIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCiBmcmFtZSAi
MCIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQorZnJhbWUgIjAiIC0gd2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdFRvVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNv
dXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIAogZnJhbWUgIjAiIC0gZGlkSGFuZGxl
T25sb2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1lICIwIiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQog
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMt
Zm9ybS5odG1sIC0gZGlkRmluaXNoTG9hZGluZwpAQCAtMjcsNiArMjgsNyBAQCBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhw
IC0gd2lsbFNlbmRSZQogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3Jl
ZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0
IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0
aG9kcy1yZXN1bHQucGhwP3JlZGlyZWN0ZWQ9dHJ1ZSwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0
LnBocCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJl
c3VsdC5waHAsIGh0dHAgc3RhdHVzIGNvZGUgMzAxPgogZnJhbWUgIjAiIC0gZGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKIGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAgLSBkaWRS
ZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRp
bmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocD9yZWRpcmVjdGVkPXRydWUs
IGh0dHAgc3RhdHVzIGNvZGUgMjAwPgorZnJhbWUgIjAiIC0gZGlkQ2FuY2VsQ2xpZW50UmVkaXJl
Y3RGb3JGcmFtZQogZnJhbWUgIjAiIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCiBmcmFtZSAiMCIg
LSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJhbWUgIjEiIC0gZGlkU3RhcnRQcm92
aXNpb25hbExvYWRGb3JGcmFtZQpAQCAtNDcsNiArNDksNyBAQCBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRSZWNl
aXZlUgogZnJhbWUgIjEiIC0gZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZQogZnJhbWUg
IjEiIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCiBmcmFtZSAiMSIgLSBkaWRGaW5pc2hEb2N1bWVu
dExvYWRGb3JGcmFtZQorZnJhbWUgIjEiIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJM
OiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9k
cy1yZXN1bHQucGhwIAogZnJhbWUgIjEiIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUK
IGZyYW1lICIxIiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQogaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIC0gZGlkRmluaXNo
TG9hZGluZwpAQCAtNTUsNiArNTgsNyBAQCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9y
ZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIC0gd2lsbFNlbmRSZQogaHR0cDov
LzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0
LnBocCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwP3JlZGly
ZWN0ZWQ9dHJ1ZSwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRp
bmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCwgaHR0cCBtZXRob2QgR0VU
PiByZWRpcmVjdFJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9s
b2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAsIGh0dHAgc3RhdHVz
IGNvZGUgMzAyPgogZnJhbWUgIjEiIC0gZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNl
cy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJM
UmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0
LW1ldGhvZHMtcmVzdWx0LnBocD9yZWRpcmVjdGVkPXRydWUsIGh0dHAgc3RhdHVzIGNvZGUgMjAw
PgorZnJhbWUgIjEiIC0gZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZQogZnJhbWUgIjEi
IC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCiBmcmFtZSAiMSIgLSBkaWRGaW5pc2hEb2N1bWVudExv
YWRGb3JGcmFtZQogZnJhbWUgIjIiIC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQpA
QCAtNzUsNiArNzksNyBAQCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMv
cmVkaXJlY3QtbWV0aG9kcy1mb3JtLmh0bWwgLSBkaWRSZWNlaXZlUgogZnJhbWUgIjIiIC0gZGlk
Q2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZQogZnJhbWUgIjIiIC0gZGlkQ29tbWl0TG9hZEZv
ckZyYW1lCiBmcmFtZSAiMiIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQorZnJhbWUg
IjIiIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOiBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwIAogZnJhbWUg
IjIiIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1lICIyIiAtIGRpZEZpbmlz
aExvYWRGb3JGcmFtZQogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3Jl
ZGlyZWN0LW1ldGhvZHMtZm9ybS5odG1sIC0gZGlkRmluaXNoTG9hZGluZwpAQCAtODMsNiArODgs
NyBAQCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0
aG9kcy1yZXN1bHQucGhwIC0gd2lsbFNlbmRSZQogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRp
bmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCAtIHdpbGxTZW5kUmVxdWVz
dCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJj
ZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwP3JlZGlyZWN0ZWQ9dHJ1ZSwgbWFpbiBkb2N1
bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0
LW1ldGhvZHMtcmVzdWx0LnBocCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIDxO
U1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRp
cmVjdC1tZXRob2RzLXJlc3VsdC5waHAsIGh0dHAgc3RhdHVzIGNvZGUgMzAzPgogZnJhbWUgIjIi
IC0gZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKIGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJl
c3VsdC5waHAgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocD9y
ZWRpcmVjdGVkPXRydWUsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgorZnJhbWUgIjIiIC0gZGlkQ2Fu
Y2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZQogZnJhbWUgIjIiIC0gZGlkQ29tbWl0TG9hZEZvckZy
YW1lCiBmcmFtZSAiMiIgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogZnJhbWUgIjMi
IC0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZQpAQCAtMTAzLDYgKzEwOSw3IEBAIGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLWZv
cm0uaHRtbCAtIGRpZFJlY2VpdmVSCiBmcmFtZSAiMyIgLSBkaWRDYW5jZWxDbGllbnRSZWRpcmVj
dEZvckZyYW1lCiBmcmFtZSAiMyIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKIGZyYW1lICIzIiAt
IGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCitmcmFtZSAiMyIgLSB3aWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0VG9VUkw6IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNl
cy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5waHAgCiBmcmFtZSAiMyIgLSBkaWRIYW5kbGVPbmxv
YWRFdmVudHNGb3JGcmFtZQogZnJhbWUgIjMiIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCiBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvbG9hZGluZy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1mb3Jt
Lmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5nCkBAIC0xMTEsNiArMTE4LDcgQEAgaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCAt
IHdpbGxTZW5kUmUKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRp
cmVjdC1tZXRob2RzLXJlc3VsdC5waHAgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBV
UkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhv
ZHMtcmVzdWx0LnBocD9yZWRpcmVjdGVkPXRydWUsIG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVjdC1tZXRob2RzLXJlc3VsdC5w
aHAsIGh0dHAgbWV0aG9kIFBPU1Q+IHJlZGlyZWN0UmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0
cDovLzEyNy4wLjAuMTo4MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVz
dWx0LnBocCwgaHR0cCBzdGF0dXMgY29kZSAzMDc+CiBmcmFtZSAiMyIgLSBkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZQogaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LW1ldGhvZHMtcmVzdWx0LnBocCAtIGRpZFJl
Y2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbG9hZGlu
Zy9yZXNvdXJjZXMvcmVkaXJlY3QtbWV0aG9kcy1yZXN1bHQucGhwP3JlZGlyZWN0ZWQ9dHJ1ZSwg
aHR0cCBzdGF0dXMgY29kZSAyMDA+CitmcmFtZSAiMyIgLSBkaWRDYW5jZWxDbGllbnRSZWRpcmVj
dEZvckZyYW1lCiBmcmFtZSAiMyIgLSBkaWRDb21taXRMb2FkRm9yRnJhbWUKIGZyYW1lICIzIiAt
IGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCiBmcmFtZSAiMyIgLSBkaWRIYW5kbGVPbmxv
YWRFdmVudHNGb3JGcmFtZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL3Jlc291cmNlcy9iYWNrLXNlbmQtcmVmZXJyZXItaGVscGVyLnBocCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvYmFjay1zZW5kLXJlZmVycmVyLWhl
bHBlci5waHAKaW5kZXggYmY2MjllZjUxNWE2OTFiMmQ3ZjA2ZTQ1ZjhhNjBiNzZlOTlhNDNiMS4u
YjU0OTU2YTJkNmU5YzEzMWE5NTQ5YmZmYmFmYjQ4Y2Y2NDRlMWI1MCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9iYWNrLXNlbmQtcmVmZXJy
ZXItaGVscGVyLnBocAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVz
b3VyY2VzL2JhY2stc2VuZC1yZWZlcnJlci1oZWxwZXIucGhwCkBAIC0xOCw4ICsxOCw4IEBAIHdp
bmRvdy5uYW1lOiA8c2NyaXB0PmRvY3VtZW50LndyaXRlKHdpbmRvdy5uYW1lKTwvc2NyaXB0Pgog
CiA8c2NyaXB0PgogICAgIGlmICh3aW5kb3cubmFtZSA9PSAxKSB7Ci0gICAgICAgIC8vIE5hdmln
YXRlIG9uY2UgbW9yZSB0byBhZGQgYSBoaXN0b3J5IGVudHJ5LgotICAgICAgICBkb2N1bWVudC5s
b29wYmFjay5zdWJtaXQoKTsKKyAgICAgICAgLy8gTmF2aWdhdGUgb25jZSBtb3JlIChpbiBhIHRp
bWVvdXQpIHRvIGFkZCBhIGhpc3RvcnkgZW50cnkuCisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7ZG9jdW1lbnQubG9vcGJhY2suc3VibWl0KCk7fSwgMCk7CiAgICAgfSBlbHNlIGlmICh3
aW5kb3cubmFtZSA9PSAyKSB7CiAgICAgICAgIGhpc3RvcnkuZ28oLTEpOwogICAgIH0gZWxzZSB7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2Vz
L2RvY3VtZW50LWxvY2F0aW9uLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9u
L3Jlc291cmNlcy9kb2N1bWVudC1sb2NhdGlvbi5qcwppbmRleCAxZGI0OGNkZmZiNmM4ZGNhNWVm
ZmNkZTYxZjRkMzBjZWQ4MmZhOWUzLi5hMGFiNGQ4MzI5YjYwMzhhMjlhNDNmNGRiODY0ZDI1Y2Qx
YWNjMmEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVz
b3VyY2VzL2RvY3VtZW50LWxvY2F0aW9uLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
bmF2aWdhdGlvbi9yZXNvdXJjZXMvZG9jdW1lbnQtbG9jYXRpb24uanMKQEAgLTcsNyArNyw4IEBA
IGZ1bmN0aW9uIHN0YXJ0KCkgewogICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwogICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogCi0gICAg
ICBydW5UZXN0KCk7CisgICAgICAvLyBMb2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91
dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAg
ICAgIHNldFRpbWVvdXQocnVuVGVzdCwgMCk7CiAgICAgfSBlbHNlIHsKICAgICAgIC8vIGxvYWRl
ZCB0aGUgPzEgbmF2aWdhdGlvbgogICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291
cmNlcy9zdWJtaXQtdG8tZnJhZ21lbnQucGwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmln
YXRpb24vcmVzb3VyY2VzL3N1Ym1pdC10by1mcmFnbWVudC5wbAppbmRleCAzMGJmMTU2NTgxOWQ5
Nzc3MmFkZDhlZGNhNmE3OGJjM2I2NzQ1MDhjLi45N2VlOTdiZGMwOGM0MjY3ZmJlMzk2MGY1YWIx
NTI4ZDUyMzM5MzJjIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRp
b24vcmVzb3VyY2VzL3N1Ym1pdC10by1mcmFnbWVudC5wbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL3N1Ym1pdC10by1mcmFnbWVudC5wbApAQCAtMjIs
NyArMjIsOCBAQCBvbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgYWxlcnQoInN0YWdlOiAiICsgc2Vz
c2lvblN0b3JhZ2Uuc3RhZ2UpOwogICBzd2l0Y2ggKHNlc3Npb25TdG9yYWdlLnN0YWdlKyspIHsK
ICAgY2FzZSAxOgotICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOworICAgIC8vIFN1Ym1p
dCBmb3JtIGluIGEgdGltZW91dCB0byBtYWtlIHN1cmUgdGhhdCB3ZSBjcmVhdGUgYSBuZXcgYmFj
ay9mb3J3YXJkIGxpc3QgaXRlbS4KKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge2RvY3VtZW50
LmZvcm1zWzBdLnN1Ym1pdCgpO30sIDApOwogICAgIGJyZWFrOwogICBjYXNlIDI6CiAgICAgaGlz
dG9yeS5iYWNrKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zZWN1cml0eS9hdXRvY29tcGxl
dGUtY2xlYXJlZC1vbi1iYWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9zZWN1cml0eS9hdXRvY29tcGxl
dGUtY2xlYXJlZC1vbi1iYWNrLmh0bWwKaW5kZXggMDgwMTg4MWJjNzg4Yzg5MmQxYzExMjljMTkx
YTMwN2E1YjA5ZmE1ZS4uOTZjOWQ4MWM5NTZhN2M4Yjg1ZjdhNmFlN2FlZTFiY2EzYTdjMjllOSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc2VjdXJpdHkvYXV0b2NvbXBsZXRlLWNsZWFyZWQtb24t
YmFjay5odG1sCisrKyBiL0xheW91dFRlc3RzL3NlY3VyaXR5L2F1dG9jb21wbGV0ZS1jbGVhcmVk
LW9uLWJhY2suaHRtbApAQCAtMTksNyArMTksOCBAQCBmdW5jdGlvbiBydW5UZXN0KCkKICAgICBp
ZiAoIXNlc3Npb25TdG9yYWdlLnNlY29uZFBhZ2VSZWFjaGVkKSB7CiAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJmaXJzdElucHV0IikudmFsdWUgPSAiU3VwZXJTZWVrcml0VmFsdWUi
OwogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2Vjb25kSW5wdXQiKS52YWx1ZSA9
ICJTdXBlclNlZWtyaXRWYWx1ZSI7Ci0gICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICJyZXNvdXJj
ZXMvYXV0b2NvbXBsZXRlLWNsZWFyZWQtb24tYmFjazIuaHRtbCI7CisgICAgICAgIC8vIExvY2F0
aW9uIGNoYW5nZXMgbmVlZCB0byBoYXBwZW4gb3V0c2lkZSB0aGUgb25sb2FkIGhhbmRsZXIgdG8g
Z2VuZXJhdGUgaGlzdG9yeSBlbnRyaWVzLgorICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
e3dpbmRvdy5sb2NhdGlvbiA9ICJyZXNvdXJjZXMvYXV0b2NvbXBsZXRlLWNsZWFyZWQtb24tYmFj
azIuaHRtbCI7fSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2hhc2gtY2hhbmdlLXdpdGgteGhyLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9oYXNoLWNoYW5nZS13aXRoLXhoci5qcwppbmRleCA0MjkwNjgxZWE4MmZhYzZm
YjBiZWE1NDNhZjMzNTFiODljYTUxNTA2Li43ZjU2Zjc5NWExODJlMWE4MWRhZmI2NDAwZWM4M2M4
YzMwYzBkNWZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2hhc2gtY2hhbmdlLXdp
dGgteGhyLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaGFzaC1jaGFuZ2Utd2l0aC14aHIu
anMKQEAgLTgxLDYgKzgxLDEyIEBAIGZ1bmN0aW9uIGludm9rZUJhY2soKQogCiBmdW5jdGlvbiBy
dW5UZXN0KCkKIHsKKyAgICAvLyBMb2NhdGlvbiBjaGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNp
ZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdlbmVyYXRlIGhpc3RvcnkgZW50cmllcy4KKyAgICBz
ZXRUaW1lb3V0KHJ1blRlc3RzSW5uZXIsIDApOworfQorCitmdW5jdGlvbiBydW5UZXN0c0lubmVy
KCkKK3sKICAgICBiYWNrSXRlcmF0aW9ucyA9IDEwOwogICAgIGNvbnNlY3V0aXZlRmFpbHVyZXMg
PSAwOwogICAgIHN1Y2Nlc3NlcyA9IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDA5MTAyODRhYmQzNjI5ZThjNGZiYWIyZTUyMTk5MDkx
NjI3ZDI0MjUuLmQyZDlmN2E0NzFmMjA2NzA4MzU5NGI2NWM0OTRhNDdjOWZmOTA1MDEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzcgQEAKKzIwMTAtMDgtMDMgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Vz
c2lvbiBoaXN0b3J5IHNob3VsZCBza2lwIG92ZXIgSlMgcmVkaXJlY3RzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjg2MQorICAgICAgICAKKyAgICAg
ICAgTG9jayB0aGUgYmFjay9mb3J3YXJkIGxpc3QgZm9yIGxvY2F0aW9uIGNoYW5nZXMgYW5kIGZv
cm0gc3VibWl0cyB0aGF0CisgICAgICAgIGhhcHBlbiBiZWZvcmUgdGhlIG9ubG9hZCBldmVudCBm
aXJlcyB0aGF0IGFyZSBub3QgdGhlIHJlc3VsdCBvZiB1c2VyCisgICAgICAgIGdlc3R1cmVzLgor
ICAgICAgICAKKyAgICAgICAgTWFkZSBmb3JtIHN1Ym1pc3Npb24gKGF0IHRoZSBTY2hlZHVsZWRG
b3JtU3VibWlzc2lvbiBsZXZlbCkgbW9yZSBzaW1pbGFyCisgICAgICAgIHRvIFNjaGVkdWxlZFVS
TE5hdmlnYXRpb24gYnkgaGF2aW5nIGl0IGNhbGwgY2xpZW50UmVkaXJlY3RlZCB0b28sIGZpeGlu
ZworICAgICAgICBhIGxvbmctc3RhbmRpbmcgRklYTUUuCisKKyAgICAgICAgVGVzdDogZmFzdC9o
aXN0b3J5L2dlc3R1cmUtYmVmb3JlLW9ubG9hZC1sb2NhdGlvbi1ocmVmLmh0bWwsCisgICAgICAg
IGZhc3QvaGlzdG9yeS9nZXN0dXJlLWJlZm9yZS1vbmxvYWQtZm9ybS1zdWJtaXQuaHRtbCBhbmQg
dXBkYXRlZAorICAgICAgICBleHBlY3RhdGlvbnMgZm9yIGh0dHAvdGVzdHMvaGlzdG9yeSB0ZXN0
cyB0aGF0IHVzZWQgdG8gZmFpbC4KKworICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtU3VibWlzc2lvbjo6cmVxdWVzdFVSTCk6IAorICAg
ICAgICAoV2ViQ29yZTo6Rm9ybVN1Ym1pc3Npb246OnBvcHVsYXRlRnJhbWVMb2FkUmVxdWVzdCk6
CisgICAgICAgICogbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmg6CisgICAgICAgICogbG9hZGVyL1Jl
ZGlyZWN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEZvcm1TdWJt
aXNzaW9uOjpTY2hlZHVsZWRGb3JtU3VibWlzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTY2hl
ZHVsZWRGb3JtU3VibWlzc2lvbjo6ZmlyZSk6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRG
b3JtU3VibWlzc2lvbjo6ZGlkU3RhcnRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVs
ZWRGb3JtU3VibWlzc2lvbjo6ZGlkU3RvcFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZGly
ZWN0U2NoZWR1bGVyOjpzY2hlZHVsZVJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlZGly
ZWN0U2NoZWR1bGVyOjptdXN0TG9ja0JhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVGb3JtU3VibWlzc2lvbik6CisgICAg
ICAgICogbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmg6CisKIDIwMTAtMDgtMTMgIExlYW5kcm8g
UGVyZWlyYSAgPGxlYW5kcm9AcHJvZnVzaW9uLm1vYmk+CiAKICAgICAgICAgW0VGTF0gVW5yZXZp
ZXdlZCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lv
bi5jcHAgYi9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXggZjY2MTI3MzVi
YzczMTNhNWEzYTJiNGVlZThiOGYxZjcwOWQ5NWM5Yi4uMjJlODlkN2NkMTA2MDNhZTA5Y2VkNzVh
ZjM2MTA2M2Y5OTQwYmVlNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Np
b24uY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcApAQCAtMTc5LDYg
KzE3OSwxNiBAQCBQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPiBGb3JtU3VibWlzc2lvbjo6Y3Jl
YXRlKEhUTUxGb3JtRWxlbWVudCogZm9ybSwgY29uc3QgQQogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRm9ybVN1Ym1pc3Npb24oYXR0cmlidXRlcy5tZXRob2QoKSwgYWN0aW9uVVJMLCB0YXJnZXRP
ckJhc2VUYXJnZXQsIGVuY29kaW5nVHlwZSwgZm9ybVN0YXRlLnJlbGVhc2UoKSwgZm9ybURhdGEu
cmVsZWFzZSgpLCBib3VuZGFyeSwgbG9ja0hpc3RvcnksIGV2ZW50KSk7CiB9CiAKK0tVUkwgRm9y
bVN1Ym1pc3Npb246OnJlcXVlc3RVUkwoKSBjb25zdAoreworICAgIGlmIChtX21ldGhvZCA9PSBG
b3JtU3VibWlzc2lvbjo6UG9zdE1ldGhvZCkKKyAgICAgICAgcmV0dXJuIG1fYWN0aW9uOworCisg
ICAgS1VSTCByZXF1ZXN0VVJMKG1fYWN0aW9uKTsKKyAgICByZXF1ZXN0VVJMLnNldFF1ZXJ5KG1f
Zm9ybURhdGEtPmZsYXR0ZW5Ub1N0cmluZygpKTsgICAgCisgICAgcmV0dXJuIHJlcXVlc3RVUkw7
Cit9CisKIHZvaWQgRm9ybVN1Ym1pc3Npb246OnBvcHVsYXRlRnJhbWVMb2FkUmVxdWVzdChGcmFt
ZUxvYWRSZXF1ZXN0JiBmcmFtZVJlcXVlc3QpCiB7CiAgICAgaWYgKCFtX3RhcmdldC5pc0VtcHR5
KCkpCkBAIC0xODcsOSArMTk3LDcgQEAgdm9pZCBGb3JtU3VibWlzc2lvbjo6cG9wdWxhdGVGcmFt
ZUxvYWRSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lUmVxdWVzdCkKICAgICBpZiAoIW1f
cmVmZXJyZXIuaXNFbXB0eSgpKQogICAgICAgICBmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0
KCkuc2V0SFRUUFJlZmVycmVyKG1fcmVmZXJyZXIpOwogCi0gICAgaWYgKG1fbWV0aG9kID09IEZv
cm1TdWJtaXNzaW9uOjpHZXRNZXRob2QpCi0gICAgICAgIG1fYWN0aW9uLnNldFF1ZXJ5KG1fZm9y
bURhdGEtPmZsYXR0ZW5Ub1N0cmluZygpKTsKLSAgICBlbHNlIHsKKyAgICBpZiAobV9tZXRob2Qg
PT0gRm9ybVN1Ym1pc3Npb246OlBvc3RNZXRob2QpIHsKICAgICAgICAgZnJhbWVSZXF1ZXN0LnJl
c291cmNlUmVxdWVzdCgpLnNldEhUVFBNZXRob2QoIlBPU1QiKTsKICAgICAgICAgZnJhbWVSZXF1
ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBCb2R5KG1fZm9ybURhdGEpOwogCkBAIC0yMDAs
NyArMjA4LDcgQEAgdm9pZCBGb3JtU3VibWlzc2lvbjo6cG9wdWxhdGVGcmFtZUxvYWRSZXF1ZXN0
KEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lUmVxdWVzdCkKICAgICAgICAgICAgIGZyYW1lUmVxdWVz
dC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQQ29udGVudFR5cGUobV9jb250ZW50VHlwZSArICI7
IGJvdW5kYXJ5PSIgKyBtX2JvdW5kYXJ5KTsKICAgICB9CiAKLSAgICBmcmFtZVJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkuc2V0VVJMKG1fYWN0aW9uKTsKKyAgICBmcmFtZVJlcXVlc3QucmVzb3Vy
Y2VSZXF1ZXN0KCkuc2V0VVJMKHJlcXVlc3RVUkwoKSk7CiAgICAgRnJhbWVMb2FkZXI6OmFkZEhU
VFBPcmlnaW5JZk5lZWRlZChmcmFtZVJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIG1fb3JpZ2lu
KTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaCBiL1dl
YkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmgKaW5kZXggYmVlNGU3MTUxYTg5MzQ2ZDAzMjkz
ZGUzMjRmZDU3ZGE5MmMyNmRmNi4uYjkzNTg4MmM0MTE1NWI4ZWVhOGQ2YjU1NGViNGE2YWFjNzcz
MmY4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaAorKysgYi9X
ZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5oCkBAIC04NSw2ICs4NSw4IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gY3JlYXRlKEhUTUxGb3JtRWxl
bWVudCosIGNvbnN0IEF0dHJpYnV0ZXMmLCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgYm9vbCBs
b2NrSGlzdG9yeSwgRm9ybVN1Ym1pc3Npb25UcmlnZ2VyKTsKIAogICAgIHZvaWQgcG9wdWxhdGVG
cmFtZUxvYWRSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmKTsKKyAgICAKKyAgICBLVVJMIHJlcXVl
c3RVUkwoKSBjb25zdDsKIAogICAgIE1ldGhvZCBtZXRob2QoKSBjb25zdCB7IHJldHVybiBtX21l
dGhvZDsgfQogICAgIGNvbnN0IEtVUkwmIGFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aW9u
OyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHAgYi9X
ZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHAKaW5kZXggM2NmZTYxYTAzMDQ2MzM1
Mjc5ZmQ0NWNiMzBjODUxMzcxMzRmMTlmNy4uYWEwMmMzMDc2M2I3NTM1OGU1Zjc4YWIwYjhjMWE1
MWY1MzhkODljMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIu
Y3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmNwcApAQCAtMTc1LDE1
ICsxNzUsMTMgQEAgcHVibGljOgogICAgIFNjaGVkdWxlZEZvcm1TdWJtaXNzaW9uKFBhc3NSZWZQ
dHI8Rm9ybVN1Ym1pc3Npb24+IHN1Ym1pc3Npb24sIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwg
Ym9vbCBkdXJpbmdMb2FkKQogICAgICAgICA6IFNjaGVkdWxlZE5hdmlnYXRpb24oMCwgc3VibWlz
c2lvbi0+bG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCwgdHJ1
ZSkKICAgICAgICAgLCBtX3N1Ym1pc3Npb24oc3VibWlzc2lvbikKLSAgICAgICAgLCBtX3dhc1By
b2Nlc3NpbmdVc2VyR2VzdHVyZShVc2VyR2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKCkpCisgICAgICAgICwgbV9oYXZlVG9sZENsaWVudChmYWxzZSkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChtX3N1Ym1pc3Npb24tPnN0YXRlKCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
dm9pZCBmaXJlKEZyYW1lKiBmcmFtZSkKICAgICB7Ci0gICAgICAgIFVzZXJHZXN0dXJlSW5kaWNh
dG9yIGdlc3R1cmVJbmRpY2F0b3IobV93YXNQcm9jZXNzaW5nVXNlckdlc3R1cmUgPyBEZWZpbml0
ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIDogRGVmaW5pdGVseU5vdFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSk7Ci0KICAgICAgICAgLy8gVGhlIHN1Ym1pdEZvcm0gZnVuY3Rpb24gd2lsbCBmaW5kIGEg
dGFyZ2V0IGZyYW1lIGJlZm9yZSB1c2luZyB0aGUgcmVkaXJlY3Rpb24gdGltZXIuCiAgICAgICAg
IC8vIE5vdyB0aGF0IHRoZSB0aW1lciBoYXMgZmlyZWQsIHdlIG5lZWQgdG8gcmVwZWF0IHRoZSBz
ZWN1cml0eSBjaGVjayB3aGljaCBub3JtYWxseSBpcyBkb25lIHdoZW4KICAgICAgICAgLy8gc2Vs
ZWN0aW5nIGEgdGFyZ2V0LCBpbiBjYXNlIGNvbmRpdGlvbnMgaGF2ZSBjaGFuZ2VkLiBPdGhlciBj
b2RlIHBhdGhzIGF2b2lkIHRoaXMgYnkgdGFyZ2V0aW5nCkBAIC0xOTQsMTUgKzE5MiwyNSBAQCBw
dWJsaWM6CiAgICAgICAgIG1fc3VibWlzc2lvbi0+cG9wdWxhdGVGcmFtZUxvYWRSZXF1ZXN0KGZy
YW1lUmVxdWVzdCk7CiAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+bG9hZEZyYW1lUmVxdWVzdChm
cmFtZVJlcXVlc3QsIGxvY2tIaXN0b3J5KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgbV9zdWJt
aXNzaW9uLT5ldmVudCgpLCBtX3N1Ym1pc3Npb24tPnN0YXRlKCksIFNlbmRSZWZlcnJlcik7CiAg
ICAgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFRpbWVyKEZyYW1lKiBmcmFtZSwg
VGltZXI8UmVkaXJlY3RTY2hlZHVsZXI+KiB0aW1lcikKKyAgICB7CisgICAgICAgIGlmIChtX2hh
dmVUb2xkQ2xpZW50KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2hhdmVUb2xkQ2xp
ZW50ID0gdHJ1ZTsKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5jbGllbnRSZWRpcmVjdGVkKG1f
c3VibWlzc2lvbi0+cmVxdWVzdFVSTCgpLCBkZWxheSgpLCBjdXJyZW50VGltZSgpICsgdGltZXIt
Pm5leHRGaXJlSW50ZXJ2YWwoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpKTsKKyAgICB9CiAKLSAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IGRpZFN0YXJ0VGltZXI/IEl0IHdvdWxkIG1ha2Ugc2Vuc2Ug
dG8gcmVwb3J0IGZvcm0KLSAgICAvLyBzdWJtaXNzaW9ucyBhcyBjbGllbnQgcmVkaXJlY3RzIHRv
by4gQnV0IHdlIGRpZG4ndCBkbyB0aGF0IGluIHRoZSBwYXN0Ci0gICAgLy8gd2hlbiBmb3JtIHN1
Ym1pc3Npb24gdXNlZCBhIHNlcGFyYXRlIGRlbGF5IG1lY2hhbmlzbSwgc28gZG9pbmcgaXQgd2ls
bAotICAgIC8vIGJlIGEgYmVoYXZpb3IgY2hhbmdlLgorICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9w
VGltZXIoRnJhbWUqIGZyYW1lLCBib29sIG5ld0xvYWRJblByb2dyZXNzKQorICAgIHsKKyAgICAg
ICAgaWYgKCFtX2hhdmVUb2xkQ2xpZW50KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBm
cmFtZS0+bG9hZGVyKCktPmNsaWVudFJlZGlyZWN0Q2FuY2VsbGVkT3JGaW5pc2hlZChuZXdMb2Fk
SW5Qcm9ncmVzcyk7CisgICAgfQogCiBwcml2YXRlOgogICAgIFJlZlB0cjxGb3JtU3VibWlzc2lv
bj4gbV9zdWJtaXNzaW9uOwotICAgIGJvb2wgbV93YXNQcm9jZXNzaW5nVXNlckdlc3R1cmU7Cisg
ICAgYm9vbCBtX2hhdmVUb2xkQ2xpZW50OwogfTsKIAogUmVkaXJlY3RTY2hlZHVsZXI6OlJlZGly
ZWN0U2NoZWR1bGVyKEZyYW1lKiBmcmFtZSkKQEAgLTI0MCwxNyArMjQ4LDIxIEBAIHZvaWQgUmVk
aXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlUmVkaXJlY3QoZG91YmxlIGRlbGF5LCBjb25zdCBTdHJp
bmcmIHVybCkKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Ly8gV2Ugd2FudCBhIG5ldyBoaXN0b3J5IGl0ZW0gaWYgdGhlIHJlZnJlc2ggdGltZW91dCBpcyA+
IDEgc2Vjb25kLgorICAgIC8vIFdlIHdhbnQgYSBuZXcgYmFjay9mb3J3YXJkIGxpc3QgaXRlbSBp
ZiB0aGUgcmVmcmVzaCB0aW1lb3V0IGlzID4gMSBzZWNvbmQuCiAgICAgaWYgKCFtX3JlZGlyZWN0
IHx8IGRlbGF5IDw9IG1fcmVkaXJlY3QtPmRlbGF5KCkpCiAgICAgICAgIHNjaGVkdWxlKG5ldyBT
Y2hlZHVsZWRSZWRpcmVjdChkZWxheSwgdXJsLCB0cnVlLCBkZWxheSA8PSAxLCBmYWxzZSkpOwog
fQogCi1ib29sIFJlZGlyZWN0U2NoZWR1bGVyOjptdXN0TG9ja0JhY2tGb3J3YXJkTGlzdChGcmFt
ZSogdGFyZ2V0RnJhbWUpCitib29sIFJlZGlyZWN0U2NoZWR1bGVyOjptdXN0TG9ja0JhY2tGb3J3
YXJkTGlzdChGcmFtZSogdGFyZ2V0RnJhbWUsIGJvb2wgd2FzVXNlckdlc3R1cmUpCiB7CisgICAg
Ly8gTm9uLXVzZXIgbmF2aWdhdGlvbiBiZWZvcmUgdGhlIHBhZ2UgaGFzIGxvYWRlZCBzaG91bGQg
bm90IGNyZWF0ZSBhIG5ldyBiYWNrL2ZvcndhcmQgaXRlbS4KKyAgICAvLyBTZWUgaHR0cHM6Ly93
ZWJraXQub3JnL2IvNDI4NjEgZm9yIHRoZSBvcmlnaW5hbCBtb3RpdmF0aW9uIGZvciB0aGlzLiAg
ICAKKyAgICBpZiAoIXdhc1VzZXJHZXN0dXJlICYmIHRhcmdldEZyYW1lLT5sb2FkZXIoKS0+ZG9j
dW1lbnRMb2FkZXIoKSAmJiB0YXJnZXRGcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkt
PmlzTG9hZGluZ0luQVBJU2Vuc2UoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCiAgICAg
Ly8gTmF2aWdhdGlvbiBvZiBhIHN1YmZyYW1lIGR1cmluZyBsb2FkaW5nIG9mIGFuIGFuY2VzdG9y
IGZyYW1lIGRvZXMgbm90IGNyZWF0ZSBhIG5ldyBiYWNrL2ZvcndhcmQgaXRlbS4KICAgICAvLyBU
aGUgZGVmaW5pdGlvbiBvZiAiZHVyaW5nIGxvYWQiIGlzIGFueSB0aW1lIGJlZm9yZSBhbGwgaGFu
ZGxlcnMgZm9yIHRoZSBsb2FkIGV2ZW50IGhhdmUgYmVlbiBydW4uCiAgICAgLy8gU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk1NyBmb3IgdGhlIG9yaWdpbmFs
IG1vdGl2YXRpb24gZm9yIHRoaXMuCi0KICAgICBmb3IgKEZyYW1lKiBhbmNlc3RvciA9IHRhcmdl
dEZyYW1lLT50cmVlKCktPnBhcmVudCgpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+
dHJlZSgpLT5wYXJlbnQoKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBhbmNlc3Rv
ci0+ZG9jdW1lbnQoKTsKICAgICAgICAgaWYgKCFhbmNlc3Rvci0+bG9hZGVyKCktPmlzQ29tcGxl
dGUoKSB8fCAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPnByb2Nlc3NpbmdMb2FkRXZlbnQoKSkpCkBA
IC0yNjYsNyArMjc4LDcgQEAgdm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlv
bkNoYW5nZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJgogICAgIGlmICh1cmwuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBsb2NrQmFja0ZvcndhcmRMaXN0ID0gbG9j
a0JhY2tGb3J3YXJkTGlzdCB8fCBtdXN0TG9ja0JhY2tGb3J3YXJkTGlzdChtX2ZyYW1lKTsKKyAg
ICBsb2NrQmFja0ZvcndhcmRMaXN0ID0gbG9ja0JhY2tGb3J3YXJkTGlzdCB8fCBtdXN0TG9ja0Jh
Y2tGb3J3YXJkTGlzdChtX2ZyYW1lLCB3YXNVc2VyR2VzdHVyZSk7CiAKICAgICBGcmFtZUxvYWRl
ciogbG9hZGVyID0gbV9mcmFtZS0+bG9hZGVyKCk7CiAgICAgCkBAIC0zMDAsNyArMzEyLDcgQEAg
dm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVGb3JtU3VibWlzc2lvbihQYXNzUmVmUHRy
PEZvcm1TdWJtaXNzaW9uPiBzdWJtaXMKICAgICAvLyB0byBtYXRjaCBJRSBhbmQgT3BlcmEuCiAg
ICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjM4MyBm
b3IgdGhlIG9yaWdpbmFsIG1vdGl2YXRpb24gZm9yIHRoaXMuCiAKLSAgICBib29sIGxvY2tCYWNr
Rm9yd2FyZExpc3QgPSBtdXN0TG9ja0JhY2tGb3J3YXJkTGlzdChtX2ZyYW1lKSB8fCAoc3VibWlz
c2lvbi0+c3RhdGUoKS0+Zm9ybVN1Ym1pc3Npb25UcmlnZ2VyKCkgPT0gU3VibWl0dGVkQnlKYXZh
U2NyaXB0ICYmIG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpOworICAgIGJvb2wgbG9ja0JhY2tG
b3J3YXJkTGlzdCA9IG11c3RMb2NrQmFja0ZvcndhcmRMaXN0KG1fZnJhbWUsIFVzZXJHZXN0dXJl
SW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkgfHwgKHN1Ym1pc3Npb24tPnN0YXRl
KCktPmZvcm1TdWJtaXNzaW9uVHJpZ2dlcigpID09IFN1Ym1pdHRlZEJ5SmF2YVNjcmlwdCAmJiBt
X2ZyYW1lLT50cmVlKCktPnBhcmVudCgpKTsKIAogICAgIHNjaGVkdWxlKG5ldyBTY2hlZHVsZWRG
b3JtU3VibWlzc2lvbihzdWJtaXNzaW9uLCBsb2NrQmFja0ZvcndhcmRMaXN0LCBkdXJpbmdMb2Fk
KSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5oIGIv
V2ViQ29yZS9sb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIuaAppbmRleCAwMjAzZTA4OTBhMTRkMzFm
MGI3MDYyZTAxOGI4ZTZlYTRiYjFkNmJkLi43MGIwMjAyNTAxNGI3NjZmNTE2YzE2ZGI5YzAyZDM1
MTQ4MGRkOGMzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5o
CisrKyBiL1dlYkNvcmUvbG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmgKQEAgLTcwLDcgKzcwLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8UmVkaXJlY3RTY2hlZHVsZXI+
Kik7CiAgICAgdm9pZCBzY2hlZHVsZShQYXNzT3duUHRyPFNjaGVkdWxlZE5hdmlnYXRpb24+KTsK
IAotICAgIHN0YXRpYyBib29sIG11c3RMb2NrQmFja0ZvcndhcmRMaXN0KEZyYW1lKiB0YXJnZXRG
cmFtZSk7CisgICAgc3RhdGljIGJvb2wgbXVzdExvY2tCYWNrRm9yd2FyZExpc3QoRnJhbWUqIHRh
cmdldEZyYW1lLCBib29sIG11c3RMb2NrSWZEdXJpbmdMb2FkKTsKIAogICAgIEZyYW1lKiBtX2Zy
YW1lOwogICAgIFRpbWVyPFJlZGlyZWN0U2NoZWR1bGVyPiBtX3RpbWVyOwpAQCAtNzksNCArNzks
NCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBGcmFt
ZUxvYWRlcl9oCisjZW5kaWYgLy8gUmVkaXJlY3RTY2hlZHVsZXJfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>