<?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>47680</bug_id>
          
          <creation_ts>2010-10-14 13:06:22 -0700</creation_ts>
          <short_desc>Add FileWriter test utilities.</short_desc>
          <delta_ts>2010-11-24 15:59:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>44358</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric U.">ericu</reporter>
          <assigned_to name="Eric U.">ericu</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>kinuko</cc>
    
    <cc>michaeln</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>294302</commentid>
    <comment_count>0</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-10-14 13:06:22 -0700</bug_when>
    <thetext>We need real tests for FileWriter.  There are a lot of tasks common to each test; this bug is for the basic common utilities and one or two tests using them.  More tests will follow in a separate bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294809</commentid>
    <comment_count>1</comment_count>
      <attachid>70882</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-10-15 10:48:37 -0700</bug_when>
    <thetext>Created attachment 70882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296522</commentid>
    <comment_count>2</comment_count>
      <attachid>70882</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-10-19 16:36:00 -0700</bug_when>
    <thetext>Comment on attachment 70882
Patch

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

&gt; LayoutTests/fast/filesystem/resources/file-writer-truncate-extend.js:16
&gt; +        verifyFileLength(fileEntry, contents.length + extension,

in WebKit I don&apos;t think we need to wrap lines.

&gt; LayoutTests/fast/filesystem/resources/file-writer-utils.js:15
&gt; +function assert(s) {

Is there a strong reason you don&apos;t use shouldBe/shouldBeTrue here?  This script already depend on some functions that are defined in js-test-pre.js (and fs-worker-common.js).

&gt; LayoutTests/fast/filesystem/resources/file-writer-utils.js:16
&gt; +    if (!s) {

nit: no need to put { } for one line block

&gt; LayoutTests/fast/filesystem/resources/file-writer-utils.js:30
&gt; +  } catch (ex) {

How about calling finishJSTest() here?

&gt; LayoutTests/fast/filesystem/resources/file-writer-utils.js:43
&gt; +            onSuccess(); // TODO: Swap for next line before checkin.

hmm why do you to do this only before checkin...?

&gt; LayoutTests/fast/filesystem/resources/file-writer-utils.js:68
&gt; +            for (var i=0; i &lt; length; i++) {

nit: s/i=0/i = 0/
nit: no need of { }

&gt; LayoutTests/fast/filesystem/resources/fs-worker-test-pre.js:16
&gt; +function testPassed(msg)

If we really want full-functional, colorized testPassed/testFailed/description functions, I think we should just include js-test-pre.js.  Replicating all the code here doesn&apos;t look good to me...

&gt; LayoutTests/fast/filesystem/resources/fs-worker-test-pre.js:45
&gt; +            testPassed(event.data.substring(5));

Not really sure we need this complication just to colorize the results?

&gt; LayoutTests/fast/filesystem/workers/file-writer-truncate-extend.html:4
&gt; +    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../js/resources/js-test-style.css&quot;&gt;

If we want to include js/resources in workers test we&apos;ll need some more tricks in chromium code and it&apos;ll automatically allow us to include js-test-pre.js here too.  In that case we won&apos;t need fs-worker-test-pre.js any more -- let&apos;s forget about it and include js-test-pre.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298262</commentid>
    <comment_count>3</comment_count>
      <attachid>70882</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-10-22 16:49:01 -0700</bug_when>
    <thetext>Comment on attachment 70882
Patch

Kinuko:  I&apos;m addressing your changes, but I can&apos;t finish debugging yet due to some blocking bugs.  I&apos;ll upload a new patch as soon as I&apos;ve worked through the problems.  Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300721</commentid>
    <comment_count>4</comment_count>
      <attachid>72117</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-10-27 17:14:25 -0700</bug_when>
    <thetext>Created attachment 72117
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300724</commentid>
    <comment_count>5</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-10-27 17:18:35 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 70882 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=70882&amp;action=review
&gt; 
&gt; &gt; LayoutTests/fast/filesystem/resources/file-writer-truncate-extend.js:16
&gt; &gt; +        verifyFileLength(fileEntry, contents.length + extension,
&gt; 
&gt; in WebKit I don&apos;t think we need to wrap lines.

Unwrapped a bunch of lines.

&gt; &gt; LayoutTests/fast/filesystem/resources/file-writer-utils.js:15
&gt; &gt; +function assert(s) {
&gt; 
&gt; Is there a strong reason you don&apos;t use shouldBe/shouldBeTrue here?  This script already depend on some functions that are defined in js-test-pre.js (and fs-worker-common.js).

I don&apos;t trust it.  I&apos;ve got a boolean value already, which I can just test with assert.  I&apos;m not sure why shouldBe turns everything into strings and then calls eval on them, but it looks really complicated to me.  I&apos;d be happier getting rid of that stuff entirely where it&apos;s not absolutely necessary.

&gt; &gt; LayoutTests/fast/filesystem/resources/file-writer-utils.js:16
&gt; &gt; +    if (!s) {
&gt; 
&gt; nit: no need to put { } for one line block

Fixed.

&gt; &gt; LayoutTests/fast/filesystem/resources/file-writer-utils.js:30
&gt; &gt; +  } catch (ex) {
&gt; 
&gt; How about calling finishJSTest() here?

Done.

&gt; &gt; LayoutTests/fast/filesystem/resources/file-writer-utils.js:43
&gt; &gt; +            onSuccess(); // TODO: Swap for next line before checkin.
&gt; 
&gt; hmm why do you to do this only before checkin...?

That was a note to me to fix up the code before checking it in; there was a bug that prevented that test from being runnable, but it&apos;s fixed now.

&gt; &gt; LayoutTests/fast/filesystem/resources/file-writer-utils.js:68
&gt; &gt; +            for (var i=0; i &lt; length; i++) {
&gt; 
&gt; nit: s/i=0/i = 0/
&gt; nit: no need of { }

Fixed.

&gt; &gt; LayoutTests/fast/filesystem/resources/fs-worker-test-pre.js:16
&gt; &gt; +function testPassed(msg)
&gt; 
&gt; If we really want full-functional, colorized testPassed/testFailed/description functions, I think we should just include js-test-pre.js.  Replicating all the code here doesn&apos;t look good to me...

Removed a lot of replication, shared code where possible.

&gt; &gt; LayoutTests/fast/filesystem/resources/fs-worker-test-pre.js:45
&gt; &gt; +            testPassed(event.data.substring(5));
&gt; 
&gt; Not really sure we need this complication just to colorize the results?
&gt; 
&gt; &gt; LayoutTests/fast/filesystem/workers/file-writer-truncate-extend.html:4
&gt; &gt; +    &lt;link rel=&quot;stylesheet&quot; href=&quot;../../js/resources/js-test-style.css&quot;&gt;
&gt; 
&gt; If we want to include js/resources in workers test we&apos;ll need some more tricks in chromium code and it&apos;ll automatically allow us to include js-test-pre.js here too.  In that case we won&apos;t need fs-worker-test-pre.js any more -- let&apos;s forget about it and include js-test-pre.js.

What tricks are needed for Chromium?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300914</commentid>
    <comment_count>6</comment_count>
      <attachid>72117</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-10-28 00:12:53 -0700</bug_when>
    <thetext>Comment on attachment 72117
Patch

Thanks for cleaning this up!

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

&gt; LayoutTests/ChangeLog:8
&gt; +        Cleaning up shared test utility files caused the output of a bunch of existing tests change slightly, so I&apos;ve rebuilt the expectation files.  While fixing this, I found that some filesystem worker .html files were including javascript only appropriate for the workers themselves, so I removed the extra includes.

Just to clarify... fs-worker-common.js was intentionally included in .html files for shouldBe methods (since we hadn&apos;t included js-test-pre.js).

&gt; LayoutTests/fast/filesystem/file-writer-truncate-extend.html:15
&gt; +&lt;/html&gt;

Fyi, this does not apply to this test (and others that have .js files under resources/ but not under script-tests/) but might be worth mentioning...

Many .html files that include js-test-pre.js are generated by a script (make-script-test-wrappers) from script-tests/TEMPLATE.html and corresponding .js files under script-tests.  And most of them are not indented (since same/copy-past&apos;ed TEMPLATE.html is often used).
http://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree#WritingJavaScript-basedDOM-onlyTestCases

&gt; LayoutTests/fast/filesystem/resources/file-writer-truncate-extend.js:8
&gt; +function onTestSucceeded() {

nit: { on the next line in webkit-style.  (here and everywhere)

&gt; LayoutTests/fast/filesystem/resources/file-writer-utils.js:5
&gt; +            s += index + &quot;: &quot; + o[index] + &quot;\n&quot;;

Not sure if it was intentional, but &quot;\n&quot; wouldn&apos;t work as a line break in testFailed or in other span&apos;s.

&gt; LayoutTests/fast/filesystem/resources/file-writer-utils.js:13
&gt; +};

nit: no need of ; at the end of line

&gt; LayoutTests/fast/filesystem/resources/file-writer-utils.js:27
&gt; +    finishJSTest();

nit: indent (both try and catch blocks)

Btw do we need try-catch here?  Async methods usually do not throw exceptions and we don&apos;t catch exceptions at all in most other places.

&gt; LayoutTests/fast/filesystem/resources/fs-worker-test-post.js:2
&gt; +successfullyParsed = true;

Now that we include js/resources/js-test-pre.js we&apos;d better replace this with js/resources/js-test-post.js as well.  (And we&apos;ll be able to remove this entire file.)

Also could you put this &quot;successfullyParsed = true;&quot; line between &lt;script&gt;&lt;/script&gt; and after startWorker(...) in the .html files, as you did in file-writer-truncate-extend.html?  I think it should be placed at the end of the main script body.

&gt; LayoutTests/fast/filesystem/resources/fs-worker-test-pre.js:9
&gt; +        if (event.data.substring(0, 5) == &quot;PASS:&quot;) {

No need of {} for one line blocks (here and below).

If we want to handle worker messages differently how about using fixed-length prefixes for all messages?

&gt; LayoutTests/fast/filesystem/resources/fs-worker-test-pre.js:14
&gt; +            description(event.data.substring(13));

For this one do we care whether it is printed out by description() or by debug()?
If we have description in the document&apos;s js file it gets replaced by the worker&apos;s one.

&gt; LayoutTests/fast/filesystem/workers/async-operations-expected.txt:15
&gt; +PASS successfullyParsed is true

This duplicated &apos;successfullyParsed is true&apos; lines look confusing, how about prefixing all the worker&apos;s output with &quot;Worker output:&quot; or something?

&gt; LayoutTests/fast/filesystem/workers/async-operations.html:4
&gt;  &lt;script src=&quot;../resources/fs-worker-test-pre.js&quot;&gt;&lt;/script&gt;

Sorry for putting up requests, but could we rename this to fs-worker-test-util.js or something?  (As fs-worker-test-post will be gone now)

&gt; LayoutTests/fast/filesystem/workers/file-from-file-entry-sync.html:3
&gt; +&lt;script src=&quot;../../js/resources/js-test-pre.js&quot;&gt;&lt;/script&gt;

I think you&apos;d want to include the css file here since many of your changes are for pretty-printing the results.
&lt;link rel=&quot;stylesheet&quot; href=&quot;../../js/resources/js-test-style.css&quot;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300922</commentid>
    <comment_count>7</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-10-28 00:28:11 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; &gt; LayoutTests/fast/filesystem/resources/file-writer-utils.js:15
&gt; &gt; &gt; +function assert(s) {
&gt; &gt; 
&gt; &gt; Is there a strong reason you don&apos;t use shouldBe/shouldBeTrue here?  This script already depend on some functions that are defined in js-test-pre.js (and fs-worker-common.js).
&gt; 
&gt; I don&apos;t trust it.  I&apos;ve got a boolean value already, which I can just test with assert.  I&apos;m not sure why shouldBe turns everything into strings and then calls eval on them, but it looks really complicated to me.  I&apos;d be happier getting rid of that stuff entirely where it&apos;s not absolutely necessary.

I think it&apos;s ok not to use shouldBe here, and it&apos;s true that shouldBe does some (sometime undesired) stringify and evals, but it&apos;s also true that more than 1000 js files rely on this method(s).  It must be &apos;trustable&apos; and otherwise we&apos;ll need to fix it.

&gt; &gt; If we want to include js/resources in workers test we&apos;ll need some more tricks in chromium code and it&apos;ll automatically allow us to include js-test-pre.js here too.  In that case we won&apos;t need fs-worker-test-pre.js any more -- let&apos;s forget about it and include js-test-pre.js.
&gt; 
&gt; What tricks are needed for Chromium?

(oops my previous comment looks hard to understand)

Adding these lines around line 167 should do. (It makes the necessary resource files copied while setting up the test environment)
+    AddResourceForLayoutTest(worker_test_dir.AppendASCII(&quot;js&quot;),
+                             resource_dir);

Since worker tests for filesystem are not enabled yet you can file a bug and assign it to me if you want.  I can fix it when I enable them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301516</commentid>
    <comment_count>8</comment_count>
      <attachid>72279</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-10-28 18:09:49 -0700</bug_when>
    <thetext>Created attachment 72279
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301519</commentid>
    <comment_count>9</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-10-28 18:18:15 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 72117 [details])
&gt; Thanks for cleaning this up!
&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=72117&amp;action=review
&gt; 
&gt; &gt; LayoutTests/ChangeLog:8
&gt; &gt; +        Cleaning up shared test utility files caused the output of a bunch of existing tests change slightly, so I&apos;ve rebuilt the expectation files.  While fixing this, I found that some filesystem worker .html files were including javascript only appropriate for the workers themselves, so I removed the extra includes.
&gt; 
&gt; Just to clarify... fs-worker-common.js was intentionally included in .html files for shouldBe methods (since we hadn&apos;t included js-test-pre.js).

Ah, I see.  I was confused because it also contained functions that called postMessage.  Anyway, I&apos;ve taken your recommendations for cleanup, and so everything&apos;s much nicer now.

&gt; &gt; LayoutTests/fast/filesystem/file-writer-truncate-extend.html:15
&gt; &gt; +&lt;/html&gt;
&gt; 
&gt; Fyi, this does not apply to this test (and others that have .js files under resources/ but not under script-tests/) but might be worth mentioning...
&gt; 
&gt; Many .html files that include js-test-pre.js are generated by a script (make-script-test-wrappers) from script-tests/TEMPLATE.html and corresponding .js files under script-tests.  And most of them are not indented (since same/copy-past&apos;ed TEMPLATE.html is often used).
&gt; http://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree#WritingJavaScript-basedDOM-onlyTestCases

OK, so I don&apos;t need to do anything this time?

&gt; &gt; LayoutTests/fast/filesystem/resources/file-writer-truncate-extend.js:8
&gt; &gt; +function onTestSucceeded() {
&gt; 
&gt; nit: { on the next line in webkit-style.  (here and everywhere)

Fixed.  I reflexively go back to the wrong way in javascript.

&gt; &gt; LayoutTests/fast/filesystem/resources/file-writer-utils.js:5
&gt; &gt; +            s += index + &quot;: &quot; + o[index] + &quot;\n&quot;;
&gt; 
&gt; Not sure if it was intentional, but &quot;\n&quot; wouldn&apos;t work as a line break in testFailed or in other span&apos;s.

Fixed.

&gt; &gt; LayoutTests/fast/filesystem/resources/file-writer-utils.js:13
&gt; &gt; +};
&gt; 
&gt; nit: no need of ; at the end of line

Fixed.

&gt; &gt; LayoutTests/fast/filesystem/resources/file-writer-utils.js:27
&gt; &gt; +    finishJSTest();
&gt; 
&gt; nit: indent (both try and catch blocks)

Fixed.

&gt; Btw do we need try-catch here?  Async methods usually do not throw exceptions and we don&apos;t catch exceptions at all in most other places.

True, but if e.g. somebody corrupts fileEntryForCleanup, we could get an exception calling the method, and I&apos;d like to call finishJSTest even if we fail.  But if you still think it&apos;s better to remove it, I will.

&gt; &gt; LayoutTests/fast/filesystem/resources/fs-worker-test-post.js:2
&gt; &gt; +successfullyParsed = true;
&gt; 
&gt; Now that we include js/resources/js-test-pre.js we&apos;d better replace this with js/resources/js-test-post.js as well.  (And we&apos;ll be able to remove this entire file.)

Done.

&gt; Also could you put this &quot;successfullyParsed = true;&quot; line between &lt;script&gt;&lt;/script&gt; and after startWorker(...) in the .html files, as you did in file-writer-truncate-extend.html?  I think it should be placed at the end of the main script body.

Done.

&gt; &gt; LayoutTests/fast/filesystem/resources/fs-worker-test-pre.js:9
&gt; &gt; +        if (event.data.substring(0, 5) == &quot;PASS:&quot;) {
&gt; 
&gt; No need of {} for one line blocks (here and below).

Fixed.

&gt; If we want to handle worker messages differently how about using fixed-length prefixes for all messages?

Done.

&gt; &gt; LayoutTests/fast/filesystem/resources/fs-worker-test-pre.js:14
&gt; &gt; +            description(event.data.substring(13));
&gt; 
&gt; For this one do we care whether it is printed out by description() or by debug()?
&gt; If we have description in the document&apos;s js file it gets replaced by the worker&apos;s one.

Removed the descriptions from the .html files, to match the non-worker tests.

&gt; &gt; LayoutTests/fast/filesystem/workers/async-operations-expected.txt:15
&gt; &gt; +PASS successfullyParsed is true
&gt; 
&gt; This duplicated &apos;successfullyParsed is true&apos; lines look confusing, how about prefixing all the worker&apos;s output with &quot;Worker output:&quot; or something?

Done: &quot;[worker]&quot;

&gt; &gt; LayoutTests/fast/filesystem/workers/async-operations.html:4
&gt; &gt;  &lt;script src=&quot;../resources/fs-worker-test-pre.js&quot;&gt;&lt;/script&gt;
&gt; 
&gt; Sorry for putting up requests, but could we rename this to fs-worker-test-util.js or something?  (As fs-worker-test-post will be gone now)

Yeah, that makes sense. Done.

&gt; &gt; LayoutTests/fast/filesystem/workers/file-from-file-entry-sync.html:3
&gt; &gt; +&lt;script src=&quot;../../js/resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
&gt; 
&gt; I think you&apos;d want to include the css file here since many of your changes are for pretty-printing the results.
&gt; &lt;link rel=&quot;stylesheet&quot; href=&quot;../../js/resources/js-test-style.css&quot;&gt;

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301521</commentid>
    <comment_count>10</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-10-28 18:20:05 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #5)
&gt; &gt; &gt; &gt; LayoutTests/fast/filesystem/resources/file-writer-utils.js:15
&gt; &gt; &gt; &gt; +function assert(s) {
&gt; &gt; &gt; 
&gt; &gt; &gt; Is there a strong reason you don&apos;t use shouldBe/shouldBeTrue here?  This script already depend on some functions that are defined in js-test-pre.js (and fs-worker-common.js).
&gt; &gt; 
&gt; &gt; I don&apos;t trust it.  I&apos;ve got a boolean value already, which I can just test with assert.  I&apos;m not sure why shouldBe turns everything into strings and then calls eval on them, but it looks really complicated to me.  I&apos;d be happier getting rid of that stuff entirely where it&apos;s not absolutely necessary.
&gt; 
&gt; I think it&apos;s ok not to use shouldBe here, and it&apos;s true that shouldBe does some (sometime undesired) stringify and evals, but it&apos;s also true that more than 1000 js files rely on this method(s).  It must be &apos;trustable&apos; and otherwise we&apos;ll need to fix it.

True...but I suppose somewhere in those tests there&apos;s a test that actually needed the &apos;eval&apos; behavior and the different scoping, and we really don&apos;t.

&gt; &gt; &gt; If we want to include js/resources in workers test we&apos;ll need some more tricks in chromium code and it&apos;ll automatically allow us to include js-test-pre.js here too.  In that case we won&apos;t need fs-worker-test-pre.js any more -- let&apos;s forget about it and include js-test-pre.js.
&gt; &gt; 
&gt; &gt; What tricks are needed for Chromium?
&gt; 
&gt; (oops my previous comment looks hard to understand)
&gt; 
&gt; Adding these lines around line 167 should do. (It makes the necessary resource files copied while setting up the test environment)
&gt; +    AddResourceForLayoutTest(worker_test_dir.AppendASCII(&quot;js&quot;),
&gt; +                             resource_dir);
&gt; 
&gt; Since worker tests for filesystem are not enabled yet you can file a bug and assign it to me if you want.  I can fix it when I enable them.

Let&apos;s talk about this one; there&apos;s more I need to understand.  Thanks for the reviews!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303715</commentid>
    <comment_count>11</comment_count>
      <attachid>72279</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-11-02 15:14:19 -0700</bug_when>
    <thetext>Comment on attachment 72279
Patch

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

&gt; LayoutTests/fast/filesystem/resources/fs-worker-test-util.js:1
&gt; +if (window.layoutTestController)

Looks like we have duplicated entries for fs-worker-test-util.js in the patch and this one looks obsolete.

&gt; LayoutTests/fast/filesystem/resources/fs-worker-test-util.js:-1
&gt; -if (window.layoutTestController)

This one looks to be the &apos;real&apos; fs-worker-test-util.js we want to include.

&gt; LayoutTests/fast/filesystem/workers/async-operations-expected.txt:7
&gt; +[Worker] requested FileSystem.

[Worker] prefix looks nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303719</commentid>
    <comment_count>12</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-11-02 15:17:36 -0700</bug_when>
    <thetext>Hit &apos;publish&apos; before adding more comments... overall looks good, except that this one seems to lack the ChangeLog and have the duplicated entries of fs-worker-test-util.js.  Thanks for cleaning up them all.

Also most of comments in .js files are wrapped at 80 chars; I would unwrap them to conform with the coding style.

(In reply to comment #11)
&gt; (From update of attachment 72279 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=72279&amp;action=review
&gt; 
&gt; &gt; LayoutTests/fast/filesystem/resources/fs-worker-test-util.js:1
&gt; &gt; +if (window.layoutTestController)
&gt; 
&gt; Looks like we have duplicated entries for fs-worker-test-util.js in the patch and this one looks obsolete.
&gt; 
&gt; &gt; LayoutTests/fast/filesystem/resources/fs-worker-test-util.js:-1
&gt; &gt; -if (window.layoutTestController)
&gt; 
&gt; This one looks to be the &apos;real&apos; fs-worker-test-util.js we want to include.
&gt; 
&gt; &gt; LayoutTests/fast/filesystem/workers/async-operations-expected.txt:7
&gt; &gt; +[Worker] requested FileSystem.
&gt; 
&gt; [Worker] prefix looks nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306488</commentid>
    <comment_count>13</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-11-08 17:08:41 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Hit &apos;publish&apos; before adding more comments... overall looks good, except that this one seems to lack the ChangeLog and have the duplicated entries of fs-worker-test-util.js.  Thanks for cleaning up them all.

I&apos;m not sure how the ChangeLog got dropped, but it should be in this patch.

The odd duplication of fs-worker-test-util.js is because I both renamed it from its original location and edited it.

&gt; Also most of comments in .js files are wrapped at 80 chars; I would unwrap them to conform with the coding style.

Fixed.

&gt; (In reply to comment #11)
&gt; &gt; (From update of attachment 72279 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=72279&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; LayoutTests/fast/filesystem/resources/fs-worker-test-util.js:1
&gt; &gt; &gt; +if (window.layoutTestController)
&gt; &gt; 
&gt; &gt; Looks like we have duplicated entries for fs-worker-test-util.js in the patch and this one looks obsolete.
&gt; &gt; 
&gt; &gt; &gt; LayoutTests/fast/filesystem/resources/fs-worker-test-util.js:-1
&gt; &gt; &gt; -if (window.layoutTestController)
&gt; &gt; 
&gt; &gt; This one looks to be the &apos;real&apos; fs-worker-test-util.js we want to include.
&gt; &gt; 
&gt; &gt; &gt; LayoutTests/fast/filesystem/workers/async-operations-expected.txt:7
&gt; &gt; &gt; +[Worker] requested FileSystem.
&gt; &gt; 
&gt; &gt; [Worker] prefix looks nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306497</commentid>
    <comment_count>14</comment_count>
      <attachid>73315</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-11-08 17:19:47 -0800</bug_when>
    <thetext>Created attachment 73315
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306930</commentid>
    <comment_count>15</comment_count>
      <attachid>73315</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-11-09 12:35:47 -0800</bug_when>
    <thetext>Comment on attachment 73315
Patch

lgtm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307545</commentid>
    <comment_count>16</comment_count>
      <attachid>73315</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-11-10 14:14:45 -0800</bug_when>
    <thetext>Comment on attachment 73315
Patch

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

It looks like the .html files should be generated like what happens normally for script tests. Is this a future change?

Please consider addressing the successfully parsed issue (and removing alert :) ), and this will be good to go.

&gt; LayoutTests/ChangeLog:8
&gt; +        Cleaning up shared test utility files caused the includes and output of a bunch of existing tests change slightly, so I&apos;ve rebuilt the expectation files.

We usually wrap lines in ChangeLog before they get this long.

&gt; LayoutTests/fast/filesystem/resources/file-from-file-entry-sync.js:20
&gt; +finishJSTest();

This looks wrong here and in the other places where this happened.

Typically 
 var successfullyParsed = true;
is last so that it is clear the whole file was parsed correctly (and it would be checked in js-test-post.js).

&gt; LayoutTests/fast/filesystem/resources/fs-worker-common.js:8
&gt; +    shouldBeTrue(&quot;successfullyParsed&quot;);

As mentioned before, I think this should be done elsewhere.

&gt; LayoutTests/fast/filesystem/resources/fs-worker-test-util.js:22
&gt; +        alert(event);

alert?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310050</commentid>
    <comment_count>17</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-11-16 17:22:15 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 73315 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=73315&amp;action=review
&gt; 
&gt; It looks like the .html files should be generated like what happens normally for script tests. Is this a future change?

I&apos;m not sure what you mean by this.  I generated the .html files by hand, by running the tests in Chromium.  They don&apos;t run in DumpRenderTree yet because we don&apos;t have support for these APIs in non-Chromium browsers yet.  The filewriter-worker stuff is in that other changelist you&apos;re reviewing, so that&apos;s future stuff too.

&gt; Please consider addressing the successfully parsed issue (and removing alert :) ), and this will be good to go.
&gt; 
&gt; &gt; LayoutTests/ChangeLog:8
&gt; &gt; +        Cleaning up shared test utility files caused the includes and output of a bunch of existing tests change slightly, so I&apos;ve rebuilt the expectation files.
&gt; 
&gt; We usually wrap lines in ChangeLog before they get this long.

Done.

&gt; &gt; LayoutTests/fast/filesystem/resources/file-from-file-entry-sync.js:20
&gt; &gt; +finishJSTest();
&gt; 
&gt; This looks wrong here and in the other places where this happened.
&gt; 
&gt; Typically 
&gt;  var successfullyParsed = true;
&gt; is last so that it is clear the whole file was parsed correctly (and it would be checked in js-test-post.js).

This is tricky.  This test file is shared by the DOM test [where you can then include js-test-post.js if you want] and the worker test [where it&apos;s the main script for the worker, and nothing can follow it].  Given the current setup, I think we have the choice of either not bothering with the successfullyParsed stuff at all, or doing it something like this.

An alternative would be to do something like the SQLDatabase tests, in which there&apos;s a common test-runner for all worker tests, and you send it commands.  Then you can tell it to import the test script THEN the post-test script.

I&apos;m not sure that the successfullyParsed thing is really adding much to these worker tests; I&apos;m inclined just to remove it.  What do you think?

&gt; &gt; LayoutTests/fast/filesystem/resources/fs-worker-common.js:8
&gt; &gt; +    shouldBeTrue(&quot;successfullyParsed&quot;);
&gt; 
&gt; As mentioned before, I think this should be done elsewhere.
&gt; 
&gt; &gt; LayoutTests/fast/filesystem/resources/fs-worker-test-util.js:22
&gt; &gt; +        alert(event);
&gt; 
&gt; alert?

Removed.  Was old debugging stuff that slipped through.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310053</commentid>
    <comment_count>18</comment_count>
      <attachid>74070</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-11-16 17:25:30 -0800</bug_when>
    <thetext>Created attachment 74070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310084</commentid>
    <comment_count>19</comment_count>
      <attachid>73315</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-11-16 18:47:52 -0800</bug_when>
    <thetext>Comment on attachment 73315
Patch

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

&gt;&gt;&gt; LayoutTests/fast/filesystem/resources/file-from-file-entry-sync.js:20
&gt;&gt;&gt; +finishJSTest();
&gt;&gt; 
&gt;&gt; This looks wrong here and in the other places where this happened.
&gt;&gt; 
&gt;&gt; Typically 
&gt;&gt;  var successfullyParsed = true;
&gt;&gt; is last so that it is clear the whole file was parsed correctly (and it would be checked in js-test-post.js).
&gt; 
&gt; This is tricky.  This test file is shared by the DOM test [where you can then include js-test-post.js if you want] and the worker test [where it&apos;s the main script for the worker, and nothing can follow it].  Given the current setup, I think we have the choice of either not bothering with the successfullyParsed stuff at all, or doing it something like this.
&gt; 
&gt; An alternative would be to do something like the SQLDatabase tests, in which there&apos;s a common test-runner for all worker tests, and you send it commands.  Then you can tell it to import the test script THEN the post-test script.
&gt; 
&gt; I&apos;m not sure that the successfullyParsed thing is really adding much to these worker tests; I&apos;m inclined just to remove it.  What do you think?

Fwiw, the point was most of the filesystem tests under resources run in async mode (jsTestIsAsync == true) and for those tests successfullyParsed is tested in finishJSTest() method but not in js-test-post.js.
That&apos;s why we used to have successfullyParsed test in our own finishJSTest() for workers (in fs-worker-common.js).
If you don&apos;t think we should test this flag we can just drop it.  (I thought it was useful while debugging test scripts)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310087</commentid>
    <comment_count>20</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-11-16 18:55:39 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; (From update of attachment 73315 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=73315&amp;action=review
&gt; &gt; 
&gt; &gt; It looks like the .html files should be generated like what happens normally for script tests. Is this a future change?
&gt; 
&gt; I&apos;m not sure what you mean by this.  I generated the .html files by hand, by running the tests in Chromium.  They don&apos;t run in DumpRenderTree yet because we don&apos;t have support for these APIs in non-Chromium browsers yet.  The filewriter-worker stuff is in that other changelist you&apos;re reviewing, so that&apos;s future stuff too.

I think he means what I wrote in comment #6 (&quot;Many .html files that include js-test-pre.js are generated by a script (make-script-test-wrappers) from...&quot;).  David, our .js files are under resources but not under script-tests (where the script assumes) mainly because I wanted to share as many .js files as possible for worker and non-worker tests.  We&apos;ll need to modify the script or rearrange the whole test scripts to use the script to generate html files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312670</commentid>
    <comment_count>21</comment_count>
      <attachid>74070</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-11-22 19:53:44 -0800</bug_when>
    <thetext>Comment on attachment 74070
Patch

Will resubmit tomorrow, with the change Kinuko and I discussed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313098</commentid>
    <comment_count>22</comment_count>
      <attachid>74712</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-11-23 17:58:28 -0800</bug_when>
    <thetext>Created attachment 74712
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313100</commentid>
    <comment_count>23</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-11-23 18:04:01 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; Created an attachment (id=74712) [details]
&gt; Patch

OK, now workers no longer bother checking successfullyParsed.  I left the variable in the shared scripts, though, so the non-worker tests that use them still benefit from the check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313492</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-24 15:18:48 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 74712:

http/tests/appcache/foreign-fallback.html
inspector/styles-source-offsets.html

Please file bugs against the tests.  These tests were authored by ap@webkit.org, apavlov@chromium.org, and pfeldman@chromium.org.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313507</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-24 15:54:38 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 74712:

fast/workers/storage/use-same-database-in-page-and-workers.html

Please file bugs against the tests.  These tests were authored by dumi@chromium.org.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313511</commentid>
    <comment_count>26</comment_count>
      <attachid>74712</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-24 15:59:43 -0800</bug_when>
    <thetext>Comment on attachment 74712
Patch

Clearing flags on attachment: 74712

Committed r72704: &lt;http://trac.webkit.org/changeset/72704&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313512</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-24 15:59:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70882</attachid>
            <date>2010-10-15 10:48:37 -0700</date>
            <delta_ts>2010-10-27 17:14:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47680-20101015104836.patch</filename>
            <type>text/plain</type>
            <size>15188</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY5ODA3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTAtMTAtMTQgIEVyaWMgVWhyaGFuZSAgPGVy
aWN1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgRmlsZVdyaXRlciB0ZXN0IHV0aWxpdGllcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NjgwCisKKyAgICAgICAgVGVzdCB0
cnVuY2F0ZS10by1leHRlbmQgdXNpbmcgRmlsZVdyaXRlciBpbiB0aGUgRE9NIGFuZCBpbiB3b3Jr
ZXJzLAorICAgICAgICB1c2luZyB0aGUgYXN5bmNocm9ub3VzIEFQSS4KKyAgICAgICAgKiBmYXN0
L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVu
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdy
aXRlci10cnVuY2F0ZS1leHRlbmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci10cnVu
Y2F0ZS1leHRlbmQuanM6IEFkZGVkLgorCisgICAgICAgIEFkZCBhIHV0aWxpdHkgZmlsZSB0aGF0
IGhlbHBzIHNldCB1cCBhbmQgdmVyaWZ5IEZpbGVXcml0ZXIgdGVzdHMuCisgICAgICAgICogZmFz
dC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci11dGlscy5qczogQWRkZWQuCisKKyAg
ICAgICAgQWRkIG5ldyBmdW5jdGlvbnMgYW5kIG1hZGUgdGhlIHdvcmtlciB0ZXN0IG91dHB1dCBs
b29rIG1vcmUgbGlrZSB0aGUgbm9uLXdvcmtlciB0ZXN0IG91dHB1dC4KKyAgICAgICAgKiBmYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanM6CisgICAgICAgIChmaW5p
c2hKU1Rlc3QpOgorICAgICAgICAodGVzdFBhc3NlZCk6CisgICAgICAgICh0ZXN0RmFpbGVkKToK
KyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5q
czoKKyAgICAgICAgKGVzY2FwZUhUTUwpOgorICAgICAgICAoZGVidWcpOgorICAgICAgICAodGVz
dFBhc3NlZCk6CisgICAgICAgICh0ZXN0RmFpbGVkKToKKyAgICAgICAgKGRlc2NyaXB0aW9uKToK
KyAgICAgICAgKHN0YXJ0V29ya2VyLndvcmtlci5vbm1lc3NhZ2UpOgorCisgICAgICAgIFR1cm4g
b2ZmIHRoZSB0ZXN0cyB1bnRpbCB0ZXN0c2hlbGwgc3VwcG9ydHMgdGhlbSBbYnVnIGFscmVhZHkg
bG9nZ2VkIGluIGNocm9taXVtIHRvIHJlbW92ZSB0aGlzIHN1cHByZXNzaW9uXS4KKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTAtMTAtMTQg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2OTc5NS4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci10cnVuY2F0ZS1l
eHRlbmQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsOSBAQAorVGVzdCBvZiBleHRlbmRpbmcgYSBmaWxlIHVzaW5nIHRydW5j
YXRlKCkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworc3RhcnRpbmcgdGVzdAorUEFT
UyBUcnVuY2F0ZSBleHRlbnNpb24gdmVyaWZpZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItdHJ1
bmNhdGUtZXh0ZW5kLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcgQEAKKzwhRE9DVFlQ
RSBIVE1MPgorPGh0bWw+CisgPGhlYWQ+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorICAgIDx0aXRsZT5GaWxlIFdy
aXRlciBUcnVuY2F0ZS1Uby1FeHRlbmQ8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvZmlsZS13cml0ZXItdXRpbHMuanMiPjwvc2NyaXB0PgorIDwvaGVhZD4KKyA8Ym9keT4K
KyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgICAgPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9maWxlLXdyaXRlci10cnVuY2F0ZS1l
eHRlbmQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyA8L2JvZHk+Cis8L2h0bWw+CisKKwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci10cnVuY2F0ZS1l
eHRlbmQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291
cmNlcy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuanMJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4
dGVuZC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MSBAQAoraWYgKHRoaXMuaW1wb3J0U2Ny
aXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJ2ZzLXdvcmtlci1jb21tb24uanMnKTsKKyAgICBp
bXBvcnRTY3JpcHRzKCdmaWxlLXdyaXRlci11dGlscy5qcycpOworfQorCitkZXNjcmlwdGlvbigi
VGVzdCBvZiBleHRlbmRpbmcgYSBmaWxlIHVzaW5nIHRydW5jYXRlKCkuIik7CisKK2Z1bmN0aW9u
IG9uVGVzdFN1Y2NlZWRlZCgpIHsKKyAgICB0ZXN0UGFzc2VkKCJUcnVuY2F0ZSBleHRlbnNpb24g
dmVyaWZpZWQuIik7CisgICAgY2xlYW5VcCgpOworfQorCitmdW5jdGlvbiB0cnVuY2F0ZVRvRXh0
ZW5kKGZpbGVFbnRyeSwgZmlsZVdyaXRlciwgY29udGVudHMsIG9uU3VjY2VzcykgeworICAgIHZh
ciBleHRlbnNpb24gPSA1OworICAgIHZhciBsZW5ndGhDaGVja2VyID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHZlcmlmeUZpbGVMZW5ndGgoZmlsZUVudHJ5LCBjb250ZW50cy5sZW5ndGggKyBleHRl
bnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgb25TdWNjZXNzKTsKKyAgICB9CisgICAg
dmFyIGV4dGVuc2lvbkNoZWNrZXIgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmVyaWZ5Qnl0ZVJh
bmdlSXNaZXJvZXMoZmlsZUVudHJ5LCBjb250ZW50cy5sZW5ndGgsIGV4dGVuc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoQ2hlY2tlcik7CisgICAgfQorICAgIGZp
bGVXcml0ZXIub253cml0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2ZXJpZnlCeXRlUmFuZ2VB
c1N0cmluZyhmaWxlRW50cnksIDAsIGNvbnRlbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleHRlbnNpb25DaGVja2VyKTsKKyAgICB9CisgICAgZmlsZVdyaXRlci50cnVuY2F0
ZShjb250ZW50cy5sZW5ndGggKyBleHRlbnNpb24pOworfQorCitmdW5jdGlvbiBydW5UZXN0KGZp
bGVFbnRyeSwgZmlsZVdyaXRlcikgeworICAgIHZhciBjb250ZW50cyA9ICJMb3JlbSBpcHN1bSI7
CisgICAgd3JpdGVTdHJpbmcoZmlsZUVudHJ5LCBmaWxlV3JpdGVyLCAwLCBjb250ZW50cywKKyAg
ICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgdHJ1bmNhdGVU
b0V4dGVuZChmaWxlRW50cnksIGZpbGVXcml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGVudHMsIG9uVGVzdFN1Y2NlZWRlZCk7CisgICAgICAgICAgICAgICAg
fSk7Cit9CisKK3ZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3NldHVwQW5kUnVuVGVzdCgxMDI0
LCAnZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kJywgcnVuVGVzdCk7Cit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNv
dXJjZXMvZmlsZS13cml0ZXItdXRpbHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci11dGlscy5qcwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdXRp
bHMuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUyIEBACitmdW5jdGlvbiBzdHJpbmdpZnlP
YmoobykgeworICAgIHMgPSAiIjsKKyAgICBpZiAobykKKyAgICAgICAgZm9yIChpbmRleCBpbiBv
KSB7CisgICAgICAgICAgICBzICs9IGluZGV4ICsgIjogIiArIG9baW5kZXhdICsgIlxuIjsKKyAg
ICAgICAgfQorICAgIHJldHVybiBzOworfQorCitmdW5jdGlvbiBvbkVycm9yKGUpIHsKKyAgICB0
ZXN0RmFpbGVkKCJHb3QgZXJyb3I6ICIgKyBzdHJpbmdpZnlPYmooZSkpOworICAgIGNsZWFuVXAo
KTsKK307CisKK2Z1bmN0aW9uIGFzc2VydChzKSB7CisgICAgaWYgKCFzKSB7CisgICAgICAgIG9u
RXJyb3IoIkFzc2VydGlvbiBmYWlsZWQuICIgKyAobmV3IEVycm9yKCkpKTsKKyAgICB9Cit9CisK
K3ZhciBmaWxlRW50cnlGb3JDbGVhbnVwOyAgLy8gU2V0IGFzIHNvb24gYXMgd2UgaGF2ZSBvbmUu
CisKK2Z1bmN0aW9uIGNsZWFuVXAoKSB7CisgIHZhciBuZWVkVG9DYWxsRmluaXNoID0gdHJ1ZTsK
KyAgdHJ5IHsKKyAgICBpZiAoZmlsZUVudHJ5Rm9yQ2xlYW51cCkgeworICAgICAgZmlsZUVudHJ5
Rm9yQ2xlYW51cC5yZW1vdmUoZmluaXNoSlNUZXN0LCBmaW5pc2hKU1Rlc3QpOworICAgICAgbmVl
ZFRvQ2FsbEZpbmlzaCA9IGZhbHNlOworICAgIH0KKyAgfSBjYXRjaCAoZXgpIHsKKyAgfQorICBp
ZiAobmVlZFRvQ2FsbEZpbmlzaCkgeworICAgIGZpbmlzaEpTVGVzdCgpOworICB9Cit9CisKKy8v
IEdlbmVyaWMgZnVuY3Rpb24gdGhhdCBnZXRzIGEgRmlsZSBmcm9tIGEgRmlsZUVudHJ5IGFuZCBj
YWxscyBhCisvLyBjdXN0b20gdmVyaWZpY2F0aW9uIGZ1bmN0aW9uIG9uIGl0LgorZnVuY3Rpb24g
dmVyaWZ5RmlsZUNvbnRlbnRzKGZpbGVFbnRyeSwgdmVyaWZ5RnVuYywgYXJnMCwgYXJnMSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvblN1Y2Nlc3MpIHsKKyAgICBmaWxlRW50cnkuZmls
ZSgKKyAgICAgICAgZnVuY3Rpb24oZmlsZSkgeworICAgICAgICAgICAgb25TdWNjZXNzKCk7IC8v
IFRPRE86IFN3YXAgZm9yIG5leHQgbGluZSBiZWZvcmUgY2hlY2tpbi4KKyAgICAgICAgICAgIC8v
dmVyaWZ5RnVuYyhmaWxlLCBhcmcwLCBhcmcxLCBvblN1Y2Nlc3MpOworICAgICAgICB9LAorICAg
ICAgICBvbkVycm9yKTsKK30KKworLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgd2l0aCB2ZXJpZnlG
aWxlQ29udGVudHMuCitmdW5jdGlvbiB2ZXJpZnlGaWxlTGVuZ3RoSGVscGVyKGZpbGUsIGxlbmd0
aCwgdW51c2VkLCBvblN1Y2Nlc3MpIHsKKyAgICBhc3NlcnQoZmlsZS5zaXplID09IGxlbmd0aCk7
CisgICAgb25TdWNjZXNzKCk7Cit9CisKKy8vIFZlcmlmaWVzIHRoYXQgdGhlIGNvbnRlbnRzIG9m
IGZpbGVFbnRyeSBoYXZlIHRoZSBzdXBwbGllZCBsZW5ndGguCitmdW5jdGlvbiB2ZXJpZnlGaWxl
TGVuZ3RoKGZpbGVFbnRyeSwgbGVuZ3RoLCBvblN1Y2Nlc3MpIHsKKyAgICB2ZXJpZnlGaWxlQ29u
dGVudHMoZmlsZUVudHJ5LCB2ZXJpZnlGaWxlTGVuZ3RoSGVscGVyLCBsZW5ndGgsCisgICAgICAg
ICAgICAgICAgICAgICAgIG51bGwsIG9uU3VjY2Vzcyk7Cit9CisKKy8vIEhlbHBlciBmdW5jdGlv
biB1c2VkIHdpdGggdmVyaWZ5RmlsZUNvbnRlbnRzLgorZnVuY3Rpb24gdmVyaWZ5Qnl0ZVJhbmdl
SXNaZXJvZXNIZWxwZXIoZmlsZSwgc3RhcnQsIGxlbmd0aCwgb25TdWNjZXNzKSB7CisgICAgdmFy
IGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOworICAgIGZpbGVSZWFkZXIub25lcnJvciA9
IG9uRXJyb3I7CisgICAgZmlsZVJlYWRlci5vbmxvYWQgPQorICAgICAgICBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIHZhciByZXN1bHQgPSBmaWxlUmVhZGVyLnJlc3VsdDsKKyAgICAgICAgICAg
IGZvciAodmFyIGk9MDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0
KHJlc3VsdFtpXSA9PSAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG9uU3VjY2Vzcygp
OworICAgICAgICB9CisgICAgZmlsZVJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZS5zbGlj
ZShzdGFydCwgbGVuZ3RoKSk7Cit9CisKKy8vIFZlcmlmaWVzIHRoYXQgZmlsZUVudHJ5LCBhdCBv
ZmZzZXQsIGlzIGFsbCB6ZXJvZXMgZm9yIGxlbmd0aCBieXRlcy4KK2Z1bmN0aW9uIHZlcmlmeUJ5
dGVSYW5nZUlzWmVyb2VzKGZpbGVFbnRyeSwgb2Zmc2V0LCBsZW5ndGgsIG9uU3VjY2Vzcykgewor
ICAgIHZlcmlmeUZpbGVDb250ZW50cyhmaWxlRW50cnksIHZlcmlmeUJ5dGVSYW5nZUlzWmVyb2Vz
SGVscGVyLCAKKyAgICAgICAgb2Zmc2V0LCBsZW5ndGgsIG9uU3VjY2Vzcyk7Cit9CisKKy8vIEhl
bHBlciBmdW5jdGlvbiB1c2VkIHdpdGggdmVyaWZ5RmlsZUNvbnRlbnRzLgorZnVuY3Rpb24gdmVy
aWZ5Qnl0ZVJhbmdlQXNTdHJpbmdIZWxwZXIoZmlsZSwgc3RhcnQsIGRhdGEsIG9uU3VjY2Vzcykg
eworICAgIHZhciBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKKyAgICBmaWxlUmVhZGVy
Lm9uZXJyb3IgPSBvbkVycm9yOworICAgIGZpbGVSZWFkZXIub25sb2FkID0KKyAgICAgICAgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnQoZmlsZVJlYWRlci5yZXN1bHQgPT0gZGF0YSk7
CisgICAgICAgICAgICBvblN1Y2Nlc3MoKTsKKyAgICAgICAgfQorICAgIGZpbGVSZWFkZXIucmVh
ZEFzVGV4dChmaWxlLnNsaWNlKHN0YXJ0LCBkYXRhLmxlbmd0aCkpOworfQorCisvLyBWZXJpZmll
cyB0aGF0IHRoZSBjb250ZW50cyBvZiBmaWxlRW50cnksIGF0IG9mZnNldCwgbWF0Y2ggY29udGVu
dHMgW2EKKy8vIHN0cmluZ10uCitmdW5jdGlvbiB2ZXJpZnlCeXRlUmFuZ2VBc1N0cmluZyhmaWxl
RW50cnksIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRz
LCBvblN1Y2Nlc3MpIHsKKyAgICB2ZXJpZnlGaWxlQ29udGVudHMoZmlsZUVudHJ5LCB2ZXJpZnlC
eXRlUmFuZ2VBc1N0cmluZ0hlbHBlciwgCisgICAgICAgIG9mZnNldCwgY29udGVudHMsIG9uU3Vj
Y2Vzcyk7Cit9CisKKy8vIENyZWF0ZXMgYSBmaWxlIGNhbGxlZCBmaWxlTmFtZSBpbiBmaWxlU3lz
dGVtJ3Mgcm9vdCBkaXJlY3RvcnksCisvLyB0cnVuY2F0ZXMgaXQgdG8gemVybyBsZW5ndGgganVz
dCBpbiBjYXNlLCBhbmQgY2FsbHMgb25TdWNjZXNzLAorLy8gcGFzc2luZyBpdCBhIEZpbGVFbnRy
eSBhbmQgRmlsZVdyaXRlciBmb3IgdGhlIG5ldyBmaWxlLgorZnVuY3Rpb24gY3JlYXRlRW1wdHlG
aWxlKGZpbGVTeXN0ZW0sIGZpbGVOYW1lLCBvblN1Y2Nlc3MpIHsKKyAgICBmdW5jdGlvbiBnZXRT
dWNjZXNzRnVuYyhmaWxlRW50cnksIGZpbGVXcml0ZXIpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgb25TdWNjZXNzKGZpbGVFbnRyeSwgZmlsZVdyaXRlcik7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgZnVuY3Rpb24gZ2V0RmlsZVdyaXRlckNhbGxiYWNrKGZpbGVF
bnRyeSkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24oZmlsZVdyaXRlcikgeworICAgICAgICAg
ICAgdmFyIHN1Y2Nlc3NGdW5jID0gZ2V0U3VjY2Vzc0Z1bmMoZmlsZUVudHJ5LCBmaWxlV3JpdGVy
KTsKKyAgICAgICAgICAgIGZpbGVXcml0ZXIub25FcnJvciA9IG9uRXJyb3I7CisgICAgICAgICAg
ICBmaWxlV3JpdGVyLm9ud3JpdGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB2ZXJp
ZnlGaWxlTGVuZ3RoKGZpbGVFbnRyeSwgMCwgc3VjY2Vzc0Z1bmMpOworICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgIGZpbGVXcml0ZXIudHJ1bmNhdGUoMCk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgZnVuY3Rpb24gb25GaWxlRW50cnkoZmlsZUVudHJ5KSB7CisgICAgICAgIGZpbGVFbnRyeUZv
ckNsZWFudXAgPSBmaWxlRW50cnk7CisgICAgICAgIHZhciBvbkZpbGVXcml0ZXIgPSBnZXRGaWxl
V3JpdGVyQ2FsbGJhY2soZmlsZUVudHJ5KTsKKyAgICAgICAgZmlsZUVudHJ5LmNyZWF0ZVdyaXRl
cihvbkZpbGVXcml0ZXIsIG9uRXJyb3IpOworICAgIH0KKyAgICBhc3NlcnQoZmlsZVN5c3RlbSk7
CisgICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUoZmlsZU5hbWUsIHtjcmVhdGU6dHJ1ZX0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb25GaWxlRW50cnksIG9uRXJyb3IpOworfQorCitm
dW5jdGlvbiB3cml0ZVN0cmluZyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIG9mZnNldCwgZGF0YSwg
b25TdWNjZXNzKSB7CisgICAgdmFyIGJiID0gbmV3IEJsb2JCdWlsZGVyKCk7CisgICAgYmIuYXBw
ZW5kKGRhdGEpOworICAgIHZhciBibG9iID0gYmIuZ2V0QmxvYigpOworICAgIGZpbGVXcml0ZXIu
c2VlayhvZmZzZXQpOworICAgIGZpbGVXcml0ZXIud3JpdGUoYmxvYik7CisgICAgZmlsZVdyaXRl
ci5vbndyaXRlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZlcmlmeUJ5dGVSYW5nZUFzU3RyaW5n
KGZpbGVFbnRyeSwgb2Zmc2V0LCBkYXRhLCBvblN1Y2Nlc3MpOworICAgIH0KK30KKworZnVuY3Rp
b24gc2V0dXBBbmRSdW5UZXN0KHNpemUsIHRlc3ROYW1lLCB0ZXN0RnVuYykgeworICAgIGlmICgh
cmVxdWVzdEZpbGVTeXN0ZW0pIHsKKyAgICAgICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBG
aWxlU3lzdGVtIEFQSSBzdXBwb3J0LiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGRl
YnVnKCJzdGFydGluZyB0ZXN0Iik7CisgICAgcmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCBz
aXplLCBmdW5jdGlvbihmcykgeworICAgICAgICBjcmVhdGVFbXB0eUZpbGUoZnMsIHRlc3ROYW1l
LCB0ZXN0RnVuYyk7CisgICAgfSwgb25FcnJvcik7Cit9CisKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24u
anMJKHJldmlzaW9uIDY5Nzk5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291
cmNlcy9mcy13b3JrZXItY29tbW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC01LDYgKzUsNyBAQCBm
dW5jdGlvbiBkZWJ1ZyhtZXNzYWdlKQogCiBmdW5jdGlvbiBmaW5pc2hKU1Rlc3QoKQogeworICAg
IHNob3VsZEJlVHJ1ZSgic3VjY2Vzc2Z1bGx5UGFyc2VkIik7CiAgICAgcG9zdE1lc3NhZ2UoIkRP
TkUiKTsKIH0KIApAQCAtMTMsNiArMTQsMTQgQEAgZnVuY3Rpb24gZGVzY3JpcHRpb24obWVzc2Fn
ZSkKICAgICBwb3N0TWVzc2FnZSgnRGVzY3JpcHRpb246ICcgKyBtZXNzYWdlKTsKIH0KIAorZnVu
Y3Rpb24gdGVzdFBhc3NlZChtc2cpIHsKKyAgICBwb3N0TWVzc2FnZSgiUEFTUzoiICsgbXNnKTsK
K30KKworZnVuY3Rpb24gdGVzdEZhaWxlZChtc2cpIHsKKyAgICBwb3N0TWVzc2FnZSgiRkFJTDoi
ICsgbXNnKTsKK30KKwogZnVuY3Rpb24gc2hvdWxkQmUoX2EsIF9iKQogewogICBpZiAodHlwZW9m
IF9hICE9ICJzdHJpbmciIHx8IHR5cGVvZiBfYiAhPSAic3RyaW5nIikKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJlLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2Vy
LXRlc3QtcHJlLmpzCShyZXZpc2lvbiA2OTc5OSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDkgKzEsMzggQEAKIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwogCi1mdW5jdGlvbiBkZWJ1ZyhtZXNzYWdlKQor
ZnVuY3Rpb24gZXNjYXBlSFRNTCh0ZXh0KQogewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyLz4iOworICAgIHJldHVybiB0
ZXh0LnJlcGxhY2UoLyYvZywgIiZhbXA7IikucmVwbGFjZSgvPC9nLCAiJmx0OyIpLnJlcGxhY2Uo
L1wwL2csICJcXDAiKTsKK30KKworZnVuY3Rpb24gZGVidWcobXNnKQoreworICAgIHZhciBzcGFu
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoc3Bhbik7IC8vIGluc2VydCBpdCBmaXJzdCBz
byBYSFRNTCBrbm93cyB0aGUgbmFtZXNwYWNlCisgICAgc3Bhbi5pbm5lckhUTUwgPSBtc2cgKyAn
PGJyIC8+JzsKK30KKworZnVuY3Rpb24gdGVzdFBhc3NlZChtc2cpCit7CisgICAgZGVidWcoJzxz
cGFuPjxzcGFuIGNsYXNzPSJwYXNzIj5QQVNTPC9zcGFuPiAnICsgZXNjYXBlSFRNTChtc2cpICsg
Jzwvc3Bhbj4nKTsKK30KKworZnVuY3Rpb24gdGVzdEZhaWxlZChtc2cpCit7CisgICAgZGVidWco
JzxzcGFuPjxzcGFuIGNsYXNzPSJmYWlsIj5GQUlMPC9zcGFuPiAnICsgZXNjYXBlSFRNTChtc2cp
ICsgJzwvc3Bhbj4nKTsKK30KKworZnVuY3Rpb24gZGVzY3JpcHRpb24obXNnKQoreworICAgIC8v
IEZvciBNU0lFIDYgY29tcGF0aWJpbGl0eQorICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgic3BhbiIpOworICAgIHNwYW4uaW5uZXJIVE1MID0gJzxwPicgKyBtc2cgKyAnPC9w
PjxwPk9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiPHNwYW4gY2xhc3M9InBh
c3MiPlBBU1M8L3NwYW4+IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIjxzcGFuIGNsYXNzPSJwYXNz
Ij5URVNUIENPTVBMRVRFPC9zcGFuPiIuPC9wPic7CisgICAgdmFyIGRlc2NyaXB0aW9uID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRlc2NyaXB0aW9uIik7CisgICAgaWYgKGRlc2NyaXB0aW9u
LmZpcnN0Q2hpbGQpCisgICAgICAgIGRlc2NyaXB0aW9uLnJlcGxhY2VDaGlsZChzcGFuLCBkZXNj
cmlwdGlvbi5maXJzdENoaWxkKTsKKyAgICBlbHNlCisgICAgICAgIGRlc2NyaXB0aW9uLmFwcGVu
ZENoaWxkKHNwYW4pOwogfQogCiBmdW5jdGlvbiBzdGFydFdvcmtlcih0ZXN0U2NyaXB0VVJMKQpA
QCAtMTIsOSArNDEsMTcgQEAgZnVuY3Rpb24gc3RhcnRXb3JrZXIodGVzdFNjcmlwdFVSTCkKICAg
ICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcih0ZXN0U2NyaXB0VVJMKTsKICAgICB3b3JrZXIub25t
ZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICBkZWJ1ZyhldmVudC5kYXRh
KTsKLSAgICAgICAgaWYgKGV2ZW50LmRhdGEgPT0gIkRPTkUiKQorICAgICAgICBpZiAoZXZlbnQu
ZGF0YS5zdWJzdHJpbmcoMCwgNSkgPT0gIlBBU1M6IikgeworICAgICAgICAgICAgdGVzdFBhc3Nl
ZChldmVudC5kYXRhLnN1YnN0cmluZyg1KSk7CisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0
YS5zdWJzdHJpbmcoMCwgNSkgPT0gIkZBSUw6IikgeworICAgICAgICAgICAgdGVzdEZhaWxlZChl
dmVudC5kYXRhLnN1YnN0cmluZyg1KSk7CisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YS5z
dWJzdHJpbmcoMCwgMTMpID09ICJEZXNjcmlwdGlvbjogIikgeworICAgICAgICAgICAgZGVzY3Jp
cHRpb24oZXZlbnQuZGF0YS5zdWJzdHJpbmcoMTMpKTsKKyAgICAgICAgfSBlbHNlIGlmIChldmVu
dC5kYXRhID09ICJET05FIikgewogICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBkZWJ1ZyhldmVudC5kYXRhKTsKKyAgICAgICAgfQogICAg
IH07CiAKICAgICB3b3JrZXIub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5k
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXIt
dHJ1bmNhdGUtZXh0ZW5kLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBA
QAorVGVzdCBvZiBleHRlbmRpbmcgYSBmaWxlIHVzaW5nIHRydW5jYXRlKCkuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvZmlsZS13
cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmpzCitzdGFydGluZyB0ZXN0CitQQVNTIFRydW5jYXRlIGV4
dGVuc2lvbiB2ZXJpZmllZC4KK1BBU1MgIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMv
ZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9m
aWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
OCBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKyA8aGVhZD4KKyAgICA8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cisg
ICAgPHRpdGxlPkZpbGUgV3JpdGVyIFRydW5jYXRlLVRvLUV4dGVuZCBXb3JrZXI8L3RpdGxlPgor
ICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKyA8L2hlYWQ+CisgPGJvZHk+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgICAgIHN0
YXJ0V29ya2VyKCIuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmpzIik7
CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXIt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyA8L2JvZHk+Cis8L2h0bWw+CisKKwpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dAkocmV2aXNpb24gNjk3OTkpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0
X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMxOTMsNiArMzE5Myw4IEBAIEJV
RzU4MzU4IFdJTiBMSU5VWCA6IGZhc3QvY3NzL3RyYW5zZm9ybWUKIAogLy8gRmlsZVdyaXRlciBp
c24ndCBpbiBUZXN0U2hlbGwgeWV0LgogQlVHNTg1ODcgU0tJUCA6IGZhc3QvZmlsZXN5c3RlbS9m
aWxlLXdyaXRlci1nYy1ibG9iLmh0bWwgPSBGQUlMCitCVUc1ODU4NyBTS0lQIDogZmFzdC9maWxl
c3lzdGVtL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5odG1sID0gRkFJTAorQlVHNTg1ODcg
U0tJUCA6IGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVu
ZC5odG1sID0gRkFJTAogCiAvLyBGYWlsaW5nIHNvbWV3aGVyZSBiZXR3ZWVuIGFmdGVyIFdlYmtp
dCByNjkzNjcgYW5kIHI2OTQxNy4KIEJVRzU4OTcwIExJTlVYIDogc3ZnL3RleHQvdGV4dC10c2Vs
ZWN0LTAyLWYuc3ZnID0gSU1BR0UgUEFTUwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72117</attachid>
            <date>2010-10-27 17:14:25 -0700</date>
            <delta_ts>2010-10-28 18:09:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47680-20101027171424.patch</filename>
            <type>text/plain</type>
            <size>31045</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDcwNjc1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTAtMTAtMjcgIEVyaWMgVWhyaGFuZSAgPGVy
aWN1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgRmlsZVdyaXRlciB0ZXN0IHV0aWxpdGllcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NjgwCisKKyAgICAgICAgQ2xlYW5p
bmcgdXAgc2hhcmVkIHRlc3QgdXRpbGl0eSBmaWxlcyBjYXVzZWQgdGhlIG91dHB1dCBvZiBhIGJ1
bmNoIG9mIGV4aXN0aW5nIHRlc3RzIGNoYW5nZSBzbGlnaHRseSwgc28gSSd2ZSByZWJ1aWx0IHRo
ZSBleHBlY3RhdGlvbiBmaWxlcy4gIFdoaWxlIGZpeGluZyB0aGlzLCBJIGZvdW5kIHRoYXQgc29t
ZSBmaWxlc3lzdGVtIHdvcmtlciAuaHRtbCBmaWxlcyB3ZXJlIGluY2x1ZGluZyBqYXZhc2NyaXB0
IG9ubHkgYXBwcm9wcmlhdGUgZm9yIHRoZSB3b3JrZXJzIHRoZW1zZWx2ZXMsIHNvIEkgcmVtb3Zl
ZCB0aGUgZXh0cmEgaW5jbHVkZXMuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3QgdGVzdCBb
aW4gRE9NIGFuZCB3b3JrZXIgdmVyc2lvbnNdIHRvIHVzZSB0aGUgbmV3IHV0aWxpdGllcy4KKyAg
ICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXRy
dW5jYXRlLWV4dGVuZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vcmVz
b3VyY2VzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5qczogQWRkZWQuCisgICAgICAgICog
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13
cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmh0bWw6IEFkZGVkLgorICAgICAgICAKKyAgICAgICAgVGhp
cyBpcyBhIG5ldyB1dGlsaXR5IGZpbGUgZm9yIEZpbGVXcml0ZXIgdGVzdHMuCisgICAgICAgICog
ZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci11dGlscy5qczogQWRkZWQuCisK
KyAgICAgICAgVGhlc2Ugc2hhcmVkIGZpbGVzIGdvdCBhIGJpdCBvZiBhIHRvdWNoLXVwLgorICAg
ICAgICAqIGZhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qczoKKyAg
ICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXBvc3QuanM6
CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC1wcmUu
anM6CisKKyAgICAgICAgVGhlc2UgdGVzdHMgYW5kIHRoZWlyIGV4cGVjdGF0aW9ucyB3ZXJlIHR3
ZWFrZWQgc2xpZ2h0bHkgdG8gdXNlIHRoZSBuZXcgY29kZSBtb3JlIGNsZWFubHkuCisgICAgICAg
ICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmpz
OgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXBlcnNpc3RlbnQt
c3luYy5qczoKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS10ZW1w
b3Jhcnktc3luYy5qczoKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3N5bmMt
b3BlcmF0aW9ucy5qczoKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9hc3luYy1v
cGVyYXRpb25zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9hc3luYy1vcGVyYXRpb25zLmh0bWw6CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtl
cnMvZmlsZS1mcm9tLWZpbGUtZW50cnktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5bmMtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5
bmMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmls
ZS1lbnRyeS5odG1sOgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1w
ZXJzaXN0ZW50LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Zp
bGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmh0bWw6CisgICAgICAgICog
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQuaHRtbDoKKyAgICAgICAg
KiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10
ZW1wb3Jhcnktc3luYy5odG1sOgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3Np
bXBsZS10ZW1wb3JhcnkuaHRtbDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9z
eW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93
b3JrZXJzL3N5bmMtb3BlcmF0aW9ucy5odG1sOgorCisgICAgICAgIFJlbW92ZWQgc3VwcHJlc3Np
b24gb2YgRmlsZVdyaXRlciB0ZXN0cywgYXMgd2Ugbm93IGhhdmUgc3VwcG9ydCBpbiBUZXN0U2hl
bGwuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Ogor
CiAyMDEwLTEwLTI1ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0
ZW5kLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDkgQEAKK1Rlc3Qgb2YgZXh0ZW5kaW5nIGEgZmlsZSB1c2luZyB0cnVuY2F0
ZSgpLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK3N0YXJ0aW5nIHRlc3QKK1BBU1Mg
VHJ1bmNhdGUgZXh0ZW5zaW9uIHZlcmlmaWVkLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
ZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXRydW5j
YXRlLWV4dGVuZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACis8IURPQ1RZUEUg
SFRNTD4KKzxodG1sPgorIDxoZWFkPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKyAgICA8dGl0bGU+RmlsZSBXcml0
ZXIgVHJ1bmNhdGUtVG8tRXh0ZW5kPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2ZpbGUtd3JpdGVyLXV0aWxzLmpzIj48L3NjcmlwdD4KKyA8L2hlYWQ+CisgPGJvZHk+Cisg
ICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0
ZW5kLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisgPC9ib2R5PgorPC9odG1sPgorCisKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3lu
Yy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2Vz
L2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5bmMuanMJKHJldmlzaW9uIDcwNTkwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5j
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw1ICsxNiw1IEBAIHNob3VsZEJlKCJ0ZXN0RmlsZS50
eXBlIiwgIid0ZXh0L3BsYWluJyIKIHNob3VsZEJlKCJ0ZXN0RmlsZS5zaXplIiwgIjAiKTsKIAog
cmVtb3ZlQWxsSW5EaXJlY3RvcnlTeW5jKGZpbGVTeXN0ZW0ucm9vdCk7Ci1maW5pc2hKU1Rlc3Qo
KTsKIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworZmluaXNoSlNUZXN0KCk7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXRydW5j
YXRlLWV4dGVuZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
cmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5qcwkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1bmNh
dGUtZXh0ZW5kLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3IEBACitpZiAodGhpcy5pbXBv
cnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOwor
ICAgIGltcG9ydFNjcmlwdHMoJ2ZpbGUtd3JpdGVyLXV0aWxzLmpzJyk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJUZXN0IG9mIGV4dGVuZGluZyBhIGZpbGUgdXNpbmcgdHJ1bmNhdGUoKS4iKTsKKworZnVu
Y3Rpb24gb25UZXN0U3VjY2VlZGVkKCkgeworICAgIHRlc3RQYXNzZWQoIlRydW5jYXRlIGV4dGVu
c2lvbiB2ZXJpZmllZC4iKTsKKyAgICBjbGVhblVwKCk7Cit9CisKK2Z1bmN0aW9uIHRydW5jYXRl
VG9FeHRlbmQoZmlsZUVudHJ5LCBmaWxlV3JpdGVyLCBjb250ZW50cywgb25TdWNjZXNzKSB7Cisg
ICAgdmFyIGV4dGVuc2lvbiA9IDU7CisgICAgdmFyIGxlbmd0aENoZWNrZXIgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgdmVyaWZ5RmlsZUxlbmd0aChmaWxlRW50cnksIGNvbnRlbnRzLmxlbmd0aCAr
IGV4dGVuc2lvbiwgb25TdWNjZXNzKTsKKyAgICB9OworICAgIHZhciBleHRlbnNpb25DaGVja2Vy
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZlcmlmeUJ5dGVSYW5nZUlzWmVyb2VzKGZpbGVFbnRy
eSwgY29udGVudHMubGVuZ3RoLCBleHRlbnNpb24sIGxlbmd0aENoZWNrZXIpOworICAgIH07Cisg
ICAgZmlsZVdyaXRlci5vbndyaXRlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZlcmlmeUJ5dGVS
YW5nZUFzU3RyaW5nKGZpbGVFbnRyeSwgMCwgY29udGVudHMsIGV4dGVuc2lvbkNoZWNrZXIpOwor
ICAgIH07CisgICAgZmlsZVdyaXRlci50cnVuY2F0ZShjb250ZW50cy5sZW5ndGggKyBleHRlbnNp
b24pOworfQorCitmdW5jdGlvbiBydW5UZXN0KGZpbGVFbnRyeSwgZmlsZVdyaXRlcikgeworICAg
IHZhciBjb250ZW50cyA9ICJMb3JlbSBpcHN1bSI7CisgICAgd3JpdGVTdHJpbmcoZmlsZUVudHJ5
LCBmaWxlV3JpdGVyLCAwLCBjb250ZW50cywKKyAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICAgICAgdHJ1bmNhdGVUb0V4dGVuZChmaWxlRW50cnksIGZpbGVXcml0
ZXIsIGNvbnRlbnRzLCBvblRlc3RTdWNjZWVkZWQpOworICAgICAgICAgICAgICAgIH0pOworfQor
Cit2YXIganNUZXN0SXNBc3luYyA9IHRydWU7CitzZXR1cEFuZFJ1blRlc3QoMTAyNCwgJ2ZpbGUt
d3JpdGVyLXRydW5jYXRlLWV4dGVuZCcsIHJ1blRlc3QpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2Zp
bGUtd3JpdGVyLXV0aWxzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdXRpbHMuanMJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXV0aWxzLmpzCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzOCBAQAorZnVuY3Rpb24gc3RyaW5naWZ5T2JqKG8pIHsK
KyAgICBzID0gIiI7CisgICAgaWYgKG8pCisgICAgICAgIGZvciAoaW5kZXggaW4gbykgeworICAg
ICAgICAgICAgcyArPSBpbmRleCArICI6ICIgKyBvW2luZGV4XSArICJcbiI7CisgICAgICAgIH0K
KyAgICByZXR1cm4gczsKK30KKworZnVuY3Rpb24gb25FcnJvcihlKSB7CisgICAgdGVzdEZhaWxl
ZCgiR290IGVycm9yOiAiICsgc3RyaW5naWZ5T2JqKGUpKTsKKyAgICBjbGVhblVwKCk7Cit9Owor
CitmdW5jdGlvbiBhc3NlcnQocykgeworICAgIGlmICghcykKKyAgICAgICAgb25FcnJvcihuZXcg
RXJyb3IoIkFzc2VydGlvbiBmYWlsZWQuICIpKTsKK30KKwordmFyIGZpbGVFbnRyeUZvckNsZWFu
dXA7ICAvLyBTZXQgYXMgc29vbiBhcyB3ZSBoYXZlIG9uZS4KKworZnVuY3Rpb24gY2xlYW5VcCgp
IHsKKyAgdHJ5IHsKKyAgICBpZiAoZmlsZUVudHJ5Rm9yQ2xlYW51cCkKKyAgICAgIGZpbGVFbnRy
eUZvckNsZWFudXAucmVtb3ZlKGZpbmlzaEpTVGVzdCwgZmluaXNoSlNUZXN0KTsKKyAgfSBjYXRj
aCAoZXgpIHsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgfQorfQorCisvLyBHZW5lcmljIGZ1bmN0
aW9uIHRoYXQgZ2V0cyBhIEZpbGUgZnJvbSBhIEZpbGVFbnRyeSBhbmQgY2FsbHMgYQorLy8gY3Vz
dG9tIHZlcmlmaWNhdGlvbiBmdW5jdGlvbiBvbiBpdC4KK2Z1bmN0aW9uIHZlcmlmeUZpbGVDb250
ZW50cyhmaWxlRW50cnksIHZlcmlmeUZ1bmMsIGFyZzAsIGFyZzEsIG9uU3VjY2VzcykgeworICAg
IGZpbGVFbnRyeS5maWxlKAorICAgICAgICBmdW5jdGlvbihmaWxlKSB7CisgICAgICAgICAgICB2
ZXJpZnlGdW5jKGZpbGUsIGFyZzAsIGFyZzEsIG9uU3VjY2Vzcyk7CisgICAgICAgIH0sCisgICAg
ICAgIG9uRXJyb3IpOworfQorCisvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCB3aXRoIHZlcmlmeUZp
bGVDb250ZW50cy4KK2Z1bmN0aW9uIHZlcmlmeUZpbGVMZW5ndGhIZWxwZXIoZmlsZSwgbGVuZ3Ro
LCB1bnVzZWQsIG9uU3VjY2VzcykgeworICAgIGFzc2VydChmaWxlLnNpemUgPT0gbGVuZ3RoKTsK
KyAgICBvblN1Y2Nlc3MoKTsKK30KKworLy8gVmVyaWZpZXMgdGhhdCB0aGUgY29udGVudHMgb2Yg
ZmlsZUVudHJ5IGhhdmUgdGhlIHN1cHBsaWVkIGxlbmd0aC4KK2Z1bmN0aW9uIHZlcmlmeUZpbGVM
ZW5ndGgoZmlsZUVudHJ5LCBsZW5ndGgsIG9uU3VjY2VzcykgeworICAgIHZlcmlmeUZpbGVDb250
ZW50cyhmaWxlRW50cnksIHZlcmlmeUZpbGVMZW5ndGhIZWxwZXIsIGxlbmd0aCwgbnVsbCwgb25T
dWNjZXNzKTsKK30KKworLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgd2l0aCB2ZXJpZnlGaWxlQ29u
dGVudHMuCitmdW5jdGlvbiB2ZXJpZnlCeXRlUmFuZ2VJc1plcm9lc0hlbHBlcihmaWxlLCBzdGFy
dCwgbGVuZ3RoLCBvblN1Y2Nlc3MpIHsKKyAgICB2YXIgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVh
ZGVyKCk7CisgICAgZmlsZVJlYWRlci5vbmVycm9yID0gb25FcnJvcjsKKyAgICBmaWxlUmVhZGVy
Lm9ubG9hZCA9CisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIHJlc3VsdCA9
IGZpbGVSZWFkZXIucmVzdWx0OworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5n
dGg7IGkrKykKKyAgICAgICAgICAgICAgICBhc3NlcnQocmVzdWx0LmNoYXJDb2RlQXQoaSkgPT0g
MCk7CisgICAgICAgICAgICBvblN1Y2Nlc3MoKTsKKyAgICAgICAgfTsKKyAgICBmaWxlUmVhZGVy
LnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlLnNsaWNlKHN0YXJ0LCBsZW5ndGgpKTsKK30KKworLy8g
VmVyaWZpZXMgdGhhdCBmaWxlRW50cnksIGF0IG9mZnNldCwgaXMgYWxsIHplcm9lcyBmb3IgbGVu
Z3RoIGJ5dGVzLgorZnVuY3Rpb24gdmVyaWZ5Qnl0ZVJhbmdlSXNaZXJvZXMoZmlsZUVudHJ5LCBv
ZmZzZXQsIGxlbmd0aCwgb25TdWNjZXNzKSB7CisgICAgdmVyaWZ5RmlsZUNvbnRlbnRzKGZpbGVF
bnRyeSwgdmVyaWZ5Qnl0ZVJhbmdlSXNaZXJvZXNIZWxwZXIsIG9mZnNldCwgbGVuZ3RoLCBvblN1
Y2Nlc3MpOworfQorCisvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCB3aXRoIHZlcmlmeUZpbGVDb250
ZW50cy4KK2Z1bmN0aW9uIHZlcmlmeUJ5dGVSYW5nZUFzU3RyaW5nSGVscGVyKGZpbGUsIHN0YXJ0
LCBkYXRhLCBvblN1Y2Nlc3MpIHsKKyAgICB2YXIgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVy
KCk7CisgICAgZmlsZVJlYWRlci5vbmVycm9yID0gb25FcnJvcjsKKyAgICBmaWxlUmVhZGVyLm9u
bG9hZCA9CisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0KGZpbGVSZWFk
ZXIucmVzdWx0ID09IGRhdGEpOworICAgICAgICAgICAgb25TdWNjZXNzKCk7CisgICAgICAgIH07
CisgICAgZmlsZVJlYWRlci5yZWFkQXNUZXh0KGZpbGUuc2xpY2Uoc3RhcnQsIGRhdGEubGVuZ3Ro
KSk7Cit9CisKKy8vIFZlcmlmaWVzIHRoYXQgdGhlIGNvbnRlbnRzIG9mIGZpbGVFbnRyeSwgYXQg
b2Zmc2V0LCBtYXRjaCBjb250ZW50cyBbYQorLy8gc3RyaW5nXS4KK2Z1bmN0aW9uIHZlcmlmeUJ5
dGVSYW5nZUFzU3RyaW5nKGZpbGVFbnRyeSwgb2Zmc2V0LCBjb250ZW50cywgb25TdWNjZXNzKSB7
CisgICAgdmVyaWZ5RmlsZUNvbnRlbnRzKGZpbGVFbnRyeSwgdmVyaWZ5Qnl0ZVJhbmdlQXNTdHJp
bmdIZWxwZXIsIG9mZnNldCwgY29udGVudHMsIG9uU3VjY2Vzcyk7Cit9CisKKy8vIENyZWF0ZXMg
YSBmaWxlIGNhbGxlZCBmaWxlTmFtZSBpbiBmaWxlU3lzdGVtJ3Mgcm9vdCBkaXJlY3RvcnksCisv
LyB0cnVuY2F0ZXMgaXQgdG8gemVybyBsZW5ndGgganVzdCBpbiBjYXNlLCBhbmQgY2FsbHMgb25T
dWNjZXNzLAorLy8gcGFzc2luZyBpdCBhIEZpbGVFbnRyeSBhbmQgRmlsZVdyaXRlciBmb3IgdGhl
IG5ldyBmaWxlLgorZnVuY3Rpb24gY3JlYXRlRW1wdHlGaWxlKGZpbGVTeXN0ZW0sIGZpbGVOYW1l
LCBvblN1Y2Nlc3MpIHsKKyAgICBmdW5jdGlvbiBnZXRTdWNjZXNzRnVuYyhmaWxlRW50cnksIGZp
bGVXcml0ZXIpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgb25T
dWNjZXNzKGZpbGVFbnRyeSwgZmlsZVdyaXRlcik7CisgICAgICAgIH0KKyAgICB9CisgICAgZnVu
Y3Rpb24gZ2V0RmlsZVdyaXRlckNhbGxiYWNrKGZpbGVFbnRyeSkgeworICAgICAgICByZXR1cm4g
ZnVuY3Rpb24oZmlsZVdyaXRlcikgeworICAgICAgICAgICAgdmFyIHN1Y2Nlc3NGdW5jID0gZ2V0
U3VjY2Vzc0Z1bmMoZmlsZUVudHJ5LCBmaWxlV3JpdGVyKTsKKyAgICAgICAgICAgIGZpbGVXcml0
ZXIub25FcnJvciA9IG9uRXJyb3I7CisgICAgICAgICAgICBmaWxlV3JpdGVyLm9ud3JpdGUgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB2ZXJpZnlGaWxlTGVuZ3RoKGZpbGVFbnRyeSwg
MCwgc3VjY2Vzc0Z1bmMpOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGZpbGVXcml0ZXIu
dHJ1bmNhdGUoMCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZnVuY3Rpb24gb25GaWxlRW50cnko
ZmlsZUVudHJ5KSB7CisgICAgICAgIGZpbGVFbnRyeUZvckNsZWFudXAgPSBmaWxlRW50cnk7Cisg
ICAgICAgIHZhciBvbkZpbGVXcml0ZXIgPSBnZXRGaWxlV3JpdGVyQ2FsbGJhY2soZmlsZUVudHJ5
KTsKKyAgICAgICAgZmlsZUVudHJ5LmNyZWF0ZVdyaXRlcihvbkZpbGVXcml0ZXIsIG9uRXJyb3Ip
OworICAgIH0KKyAgICBhc3NlcnQoZmlsZVN5c3RlbSk7CisgICAgZmlsZVN5c3RlbS5yb290Lmdl
dEZpbGUoZmlsZU5hbWUsIHtjcmVhdGU6dHJ1ZX0sIG9uRmlsZUVudHJ5LCBvbkVycm9yKTsKK30K
KworZnVuY3Rpb24gd3JpdGVTdHJpbmcoZmlsZUVudHJ5LCBmaWxlV3JpdGVyLCBvZmZzZXQsIGRh
dGEsIG9uU3VjY2VzcykgeworICAgIHZhciBiYiA9IG5ldyBCbG9iQnVpbGRlcigpOworICAgIGJi
LmFwcGVuZChkYXRhKTsKKyAgICB2YXIgYmxvYiA9IGJiLmdldEJsb2IoKTsKKyAgICBmaWxlV3Jp
dGVyLnNlZWsob2Zmc2V0KTsKKyAgICBmaWxlV3JpdGVyLndyaXRlKGJsb2IpOworICAgIGZpbGVX
cml0ZXIub253cml0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2ZXJpZnlCeXRlUmFuZ2VBc1N0
cmluZyhmaWxlRW50cnksIG9mZnNldCwgZGF0YSwgb25TdWNjZXNzKTsKKyAgICB9OworfQorCitm
dW5jdGlvbiBzZXR1cEFuZFJ1blRlc3Qoc2l6ZSwgdGVzdE5hbWUsIHRlc3RGdW5jKSB7CisgICAg
aWYgKCFyZXF1ZXN0RmlsZVN5c3RlbSkgeworICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVp
cmVzIEZpbGVTeXN0ZW0gQVBJIHN1cHBvcnQuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgZGVidWcoInN0YXJ0aW5nIHRlc3QiKTsKKyAgICByZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JB
UlksIHNpemUsIGZ1bmN0aW9uKGZzKSB7CisgICAgICAgIGNyZWF0ZUVtcHR5RmlsZShmcywgdGVz
dE5hbWUsIHRlc3RGdW5jKTsKKyAgICB9LCBvbkVycm9yKTsKK30KKwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLWNv
bW1vbi5qcwkocmV2aXNpb24gNzA1OTApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
cmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMJKHdvcmtpbmcgY29weSkKQEAgLTUsNiArNSw3
IEBAIGZ1bmN0aW9uIGRlYnVnKG1lc3NhZ2UpCiAKIGZ1bmN0aW9uIGZpbmlzaEpTVGVzdCgpCiB7
CisgICAgc2hvdWxkQmVUcnVlKCJzdWNjZXNzZnVsbHlQYXJzZWQiKTsKICAgICBwb3N0TWVzc2Fn
ZSgiRE9ORSIpOwogfQogCkBAIC0xMyw2ICsxNCwxNCBAQCBmdW5jdGlvbiBkZXNjcmlwdGlvbiht
ZXNzYWdlKQogICAgIHBvc3RNZXNzYWdlKCdEZXNjcmlwdGlvbjogJyArIG1lc3NhZ2UpOwogfQog
CitmdW5jdGlvbiB0ZXN0UGFzc2VkKG1zZykgeworICAgIHBvc3RNZXNzYWdlKCJQQVNTOiIgKyBt
c2cpOworfQorCitmdW5jdGlvbiB0ZXN0RmFpbGVkKG1zZykgeworICAgIHBvc3RNZXNzYWdlKCJG
QUlMOiIgKyBtc2cpOworfQorCiBmdW5jdGlvbiBzaG91bGRCZShfYSwgX2IpCiB7CiAgIGlmICh0
eXBlb2YgX2EgIT0gInN0cmluZyIgfHwgdHlwZW9mIF9iICE9ICJzdHJpbmciKQpAQCAtMjAsOSAr
MjksOSBAQCBmdW5jdGlvbiBzaG91bGRCZShfYSwgX2IpCiAgIHZhciBfYXYgPSBldmFsKF9hKTsK
ICAgdmFyIF9idiA9IGV2YWwoX2IpOwogICBpZiAoX2F2ID09PSBfYnYpCi0gICAgZGVidWcoIlBB
U1M6ICIgKyBfYSArICIgaXMgIiArIF9iKTsKKyAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyAiICsg
X2IpOwogICBlbHNlCi0gICAgZGVidWcoIkZBSUw6ICIgKyBfYSArICIgc2hvdWxkIGJlICIgKyBf
YnYgKyAiIChvZiB0eXBlICIgKyB0eXBlb2YgX2J2ICsgIikuIFdhcyAiICsgX2F2ICsgIiAob2Yg
dHlwZSAiICsgdHlwZW9mIF9hdiArICIpLiIpOworICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3Vs
ZCBiZSAiICsgX2J2ICsgIiAob2YgdHlwZSAiICsgdHlwZW9mIF9idiArICIpLiBXYXMgIiArIF9h
diArICIgKG9mIHR5cGUgIiArIHR5cGVvZiBfYXYgKyAiKS4iKTsKIH0KIAogZnVuY3Rpb24gc2hv
dWxkQmVUcnVlKF9hKSB7IHNob3VsZEJlKF9hLCAidHJ1ZSIpOyB9CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXBvc3QuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXIt
dGVzdC1wb3N0LmpzCShyZXZpc2lvbiA3MDU5MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcG9zdC5qcwkod29ya2luZyBjb3B5KQpAQCAt
MSw0ICsxLDUgQEAKIHdhc1Bvc3RUZXN0U2NyaXB0UGFyc2VkID0gdHJ1ZTsKK3N1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CiAKIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10
ZXN0LXByZS5qcwkocmV2aXNpb24gNzA1OTApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwx
MCArMSw0IEBACi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLQotZnVuY3Rpb24gZGVidWcobWVzc2FnZSkKLXsK
LSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSBtZXNz
YWdlICsgIjxici8+IjsKLX0KK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIAogZnVuY3Rp
b24gc3RhcnRXb3JrZXIodGVzdFNjcmlwdFVSTCkKIHsKQEAgLTEyLDkgKzYsMTcgQEAgZnVuY3Rp
b24gc3RhcnRXb3JrZXIodGVzdFNjcmlwdFVSTCkKICAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtl
cih0ZXN0U2NyaXB0VVJMKTsKICAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQp
CiAgICAgewotICAgICAgICBkZWJ1ZyhldmVudC5kYXRhKTsKLSAgICAgICAgaWYgKGV2ZW50LmRh
dGEgPT0gIkRPTkUiKQorICAgICAgICBpZiAoZXZlbnQuZGF0YS5zdWJzdHJpbmcoMCwgNSkgPT0g
IlBBU1M6IikgeworICAgICAgICAgICAgdGVzdFBhc3NlZChldmVudC5kYXRhLnN1YnN0cmluZyg1
KSk7CisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YS5zdWJzdHJpbmcoMCwgNSkgPT0gIkZB
SUw6IikgeworICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudC5kYXRhLnN1YnN0cmluZyg1KSk7
CisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YS5zdWJzdHJpbmcoMCwgMTMpID09ICJEZXNj
cmlwdGlvbjogIikgeworICAgICAgICAgICAgZGVzY3JpcHRpb24oZXZlbnQuZGF0YS5zdWJzdHJp
bmcoMTMpKTsKKyAgICAgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJET05FIikgewogICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBk
ZWJ1ZyhldmVudC5kYXRhKTsKKyAgICAgICAgfQogICAgIH07CiAKICAgICB3b3JrZXIub25lcnJv
ciA9IGZ1bmN0aW9uKGV2ZW50KQpAQCAtMjQsMTMgKzI2LDMgQEAgZnVuY3Rpb24gc3RhcnRXb3Jr
ZXIodGVzdFNjcmlwdFVSTCkKICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgfQogfQotCi1m
dW5jdGlvbiBmaW5pc2hKU1Rlc3QoKQotewotICAgIHdhc0ZpbmlzaEpTVGVzdENhbGxlZCA9IHRy
dWU7Ci0gICAgaWYgKCF3aW5kb3cud2FzUG9zdFRlc3RTY3JpcHRQYXJzZWQpCi0gICAgICAgIHJl
dHVybjsKLSAgICBkZWJ1ZygnPGJyIC8+PHNwYW4gY2xhc3M9InBhc3MiPlRFU1QgQ09NUExFVEU8
L3NwYW4+Jyk7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotfQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXBl
cnNpc3RlbnQtc3luYy5qcwkocmV2aXNpb24gNzA1OTApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTEwLDUgKzEwLDUgQEAgdmFyIGZpbGVTeXN0ZW0gPSByZXF1ZXN0RmlsZVN5c3RlbVN5
bmMoUAogZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBQRVJTSVNURU5UIEZpbGVTeXN0ZW06
IiArIGZpbGVTeXN0ZW0ubmFtZSk7CiBzaG91bGRCZVRydWUoImZpbGVTeXN0ZW0ubmFtZS5sZW5n
dGggPiAwIik7CiBzaG91bGRCZSgiZmlsZVN5c3RlbS5yb290LmZ1bGxQYXRoIiwgJyIvIicpOwot
ZmluaXNoSlNUZXN0KCk7CiB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKK2ZpbmlzaEpT
VGVzdCgpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1w
bGUtdGVtcG9yYXJ5LXN5bmMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMuanMJKHJldmlzaW9uIDcwNTkw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtdGVtcG9y
YXJ5LXN5bmMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEwLDUgKzEwLDUgQEAgdmFyIGZpbGVTeXN0
ZW0gPSByZXF1ZXN0RmlsZVN5c3RlbVN5bmMoVAogZGVidWcoIlN1Y2Nlc3NmdWxseSBvYnRhaW5l
ZCBURU1QT1JBUlkgRmlsZVN5c3RlbToiICsgZmlsZVN5c3RlbS5uYW1lKTsKIHNob3VsZEJlVHJ1
ZSgiZmlsZVN5c3RlbS5uYW1lLmxlbmd0aCA+IDAiKTsKIHNob3VsZEJlKCJmaWxlU3lzdGVtLnJv
b3QuZnVsbFBhdGgiLCAnIi8iJyk7Ci1maW5pc2hKU1Rlc3QoKTsKIHZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworZmluaXNoSlNUZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcwkocmV2
aXNpb24gNzA1OTApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3N5
bmMtb3BlcmF0aW9ucy5qcwkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNSBAQCBwYXRocy5z
b3J0KCk7CiBzaG91bGRCZSgnIicgKyBwYXRocy5qb2luKCcsJykgKyAnIicsICciL2EsL2IsL2Ms
L2QyLC9lLC9mIicpOwogc2hvdWxkQmUoImRpcnNDb3VudCIsICIzIik7CiByZW1vdmVBbGxJbkRp
cmVjdG9yeVN5bmMoZmlsZVN5c3RlbS5yb290KTsKLWZpbmlzaEpTVGVzdCgpOwotCiB2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKK2ZpbmlzaEpTVGVzdCgpOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvYXN5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvYXN5bmMt
b3BlcmF0aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDcwNTkwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvYXN5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTUgKzEsMTggQEAKLVRoaXMgdGVzdHMgcnVubmluZyBtdWx0aXBs
ZSBhc3luYyBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgaW4gV29ya2VyLgorVGVzdCBtYWtpbmcgbXVs
dGlwbGUgYXN5bmMgRmlsZVN5c3RlbSBvcGVyYXRpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKIAogU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvYXN5bmMtb3BlcmF0aW9u
cy5qcwotRGVzY3JpcHRpb246IFRlc3QgbWFraW5nIG11bHRpcGxlIGFzeW5jIEZpbGVTeXN0ZW0g
b3BlcmF0aW9ucy4KIHJlcXVlc3RlZCBGaWxlU3lzdGVtLgogR290IEZpbGVTeXN0ZW06ZmlsZV9f
MDpUZW1wb3JhcnkKIFN0YXJ0aW5nIGFzeW5jIHRlc3Qgc3RhZ2UgMS4KIFN0YXJ0aW5nIGFzeW5j
IHRlc3Qgc3RhZ2UgMi4KIFZlcmlmeWluZyB0aGUgRmlsZVN5c3RlbSBzdGF0dXMuCi1QQVNTOiAi
L2EsL2IsL2MsL2QyLC9lLC9mIiBpcyAiL2EsL2IsL2MsL2QyLC9lLC9mIgotUEFTUzogZGlyc0Nv
dW50IGlzIDMKLURPTkUKK1BBU1MgIi9hLC9iLC9jLC9kMiwvZSwvZiIgaXMgIi9hLC9iLC9jLC9k
MiwvZSwvZiIKK1BBU1MgZGlyc0NvdW50IGlzIDMKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQog
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9hc3luYy1vcGVyYXRp
b25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtl
cnMvYXN5bmMtb3BlcmF0aW9ucy5odG1sCShyZXZpc2lvbiA3MDU5MCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1m
aWxlLWVudHJ5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDcwNTkwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1m
cm9tLWZpbGUtZW50cnktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICsxLDE0
IEBACi1UaGlzIHRlc3RzIHJldHVybmluZyBGaWxlIGZyb20gRmlsZUVudHJ5IGluIHdvcmtlcnMu
CitPYnRhaW5pbmcgRmlsZSBmcm9tIEZpbGVFbnRyeS4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCiAKIFN0YXJ0aW5nIHdvcmtlcjogLi4vcmVzb3VyY2VzL2ZpbGUtZnJvbS1maWxlLWVu
dHJ5LmpzCi1EZXNjcmlwdGlvbjogT2J0YWluaW5nIEZpbGUgZnJvbSBGaWxlRW50cnkuCi1QQVNT
OiB0ZXN0RmlsZS5uYW1lIGlzIHRlc3RGaWxlRW50cnkubmFtZQotUEFTUzogdGVzdEZpbGUudHlw
ZSBpcyAndGV4dC9wbGFpbicKLVBBU1M6IHRlc3RGaWxlLnNpemUgaXMgMAotRE9ORQorUEFTUyB0
ZXN0RmlsZS5uYW1lIGlzIHRlc3RGaWxlRW50cnkubmFtZQorUEFTUyB0ZXN0RmlsZS50eXBlIGlz
ICd0ZXh0L3BsYWluJworUEFTUyB0ZXN0RmlsZS5zaXplIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBD
T01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxl
LWZyb20tZmlsZS1lbnRyeS1zeW5jLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gNzA1OTApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMSArMSwxNCBAQAotVGhpcyB0ZXN0cyByZXR1cm5pbmcgRmlsZSBmcm9t
IEZpbGVFbnRyeVN5bmMgaW4gd29ya2Vycy4KK09idGFpbmluZyBGaWxlIGZyb20gRmlsZUVudHJ5
U3luYy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCiAKIFN0YXJ0aW5nIHdvcmtlcjog
Li4vcmVzb3VyY2VzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5bmMuanMKLURlc2NyaXB0aW9uOiBP
YnRhaW5pbmcgRmlsZSBmcm9tIEZpbGVFbnRyeVN5bmMuCi1QQVNTOiB0ZXN0RmlsZS5uYW1lIGlz
IHRlc3RGaWxlRW50cnkubmFtZQotUEFTUzogdGVzdEZpbGUudHlwZSBpcyAndGV4dC9wbGFpbicK
LVBBU1M6IHRlc3RGaWxlLnNpemUgaXMgMAotRE9ORQorUEFTUyB0ZXN0RmlsZS5uYW1lIGlzIHRl
c3RGaWxlRW50cnkubmFtZQorUEFTUyB0ZXN0RmlsZS50eXBlIGlzICd0ZXh0L3BsYWluJworUEFT
UyB0ZXN0RmlsZS5zaXplIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1z
eW5jLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtl
cnMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy5odG1sCShyZXZpc2lvbiA3MDU5MCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5
bmMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIDxodG1sPgogPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93
b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnkuaHRtbAkocmV2
aXNpb24gNzA1OTApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxl
LWZyb20tZmlsZS1lbnRyeS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogPGh0
bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9m
aWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItdHJ1bmNhdGUt
ZXh0ZW5kLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorVGVzdCBv
ZiBleHRlbmRpbmcgYSBmaWxlIHVzaW5nIHRydW5jYXRlKCkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1
bmNhdGUtZXh0ZW5kLmpzCitzdGFydGluZyB0ZXN0CitQQVNTIFRydW5jYXRlIGV4dGVuc2lvbiB2
ZXJpZmllZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdy
aXRlci10cnVuY2F0ZS1leHRlbmQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorIDxo
ZWFkPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKyAgICA8dGl0bGU+RmlsZSBXcml0ZXIgVHJ1bmNhdGUtVG8t
RXh0ZW5kIFdvcmtlcjwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9mcy13b3JrZXItdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorIDwvaGVhZD4KKyA8Ym9keT4KKyAg
ICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgICAgPHNjcmlwdD4KKyAgICAgICAgc3RhcnRXb3JrZXIoIi4uL3Jlc291cmNlcy9maWxl
LXdyaXRlci10cnVuY2F0ZS1leHRlbmQuanMiKTsKKyAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9mcy13b3JrZXItdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyA8L2JvZHk+Cis8L2h0bWw+
CisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBl
cnNpc3RlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
NzA1OTApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVy
c2lzdGVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzEsMTQgQEAKLVRo
aXMgdGVzdHMgcmVxdWVzdGluZyBQRVJTSVNURU5UIEZpbGVTeXN0ZW0gaW4gV29ya2VyLgorcmVx
dWVzdEZpbGVTeXN0ZW0gUEVSU0lTVEVOVCB0ZXN0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKIAogU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvc2ltcGxlLXBlcnNpc3RlbnQu
anMKLURlc2NyaXB0aW9uOiByZXF1ZXN0RmlsZVN5c3RlbSBQRVJTSVNURU5UIHRlc3QuCiBTdWNj
ZXNzZnVsbHkgb2J0YWluZWQgUEVSU0lTVEVOVCBGaWxlU3lzdGVtOmZpbGVfXzA6UGVyc2lzdGVu
dAotUEFTUzogZmlsZVN5c3RlbS5uYW1lLmxlbmd0aCA+IDAgaXMgdHJ1ZQotUEFTUzogZmlsZVN5
c3RlbS5yb290LmZ1bGxQYXRoIGlzICIvIgotRE9ORQorUEFTUyBmaWxlU3lzdGVtLm5hbWUubGVu
Z3RoID4gMCBpcyB0cnVlCitQQVNTIGZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCBpcyAiLyIKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVu
dC1zeW5jLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzA1OTApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSwxNCBAQAotVGhpcyB0ZXN0cyByZXF1ZXN0aW5nIFBF
UlNJU1RFTlQgRmlsZVN5c3RlbVN5bmMgaW4gV29ya2VyLgorcmVxdWVzdEZpbGVTeXN0ZW1TeW5j
IFBFUlNJU1RFTlQgdGVzdC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCiAKIFN0YXJ0
aW5nIHdvcmtlcjogLi4vcmVzb3VyY2VzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMuanMKLURlc2Ny
aXB0aW9uOiByZXF1ZXN0RmlsZVN5c3RlbVN5bmMgUEVSU0lTVEVOVCB0ZXN0LgogU3VjY2Vzc2Z1
bGx5IG9idGFpbmVkIFBFUlNJU1RFTlQgRmlsZVN5c3RlbTpmaWxlX18wOlBlcnNpc3RlbnQKLVBB
U1M6IGZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRydWUKLVBBU1M6IGZpbGVTeXN0ZW0u
cm9vdC5mdWxsUGF0aCBpcyAiLyIKLURPTkUKK1BBU1MgZmlsZVN5c3RlbS5uYW1lLmxlbmd0aCA+
IDAgaXMgdHJ1ZQorUEFTUyBmaWxlU3lzdGVtLnJvb3QuZnVsbFBhdGggaXMgIi8iCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CiAKIFRFU1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dv
cmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQtc3luYy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMuaHRtbAko
cmV2aXNpb24gNzA1OTApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9z
aW1wbGUtcGVyc2lzdGVudC1zeW5jLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItY29t
bW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXIt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0
ZW50Lmh0bWwJKHJldmlzaW9uIDcwNTkwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDYgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtl
ci1jb21tb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdv
cmtlci10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3JhcnktZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3Np
bXBsZS10ZW1wb3JhcnktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3MDU5MCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3JhcnktZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICsxLDE0IEBACi1UaGlzIHRlc3RzIHJlcXVlc3Rpbmcg
VEVNUE9SQVJZIEZpbGVTeXN0ZW0gaW4gV29ya2VyLgorcmVxdWVzdEZpbGVTeXN0ZW0gVEVNUE9S
QVJZIHRlc3QuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwogCiBTdGFydGluZyB3b3Jr
ZXI6IC4uL3Jlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LmpzCi1EZXNjcmlwdGlvbjogcmVxdWVz
dEZpbGVTeXN0ZW0gVEVNUE9SQVJZIHRlc3QuCiBTdWNjZXNzZnVsbHkgb2J0YWluZWQgVEVNUE9S
QVJZIEZpbGVTeXN0ZW06ZmlsZV9fMDpUZW1wb3JhcnkKLVBBU1M6IGZpbGVTeXN0ZW0ubmFtZS5s
ZW5ndGggPiAwIGlzIHRydWUKLVBBU1M6IGZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCBpcyAiLyIK
LURPTkUKK1BBU1MgZmlsZVN5c3RlbS5uYW1lLmxlbmd0aCA+IDAgaXMgdHJ1ZQorUEFTUyBmaWxl
U3lzdGVtLnJvb3QuZnVsbFBhdGggaXMgIi8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIApJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFy
eS1zeW5jLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biA3MDU5MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10
ZW1wb3Jhcnktc3luYy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzEsMTQg
QEAKLVRoaXMgdGVzdHMgcmVxdWVzdGluZyBURU1QT1JBUlkgRmlsZVN5c3RlbVN5bmMgaW4gV29y
a2VyLgorcmVxdWVzdEZpbGVTeXN0ZW1TeW5jIFRFTVBPUkFSWSB0ZXN0LgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKIAogU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvc2ltcGxl
LXRlbXBvcmFyeS1zeW5jLmpzCi1EZXNjcmlwdGlvbjogcmVxdWVzdEZpbGVTeXN0ZW1TeW5jIFRF
TVBPUkFSWSB0ZXN0LgogU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVt
OmZpbGVfXzA6VGVtcG9yYXJ5Ci1QQVNTOiBmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0
cnVlCi1QQVNTOiBmaWxlU3lzdGVtLnJvb3QuZnVsbFBhdGggaXMgIi8iCi1ET05FCitQQVNTIGZp
bGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRydWUKK1BBU1MgZmlsZVN5c3RlbS5yb290LmZ1
bGxQYXRoIGlzICIvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCiAKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10
ZW1wb3Jhcnktc3luYy5odG1sCShyZXZpc2lvbiA3MDU5MCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDYgKzEsNiBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBv
cmFyeS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL3NpbXBsZS10ZW1wb3JhcnkuaHRtbAkocmV2aXNpb24gNzA1OTApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zeW5jLW9wZXJh
dGlvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL3N5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDcwNTkw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25z
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMSwxMyBAQAotVGhpcyB0ZXN0
cyBydW5uaW5nIG11bHRpcGxlIHN5bmMgZmlsZXN5c3RlbSBvcGVyYXRpb25zIGluIFdvcmtlci4K
K1Rlc3QgbWFraW5nIG11bHRpcGxlIHN5bmNocm9ub3VzIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucy4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCiAKIFN0YXJ0aW5nIHdvcmtlcjogLi4vcmVz
b3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcwotRGVzY3JpcHRpb246IFRlc3QgbWFraW5nIG11bHRp
cGxlIHN5bmNocm9ub3VzIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucy4KLVBBU1M6ICIvYSwvYiwvYywv
ZDIsL2UsL2YiIGlzICIvYSwvYiwvYywvZDIsL2UsL2YiCi1QQVNTOiBkaXJzQ291bnQgaXMgMwot
RE9ORQorUEFTUyAiL2EsL2IsL2MsL2QyLC9lLC9mIiBpcyAiL2EsL2IsL2MsL2QyLC9lLC9mIgor
UEFTUyBkaXJzQ291bnQgaXMgMworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCiAKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3N5bmMtb3BlcmF0aW9ucy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3N5bmMtb3Bl
cmF0aW9ucy5odG1sCShyZXZpc2lvbiA3MDU5MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL3N5bmMtb3BlcmF0aW9ucy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNiBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29y
a2VyLWNvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMt
d29ya2VyLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dAkocmV2aXNpb24gNzA1OTApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0
X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMxNjksOSArMzE2OSw2IEBAIEJV
RzU4MzM3IDogcGxhdGZvcm0vZ3RrL2ZvbnRzL2ZvbnRjb25maWcKIC8vIEZyb20gcjY5MzM0LiBN
YXNrIHNlZW1zIGJyb2tlbiBvbiB0aGUgcmVmbGVjdGVkIGltYWdlLgogQlVHNTgzNTggV0lOIExJ
TlVYIDogZmFzdC9jc3MvdHJhbnNmb3JtZWQtbWFzay5odG1sID0gSU1BR0UrVEVYVAogCi0vLyBG
aWxlV3JpdGVyIGlzbid0IGluIFRlc3RTaGVsbCB5ZXQuCi1CVUc1ODU4NyBTS0lQIDogZmFzdC9m
aWxlc3lzdGVtL2ZpbGUtd3JpdGVyLWdjLWJsb2IuaHRtbCA9IEZBSUwKLQogLy8gRmFpbGluZyBz
b21ld2hlcmUgYmV0d2VlbiBhZnRlciBXZWJraXQgcjY5MzY3IGFuZCByNjk0MTcuCiBCVUc1ODk3
MCBMSU5VWCA6IHN2Zy90ZXh0L3RleHQtdHNlbGVjdC0wMi1mLnN2ZyA9IElNQUdFIFBBU1MKIEJV
RzU4OTMxIFdJTiBMSU5VWCA6IHN2Zy9XM0MtU1ZHLTEuMS9wc2VydmVycy1ncmFkLTE3LWIuc3Zn
ID0gSU1BR0UgUEFTUwpAQCAtMzI1NCw0ICszMjUxLDQgQEAgQlVHV0s0ODM1MiA6IGZhc3QvYmxv
Y2tmbG93L2Jsb2NrLWxldmVsLQogQlVHV0s0ODE2NCA6IHBsdWdpbnMvaW52YWxpZC1taW1lLXdp
dGgtdmFsaWQtZXh0ZW5zaW9uLXNob3dzLW1pc3NpbmctcGx1Z2luLmh0bWwgPSBURVhUCiAKIC8v
IENocm9taXVtLW1hYy1zcGVjaWZpYyB0ZXN0LCBhbmQgb25seSBydW5zIGluIERSVC4KLUJVR1dL
NDY4NjggOiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3RleHQvY2hyb21pdW0tbWFjLWR1cGxpY2F0
ZS1pbWUtY29tcG9zaXRpb24uaHRtbCA9IFRFWFQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CitCVUdXSzQ2ODY4IDogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC90ZXh0L2Nocm9taXVtLW1hYy1k
dXBsaWNhdGUtaW1lLWNvbXBvc2l0aW9uLmh0bWwgPSBURVhUCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72279</attachid>
            <date>2010-10-28 18:09:49 -0700</date>
            <delta_ts>2010-11-08 17:19:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47680-20101028180948.patch</filename>
            <type>text/plain</type>
            <size>34545</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci10cnVuY2F0ZS1l
eHRlbmQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4
dGVuZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorVGVzdCBvZiBl
eHRlbmRpbmcgYSBmaWxlIHVzaW5nIHRydW5jYXRlKCkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworc3RhcnRpbmcgdGVzdAorUEFTUyBUcnVuY2F0ZSBleHRlbnNpb24gdmVyaWZpZWQu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0
ZXItdHJ1bmNhdGUtZXh0ZW5kLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTcgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgPGhlYWQ+CisgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiPgorICAgIDx0aXRsZT5GaWxlIFdyaXRlciBUcnVuY2F0ZS1Uby1FeHRlbmQ8L3RpdGxl
PgorICAgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZmlsZS13cml0ZXItdXRpbHMuanMiPjwv
c2NyaXB0PgorIDwvaGVhZD4KKyA8Ym9keT4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9k
aXY+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgPHNjcmlwdCBzcmM9InJlc291
cmNlcy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyA8L2Jv
ZHk+Cis8L2h0bWw+CisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291
cmNlcy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy5q
cwkocmV2aXNpb24gNzA4MjYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3Vy
Y2VzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5bmMuanMJKHdvcmtpbmcgY29weSkKQEAgLTE2LDUg
KzE2LDUgQEAgc2hvdWxkQmUoInRlc3RGaWxlLnR5cGUiLCAiJ3RleHQvcGxhaW4nIgogc2hvdWxk
QmUoInRlc3RGaWxlLnNpemUiLCAiMCIpOwogCiByZW1vdmVBbGxJbkRpcmVjdG9yeVN5bmMoZmls
ZVN5c3RlbS5yb290KTsKLWZpbmlzaEpTVGVzdCgpOwogdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CitmaW5pc2hKU1Rlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1bmNh
dGUtZXh0ZW5kLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3Jlc291cmNlcy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuanMJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzkgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3Jp
cHRzKCdmcy13b3JrZXItY29tbW9uLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnZmlsZS13cml0
ZXItdXRpbHMuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qgb2YgZXh0ZW5kaW5nIGEgZmls
ZSB1c2luZyB0cnVuY2F0ZSgpLiIpOworCitmdW5jdGlvbiBvblRlc3RTdWNjZWVkZWQoKQorewor
ICAgIHRlc3RQYXNzZWQoIlRydW5jYXRlIGV4dGVuc2lvbiB2ZXJpZmllZC4iKTsKKyAgICBjbGVh
blVwKCk7Cit9CisKK2Z1bmN0aW9uIHRydW5jYXRlVG9FeHRlbmQoZmlsZUVudHJ5LCBmaWxlV3Jp
dGVyLCBjb250ZW50cywgb25TdWNjZXNzKQoreworICAgIHZhciBleHRlbnNpb24gPSA1OworICAg
IHZhciBsZW5ndGhDaGVja2VyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZlcmlmeUZpbGVMZW5n
dGgoZmlsZUVudHJ5LCBjb250ZW50cy5sZW5ndGggKyBleHRlbnNpb24sIG9uU3VjY2Vzcyk7Cisg
ICAgfTsKKyAgICB2YXIgZXh0ZW5zaW9uQ2hlY2tlciA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2
ZXJpZnlCeXRlUmFuZ2VJc1plcm9lcyhmaWxlRW50cnksIGNvbnRlbnRzLmxlbmd0aCwgZXh0ZW5z
aW9uLCBsZW5ndGhDaGVja2VyKTsKKyAgICB9OworICAgIGZpbGVXcml0ZXIub253cml0ZSA9IGZ1
bmN0aW9uKCkgeworICAgICAgICB2ZXJpZnlCeXRlUmFuZ2VBc1N0cmluZyhmaWxlRW50cnksIDAs
IGNvbnRlbnRzLCBleHRlbnNpb25DaGVja2VyKTsKKyAgICB9OworICAgIGZpbGVXcml0ZXIudHJ1
bmNhdGUoY29udGVudHMubGVuZ3RoICsgZXh0ZW5zaW9uKTsKK30KKworZnVuY3Rpb24gcnVuVGVz
dChmaWxlRW50cnksIGZpbGVXcml0ZXIpIHsKKyAgICB2YXIgY29udGVudHMgPSAiTG9yZW0gaXBz
dW0iOworICAgIHdyaXRlU3RyaW5nKGZpbGVFbnRyeSwgZmlsZVdyaXRlciwgMCwgY29udGVudHMs
CisgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHRydW5j
YXRlVG9FeHRlbmQoZmlsZUVudHJ5LCBmaWxlV3JpdGVyLCBjb250ZW50cywgb25UZXN0U3VjY2Vl
ZGVkKTsKKyAgICAgICAgICAgICAgICB9KTsKK30KKwordmFyIGpzVGVzdElzQXN5bmMgPSB0cnVl
Oworc2V0dXBBbmRSdW5UZXN0KDEwMjQsICdmaWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQnLCBy
dW5UZXN0KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci11dGlscy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVy
LXV0aWxzLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jl
c291cmNlcy9maWxlLXdyaXRlci11dGlscy5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTIg
QEAKK2Z1bmN0aW9uIHN0cmluZ2lmeU9iaihvKQoreworICAgIHMgPSAiIjsKKyAgICBpZiAobykK
KyAgICAgICAgZm9yIChpbmRleCBpbiBvKSB7CisgICAgICAgICAgICBzICs9IGluZGV4ICsgIjog
IiArIG9baW5kZXhdICsgIjsiOworICAgICAgICB9CisgICAgcmV0dXJuIHM7Cit9CisKK2Z1bmN0
aW9uIG9uRXJyb3IoZSkKK3sKKyAgICB0ZXN0RmFpbGVkKCJHb3QgZXJyb3I6ICIgKyBzdHJpbmdp
ZnlPYmooZSkpOworICAgIGNsZWFuVXAoKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0KHMpCit7Cisg
ICAgaWYgKCFzKQorICAgICAgICBvbkVycm9yKG5ldyBFcnJvcigiQXNzZXJ0aW9uIGZhaWxlZC4g
IikpOworfQorCit2YXIgZmlsZUVudHJ5Rm9yQ2xlYW51cDsgIC8vIFNldCBhcyBzb29uIGFzIHdl
IGhhdmUgb25lLgorCitmdW5jdGlvbiBjbGVhblVwKCkKK3sKKyAgICB0cnkgeworICAgICAgICBp
ZiAoZmlsZUVudHJ5Rm9yQ2xlYW51cCkKKyAgICAgICAgICAgIGZpbGVFbnRyeUZvckNsZWFudXAu
cmVtb3ZlKGZpbmlzaEpTVGVzdCwgZmluaXNoSlNUZXN0KTsKKyAgICB9IGNhdGNoIChleCkgewor
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9CisKKy8vIEdlbmVyaWMgZnVuY3Rpb24g
dGhhdCBnZXRzIGEgRmlsZSBmcm9tIGEgRmlsZUVudHJ5IGFuZCBjYWxscyBhCisvLyBjdXN0b20g
dmVyaWZpY2F0aW9uIGZ1bmN0aW9uIG9uIGl0LgorZnVuY3Rpb24gdmVyaWZ5RmlsZUNvbnRlbnRz
KGZpbGVFbnRyeSwgdmVyaWZ5RnVuYywgYXJnMCwgYXJnMSwgb25TdWNjZXNzKQoreworICAgIGZp
bGVFbnRyeS5maWxlKAorICAgICAgICBmdW5jdGlvbihmaWxlKSB7CisgICAgICAgICAgICB2ZXJp
ZnlGdW5jKGZpbGUsIGFyZzAsIGFyZzEsIG9uU3VjY2Vzcyk7CisgICAgICAgIH0sCisgICAgICAg
IG9uRXJyb3IpOworfQorCisvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCB3aXRoIHZlcmlmeUZpbGVD
b250ZW50cy4KK2Z1bmN0aW9uIHZlcmlmeUZpbGVMZW5ndGhIZWxwZXIoZmlsZSwgbGVuZ3RoLCB1
bnVzZWQsIG9uU3VjY2VzcykKK3sKKyAgICBhc3NlcnQoZmlsZS5zaXplID09IGxlbmd0aCk7Cisg
ICAgb25TdWNjZXNzKCk7Cit9CisKKy8vIFZlcmlmaWVzIHRoYXQgdGhlIGNvbnRlbnRzIG9mIGZp
bGVFbnRyeSBoYXZlIHRoZSBzdXBwbGllZCBsZW5ndGguCitmdW5jdGlvbiB2ZXJpZnlGaWxlTGVu
Z3RoKGZpbGVFbnRyeSwgbGVuZ3RoLCBvblN1Y2Nlc3MpCit7CisgICAgdmVyaWZ5RmlsZUNvbnRl
bnRzKGZpbGVFbnRyeSwgdmVyaWZ5RmlsZUxlbmd0aEhlbHBlciwgbGVuZ3RoLCBudWxsLCBvblN1
Y2Nlc3MpOworfQorCisvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCB3aXRoIHZlcmlmeUZpbGVDb250
ZW50cy4KK2Z1bmN0aW9uIHZlcmlmeUJ5dGVSYW5nZUlzWmVyb2VzSGVscGVyKGZpbGUsIHN0YXJ0
LCBsZW5ndGgsIG9uU3VjY2VzcykKK3sKKyAgICB2YXIgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVh
ZGVyKCk7CisgICAgZmlsZVJlYWRlci5vbmVycm9yID0gb25FcnJvcjsKKyAgICBmaWxlUmVhZGVy
Lm9ubG9hZCA9CisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIHJlc3VsdCA9
IGZpbGVSZWFkZXIucmVzdWx0OworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5n
dGg7IGkrKykKKyAgICAgICAgICAgICAgICBhc3NlcnQocmVzdWx0LmNoYXJDb2RlQXQoaSkgPT0g
MCk7CisgICAgICAgICAgICBvblN1Y2Nlc3MoKTsKKyAgICAgICAgfTsKKyAgICBmaWxlUmVhZGVy
LnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlLnNsaWNlKHN0YXJ0LCBsZW5ndGgpKTsKK30KKworLy8g
VmVyaWZpZXMgdGhhdCBmaWxlRW50cnksIGF0IG9mZnNldCwgaXMgYWxsIHplcm9lcyBmb3IgbGVu
Z3RoIGJ5dGVzLgorZnVuY3Rpb24gdmVyaWZ5Qnl0ZVJhbmdlSXNaZXJvZXMoZmlsZUVudHJ5LCBv
ZmZzZXQsIGxlbmd0aCwgb25TdWNjZXNzKQoreworICAgIHZlcmlmeUZpbGVDb250ZW50cyhmaWxl
RW50cnksIHZlcmlmeUJ5dGVSYW5nZUlzWmVyb2VzSGVscGVyLCBvZmZzZXQsIGxlbmd0aCwgb25T
dWNjZXNzKTsKK30KKworLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgd2l0aCB2ZXJpZnlGaWxlQ29u
dGVudHMuCitmdW5jdGlvbiB2ZXJpZnlCeXRlUmFuZ2VBc1N0cmluZ0hlbHBlcihmaWxlLCBzdGFy
dCwgZGF0YSwgb25TdWNjZXNzKQoreworICAgIHZhciBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFk
ZXIoKTsKKyAgICBmaWxlUmVhZGVyLm9uZXJyb3IgPSBvbkVycm9yOworICAgIGZpbGVSZWFkZXIu
b25sb2FkID0KKyAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnQoZmlsZVJl
YWRlci5yZXN1bHQgPT0gZGF0YSk7CisgICAgICAgICAgICBvblN1Y2Nlc3MoKTsKKyAgICAgICAg
fTsKKyAgICBmaWxlUmVhZGVyLnJlYWRBc1RleHQoZmlsZS5zbGljZShzdGFydCwgZGF0YS5sZW5n
dGgpKTsKK30KKworLy8gVmVyaWZpZXMgdGhhdCB0aGUgY29udGVudHMgb2YgZmlsZUVudHJ5LCBh
dCBvZmZzZXQsIG1hdGNoIGNvbnRlbnRzIFthCisvLyBzdHJpbmddLgorZnVuY3Rpb24gdmVyaWZ5
Qnl0ZVJhbmdlQXNTdHJpbmcoZmlsZUVudHJ5LCBvZmZzZXQsIGNvbnRlbnRzLCBvblN1Y2Nlc3Mp
Cit7CisgICAgdmVyaWZ5RmlsZUNvbnRlbnRzKGZpbGVFbnRyeSwgdmVyaWZ5Qnl0ZVJhbmdlQXNT
dHJpbmdIZWxwZXIsIG9mZnNldCwgY29udGVudHMsIG9uU3VjY2Vzcyk7Cit9CisKKy8vIENyZWF0
ZXMgYSBmaWxlIGNhbGxlZCBmaWxlTmFtZSBpbiBmaWxlU3lzdGVtJ3Mgcm9vdCBkaXJlY3Rvcnks
CisvLyB0cnVuY2F0ZXMgaXQgdG8gemVybyBsZW5ndGgganVzdCBpbiBjYXNlLCBhbmQgY2FsbHMg
b25TdWNjZXNzLAorLy8gcGFzc2luZyBpdCBhIEZpbGVFbnRyeSBhbmQgRmlsZVdyaXRlciBmb3Ig
dGhlIG5ldyBmaWxlLgorZnVuY3Rpb24gY3JlYXRlRW1wdHlGaWxlKGZpbGVTeXN0ZW0sIGZpbGVO
YW1lLCBvblN1Y2Nlc3MpCit7CisgICAgZnVuY3Rpb24gZ2V0U3VjY2Vzc0Z1bmMoZmlsZUVudHJ5
LCBmaWxlV3JpdGVyKSB7CisgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IG9uU3VjY2VzcyhmaWxlRW50cnksIGZpbGVXcml0ZXIpOworICAgICAgICB9CisgICAgfQorICAg
IGZ1bmN0aW9uIGdldEZpbGVXcml0ZXJDYWxsYmFjayhmaWxlRW50cnkpIHsKKyAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uKGZpbGVXcml0ZXIpIHsKKyAgICAgICAgICAgIHZhciBzdWNjZXNzRnVuYyA9
IGdldFN1Y2Nlc3NGdW5jKGZpbGVFbnRyeSwgZmlsZVdyaXRlcik7CisgICAgICAgICAgICBmaWxl
V3JpdGVyLm9uRXJyb3IgPSBvbkVycm9yOworICAgICAgICAgICAgZmlsZVdyaXRlci5vbndyaXRl
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdmVyaWZ5RmlsZUxlbmd0aChmaWxlRW50
cnksIDAsIHN1Y2Nlc3NGdW5jKTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBmaWxlV3Jp
dGVyLnRydW5jYXRlKDApOworICAgICAgICB9CisgICAgfQorICAgIGZ1bmN0aW9uIG9uRmlsZUVu
dHJ5KGZpbGVFbnRyeSkgeworICAgICAgICBmaWxlRW50cnlGb3JDbGVhbnVwID0gZmlsZUVudHJ5
OworICAgICAgICB2YXIgb25GaWxlV3JpdGVyID0gZ2V0RmlsZVdyaXRlckNhbGxiYWNrKGZpbGVF
bnRyeSk7CisgICAgICAgIGZpbGVFbnRyeS5jcmVhdGVXcml0ZXIob25GaWxlV3JpdGVyLCBvbkVy
cm9yKTsKKyAgICB9CisgICAgYXNzZXJ0KGZpbGVTeXN0ZW0pOworICAgIGZpbGVTeXN0ZW0ucm9v
dC5nZXRGaWxlKGZpbGVOYW1lLCB7Y3JlYXRlOnRydWV9LCBvbkZpbGVFbnRyeSwgb25FcnJvcik7
Cit9CisKK2Z1bmN0aW9uIHdyaXRlU3RyaW5nKGZpbGVFbnRyeSwgZmlsZVdyaXRlciwgb2Zmc2V0
LCBkYXRhLCBvblN1Y2Nlc3MpCit7CisgICAgdmFyIGJiID0gbmV3IEJsb2JCdWlsZGVyKCk7Cisg
ICAgYmIuYXBwZW5kKGRhdGEpOworICAgIHZhciBibG9iID0gYmIuZ2V0QmxvYigpOworICAgIGZp
bGVXcml0ZXIuc2VlayhvZmZzZXQpOworICAgIGZpbGVXcml0ZXIud3JpdGUoYmxvYik7CisgICAg
ZmlsZVdyaXRlci5vbndyaXRlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZlcmlmeUJ5dGVSYW5n
ZUFzU3RyaW5nKGZpbGVFbnRyeSwgb2Zmc2V0LCBkYXRhLCBvblN1Y2Nlc3MpOworICAgIH07Cit9
CisKK2Z1bmN0aW9uIHNldHVwQW5kUnVuVGVzdChzaXplLCB0ZXN0TmFtZSwgdGVzdEZ1bmMpCit7
CisgICAgaWYgKCFyZXF1ZXN0RmlsZVN5c3RlbSkgeworICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0
IHJlcXVpcmVzIEZpbGVTeXN0ZW0gQVBJIHN1cHBvcnQuIik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgZGVidWcoInN0YXJ0aW5nIHRlc3QiKTsKKyAgICByZXF1ZXN0RmlsZVN5c3RlbShU
RU1QT1JBUlksIHNpemUsIGZ1bmN0aW9uKGZzKSB7CisgICAgICAgIGNyZWF0ZUVtcHR5RmlsZShm
cywgdGVzdE5hbWUsIHRlc3RGdW5jKTsKKyAgICB9LCBvbkVycm9yKTsKK30KKwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29y
a2VyLWNvbW1vbi5qcwkocmV2aXNpb24gNzA4MjYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTYgKzEsMjUgQEAKIGZ1bmN0aW9uIGRlYnVnKG1lc3NhZ2UpCiB7Ci0gICAgcG9zdE1lc3NhZ2Uo
bWVzc2FnZSk7CisgICAgcG9zdE1lc3NhZ2UoIk1FU0c6IiArIG1lc3NhZ2UpOwogfQogCiBmdW5j
dGlvbiBmaW5pc2hKU1Rlc3QoKQogewotICAgIHBvc3RNZXNzYWdlKCJET05FIik7CisgICAgc2hv
dWxkQmVUcnVlKCJzdWNjZXNzZnVsbHlQYXJzZWQiKTsKKyAgICBwb3N0TWVzc2FnZSgiRE9ORToi
KTsKIH0KIAogZnVuY3Rpb24gZGVzY3JpcHRpb24obWVzc2FnZSkKIHsKLSAgICBwb3N0TWVzc2Fn
ZSgnRGVzY3JpcHRpb246ICcgKyBtZXNzYWdlKTsKKyAgICBwb3N0TWVzc2FnZSgnREVTQzonICsg
bWVzc2FnZSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RQYXNzZWQobXNnKSB7CisgICAgcG9zdE1lc3Nh
Z2UoIlBBU1M6IiArIG1zZyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RGYWlsZWQobXNnKSB7CisgICAg
cG9zdE1lc3NhZ2UoIkZBSUw6IiArIG1zZyk7CiB9CiAKIGZ1bmN0aW9uIHNob3VsZEJlKF9hLCBf
YikKQEAgLTIwLDkgKzI5LDkgQEAgZnVuY3Rpb24gc2hvdWxkQmUoX2EsIF9iKQogICB2YXIgX2F2
ID0gZXZhbChfYSk7CiAgIHZhciBfYnYgPSBldmFsKF9iKTsKICAgaWYgKF9hdiA9PT0gX2J2KQot
ICAgIGRlYnVnKCJQQVNTOiAiICsgX2EgKyAiIGlzICIgKyBfYik7CisgICAgdGVzdFBhc3NlZChf
YSArICIgaXMgIiArIF9iKTsKICAgZWxzZQotICAgIGRlYnVnKCJGQUlMOiAiICsgX2EgKyAiIHNo
b3VsZCBiZSAiICsgX2J2ICsgIiAob2YgdHlwZSAiICsgdHlwZW9mIF9idiArICIpLiBXYXMgIiAr
IF9hdiArICIgKG9mIHR5cGUgIiArIHR5cGVvZiBfYXYgKyAiKS4iKTsKKyAgICB0ZXN0RmFpbGVk
KF9hICsgIiBzaG91bGQgYmUgIiArIF9idiArICIgKG9mIHR5cGUgIiArIHR5cGVvZiBfYnYgKyAi
KS4gV2FzICIgKyBfYXYgKyAiIChvZiB0eXBlICIgKyB0eXBlb2YgX2F2ICsgIikuIik7CiB9CiAK
IGZ1bmN0aW9uIHNob3VsZEJlVHJ1ZShfYSkgeyBzaG91bGRCZShfYSwgInRydWUiKTsgfQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC1w
b3N0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJj
ZXMvZnMtd29ya2VyLXRlc3QtcG9zdC5qcwkocmV2aXNpb24gNzA4MjYpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXBvc3QuanMJKHdvcmtp
bmcgY29weSkKQEAgLTEsOCArMCwwIEBACi13YXNQb3N0VGVzdFNjcmlwdFBhcnNlZCA9IHRydWU7
Ci0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OwotfQotaWYgKHdpbmRvdy53YXNGaW5pc2hKU1Rlc3RDYWxsZWQpCi0gICAgZmluaXNoSlNUZXN0
KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtl
ci10ZXN0LXByZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
cmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qcwkocmV2aXNpb24gNzA4MjYpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qcwko
d29ya2luZyBjb3B5KQpAQCAtMSwzNiArMCwwIEBACi1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLQotZnVuY3Rp
b24gZGVidWcobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29s
ZSIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxici8+IjsKLX0KLQotZnVuY3Rpb24gc3RhcnRX
b3JrZXIodGVzdFNjcmlwdFVSTCkKLXsKLSAgICBkZWJ1ZygnU3RhcnRpbmcgd29ya2VyOiAnICsg
dGVzdFNjcmlwdFVSTCk7Ci0gICAgdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIodGVzdFNjcmlwdFVS
TCk7Ci0gICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAg
ICAgZGVidWcoZXZlbnQuZGF0YSk7Ci0gICAgICAgIGlmIChldmVudC5kYXRhID09ICJET05FIikK
LSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH07Ci0KLSAgICB3b3JrZXIub25lcnJv
ciA9IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgYWxlcnQoZXZlbnQpOwotICAgICAg
ICBkZWJ1ZygnR290IGVycm9yIGZyb20gd29ya2VyOiAnICsgZXZlbnQubWVzc2FnZSk7Ci0gICAg
ICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gZmluaXNoSlNUZXN0KCkK
LXsKLSAgICB3YXNGaW5pc2hKU1Rlc3RDYWxsZWQgPSB0cnVlOwotICAgIGlmICghd2luZG93Lndh
c1Bvc3RUZXN0U2NyaXB0UGFyc2VkKQotICAgICAgICByZXR1cm47Ci0gICAgZGVidWcoJzxiciAv
PjxzcGFuIGNsYXNzPSJwYXNzIj5URVNUIENPTVBMRVRFPC9zcGFuPicpOwotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKLX0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJj
ZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMJKHJldmlzaW9uIDcw
NTkwKQkoZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtl
ci10ZXN0LXByZS5qczo3MDU5MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNv
dXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2
IEBACitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gZGVidWcobWVzc2FnZSkKK3sKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSBtZXNzYWdlICsg
Ijxici8+IjsKK30KKworZnVuY3Rpb24gc3RhcnRXb3JrZXIodGVzdFNjcmlwdFVSTCkKK3sKKyAg
ICBkZWJ1ZygnU3RhcnRpbmcgd29ya2VyOiAnICsgdGVzdFNjcmlwdFVSTCk7CisgICAgdmFyIHdv
cmtlciA9IG5ldyBXb3JrZXIodGVzdFNjcmlwdFVSTCk7CisgICAgd29ya2VyLm9ubWVzc2FnZSA9
IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgZGVidWcoZXZlbnQuZGF0YSk7CisgICAg
ICAgIGlmIChldmVudC5kYXRhID09ICJET05FIikKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgIH07CisKKyAgICB3b3JrZXIub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsK
KyAgICAgICAgYWxlcnQoZXZlbnQpOworICAgICAgICBkZWJ1ZygnR290IGVycm9yIGZyb20gd29y
a2VyOiAnICsgZXZlbnQubWVzc2FnZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0K
K30KKworZnVuY3Rpb24gZmluaXNoSlNUZXN0KCkKK3sKKyAgICB3YXNGaW5pc2hKU1Rlc3RDYWxs
ZWQgPSB0cnVlOworICAgIGlmICghd2luZG93Lndhc1Bvc3RUZXN0U2NyaXB0UGFyc2VkKQorICAg
ICAgICByZXR1cm47CisgICAgZGVidWcoJzxiciAvPjxzcGFuIGNsYXNzPSJwYXNzIj5URVNUIENP
TVBMRVRFPC9zcGFuPicpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdv
cmtlci10ZXN0LXV0aWwuanMJKHJldmlzaW9uIDcwNTkwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC11dGlsLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDEwICsxLDQgQEAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotCi1mdW5jdGlvbiBkZWJ1ZyhtZXNz
YWdlKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1M
ICs9IG1lc3NhZ2UgKyAiPGJyLz4iOwotfQord2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwog
CiBmdW5jdGlvbiBzdGFydFdvcmtlcih0ZXN0U2NyaXB0VVJMKQogewpAQCAtMTIsOSArNiwyMiBA
QCBmdW5jdGlvbiBzdGFydFdvcmtlcih0ZXN0U2NyaXB0VVJMKQogICAgIHZhciB3b3JrZXIgPSBu
ZXcgV29ya2VyKHRlc3RTY3JpcHRVUkwpOwogICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlv
bihldmVudCkKICAgICB7Ci0gICAgICAgIGRlYnVnKGV2ZW50LmRhdGEpOwotICAgICAgICBpZiAo
ZXZlbnQuZGF0YSA9PSAiRE9ORSIpCi0gICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgaWYgKGV2ZW50LmRhdGEubGVuZ3RoIDwgNSB8fCBldmVudC5kYXRhLmNoYXJBdCg0KSAhPSAn
OicpIHsKKyAgICAgICAgICAgIGRlYnVnKCJHb3QgaW52YWxpZCBtZXNzYWdlIGZyb20gd29ya2Vy
OiIgKyAoZXZlbnQuZGF0YSA/IGV2ZW50LmRhdGEgOiAibnVsbCIpKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIHZhciBjb2RlID0gZXZlbnQuZGF0YS5zdWJzdHJpbmcoMCwgNCk7Cisg
ICAgICAgICAgICB2YXIgcGF5bG9hZCA9ICJbV29ya2VyXSAiICsgZXZlbnQuZGF0YS5zdWJzdHJp
bmcoNSk7CisgICAgICAgICAgICBpZiAoY29kZSA9PSAiUEFTUyIpCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZChwYXlsb2FkKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNvZGUgPT0gIkZBSUwi
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQocGF5bG9hZCk7CisgICAgICAgICAgICBlbHNl
IGlmIChjb2RlID09ICJERVNDIikKKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbihwYXlsb2Fk
KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNvZGUgPT0gIkRPTkUiKQorICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgZWxzZSBpZiAoY29kZSA9PSAiTUVTRyIpCisg
ICAgICAgICAgICAgICAgZGVidWcocGF5bG9hZCk7CisgICAgICAgIH0KICAgICB9OwogCiAgICAg
d29ya2VyLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkKQEAgLTI0LDEzICszMSwzIEBAIGZ1bmN0
aW9uIHN0YXJ0V29ya2VyKHRlc3RTY3JpcHRVUkwpCiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwog
ICAgIH0KIH0KLQotZnVuY3Rpb24gZmluaXNoSlNUZXN0KCkKLXsKLSAgICB3YXNGaW5pc2hKU1Rl
c3RDYWxsZWQgPSB0cnVlOwotICAgIGlmICghd2luZG93Lndhc1Bvc3RUZXN0U2NyaXB0UGFyc2Vk
KQotICAgICAgICByZXR1cm47Ci0gICAgZGVidWcoJzxiciAvPjxzcGFuIGNsYXNzPSJwYXNzIj5U
RVNUIENPTVBMRVRFPC9zcGFuPicpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLX0KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXBlcnNpc3RlbnQt
c3luYy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3Vy
Y2VzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMuanMJKHJldmlzaW9uIDcwODI2KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0xMCw1ICsxMCw1IEBAIHZhciBmaWxlU3lzdGVtID0gcmVxdWVz
dEZpbGVTeXN0ZW1TeW5jKFAKIGRlYnVnKCJTdWNjZXNzZnVsbHkgb2J0YWluZWQgUEVSU0lTVEVO
VCBGaWxlU3lzdGVtOiIgKyBmaWxlU3lzdGVtLm5hbWUpOwogc2hvdWxkQmVUcnVlKCJmaWxlU3lz
dGVtLm5hbWUubGVuZ3RoID4gMCIpOwogc2hvdWxkQmUoImZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0
aCIsICciLyInKTsKLWZpbmlzaEpTVGVzdCgpOwogdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CitmaW5pc2hKU1Rlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9y
ZXNvdXJjZXMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLmpzCShy
ZXZpc2lvbiA3MDgyNikKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMv
c2ltcGxlLXRlbXBvcmFyeS1zeW5jLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw1ICsxMCw1IEBA
IHZhciBmaWxlU3lzdGVtID0gcmVxdWVzdEZpbGVTeXN0ZW1TeW5jKFQKIGRlYnVnKCJTdWNjZXNz
ZnVsbHkgb2J0YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06IiArIGZpbGVTeXN0ZW0ubmFtZSk7
CiBzaG91bGRCZVRydWUoImZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIik7CiBzaG91bGRCZSgi
ZmlsZVN5c3RlbS5yb290LmZ1bGxQYXRoIiwgJyIvIicpOwotZmluaXNoSlNUZXN0KCk7CiB2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKK2ZpbmlzaEpTVGVzdCgpOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zeW5jLW9wZXJhdGlvbnMuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zeW5jLW9wZXJh
dGlvbnMuanMJKHJldmlzaW9uIDcwODI2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3Jlc291cmNlcy9zeW5jLW9wZXJhdGlvbnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5
LDUgQEAgcGF0aHMuc29ydCgpOwogc2hvdWxkQmUoJyInICsgcGF0aHMuam9pbignLCcpICsgJyIn
LCAnIi9hLC9iLC9jLC9kMiwvZSwvZiInKTsKIHNob3VsZEJlKCJkaXJzQ291bnQiLCAiMyIpOwog
cmVtb3ZlQWxsSW5EaXJlY3RvcnlTeW5jKGZpbGVTeXN0ZW0ucm9vdCk7Ci1maW5pc2hKU1Rlc3Qo
KTsKLQogdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CitmaW5pc2hKU1Rlc3QoKTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93
b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3MDgyNikKKysr
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1ICsxLDE4IEBACi1UaGlzIHRlc3RzIHJ1
bm5pbmcgbXVsdGlwbGUgYXN5bmMgZmlsZXN5c3RlbSBvcGVyYXRpb25zIGluIFdvcmtlci4KK1tX
b3JrZXJdIFRlc3QgbWFraW5nIG11bHRpcGxlIGFzeW5jIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucy4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCiAKIFN0YXJ0aW5nIHdvcmtlcjogLi4vcmVz
b3VyY2VzL2FzeW5jLW9wZXJhdGlvbnMuanMKLURlc2NyaXB0aW9uOiBUZXN0IG1ha2luZyBtdWx0
aXBsZSBhc3luYyBGaWxlU3lzdGVtIG9wZXJhdGlvbnMuCi1yZXF1ZXN0ZWQgRmlsZVN5c3RlbS4K
LUdvdCBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5Ci1TdGFydGluZyBhc3luYyB0ZXN0IHN0
YWdlIDEuCi1TdGFydGluZyBhc3luYyB0ZXN0IHN0YWdlIDIuCi1WZXJpZnlpbmcgdGhlIEZpbGVT
eXN0ZW0gc3RhdHVzLgotUEFTUzogIi9hLC9iLC9jLC9kMiwvZSwvZiIgaXMgIi9hLC9iLC9jLC9k
MiwvZSwvZiIKLVBBU1M6IGRpcnNDb3VudCBpcyAzCi1ET05FCitbV29ya2VyXSByZXF1ZXN0ZWQg
RmlsZVN5c3RlbS4KK1tXb3JrZXJdIEdvdCBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5Citb
V29ya2VyXSBTdGFydGluZyBhc3luYyB0ZXN0IHN0YWdlIDEuCitbV29ya2VyXSBTdGFydGluZyBh
c3luYyB0ZXN0IHN0YWdlIDIuCitbV29ya2VyXSBWZXJpZnlpbmcgdGhlIEZpbGVTeXN0ZW0gc3Rh
dHVzLgorUEFTUyBbV29ya2VyXSAiL2EsL2IsL2MsL2QyLC9lLC9mIiBpcyAiL2EsL2IsL2MsL2Qy
LC9lLC9mIgorUEFTUyBbV29ya2VyXSBkaXJzQ291bnQgaXMgMworUEFTUyBbV29ya2VyXSBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CiBURVNUIENPTVBMRVRFCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL2FzeW5jLW9wZXJhdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vd29ya2Vycy9hc3luYy1vcGVyYXRpb25zLmh0bWwJKHJldmlzaW9uIDcwODI2
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvYXN5bmMtb3BlcmF0aW9u
cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1ICsxLDE3IEBACiA8aHRtbD4KIDxoZWFkPgot
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItdGVz
dC11dGlsLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9u
Ij5UaGlzIHRlc3RzIHJ1bm5pbmcgbXVsdGlwbGUgYXN5bmMgZmlsZXN5c3RlbSBvcGVyYXRpb25z
IGluIFdvcmtlci48L3A+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KIDxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgogPHNjcmlwdD4KIHN0YXJ0V29ya2VyKCcuLi9yZXNvdXJjZXMvYXN5bmMtb3Bl
cmF0aW9ucy5qcycpOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiA8L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmls
ZS1lbnRyeS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDcwODI2KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnktZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDExICsxLDE0IEBACi1UaGlzIHRlc3RzIHJldHVybmluZyBGaWxl
IGZyb20gRmlsZUVudHJ5IGluIHdvcmtlcnMuCitbV29ya2VyXSBPYnRhaW5pbmcgRmlsZSBmcm9t
IEZpbGVFbnRyeS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCiAKIFN0YXJ0aW5nIHdv
cmtlcjogLi4vcmVzb3VyY2VzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LmpzCi1EZXNjcmlwdGlvbjog
T2J0YWluaW5nIEZpbGUgZnJvbSBGaWxlRW50cnkuCi1QQVNTOiB0ZXN0RmlsZS5uYW1lIGlzIHRl
c3RGaWxlRW50cnkubmFtZQotUEFTUzogdGVzdEZpbGUudHlwZSBpcyAndGV4dC9wbGFpbicKLVBB
U1M6IHRlc3RGaWxlLnNpemUgaXMgMAotRE9ORQorUEFTUyBbV29ya2VyXSB0ZXN0RmlsZS5uYW1l
IGlzIHRlc3RGaWxlRW50cnkubmFtZQorUEFTUyBbV29ya2VyXSB0ZXN0RmlsZS50eXBlIGlzICd0
ZXh0L3BsYWluJworUEFTUyBbV29ya2VyXSB0ZXN0RmlsZS5zaXplIGlzIDAKK1BBU1MgW1dvcmtl
cl0gc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmls
ZS1lbnRyeS1zeW5jLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzA4MjYpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSwxNCBAQAotVGhpcyB0ZXN0cyByZXR1
cm5pbmcgRmlsZSBmcm9tIEZpbGVFbnRyeVN5bmMgaW4gd29ya2Vycy4KK1tXb3JrZXJdIE9idGFp
bmluZyBGaWxlIGZyb20gRmlsZUVudHJ5U3luYy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCiAKIFN0YXJ0aW5nIHdvcmtlcjogLi4vcmVzb3VyY2VzL2ZpbGUtZnJvbS1maWxlLWVudHJ5
LXN5bmMuanMKLURlc2NyaXB0aW9uOiBPYnRhaW5pbmcgRmlsZSBmcm9tIEZpbGVFbnRyeVN5bmMu
Ci1QQVNTOiB0ZXN0RmlsZS5uYW1lIGlzIHRlc3RGaWxlRW50cnkubmFtZQotUEFTUzogdGVzdEZp
bGUudHlwZSBpcyAndGV4dC9wbGFpbicKLVBBU1M6IHRlc3RGaWxlLnNpemUgaXMgMAotRE9ORQor
UEFTUyBbV29ya2VyXSB0ZXN0RmlsZS5uYW1lIGlzIHRlc3RGaWxlRW50cnkubmFtZQorUEFTUyBb
V29ya2VyXSB0ZXN0RmlsZS50eXBlIGlzICd0ZXh0L3BsYWluJworUEFTUyBbV29ya2VyXSB0ZXN0
RmlsZS5zaXplIGlzIDAKK1BBU1MgW1dvcmtlcl0gc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQogCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRy
eS1zeW5jLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dv
cmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy5odG1sCShyZXZpc2lvbiA3MDgyNikKKysr
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5
LXN5bmMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMSwxNiBAQAogPGh0bWw+CiA8aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2Vy
LXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlw
dGlvbiI+VGhpcyB0ZXN0cyByZXR1cm5pbmcgRmlsZSBmcm9tIEZpbGVFbnRyeVN5bmMgaW4gd29y
a2Vycy48L3A+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgogPHNjcmlwdD4KIHN0YXJ0V29ya2VyKCcuLi9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUt
ZW50cnktc3luYy5qcycpOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiA8L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5
Lmh0bWwJKHJldmlzaW9uIDcwODI2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dv
cmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCAr
MSwxNiBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29y
a2VyLWNvbW1vbi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdv
cmtlci10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8
Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+VGhpcyB0ZXN0cyByZXR1cm5pbmcgRmlsZSBmcm9t
IEZpbGVFbnRyeSBpbiB3b3JrZXJzLjwvcD4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgogPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CiA8c2NyaXB0Pgogc3RhcnRXb3JrZXIoJy4uL3Jlc291cmNl
cy9maWxlLWZyb20tZmlsZS1lbnRyeS5qcycpOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CiA8L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93
b3JrZXJzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci10
cnVuY2F0ZS1leHRlbmQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBA
CitbV29ya2VyXSBUZXN0IG9mIGV4dGVuZGluZyBhIGZpbGUgdXNpbmcgdHJ1bmNhdGUoKS4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitTdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNl
cy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuanMKK1tXb3JrZXJdIHN0YXJ0aW5nIHRlc3QK
K1BBU1MgW1dvcmtlcl0gVHJ1bmNhdGUgZXh0ZW5zaW9uIHZlcmlmaWVkLgorUEFTUyBbV29ya2Vy
XSBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXRydW5jYXRl
LWV4dGVuZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjAgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgPGhlYWQ+CisgICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiPgorICAgIDx0aXRsZT5GaWxlIFdyaXRlciBUcnVuY2F0ZS1Uby1FeHRlbmQgV29ya2Vy
PC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10
ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgorIDwvaGVhZD4KKyA8Ym9keT4KKyAgICA8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgPHNj
cmlwdD4KKyAgICAgICAgc3RhcnRXb3JrZXIoIi4uL3Jlc291cmNlcy9maWxlLXdyaXRlci10cnVu
Y2F0ZS1leHRlbmQuanMiKTsKKyAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorIDwvYm9keT4KKzwvaHRtbD4KKworCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtl
cnMvc2ltcGxlLXBlcnNpc3RlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3MDgyNikKKysrIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50LWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSwxNCBAQAotVGhpcyB0ZXN0cyByZXF1
ZXN0aW5nIFBFUlNJU1RFTlQgRmlsZVN5c3RlbSBpbiBXb3JrZXIuCitbV29ya2VyXSByZXF1ZXN0
RmlsZVN5c3RlbSBQRVJTSVNURU5UIHRlc3QuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KwogCiBTdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC5qcwot
RGVzY3JpcHRpb246IHJlcXVlc3RGaWxlU3lzdGVtIFBFUlNJU1RFTlQgdGVzdC4KLVN1Y2Nlc3Nm
dWxseSBvYnRhaW5lZCBQRVJTSVNURU5UIEZpbGVTeXN0ZW06ZmlsZV9fMDpQZXJzaXN0ZW50Ci1Q
QVNTOiBmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCi1QQVNTOiBmaWxlU3lzdGVt
LnJvb3QuZnVsbFBhdGggaXMgIi8iCi1ET05FCitbV29ya2VyXSBTdWNjZXNzZnVsbHkgb2J0YWlu
ZWQgUEVSU0lTVEVOVCBGaWxlU3lzdGVtOmZpbGVfXzA6UGVyc2lzdGVudAorUEFTUyBbV29ya2Vy
XSBmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIGZpbGVT
eXN0ZW0ucm9vdC5mdWxsUGF0aCBpcyAiLyIKK1BBU1MgW1dvcmtlcl0gc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01Q
TEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUt
cGVyc2lzdGVudC1zeW5jLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gNzA4MjYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSwxMSArMSwxNCBAQAotVGhpcyB0ZXN0cyByZXF1ZXN0aW5nIFBFUlNJU1RFTlQgRmlsZVN5c3Rl
bVN5bmMgaW4gV29ya2VyLgorW1dvcmtlcl0gcmVxdWVzdEZpbGVTeXN0ZW1TeW5jIFBFUlNJU1RF
TlQgdGVzdC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCiAKIFN0YXJ0aW5nIHdvcmtl
cjogLi4vcmVzb3VyY2VzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMuanMKLURlc2NyaXB0aW9uOiBy
ZXF1ZXN0RmlsZVN5c3RlbVN5bmMgUEVSU0lTVEVOVCB0ZXN0LgotU3VjY2Vzc2Z1bGx5IG9idGFp
bmVkIFBFUlNJU1RFTlQgRmlsZVN5c3RlbTpmaWxlX18wOlBlcnNpc3RlbnQKLVBBU1M6IGZpbGVT
eXN0ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRydWUKLVBBU1M6IGZpbGVTeXN0ZW0ucm9vdC5mdWxs
UGF0aCBpcyAiLyIKLURPTkUKK1tXb3JrZXJdIFN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBQRVJTSVNU
RU5UIEZpbGVTeXN0ZW06ZmlsZV9fMDpQZXJzaXN0ZW50CitQQVNTIFtXb3JrZXJdIGZpbGVTeXN0
ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gZmlsZVN5c3RlbS5yb290
LmZ1bGxQYXRoIGlzICIvIgorUEFTUyBbV29ya2VyXSBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCiAKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50
LXN5bmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29y
a2Vycy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmh0bWwJKHJldmlzaW9uIDcwODI2KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQtc3luYy5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1ICsxLDE3IEBACiA8aHRtbD4KIDxoZWFkPgotPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC11
dGlsLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj5U
aGlzIHRlc3RzIHJlcXVlc3RpbmcgUEVSU0lTVEVOVCBGaWxlU3lzdGVtU3luYyBpbiBXb3JrZXIu
PC9wPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
IDxzY3JpcHQ+CiBzdGFydFdvcmtlcignLi4vcmVzb3VyY2VzL3NpbXBsZS1wZXJzaXN0ZW50LXN5
bmMuanMnKTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwogPC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50Lmh0bWwJKHJldmlz
aW9uIDcwODI2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxl
LXBlcnNpc3RlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMSwxNiBAQAogPGh0bWw+
CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMt
d29ya2VyLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJk
ZXNjcmlwdGlvbiI+VGhpcyB0ZXN0cyByZXF1ZXN0aW5nIFBFUlNJU1RFTlQgRmlsZVN5c3RlbSBp
biBXb3JrZXIuPC9wPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KIDxzY3JpcHQ+CiBzdGFydFdvcmtlcignLi4vcmVzb3VyY2VzL3NpbXBsZS1wZXJz
aXN0ZW50LmpzJyk7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIDwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3JhcnktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3JhcnktZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA3MDgyNikKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL3NpbXBsZS10ZW1wb3JhcnktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDExICsxLDE0IEBACi1UaGlzIHRlc3RzIHJlcXVlc3RpbmcgVEVNUE9SQVJZIEZpbGVTeXN0
ZW0gaW4gV29ya2VyLgorW1dvcmtlcl0gcmVxdWVzdEZpbGVTeXN0ZW0gVEVNUE9SQVJZIHRlc3Qu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwogCiBTdGFydGluZyB3b3JrZXI6IC4uL3Jl
c291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LmpzCi1EZXNjcmlwdGlvbjogcmVxdWVzdEZpbGVTeXN0
ZW0gVEVNUE9SQVJZIHRlc3QuCi1TdWNjZXNzZnVsbHkgb2J0YWluZWQgVEVNUE9SQVJZIEZpbGVT
eXN0ZW06ZmlsZV9fMDpUZW1wb3JhcnkKLVBBU1M6IGZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAw
IGlzIHRydWUKLVBBU1M6IGZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCBpcyAiLyIKLURPTkUKK1tX
b3JrZXJdIFN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5c3RlbTpmaWxlX18w
OlRlbXBvcmFyeQorUEFTUyBbV29ya2VyXSBmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0
cnVlCitQQVNTIFtXb3JrZXJdIGZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCBpcyAiLyIKK1BBU1Mg
W1dvcmtlcl0gc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1w
b3Jhcnktc3luYy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDcwODI2KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSwxNCBAQAotVGhpcyB0ZXN0cyByZXF1ZXN0aW5n
IFRFTVBPUkFSWSBGaWxlU3lzdGVtU3luYyBpbiBXb3JrZXIuCitbV29ya2VyXSByZXF1ZXN0Rmls
ZVN5c3RlbVN5bmMgVEVNUE9SQVJZIHRlc3QuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KwogCiBTdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMu
anMKLURlc2NyaXB0aW9uOiByZXF1ZXN0RmlsZVN5c3RlbVN5bmMgVEVNUE9SQVJZIHRlc3QuCi1T
dWNjZXNzZnVsbHkgb2J0YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06ZmlsZV9fMDpUZW1wb3Jh
cnkKLVBBU1M6IGZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRydWUKLVBBU1M6IGZpbGVT
eXN0ZW0ucm9vdC5mdWxsUGF0aCBpcyAiLyIKLURPTkUKK1tXb3JrZXJdIFN1Y2Nlc3NmdWxseSBv
YnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5c3RlbTpmaWxlX18wOlRlbXBvcmFyeQorUEFTUyBbV29y
a2VyXSBmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIGZp
bGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCBpcyAiLyIKK1BBU1MgW1dvcmtlcl0gc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBD
T01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1w
bGUtdGVtcG9yYXJ5LXN5bmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMuaHRtbAkocmV2aXNpb24gNzA4
MjYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9y
YXJ5LXN5bmMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNSArMSwxNyBAQAogPGh0bWw+CiA8
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29y
a2VyLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNj
cmlwdGlvbiI+VGhpcyB0ZXN0cyByZXF1ZXN0aW5nIFRFTVBPUkFSWSBGaWxlU3lzdGVtU3luYyBp
biBXb3JrZXIuPC9wPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KIDxzY3JpcHQ+CiBzdGFydFdvcmtlcignLi4vcmVzb3VyY2VzL3NpbXBsZS10ZW1w
b3Jhcnktc3luYy5qcycpOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiA8L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3JhcnkuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5Lmh0bWwJ
KHJldmlzaW9uIDcwODI2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMv
c2ltcGxlLXRlbXBvcmFyeS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0ICsxLDE2IEBACiA8
aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9u
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9mcy13b3JrZXItdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAg
aWQ9ImRlc2NyaXB0aW9uIj5UaGlzIHRlc3RzIHJlcXVlc3RpbmcgVEVNUE9SQVJZIEZpbGVTeXN0
ZW0gaW4gV29ya2VyLjwvcD4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgogPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CiA8c2NyaXB0Pgogc3RhcnRXb3JrZXIoJy4uL3Jlc291cmNlcy9zaW1wbGUt
dGVtcG9yYXJ5LmpzJyk7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIDwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL3N5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gNzA4MjYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vd29ya2Vycy9zeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDEwICsxLDEzIEBACi1UaGlzIHRlc3RzIHJ1bm5pbmcgbXVsdGlwbGUgc3luYyBmaWxlc3lz
dGVtIG9wZXJhdGlvbnMgaW4gV29ya2VyLgorW1dvcmtlcl0gVGVzdCBtYWtpbmcgbXVsdGlwbGUg
c3luY2hyb25vdXMgRmlsZVN5c3RlbSBvcGVyYXRpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKIAogU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvc3luYy1vcGVyYXRpb25z
LmpzCi1EZXNjcmlwdGlvbjogVGVzdCBtYWtpbmcgbXVsdGlwbGUgc3luY2hyb25vdXMgRmlsZVN5
c3RlbSBvcGVyYXRpb25zLgotUEFTUzogIi9hLC9iLC9jLC9kMiwvZSwvZiIgaXMgIi9hLC9iLC9j
LC9kMiwvZSwvZiIKLVBBU1M6IGRpcnNDb3VudCBpcyAzCi1ET05FCitQQVNTIFtXb3JrZXJdICIv
YSwvYiwvYywvZDIsL2UsL2YiIGlzICIvYSwvYiwvYywvZDIsL2UsL2YiCitQQVNTIFtXb3JrZXJd
IGRpcnNDb3VudCBpcyAzCitQQVNTIFtXb3JrZXJdIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3lu
Yy1vcGVyYXRpb25zLmh0bWwJKHJldmlzaW9uIDcwODI2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTUgKzEsMTcgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2ZzLXdvcmtlci1jb21tb24uanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9mcy13b3JrZXItdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPlRoaXMgdGVzdHMgcnVubmluZyBtdWx0
aXBsZSBzeW5jIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucyBpbiBXb3JrZXIuPC9wPgorPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQ+CiBzdGFy
dFdvcmtlcignLi4vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcycpOword2luZG93LnN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CiA8L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvZnMtd29ya2VyLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73315</attachid>
            <date>2010-11-08 17:19:47 -0800</date>
            <delta_ts>2010-11-16 18:47:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47680-20101108171946.patch</filename>
            <type>text/plain</type>
            <size>37614</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDcxNTQ5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTAtMTEtMDggIEVyaWMgVWhyaGFuZSAgPGVy
aWN1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgRmlsZVdyaXRlciB0ZXN0IHV0aWxpdGllcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NjgwCisKKyAgICAgICAgQ2xlYW5p
bmcgdXAgc2hhcmVkIHRlc3QgdXRpbGl0eSBmaWxlcyBjYXVzZWQgdGhlIGluY2x1ZGVzIGFuZCBv
dXRwdXQgb2YgYSBidW5jaCBvZiBleGlzdGluZyB0ZXN0cyBjaGFuZ2Ugc2xpZ2h0bHksIHNvIEkn
dmUgcmVidWlsdCB0aGUgZXhwZWN0YXRpb24gZmlsZXMuCisKKyAgICAgICAgVGhpcyBpcyB0aGUg
Zmlyc3QgdGVzdCBbaW4gRE9NIGFuZCB3b3JrZXIgdmVyc2lvbnNdIHRvIHVzZSB0aGUgbmV3IHV0
aWxpdGllcy4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItdHJ1bmNhdGUt
ZXh0ZW5kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL2Zp
bGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5qczogQWRkZWQu
CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItdHJ1bmNhdGUt
ZXh0ZW5kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dv
cmtlcnMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmh0bWw6IEFkZGVkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpcyBhIG5ldyB1dGlsaXR5IGZpbGUgZm9yIEZpbGVXcml0ZXIgdGVzdHMu
CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci11dGlscy5q
czogQWRkZWQuCisKKyAgICAgICAgVG91Y2hlZCB1cCBhIGJpdAorICAgICAgICAqIGZhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qczoKKworICAgICAgICBSZW1vdmVk
CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC1wb3N0
LmpzOgorCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItdGVz
dC1wcmUuanM6CisgICAgICAgIHJlbmFtZWQgdG8gCisgICAgICAgICogZmFzdC9maWxlc3lzdGVt
L3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC11dGlsLmpzOgorCisgICAgICAgIFRoZXNlIHRlc3Rz
IGFuZCB0aGVpciBleHBlY3RhdGlvbnMgd2VyZSB0d2Vha2VkIHNsaWdodGx5IHRvIHVzZSB0aGUg
bmV3IGNvZGUgbW9yZSBjbGVhbmx5LgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9yZXNvdXJj
ZXMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy5qczoKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0
ZW0vcmVzb3VyY2VzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMuanM6CisgICAgICAgICogZmFzdC9m
aWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMuanM6CisgICAgICAgICog
ZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zeW5jLW9wZXJhdGlvbnMuanM6CisgICAgICAgICog
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvYXN5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvYXN5bmMtb3BlcmF0aW9ucy5odG1sOgor
ICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20t
ZmlsZS1lbnRyeS1zeW5jLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmh0bWw6CisgICAgICAgICogZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnkuaHRtbDoKKyAgICAgICAgKiBm
YXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQtc3luYy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBl
cnNpc3RlbnQtc3luYy5odG1sOgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3Np
bXBsZS1wZXJzaXN0ZW50Lmh0bWw6CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMv
c2ltcGxlLXRlbXBvcmFyeS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5Lmh0bWw6CisgICAg
ICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zeW5jLW9wZXJhdGlvbnMuaHRt
bDoKKworICAgICAgICBSZW1vdmVkIHN1cHByZXNzaW9uIG9mIEZpbGVXcml0ZXIgdGVzdHMsIGFz
IHdlIG5vdyBoYXZlIHN1cHBvcnQgaW4gVGVzdFNoZWxsLgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKwogMjAxMC0xMS0wOCAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpvaG4gU3Vs
bGl2YW4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItdHJ1
bmNhdGUtZXh0ZW5kLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci10cnVu
Y2F0ZS1leHRlbmQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKK1Rl
c3Qgb2YgZXh0ZW5kaW5nIGEgZmlsZSB1c2luZyB0cnVuY2F0ZSgpLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKK3N0YXJ0aW5nIHRlc3QKK1BBU1MgVHJ1bmNhdGUgZXh0ZW5zaW9uIHZl
cmlmaWVkLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItdHJ1bmNhdGUt
ZXh0ZW5kLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2Zp
bGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorIDxoZWFk
PgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKyAgICA8dGl0bGU+RmlsZSBXcml0ZXIgVHJ1bmNhdGUtVG8tRXh0ZW5k
PC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXV0aWxz
LmpzIj48L3NjcmlwdD4KKyA8L2hlYWQ+CisgPGJvZHk+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRp
b24iPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CisgPC9ib2R5PgorPC9odG1sPgorCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtZnJvbS1maWxlLWVudHJ5
LXN5bmMuanMJKHJldmlzaW9uIDcxNTQ5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3Jlc291cmNlcy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0xNiw1ICsxNiw1IEBAIHNob3VsZEJlKCJ0ZXN0RmlsZS50eXBlIiwgIid0ZXh0L3BsYWluJyIK
IHNob3VsZEJlKCJ0ZXN0RmlsZS5zaXplIiwgIjAiKTsKIAogcmVtb3ZlQWxsSW5EaXJlY3RvcnlT
eW5jKGZpbGVTeXN0ZW0ucm9vdCk7Ci1maW5pc2hKU1Rlc3QoKTsKIHZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOworZmluaXNoSlNUZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVy
LXRydW5jYXRlLWV4dGVuZC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmpzCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDM5IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1w
b3J0U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ2Zp
bGUtd3JpdGVyLXV0aWxzLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IG9mIGV4dGVuZGlu
ZyBhIGZpbGUgdXNpbmcgdHJ1bmNhdGUoKS4iKTsKKworZnVuY3Rpb24gb25UZXN0U3VjY2VlZGVk
KCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJUcnVuY2F0ZSBleHRlbnNpb24gdmVyaWZpZWQuIik7Cisg
ICAgY2xlYW5VcCgpOworfQorCitmdW5jdGlvbiB0cnVuY2F0ZVRvRXh0ZW5kKGZpbGVFbnRyeSwg
ZmlsZVdyaXRlciwgY29udGVudHMsIG9uU3VjY2VzcykKK3sKKyAgICB2YXIgZXh0ZW5zaW9uID0g
NTsKKyAgICB2YXIgbGVuZ3RoQ2hlY2tlciA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2ZXJpZnlG
aWxlTGVuZ3RoKGZpbGVFbnRyeSwgY29udGVudHMubGVuZ3RoICsgZXh0ZW5zaW9uLCBvblN1Y2Nl
c3MpOworICAgIH07CisgICAgdmFyIGV4dGVuc2lvbkNoZWNrZXIgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgdmVyaWZ5Qnl0ZVJhbmdlSXNaZXJvZXMoZmlsZUVudHJ5LCBjb250ZW50cy5sZW5ndGgs
IGV4dGVuc2lvbiwgbGVuZ3RoQ2hlY2tlcik7CisgICAgfTsKKyAgICBmaWxlV3JpdGVyLm9ud3Jp
dGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmVyaWZ5Qnl0ZVJhbmdlQXNTdHJpbmcoZmlsZUVu
dHJ5LCAwLCBjb250ZW50cywgZXh0ZW5zaW9uQ2hlY2tlcik7CisgICAgfTsKKyAgICBmaWxlV3Jp
dGVyLnRydW5jYXRlKGNvbnRlbnRzLmxlbmd0aCArIGV4dGVuc2lvbik7Cit9CisKK2Z1bmN0aW9u
IHJ1blRlc3QoZmlsZUVudHJ5LCBmaWxlV3JpdGVyKSB7CisgICAgdmFyIGNvbnRlbnRzID0gIkxv
cmVtIGlwc3VtIjsKKyAgICB3cml0ZVN0cmluZyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIDAsIGNv
bnRlbnRzLAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAg
ICB0cnVuY2F0ZVRvRXh0ZW5kKGZpbGVFbnRyeSwgZmlsZVdyaXRlciwgY29udGVudHMsIG9uVGVz
dFN1Y2NlZWRlZCk7CisgICAgICAgICAgICAgICAgfSk7Cit9CisKK3ZhciBqc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKK3NldHVwQW5kUnVuVGVzdCgxMDI0LCAnZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0
ZW5kJywgcnVuVGVzdCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdXRpbHMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxl
LXdyaXRlci11dGlscy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdXRpbHMuanMJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTQ4IEBACitmdW5jdGlvbiBzdHJpbmdpZnlPYmoobykKK3sKKyAgICBzID0gIiI7CisgICAg
aWYgKG8pCisgICAgICAgIGZvciAoaW5kZXggaW4gbykgeworICAgICAgICAgICAgcyArPSBpbmRl
eCArICI6ICIgKyBvW2luZGV4XSArICI7IjsKKyAgICAgICAgfQorICAgIHJldHVybiBzOworfQor
CitmdW5jdGlvbiBvbkVycm9yKGUpCit7CisgICAgdGVzdEZhaWxlZCgiR290IGVycm9yOiAiICsg
c3RyaW5naWZ5T2JqKGUpKTsKKyAgICBjbGVhblVwKCk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydChz
KQoreworICAgIGlmICghcykKKyAgICAgICAgb25FcnJvcihuZXcgRXJyb3IoIkFzc2VydGlvbiBm
YWlsZWQuICIpKTsKK30KKwordmFyIGZpbGVFbnRyeUZvckNsZWFudXA7ICAvLyBTZXQgYXMgc29v
biBhcyB3ZSBoYXZlIG9uZS4KKworZnVuY3Rpb24gY2xlYW5VcCgpCit7CisgICAgdHJ5IHsKKyAg
ICAgICAgaWYgKGZpbGVFbnRyeUZvckNsZWFudXApCisgICAgICAgICAgICBmaWxlRW50cnlGb3JD
bGVhbnVwLnJlbW92ZShmaW5pc2hKU1Rlc3QsIGZpbmlzaEpTVGVzdCk7CisgICAgfSBjYXRjaCAo
ZXgpIHsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorfQorCisvLyBHZW5lcmljIGZ1
bmN0aW9uIHRoYXQgZ2V0cyBhIEZpbGUgZnJvbSBhIEZpbGVFbnRyeSBhbmQgY2FsbHMgYSBjdXN0
b20gdmVyaWZpY2F0aW9uIGZ1bmN0aW9uIG9uIGl0LgorZnVuY3Rpb24gdmVyaWZ5RmlsZUNvbnRl
bnRzKGZpbGVFbnRyeSwgdmVyaWZ5RnVuYywgYXJnMCwgYXJnMSwgb25TdWNjZXNzKQoreworICAg
IGZpbGVFbnRyeS5maWxlKAorICAgICAgICBmdW5jdGlvbihmaWxlKSB7CisgICAgICAgICAgICB2
ZXJpZnlGdW5jKGZpbGUsIGFyZzAsIGFyZzEsIG9uU3VjY2Vzcyk7CisgICAgICAgIH0sCisgICAg
ICAgIG9uRXJyb3IpOworfQorCisvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCB3aXRoIHZlcmlmeUZp
bGVDb250ZW50cy4KK2Z1bmN0aW9uIHZlcmlmeUZpbGVMZW5ndGhIZWxwZXIoZmlsZSwgbGVuZ3Ro
LCB1bnVzZWQsIG9uU3VjY2VzcykKK3sKKyAgICBhc3NlcnQoZmlsZS5zaXplID09IGxlbmd0aCk7
CisgICAgb25TdWNjZXNzKCk7Cit9CisKKy8vIFZlcmlmaWVzIHRoYXQgdGhlIGNvbnRlbnRzIG9m
IGZpbGVFbnRyeSBoYXZlIHRoZSBzdXBwbGllZCBsZW5ndGguCitmdW5jdGlvbiB2ZXJpZnlGaWxl
TGVuZ3RoKGZpbGVFbnRyeSwgbGVuZ3RoLCBvblN1Y2Nlc3MpCit7CisgICAgdmVyaWZ5RmlsZUNv
bnRlbnRzKGZpbGVFbnRyeSwgdmVyaWZ5RmlsZUxlbmd0aEhlbHBlciwgbGVuZ3RoLCBudWxsLCBv
blN1Y2Nlc3MpOworfQorCisvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCB3aXRoIHZlcmlmeUZpbGVD
b250ZW50cy4KK2Z1bmN0aW9uIHZlcmlmeUJ5dGVSYW5nZUlzWmVyb2VzSGVscGVyKGZpbGUsIHN0
YXJ0LCBsZW5ndGgsIG9uU3VjY2VzcykKK3sKKyAgICB2YXIgZmlsZVJlYWRlciA9IG5ldyBGaWxl
UmVhZGVyKCk7CisgICAgZmlsZVJlYWRlci5vbmVycm9yID0gb25FcnJvcjsKKyAgICBmaWxlUmVh
ZGVyLm9ubG9hZCA9CisgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIHJlc3Vs
dCA9IGZpbGVSZWFkZXIucmVzdWx0OworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBs
ZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICBhc3NlcnQocmVzdWx0LmNoYXJDb2RlQXQoaSkg
PT0gMCk7CisgICAgICAgICAgICBvblN1Y2Nlc3MoKTsKKyAgICAgICAgfTsKKyAgICBmaWxlUmVh
ZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlLnNsaWNlKHN0YXJ0LCBsZW5ndGgpKTsKK30KKwor
Ly8gVmVyaWZpZXMgdGhhdCBmaWxlRW50cnksIGF0IG9mZnNldCwgaXMgYWxsIHplcm9lcyBmb3Ig
bGVuZ3RoIGJ5dGVzLgorZnVuY3Rpb24gdmVyaWZ5Qnl0ZVJhbmdlSXNaZXJvZXMoZmlsZUVudHJ5
LCBvZmZzZXQsIGxlbmd0aCwgb25TdWNjZXNzKQoreworICAgIHZlcmlmeUZpbGVDb250ZW50cyhm
aWxlRW50cnksIHZlcmlmeUJ5dGVSYW5nZUlzWmVyb2VzSGVscGVyLCBvZmZzZXQsIGxlbmd0aCwg
b25TdWNjZXNzKTsKK30KKworLy8gSGVscGVyIGZ1bmN0aW9uIHVzZWQgd2l0aCB2ZXJpZnlGaWxl
Q29udGVudHMuCitmdW5jdGlvbiB2ZXJpZnlCeXRlUmFuZ2VBc1N0cmluZ0hlbHBlcihmaWxlLCBz
dGFydCwgZGF0YSwgb25TdWNjZXNzKQoreworICAgIHZhciBmaWxlUmVhZGVyID0gbmV3IEZpbGVS
ZWFkZXIoKTsKKyAgICBmaWxlUmVhZGVyLm9uZXJyb3IgPSBvbkVycm9yOworICAgIGZpbGVSZWFk
ZXIub25sb2FkID0KKyAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnQoZmls
ZVJlYWRlci5yZXN1bHQgPT0gZGF0YSk7CisgICAgICAgICAgICBvblN1Y2Nlc3MoKTsKKyAgICAg
ICAgfTsKKyAgICBmaWxlUmVhZGVyLnJlYWRBc1RleHQoZmlsZS5zbGljZShzdGFydCwgZGF0YS5s
ZW5ndGgpKTsKK30KKworLy8gVmVyaWZpZXMgdGhhdCB0aGUgY29udGVudHMgb2YgZmlsZUVudHJ5
LCBhdCBvZmZzZXQsIG1hdGNoIGNvbnRlbnRzIFthIHN0cmluZ10uCitmdW5jdGlvbiB2ZXJpZnlC
eXRlUmFuZ2VBc1N0cmluZyhmaWxlRW50cnksIG9mZnNldCwgY29udGVudHMsIG9uU3VjY2VzcykK
K3sKKyAgICB2ZXJpZnlGaWxlQ29udGVudHMoZmlsZUVudHJ5LCB2ZXJpZnlCeXRlUmFuZ2VBc1N0
cmluZ0hlbHBlciwgb2Zmc2V0LCBjb250ZW50cywgb25TdWNjZXNzKTsKK30KKworLy8gQ3JlYXRl
cyBhIGZpbGUgY2FsbGVkIGZpbGVOYW1lIGluIGZpbGVTeXN0ZW0ncyByb290IGRpcmVjdG9yeSwg
dHJ1bmNhdGVzIGl0IHRvIHplcm8gbGVuZ3RoIGp1c3QgaW4gY2FzZSwgYW5kIGNhbGxzIG9uU3Vj
Y2VzcywgcGFzc2luZyBpdCBhIEZpbGVFbnRyeSBhbmQgRmlsZVdyaXRlciBmb3IgdGhlIG5ldyBm
aWxlLgorZnVuY3Rpb24gY3JlYXRlRW1wdHlGaWxlKGZpbGVTeXN0ZW0sIGZpbGVOYW1lLCBvblN1
Y2Nlc3MpCit7CisgICAgZnVuY3Rpb24gZ2V0U3VjY2Vzc0Z1bmMoZmlsZUVudHJ5LCBmaWxlV3Jp
dGVyKSB7CisgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIG9uU3VjY2Vz
cyhmaWxlRW50cnksIGZpbGVXcml0ZXIpOworICAgICAgICB9CisgICAgfQorICAgIGZ1bmN0aW9u
IGdldEZpbGVXcml0ZXJDYWxsYmFjayhmaWxlRW50cnkpIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uKGZpbGVXcml0ZXIpIHsKKyAgICAgICAgICAgIHZhciBzdWNjZXNzRnVuYyA9IGdldFN1Y2Nl
c3NGdW5jKGZpbGVFbnRyeSwgZmlsZVdyaXRlcik7CisgICAgICAgICAgICBmaWxlV3JpdGVyLm9u
RXJyb3IgPSBvbkVycm9yOworICAgICAgICAgICAgZmlsZVdyaXRlci5vbndyaXRlID0gZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgdmVyaWZ5RmlsZUxlbmd0aChmaWxlRW50cnksIDAsIHN1
Y2Nlc3NGdW5jKTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBmaWxlV3JpdGVyLnRydW5j
YXRlKDApOworICAgICAgICB9CisgICAgfQorICAgIGZ1bmN0aW9uIG9uRmlsZUVudHJ5KGZpbGVF
bnRyeSkgeworICAgICAgICBmaWxlRW50cnlGb3JDbGVhbnVwID0gZmlsZUVudHJ5OworICAgICAg
ICB2YXIgb25GaWxlV3JpdGVyID0gZ2V0RmlsZVdyaXRlckNhbGxiYWNrKGZpbGVFbnRyeSk7Cisg
ICAgICAgIGZpbGVFbnRyeS5jcmVhdGVXcml0ZXIob25GaWxlV3JpdGVyLCBvbkVycm9yKTsKKyAg
ICB9CisgICAgYXNzZXJ0KGZpbGVTeXN0ZW0pOworICAgIGZpbGVTeXN0ZW0ucm9vdC5nZXRGaWxl
KGZpbGVOYW1lLCB7Y3JlYXRlOnRydWV9LCBvbkZpbGVFbnRyeSwgb25FcnJvcik7Cit9CisKK2Z1
bmN0aW9uIHdyaXRlU3RyaW5nKGZpbGVFbnRyeSwgZmlsZVdyaXRlciwgb2Zmc2V0LCBkYXRhLCBv
blN1Y2Nlc3MpCit7CisgICAgdmFyIGJiID0gbmV3IEJsb2JCdWlsZGVyKCk7CisgICAgYmIuYXBw
ZW5kKGRhdGEpOworICAgIHZhciBibG9iID0gYmIuZ2V0QmxvYigpOworICAgIGZpbGVXcml0ZXIu
c2VlayhvZmZzZXQpOworICAgIGZpbGVXcml0ZXIud3JpdGUoYmxvYik7CisgICAgZmlsZVdyaXRl
ci5vbndyaXRlID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZlcmlmeUJ5dGVSYW5nZUFzU3RyaW5n
KGZpbGVFbnRyeSwgb2Zmc2V0LCBkYXRhLCBvblN1Y2Nlc3MpOworICAgIH07Cit9CisKK2Z1bmN0
aW9uIHNldHVwQW5kUnVuVGVzdChzaXplLCB0ZXN0TmFtZSwgdGVzdEZ1bmMpCit7CisgICAgaWYg
KCFyZXF1ZXN0RmlsZVN5c3RlbSkgeworICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVz
IEZpbGVTeXN0ZW0gQVBJIHN1cHBvcnQuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
ZGVidWcoInN0YXJ0aW5nIHRlc3QiKTsKKyAgICByZXF1ZXN0RmlsZVN5c3RlbShURU1QT1JBUlks
IHNpemUsIGZ1bmN0aW9uKGZzKSB7CisgICAgICAgIGNyZWF0ZUVtcHR5RmlsZShmcywgdGVzdE5h
bWUsIHRlc3RGdW5jKTsKKyAgICB9LCBvbkVycm9yKTsKK30KKwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1v
bi5qcwkocmV2aXNpb24gNzE1NDkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVz
b3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTYgKzEsMjUg
QEAKIGZ1bmN0aW9uIGRlYnVnKG1lc3NhZ2UpCiB7Ci0gICAgcG9zdE1lc3NhZ2UobWVzc2FnZSk7
CisgICAgcG9zdE1lc3NhZ2UoIk1FU0c6IiArIG1lc3NhZ2UpOwogfQogCiBmdW5jdGlvbiBmaW5p
c2hKU1Rlc3QoKQogewotICAgIHBvc3RNZXNzYWdlKCJET05FIik7CisgICAgc2hvdWxkQmVUcnVl
KCJzdWNjZXNzZnVsbHlQYXJzZWQiKTsKKyAgICBwb3N0TWVzc2FnZSgiRE9ORToiKTsKIH0KIAog
ZnVuY3Rpb24gZGVzY3JpcHRpb24obWVzc2FnZSkKIHsKLSAgICBwb3N0TWVzc2FnZSgnRGVzY3Jp
cHRpb246ICcgKyBtZXNzYWdlKTsKKyAgICBwb3N0TWVzc2FnZSgnREVTQzonICsgbWVzc2FnZSk7
Cit9CisKK2Z1bmN0aW9uIHRlc3RQYXNzZWQobXNnKSB7CisgICAgcG9zdE1lc3NhZ2UoIlBBU1M6
IiArIG1zZyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RGYWlsZWQobXNnKSB7CisgICAgcG9zdE1lc3Nh
Z2UoIkZBSUw6IiArIG1zZyk7CiB9CiAKIGZ1bmN0aW9uIHNob3VsZEJlKF9hLCBfYikKQEAgLTIw
LDkgKzI5LDkgQEAgZnVuY3Rpb24gc2hvdWxkQmUoX2EsIF9iKQogICB2YXIgX2F2ID0gZXZhbChf
YSk7CiAgIHZhciBfYnYgPSBldmFsKF9iKTsKICAgaWYgKF9hdiA9PT0gX2J2KQotICAgIGRlYnVn
KCJQQVNTOiAiICsgX2EgKyAiIGlzICIgKyBfYik7CisgICAgdGVzdFBhc3NlZChfYSArICIgaXMg
IiArIF9iKTsKICAgZWxzZQotICAgIGRlYnVnKCJGQUlMOiAiICsgX2EgKyAiIHNob3VsZCBiZSAi
ICsgX2J2ICsgIiAob2YgdHlwZSAiICsgdHlwZW9mIF9idiArICIpLiBXYXMgIiArIF9hdiArICIg
KG9mIHR5cGUgIiArIHR5cGVvZiBfYXYgKyAiKS4iKTsKKyAgICB0ZXN0RmFpbGVkKF9hICsgIiBz
aG91bGQgYmUgIiArIF9idiArICIgKG9mIHR5cGUgIiArIHR5cGVvZiBfYnYgKyAiKS4gV2FzICIg
KyBfYXYgKyAiIChvZiB0eXBlICIgKyB0eXBlb2YgX2F2ICsgIikuIik7CiB9CiAKIGZ1bmN0aW9u
IHNob3VsZEJlVHJ1ZShfYSkgeyBzaG91bGRCZShfYSwgInRydWUiKTsgfQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC1wb3N0LmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29y
a2VyLXRlc3QtcG9zdC5qcwkocmV2aXNpb24gNzE1NDkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXBvc3QuanMJKHdvcmtpbmcgY29weSkK
QEAgLTEsOCArMCwwIEBACi13YXNQb3N0VGVzdFNjcmlwdFBhcnNlZCA9IHRydWU7Ci0KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7Ci0gICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotfQotaWYg
KHdpbmRvdy53YXNGaW5pc2hKU1Rlc3RDYWxsZWQpCi0gICAgZmluaXNoSlNUZXN0KCk7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXBy
ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2Vz
L2ZzLXdvcmtlci10ZXN0LXByZS5qcwkocmV2aXNpb24gNzE1NDkpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qcwkod29ya2luZyBj
b3B5KQpAQCAtMSwzNiArMCwwIEBACi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLQotZnVuY3Rpb24gZGVidWco
bWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVy
SFRNTCArPSBtZXNzYWdlICsgIjxici8+IjsKLX0KLQotZnVuY3Rpb24gc3RhcnRXb3JrZXIodGVz
dFNjcmlwdFVSTCkKLXsKLSAgICBkZWJ1ZygnU3RhcnRpbmcgd29ya2VyOiAnICsgdGVzdFNjcmlw
dFVSTCk7Ci0gICAgdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIodGVzdFNjcmlwdFVSTCk7Ci0gICAg
d29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgZGVidWco
ZXZlbnQuZGF0YSk7Ci0gICAgICAgIGlmIChldmVudC5kYXRhID09ICJET05FIikKLSAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH07Ci0KLSAgICB3b3JrZXIub25lcnJvciA9IGZ1bmN0
aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgYWxlcnQoZXZlbnQpOwotICAgICAgICBkZWJ1Zygn
R290IGVycm9yIGZyb20gd29ya2VyOiAnICsgZXZlbnQubWVzc2FnZSk7Ci0gICAgICAgIGZpbmlz
aEpTVGVzdCgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gZmluaXNoSlNUZXN0KCkKLXsKLSAgICB3
YXNGaW5pc2hKU1Rlc3RDYWxsZWQgPSB0cnVlOwotICAgIGlmICghd2luZG93Lndhc1Bvc3RUZXN0
U2NyaXB0UGFyc2VkKQotICAgICAgICByZXR1cm47Ci0gICAgZGVidWcoJzxiciAvPjxzcGFuIGNs
YXNzPSJwYXNzIj5URVNUIENPTVBMRVRFPC9zcGFuPicpOwotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKLX0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29y
a2VyLXRlc3QtdXRpbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMJKHJldmlzaW9uIDcxNTQ5KQkoZnJv
bSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXBy
ZS5qczo3MTU0OSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMt
d29ya2VyLXRlc3QtdXRpbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2IEBACitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKworZnVuY3Rpb24gZGVidWcobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxici8+IjsK
K30KKworZnVuY3Rpb24gc3RhcnRXb3JrZXIodGVzdFNjcmlwdFVSTCkKK3sKKyAgICBkZWJ1Zygn
U3RhcnRpbmcgd29ya2VyOiAnICsgdGVzdFNjcmlwdFVSTCk7CisgICAgdmFyIHdvcmtlciA9IG5l
dyBXb3JrZXIodGVzdFNjcmlwdFVSTCk7CisgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9u
KGV2ZW50KQorICAgIHsKKyAgICAgICAgZGVidWcoZXZlbnQuZGF0YSk7CisgICAgICAgIGlmIChl
dmVudC5kYXRhID09ICJET05FIikKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH07
CisKKyAgICB3b3JrZXIub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAg
YWxlcnQoZXZlbnQpOworICAgICAgICBkZWJ1ZygnR290IGVycm9yIGZyb20gd29ya2VyOiAnICsg
ZXZlbnQubWVzc2FnZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KK30KKworZnVu
Y3Rpb24gZmluaXNoSlNUZXN0KCkKK3sKKyAgICB3YXNGaW5pc2hKU1Rlc3RDYWxsZWQgPSB0cnVl
OworICAgIGlmICghd2luZG93Lndhc1Bvc3RUZXN0U2NyaXB0UGFyc2VkKQorICAgICAgICByZXR1
cm47CisgICAgZGVidWcoJzxiciAvPjxzcGFuIGNsYXNzPSJwYXNzIj5URVNUIENPTVBMRVRFPC9z
cGFuPicpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0
LXV0aWwuanMJKHJldmlzaW9uIDcxNTQ5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC11dGlsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEw
ICsxLDQgQEAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotCi1mdW5jdGlvbiBkZWJ1ZyhtZXNzYWdlKQotewot
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9IG1lc3Nh
Z2UgKyAiPGJyLz4iOwotfQord2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogCiBmdW5jdGlv
biBzdGFydFdvcmtlcih0ZXN0U2NyaXB0VVJMKQogewpAQCAtMTIsOSArNiwyMiBAQCBmdW5jdGlv
biBzdGFydFdvcmtlcih0ZXN0U2NyaXB0VVJMKQogICAgIHZhciB3b3JrZXIgPSBuZXcgV29ya2Vy
KHRlc3RTY3JpcHRVUkwpOwogICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkK
ICAgICB7Ci0gICAgICAgIGRlYnVnKGV2ZW50LmRhdGEpOwotICAgICAgICBpZiAoZXZlbnQuZGF0
YSA9PSAiRE9ORSIpCi0gICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgaWYgKGV2
ZW50LmRhdGEubGVuZ3RoIDwgNSB8fCBldmVudC5kYXRhLmNoYXJBdCg0KSAhPSAnOicpIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJHb3QgaW52YWxpZCBtZXNzYWdlIGZyb20gd29ya2VyOiIgKyAoZXZl
bnQuZGF0YSA/IGV2ZW50LmRhdGEgOiAibnVsbCIpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHZhciBjb2RlID0gZXZlbnQuZGF0YS5zdWJzdHJpbmcoMCwgNCk7CisgICAgICAgICAg
ICB2YXIgcGF5bG9hZCA9ICJbV29ya2VyXSAiICsgZXZlbnQuZGF0YS5zdWJzdHJpbmcoNSk7Cisg
ICAgICAgICAgICBpZiAoY29kZSA9PSAiUEFTUyIpCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZChwYXlsb2FkKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNvZGUgPT0gIkZBSUwiKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQocGF5bG9hZCk7CisgICAgICAgICAgICBlbHNlIGlmIChjb2Rl
ID09ICJERVNDIikKKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbihwYXlsb2FkKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGNvZGUgPT0gIkRPTkUiKQorICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICAgICAgZWxzZSBpZiAoY29kZSA9PSAiTUVTRyIpCisgICAgICAgICAg
ICAgICAgZGVidWcocGF5bG9hZCk7CisgICAgICAgIH0KICAgICB9OwogCiAgICAgd29ya2VyLm9u
ZXJyb3IgPSBmdW5jdGlvbihldmVudCkKQEAgLTI0LDEzICszMSwzIEBAIGZ1bmN0aW9uIHN0YXJ0
V29ya2VyKHRlc3RTY3JpcHRVUkwpCiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgIH0KIH0K
LQotZnVuY3Rpb24gZmluaXNoSlNUZXN0KCkKLXsKLSAgICB3YXNGaW5pc2hKU1Rlc3RDYWxsZWQg
PSB0cnVlOwotICAgIGlmICghd2luZG93Lndhc1Bvc3RUZXN0U2NyaXB0UGFyc2VkKQotICAgICAg
ICByZXR1cm47Ci0gICAgZGVidWcoJzxiciAvPjxzcGFuIGNsYXNzPSJwYXNzIj5URVNUIENPTVBM
RVRFPC9zcGFuPicpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLX0KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXBlcnNpc3RlbnQtc3luYy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBs
ZS1wZXJzaXN0ZW50LXN5bmMuanMJKHJldmlzaW9uIDcxNTQ5KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0xMCw1ICsxMCw1IEBAIHZhciBmaWxlU3lzdGVtID0gcmVxdWVzdEZpbGVTeXN0
ZW1TeW5jKFAKIGRlYnVnKCJTdWNjZXNzZnVsbHkgb2J0YWluZWQgUEVSU0lTVEVOVCBGaWxlU3lz
dGVtOiIgKyBmaWxlU3lzdGVtLm5hbWUpOwogc2hvdWxkQmVUcnVlKCJmaWxlU3lzdGVtLm5hbWUu
bGVuZ3RoID4gMCIpOwogc2hvdWxkQmUoImZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCIsICciLyIn
KTsKLWZpbmlzaEpTVGVzdCgpOwogdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CitmaW5p
c2hKU1Rlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMv
c2ltcGxlLXRlbXBvcmFyeS1zeW5jLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLmpzCShyZXZpc2lvbiA3
MTU0OSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2ltcGxlLXRl
bXBvcmFyeS1zeW5jLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw1ICsxMCw1IEBAIHZhciBmaWxl
U3lzdGVtID0gcmVxdWVzdEZpbGVTeXN0ZW1TeW5jKFQKIGRlYnVnKCJTdWNjZXNzZnVsbHkgb2J0
YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06IiArIGZpbGVTeXN0ZW0ubmFtZSk7CiBzaG91bGRC
ZVRydWUoImZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIik7CiBzaG91bGRCZSgiZmlsZVN5c3Rl
bS5yb290LmZ1bGxQYXRoIiwgJyIvIicpOwotZmluaXNoSlNUZXN0KCk7CiB2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKK2ZpbmlzaEpTVGVzdCgpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3Jlc291cmNlcy9zeW5jLW9wZXJhdGlvbnMuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zeW5jLW9wZXJhdGlvbnMuanMJ
KHJldmlzaW9uIDcxNTQ5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNl
cy9zeW5jLW9wZXJhdGlvbnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDUgQEAgcGF0
aHMuc29ydCgpOwogc2hvdWxkQmUoJyInICsgcGF0aHMuam9pbignLCcpICsgJyInLCAnIi9hLC9i
LC9jLC9kMiwvZSwvZiInKTsKIHNob3VsZEJlKCJkaXJzQ291bnQiLCAiMyIpOwogcmVtb3ZlQWxs
SW5EaXJlY3RvcnlTeW5jKGZpbGVTeXN0ZW0ucm9vdCk7Ci1maW5pc2hKU1Rlc3QoKTsKLQogdmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CitmaW5pc2hKU1Rlc3QoKTsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2Fz
eW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3MTU0OSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1ICsxLDE4IEBACi1UaGlzIHRlc3RzIHJ1bm5pbmcgbXVs
dGlwbGUgYXN5bmMgZmlsZXN5c3RlbSBvcGVyYXRpb25zIGluIFdvcmtlci4KK1tXb3JrZXJdIFRl
c3QgbWFraW5nIG11bHRpcGxlIGFzeW5jIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucy4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCiAKIFN0YXJ0aW5nIHdvcmtlcjogLi4vcmVzb3VyY2VzL2Fz
eW5jLW9wZXJhdGlvbnMuanMKLURlc2NyaXB0aW9uOiBUZXN0IG1ha2luZyBtdWx0aXBsZSBhc3lu
YyBGaWxlU3lzdGVtIG9wZXJhdGlvbnMuCi1yZXF1ZXN0ZWQgRmlsZVN5c3RlbS4KLUdvdCBGaWxl
U3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5Ci1TdGFydGluZyBhc3luYyB0ZXN0IHN0YWdlIDEuCi1T
dGFydGluZyBhc3luYyB0ZXN0IHN0YWdlIDIuCi1WZXJpZnlpbmcgdGhlIEZpbGVTeXN0ZW0gc3Rh
dHVzLgotUEFTUzogIi9hLC9iLC9jLC9kMiwvZSwvZiIgaXMgIi9hLC9iLC9jLC9kMiwvZSwvZiIK
LVBBU1M6IGRpcnNDb3VudCBpcyAzCi1ET05FCitbV29ya2VyXSByZXF1ZXN0ZWQgRmlsZVN5c3Rl
bS4KK1tXb3JrZXJdIEdvdCBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5CitbV29ya2VyXSBT
dGFydGluZyBhc3luYyB0ZXN0IHN0YWdlIDEuCitbV29ya2VyXSBTdGFydGluZyBhc3luYyB0ZXN0
IHN0YWdlIDIuCitbV29ya2VyXSBWZXJpZnlpbmcgdGhlIEZpbGVTeXN0ZW0gc3RhdHVzLgorUEFT
UyBbV29ya2VyXSAiL2EsL2IsL2MsL2QyLC9lLC9mIiBpcyAiL2EsL2IsL2MsL2QyLC9lLC9mIgor
UEFTUyBbV29ya2VyXSBkaXJzQ291bnQgaXMgMworUEFTUyBbV29ya2VyXSBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENP
TVBMRVRFCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5j
LW9wZXJhdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vd29ya2Vycy9hc3luYy1vcGVyYXRpb25zLmh0bWwJKHJldmlzaW9uIDcxNTQ5KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvYXN5bmMtb3BlcmF0aW9ucy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDE1ICsxLDE3IEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC11dGlsLmpz
Ij48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj5UaGlzIHRl
c3RzIHJ1bm5pbmcgbXVsdGlwbGUgYXN5bmMgZmlsZXN5c3RlbSBvcGVyYXRpb25zIGluIFdvcmtl
ci48L3A+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgogPHNjcmlwdD4KIHN0YXJ0V29ya2VyKCcuLi9yZXNvdXJjZXMvYXN5bmMtb3BlcmF0aW9ucy5q
cycpOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiA8L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CiA8L2JvZHk+CiA8L2h0bWw+CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93
b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDcxNTQ5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDExICsxLDE0IEBACi1UaGlzIHRlc3RzIHJldHVybmluZyBGaWxlIGZyb20gRmls
ZUVudHJ5IGluIHdvcmtlcnMuCitbV29ya2VyXSBPYnRhaW5pbmcgRmlsZSBmcm9tIEZpbGVFbnRy
eS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCiAKIFN0YXJ0aW5nIHdvcmtlcjogLi4v
cmVzb3VyY2VzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LmpzCi1EZXNjcmlwdGlvbjogT2J0YWluaW5n
IEZpbGUgZnJvbSBGaWxlRW50cnkuCi1QQVNTOiB0ZXN0RmlsZS5uYW1lIGlzIHRlc3RGaWxlRW50
cnkubmFtZQotUEFTUzogdGVzdEZpbGUudHlwZSBpcyAndGV4dC9wbGFpbicKLVBBU1M6IHRlc3RG
aWxlLnNpemUgaXMgMAotRE9ORQorUEFTUyBbV29ya2VyXSB0ZXN0RmlsZS5uYW1lIGlzIHRlc3RG
aWxlRW50cnkubmFtZQorUEFTUyBbV29ya2VyXSB0ZXN0RmlsZS50eXBlIGlzICd0ZXh0L3BsYWlu
JworUEFTUyBbV29ya2VyXSB0ZXN0RmlsZS5zaXplIGlzIDAKK1BBU1MgW1dvcmtlcl0gc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAog
VEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1z
eW5jLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzE1NDkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSwxNCBAQAotVGhpcyB0ZXN0cyByZXR1cm5pbmcgRmls
ZSBmcm9tIEZpbGVFbnRyeVN5bmMgaW4gd29ya2Vycy4KK1tXb3JrZXJdIE9idGFpbmluZyBGaWxl
IGZyb20gRmlsZUVudHJ5U3luYy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCiAKIFN0
YXJ0aW5nIHdvcmtlcjogLi4vcmVzb3VyY2VzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5bmMuanMK
LURlc2NyaXB0aW9uOiBPYnRhaW5pbmcgRmlsZSBmcm9tIEZpbGVFbnRyeVN5bmMuCi1QQVNTOiB0
ZXN0RmlsZS5uYW1lIGlzIHRlc3RGaWxlRW50cnkubmFtZQotUEFTUzogdGVzdEZpbGUudHlwZSBp
cyAndGV4dC9wbGFpbicKLVBBU1M6IHRlc3RGaWxlLnNpemUgaXMgMAotRE9ORQorUEFTUyBbV29y
a2VyXSB0ZXN0RmlsZS5uYW1lIGlzIHRlc3RGaWxlRW50cnkubmFtZQorUEFTUyBbV29ya2VyXSB0
ZXN0RmlsZS50eXBlIGlzICd0ZXh0L3BsYWluJworUEFTUyBbV29ya2VyXSB0ZXN0RmlsZS5zaXpl
IGlzIDAKK1BBU1MgW1dvcmtlcl0gc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmls
ZS1mcm9tLWZpbGUtZW50cnktc3luYy5odG1sCShyZXZpc2lvbiA3MTU0OSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5bmMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMSwxNiBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtdXRp
bC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+VGhp
cyB0ZXN0cyByZXR1cm5pbmcgRmlsZSBmcm9tIEZpbGVFbnRyeVN5bmMgaW4gd29ya2Vycy48L3A+
Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogPHNj
cmlwdD4KIHN0YXJ0V29ya2VyKCcuLi9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3lu
Yy5qcycpOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiA8L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5Lmh0bWwJKHJl
dmlzaW9uIDcxNTQ5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmls
ZS1mcm9tLWZpbGUtZW50cnkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMSwxNiBAQAog
PGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1v
bi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxw
IGlkPSJkZXNjcmlwdGlvbiI+VGhpcyB0ZXN0cyByZXR1cm5pbmcgRmlsZSBmcm9tIEZpbGVFbnRy
eSBpbiB3b3JrZXJzLjwvcD4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgogPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CiA8c2NyaXB0Pgogc3RhcnRXb3JrZXIoJy4uL3Jlc291cmNlcy9maWxlLWZy
b20tZmlsZS1lbnRyeS5qcycpOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiA8
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2Zp
bGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci10cnVuY2F0ZS1l
eHRlbmQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACitbV29ya2Vy
XSBUZXN0IG9mIGV4dGVuZGluZyBhIGZpbGUgdXNpbmcgdHJ1bmNhdGUoKS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCitTdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9maWxlLXdy
aXRlci10cnVuY2F0ZS1leHRlbmQuanMKK1tXb3JrZXJdIHN0YXJ0aW5nIHRlc3QKK1BBU1MgW1dv
cmtlcl0gVHJ1bmNhdGUgZXh0ZW5zaW9uIHZlcmlmaWVkLgorUEFTUyBbV29ya2VyXSBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJz
L2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMv
ZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjAgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgPGhlYWQ+CisgICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
ICAgIDx0aXRsZT5GaWxlIFdyaXRlciBUcnVuY2F0ZS1Uby1FeHRlbmQgV29ya2VyPC90aXRsZT4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwu
anMiPjwvc2NyaXB0PgorIDwvaGVhZD4KKyA8Ym9keT4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlv
biI+PC9kaXY+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgPHNjcmlwdD4KKyAg
ICAgICAgc3RhcnRXb3JrZXIoIi4uL3Jlc291cmNlcy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRl
bmQuanMiKTsKKyAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAg
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorIDwvYm9keT4KKzwvaHRtbD4KKworCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxl
LXBlcnNpc3RlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3MTU0OSkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50LWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSwxNCBAQAotVGhpcyB0ZXN0cyByZXF1ZXN0aW5nIFBF
UlNJU1RFTlQgRmlsZVN5c3RlbSBpbiBXb3JrZXIuCitbV29ya2VyXSByZXF1ZXN0RmlsZVN5c3Rl
bSBQRVJTSVNURU5UIHRlc3QuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwogCiBTdGFy
dGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC5qcwotRGVzY3JpcHRp
b246IHJlcXVlc3RGaWxlU3lzdGVtIFBFUlNJU1RFTlQgdGVzdC4KLVN1Y2Nlc3NmdWxseSBvYnRh
aW5lZCBQRVJTSVNURU5UIEZpbGVTeXN0ZW06ZmlsZV9fMDpQZXJzaXN0ZW50Ci1QQVNTOiBmaWxl
U3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCi1QQVNTOiBmaWxlU3lzdGVtLnJvb3QuZnVs
bFBhdGggaXMgIi8iCi1ET05FCitbV29ya2VyXSBTdWNjZXNzZnVsbHkgb2J0YWluZWQgUEVSU0lT
VEVOVCBGaWxlU3lzdGVtOmZpbGVfXzA6UGVyc2lzdGVudAorUEFTUyBbV29ya2VyXSBmaWxlU3lz
dGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIGZpbGVTeXN0ZW0ucm9v
dC5mdWxsUGF0aCBpcyAiLyIKK1BBU1MgW1dvcmtlcl0gc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQogCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVu
dC1zeW5jLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gNzE1NDkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUt
cGVyc2lzdGVudC1zeW5jLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSwx
NCBAQAotVGhpcyB0ZXN0cyByZXF1ZXN0aW5nIFBFUlNJU1RFTlQgRmlsZVN5c3RlbVN5bmMgaW4g
V29ya2VyLgorW1dvcmtlcl0gcmVxdWVzdEZpbGVTeXN0ZW1TeW5jIFBFUlNJU1RFTlQgdGVzdC4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCiAKIFN0YXJ0aW5nIHdvcmtlcjogLi4vcmVz
b3VyY2VzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMuanMKLURlc2NyaXB0aW9uOiByZXF1ZXN0Rmls
ZVN5c3RlbVN5bmMgUEVSU0lTVEVOVCB0ZXN0LgotU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFBFUlNJ
U1RFTlQgRmlsZVN5c3RlbTpmaWxlX18wOlBlcnNpc3RlbnQKLVBBU1M6IGZpbGVTeXN0ZW0ubmFt
ZS5sZW5ndGggPiAwIGlzIHRydWUKLVBBU1M6IGZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCBpcyAi
LyIKLURPTkUKK1tXb3JrZXJdIFN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBQRVJTSVNURU5UIEZpbGVT
eXN0ZW06ZmlsZV9fMDpQZXJzaXN0ZW50CitQQVNTIFtXb3JrZXJdIGZpbGVTeXN0ZW0ubmFtZS5s
ZW5ndGggPiAwIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gZmlsZVN5c3RlbS5yb290LmZ1bGxQYXRo
IGlzICIvIgorUEFTUyBbV29ya2VyXSBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCiAKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1w
bGUtcGVyc2lzdGVudC1zeW5jLmh0bWwJKHJldmlzaW9uIDcxNTQ5KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQtc3luYy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDE1ICsxLDE3IEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC11dGlsLmpzIj48
L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj5UaGlzIHRlc3Rz
IHJlcXVlc3RpbmcgUEVSU0lTVEVOVCBGaWxlU3lzdGVtU3luYyBpbiBXb3JrZXIuPC9wPgorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQ+
CiBzdGFydFdvcmtlcignLi4vcmVzb3VyY2VzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMuanMnKTsK
K3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwogPC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9i
b2R5PgogPC9odG1sPgogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9zaW1wbGUtcGVyc2lzdGVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50Lmh0bWwJKHJldmlzaW9uIDcxNTQ5
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3Rl
bnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMSwxNiBAQAogPGh0bWw+CiA8aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRl
c3QtdXRpbC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlv
biI+VGhpcyB0ZXN0cyByZXF1ZXN0aW5nIFBFUlNJU1RFTlQgRmlsZVN5c3RlbSBpbiBXb3JrZXIu
PC9wPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
IDxzY3JpcHQ+CiBzdGFydFdvcmtlcignLi4vcmVzb3VyY2VzL3NpbXBsZS1wZXJzaXN0ZW50Lmpz
Jyk7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIDwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
IDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL3NpbXBsZS10ZW1wb3JhcnktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3JhcnktZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiA3MTU0OSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJz
L3NpbXBsZS10ZW1wb3JhcnktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICsx
LDE0IEBACi1UaGlzIHRlc3RzIHJlcXVlc3RpbmcgVEVNUE9SQVJZIEZpbGVTeXN0ZW0gaW4gV29y
a2VyLgorW1dvcmtlcl0gcmVxdWVzdEZpbGVTeXN0ZW0gVEVNUE9SQVJZIHRlc3QuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKwogCiBTdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9z
aW1wbGUtdGVtcG9yYXJ5LmpzCi1EZXNjcmlwdGlvbjogcmVxdWVzdEZpbGVTeXN0ZW0gVEVNUE9S
QVJZIHRlc3QuCi1TdWNjZXNzZnVsbHkgb2J0YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06Zmls
ZV9fMDpUZW1wb3JhcnkKLVBBU1M6IGZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRydWUK
LVBBU1M6IGZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCBpcyAiLyIKLURPTkUKK1tXb3JrZXJdIFN1
Y2Nlc3NmdWxseSBvYnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5c3RlbTpmaWxlX18wOlRlbXBvcmFy
eQorUEFTUyBbV29ya2VyXSBmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCitQQVNT
IFtXb3JrZXJdIGZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCBpcyAiLyIKK1BBU1MgW1dvcmtlcl0g
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3Jhcnktc3lu
Yy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDcxNTQ5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMSArMSwxNCBAQAotVGhpcyB0ZXN0cyByZXF1ZXN0aW5nIFRFTVBPUkFS
WSBGaWxlU3lzdGVtU3luYyBpbiBXb3JrZXIuCitbV29ya2VyXSByZXF1ZXN0RmlsZVN5c3RlbVN5
bmMgVEVNUE9SQVJZIHRlc3QuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwogCiBTdGFy
dGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMuanMKLURlc2Ny
aXB0aW9uOiByZXF1ZXN0RmlsZVN5c3RlbVN5bmMgVEVNUE9SQVJZIHRlc3QuCi1TdWNjZXNzZnVs
bHkgb2J0YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06ZmlsZV9fMDpUZW1wb3JhcnkKLVBBU1M6
IGZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRydWUKLVBBU1M6IGZpbGVTeXN0ZW0ucm9v
dC5mdWxsUGF0aCBpcyAiLyIKLURPTkUKK1tXb3JrZXJdIFN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBU
RU1QT1JBUlkgRmlsZVN5c3RlbTpmaWxlX18wOlRlbXBvcmFyeQorUEFTUyBbV29ya2VyXSBmaWxl
U3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIGZpbGVTeXN0ZW0u
cm9vdC5mdWxsUGF0aCBpcyAiLyIKK1BBU1MgW1dvcmtlcl0gc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQog
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9y
YXJ5LXN5bmMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMuaHRtbAkocmV2aXNpb24gNzE1NDkpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNSArMSwxNyBAQAogPGh0bWw+CiA8aGVhZD4KLTxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3Qt
dXRpbC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+
VGhpcyB0ZXN0cyByZXF1ZXN0aW5nIFRFTVBPUkFSWSBGaWxlU3lzdGVtU3luYyBpbiBXb3JrZXIu
PC9wPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
IDxzY3JpcHQ+CiBzdGFydFdvcmtlcignLi4vcmVzb3VyY2VzL3NpbXBsZS10ZW1wb3Jhcnktc3lu
Yy5qcycpOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiA8L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL3NpbXBsZS10ZW1wb3JhcnkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5Lmh0bWwJKHJldmlzaW9u
IDcxNTQ5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRl
bXBvcmFyeS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0ICsxLDE2IEBACiA8aHRtbD4KIDxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3Jr
ZXItdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2Ny
aXB0aW9uIj5UaGlzIHRlc3RzIHJlcXVlc3RpbmcgVEVNUE9SQVJZIEZpbGVTeXN0ZW0gaW4gV29y
a2VyLjwvcD4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgogPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CiA8c2NyaXB0Pgogc3RhcnRXb3JrZXIoJy4uL3Jlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5
LmpzJyk7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIDwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93
b3JrZXJzL3N5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gNzE1NDkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9zeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsx
LDEzIEBACi1UaGlzIHRlc3RzIHJ1bm5pbmcgbXVsdGlwbGUgc3luYyBmaWxlc3lzdGVtIG9wZXJh
dGlvbnMgaW4gV29ya2VyLgorW1dvcmtlcl0gVGVzdCBtYWtpbmcgbXVsdGlwbGUgc3luY2hyb25v
dXMgRmlsZVN5c3RlbSBvcGVyYXRpb25zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
IAogU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvc3luYy1vcGVyYXRpb25zLmpzCi1EZXNj
cmlwdGlvbjogVGVzdCBtYWtpbmcgbXVsdGlwbGUgc3luY2hyb25vdXMgRmlsZVN5c3RlbSBvcGVy
YXRpb25zLgotUEFTUzogIi9hLC9iLC9jLC9kMiwvZSwvZiIgaXMgIi9hLC9iLC9jLC9kMiwvZSwv
ZiIKLVBBU1M6IGRpcnNDb3VudCBpcyAzCi1ET05FCitQQVNTIFtXb3JrZXJdICIvYSwvYiwvYywv
ZDIsL2UsL2YiIGlzICIvYSwvYiwvYywvZDIsL2UsL2YiCitQQVNTIFtXb3JrZXJdIGRpcnNDb3Vu
dCBpcyAzCitQQVNTIFtXb3JrZXJdIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRp
b25zLmh0bWwJKHJldmlzaW9uIDcxNTQ5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTUgKzEs
MTcgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtl
ci1jb21tb24uanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3Jr
ZXItdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPlRoaXMgdGVzdHMgcnVubmluZyBtdWx0aXBsZSBzeW5j
IGZpbGVzeXN0ZW0gb3BlcmF0aW9ucyBpbiBXb3JrZXIuPC9wPgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQ+CiBzdGFydFdvcmtlcign
Li4vcmVzb3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcycpOword2luZG93LnN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CiA8L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29y
a2VyLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74070</attachid>
            <date>2010-11-16 17:25:30 -0800</date>
            <delta_ts>2010-11-23 17:58:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47680-20101116172529.patch</filename>
            <type>text/plain</type>
            <size>37702</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDcyMTI1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTAtMTEtMDggIEVyaWMgVWhyaGFuZSAgPGVy
aWN1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgRmlsZVdyaXRlciB0ZXN0IHV0aWxpdGllcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NjgwCisKKyAgICAgICAgQ2xlYW5p
bmcgdXAgc2hhcmVkIHRlc3QgdXRpbGl0eSBmaWxlcyBjYXVzZWQgdGhlIGluY2x1ZGVzIGFuZCBv
dXRwdXQgb2YKKyAgICAgICAgYSBidW5jaCBvZiBleGlzdGluZyB0ZXN0cyBjaGFuZ2Ugc2xpZ2h0
bHksIHNvIEkndmUgcmVidWlsdCB0aGUKKyAgICAgICAgZXhwZWN0YXRpb24gZmlsZXMuCisKKyAg
ICAgICAgVGhpcyBpcyB0aGUgZmlyc3QgdGVzdCBbaW4gRE9NIGFuZCB3b3JrZXIgdmVyc2lvbnNd
IHRvIHVzZSB0aGUgbmV3IHV0aWxpdGllcy4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vZmls
ZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXRydW5jYXRl
LWV4dGVuZC5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmls
ZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmh0bWw6
IEFkZGVkLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBhIG5ldyB1dGlsaXR5IGZpbGUgZm9y
IEZpbGVXcml0ZXIgdGVzdHMuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9m
aWxlLXdyaXRlci11dGlscy5qczogQWRkZWQuCisKKyAgICAgICAgVG91Y2hlZCB1cCBhIGJpdAor
ICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qczoK
KworICAgICAgICBSZW1vdmVkCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9m
cy13b3JrZXItdGVzdC1wb3N0LmpzOgorCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3Jlc291
cmNlcy9mcy13b3JrZXItdGVzdC1wcmUuanM6CisgICAgICAgIHJlbmFtZWQgdG8gCisgICAgICAg
ICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC11dGlsLmpzOgorCisg
ICAgICAgIFRoZXNlIHRlc3RzIGFuZCB0aGVpciBleHBlY3RhdGlvbnMgd2VyZSB0d2Vha2VkIHNs
aWdodGx5IHRvIHVzZSB0aGUgbmV3IGNvZGUgbW9yZSBjbGVhbmx5LgorICAgICAgICAqIGZhc3Qv
ZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy5qczoKKyAgICAg
ICAgKiBmYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMuanM6
CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LXN5
bmMuanM6CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zeW5jLW9wZXJhdGlv
bnMuanM6CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvYXN5bmMtb3BlcmF0aW9u
cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvYXN5bmMt
b3BlcmF0aW9ucy5odG1sOgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUt
ZnJvbS1maWxlLWVudHJ5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmh0bWw6
CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnku
aHRtbDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVu
dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxl
LXBlcnNpc3RlbnQtc3luYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQtc3luYy5odG1sOgorICAgICAgICAqIGZhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50Lmh0bWw6CisgICAgICAgICogZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5
LXN5bmMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVt
cG9yYXJ5Lmh0bWw6CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVy
YXRpb25zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9z
eW5jLW9wZXJhdGlvbnMuaHRtbDoKKworICAgICAgICBSZW1vdmVkIHN1cHByZXNzaW9uIG9mIEZp
bGVXcml0ZXIgdGVzdHMsIGFzIHdlIG5vdyBoYXZlIHN1cHBvcnQgaW4gVGVzdFNoZWxsLgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKwogMjAxMC0x
MS0xNiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQuIFVwZGF0ZSBRdCBzcGVjaWZpYyBleHBlY3RlZCByZXN1bHRzIGFmdGVyIHI3MjEx
Ni4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci10cnVuY2F0
ZS1leHRlbmQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXRydW5jYXRl
LWV4dGVuZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorVGVzdCBv
ZiBleHRlbmRpbmcgYSBmaWxlIHVzaW5nIHRydW5jYXRlKCkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworc3RhcnRpbmcgdGVzdAorUEFTUyBUcnVuY2F0ZSBleHRlbnNpb24gdmVyaWZp
ZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRl
bmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13
cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTcgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+CisgPGhlYWQ+Cisg
ICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorICAgIDx0aXRsZT5GaWxlIFdyaXRlciBUcnVuY2F0ZS1Uby1FeHRlbmQ8L3Rp
dGxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZmlsZS13cml0ZXItdXRpbHMuanMi
Pjwvc2NyaXB0PgorIDwvaGVhZD4KKyA8Ym9keT4KKyAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgPHNjcmlwdCBzcmM9InJl
c291cmNlcy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyA8
L2JvZHk+Cis8L2h0bWw+CisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jl
c291cmNlcy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3lu
Yy5qcwkocmV2aXNpb24gNzIxMjUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVz
b3VyY2VzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5bmMuanMJKHdvcmtpbmcgY29weSkKQEAgLTE2
LDUgKzE2LDUgQEAgc2hvdWxkQmUoInRlc3RGaWxlLnR5cGUiLCAiJ3RleHQvcGxhaW4nIgogc2hv
dWxkQmUoInRlc3RGaWxlLnNpemUiLCAiMCIpOwogCiByZW1vdmVBbGxJbkRpcmVjdG9yeVN5bmMo
ZmlsZVN5c3RlbS5yb290KTsKLWZpbmlzaEpTVGVzdCgpOwogdmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CitmaW5pc2hKU1Rlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1
bmNhdGUtZXh0ZW5kLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuanMJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzkgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRT
Y3JpcHRzKCdmcy13b3JrZXItY29tbW9uLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnZmlsZS13
cml0ZXItdXRpbHMuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qgb2YgZXh0ZW5kaW5nIGEg
ZmlsZSB1c2luZyB0cnVuY2F0ZSgpLiIpOworCitmdW5jdGlvbiBvblRlc3RTdWNjZWVkZWQoKQor
eworICAgIHRlc3RQYXNzZWQoIlRydW5jYXRlIGV4dGVuc2lvbiB2ZXJpZmllZC4iKTsKKyAgICBj
bGVhblVwKCk7Cit9CisKK2Z1bmN0aW9uIHRydW5jYXRlVG9FeHRlbmQoZmlsZUVudHJ5LCBmaWxl
V3JpdGVyLCBjb250ZW50cywgb25TdWNjZXNzKQoreworICAgIHZhciBleHRlbnNpb24gPSA1Owor
ICAgIHZhciBsZW5ndGhDaGVja2VyID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZlcmlmeUZpbGVM
ZW5ndGgoZmlsZUVudHJ5LCBjb250ZW50cy5sZW5ndGggKyBleHRlbnNpb24sIG9uU3VjY2Vzcyk7
CisgICAgfTsKKyAgICB2YXIgZXh0ZW5zaW9uQ2hlY2tlciA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICB2ZXJpZnlCeXRlUmFuZ2VJc1plcm9lcyhmaWxlRW50cnksIGNvbnRlbnRzLmxlbmd0aCwgZXh0
ZW5zaW9uLCBsZW5ndGhDaGVja2VyKTsKKyAgICB9OworICAgIGZpbGVXcml0ZXIub253cml0ZSA9
IGZ1bmN0aW9uKCkgeworICAgICAgICB2ZXJpZnlCeXRlUmFuZ2VBc1N0cmluZyhmaWxlRW50cnks
IDAsIGNvbnRlbnRzLCBleHRlbnNpb25DaGVja2VyKTsKKyAgICB9OworICAgIGZpbGVXcml0ZXIu
dHJ1bmNhdGUoY29udGVudHMubGVuZ3RoICsgZXh0ZW5zaW9uKTsKK30KKworZnVuY3Rpb24gcnVu
VGVzdChmaWxlRW50cnksIGZpbGVXcml0ZXIpIHsKKyAgICB2YXIgY29udGVudHMgPSAiTG9yZW0g
aXBzdW0iOworICAgIHdyaXRlU3RyaW5nKGZpbGVFbnRyeSwgZmlsZVdyaXRlciwgMCwgY29udGVu
dHMsCisgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHRy
dW5jYXRlVG9FeHRlbmQoZmlsZUVudHJ5LCBmaWxlV3JpdGVyLCBjb250ZW50cywgb25UZXN0U3Vj
Y2VlZGVkKTsKKyAgICAgICAgICAgICAgICB9KTsKK30KKwordmFyIGpzVGVzdElzQXN5bmMgPSB0
cnVlOworc2V0dXBBbmRSdW5UZXN0KDEwMjQsICdmaWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQn
LCBydW5UZXN0KTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9maWxlLXdyaXRlci11dGlscy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3Jp
dGVyLXV0aWxzLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3Jlc291cmNlcy9maWxlLXdyaXRlci11dGlscy5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NDggQEAKK2Z1bmN0aW9uIHN0cmluZ2lmeU9iaihvKQoreworICAgIHMgPSAiIjsKKyAgICBpZiAo
bykKKyAgICAgICAgZm9yIChpbmRleCBpbiBvKSB7CisgICAgICAgICAgICBzICs9IGluZGV4ICsg
IjogIiArIG9baW5kZXhdICsgIjsiOworICAgICAgICB9CisgICAgcmV0dXJuIHM7Cit9CisKK2Z1
bmN0aW9uIG9uRXJyb3IoZSkKK3sKKyAgICB0ZXN0RmFpbGVkKCJHb3QgZXJyb3I6ICIgKyBzdHJp
bmdpZnlPYmooZSkpOworICAgIGNsZWFuVXAoKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0KHMpCit7
CisgICAgaWYgKCFzKQorICAgICAgICBvbkVycm9yKG5ldyBFcnJvcigiQXNzZXJ0aW9uIGZhaWxl
ZC4gIikpOworfQorCit2YXIgZmlsZUVudHJ5Rm9yQ2xlYW51cDsgIC8vIFNldCBhcyBzb29uIGFz
IHdlIGhhdmUgb25lLgorCitmdW5jdGlvbiBjbGVhblVwKCkKK3sKKyAgICB0cnkgeworICAgICAg
ICBpZiAoZmlsZUVudHJ5Rm9yQ2xlYW51cCkKKyAgICAgICAgICAgIGZpbGVFbnRyeUZvckNsZWFu
dXAucmVtb3ZlKGZpbmlzaEpTVGVzdCwgZmluaXNoSlNUZXN0KTsKKyAgICB9IGNhdGNoIChleCkg
eworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9CisKKy8vIEdlbmVyaWMgZnVuY3Rp
b24gdGhhdCBnZXRzIGEgRmlsZSBmcm9tIGEgRmlsZUVudHJ5IGFuZCBjYWxscyBhIGN1c3RvbSB2
ZXJpZmljYXRpb24gZnVuY3Rpb24gb24gaXQuCitmdW5jdGlvbiB2ZXJpZnlGaWxlQ29udGVudHMo
ZmlsZUVudHJ5LCB2ZXJpZnlGdW5jLCBhcmcwLCBhcmcxLCBvblN1Y2Nlc3MpCit7CisgICAgZmls
ZUVudHJ5LmZpbGUoCisgICAgICAgIGZ1bmN0aW9uKGZpbGUpIHsKKyAgICAgICAgICAgIHZlcmlm
eUZ1bmMoZmlsZSwgYXJnMCwgYXJnMSwgb25TdWNjZXNzKTsKKyAgICAgICAgfSwKKyAgICAgICAg
b25FcnJvcik7Cit9CisKKy8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIHdpdGggdmVyaWZ5RmlsZUNv
bnRlbnRzLgorZnVuY3Rpb24gdmVyaWZ5RmlsZUxlbmd0aEhlbHBlcihmaWxlLCBsZW5ndGgsIHVu
dXNlZCwgb25TdWNjZXNzKQoreworICAgIGFzc2VydChmaWxlLnNpemUgPT0gbGVuZ3RoKTsKKyAg
ICBvblN1Y2Nlc3MoKTsKK30KKworLy8gVmVyaWZpZXMgdGhhdCB0aGUgY29udGVudHMgb2YgZmls
ZUVudHJ5IGhhdmUgdGhlIHN1cHBsaWVkIGxlbmd0aC4KK2Z1bmN0aW9uIHZlcmlmeUZpbGVMZW5n
dGgoZmlsZUVudHJ5LCBsZW5ndGgsIG9uU3VjY2VzcykKK3sKKyAgICB2ZXJpZnlGaWxlQ29udGVu
dHMoZmlsZUVudHJ5LCB2ZXJpZnlGaWxlTGVuZ3RoSGVscGVyLCBsZW5ndGgsIG51bGwsIG9uU3Vj
Y2Vzcyk7Cit9CisKKy8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIHdpdGggdmVyaWZ5RmlsZUNvbnRl
bnRzLgorZnVuY3Rpb24gdmVyaWZ5Qnl0ZVJhbmdlSXNaZXJvZXNIZWxwZXIoZmlsZSwgc3RhcnQs
IGxlbmd0aCwgb25TdWNjZXNzKQoreworICAgIHZhciBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFk
ZXIoKTsKKyAgICBmaWxlUmVhZGVyLm9uZXJyb3IgPSBvbkVycm9yOworICAgIGZpbGVSZWFkZXIu
b25sb2FkID0KKyAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgcmVzdWx0ID0g
ZmlsZVJlYWRlci5yZXN1bHQ7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0
aDsgaSsrKQorICAgICAgICAgICAgICAgIGFzc2VydChyZXN1bHQuY2hhckNvZGVBdChpKSA9PSAw
KTsKKyAgICAgICAgICAgIG9uU3VjY2VzcygpOworICAgICAgICB9OworICAgIGZpbGVSZWFkZXIu
cmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUuc2xpY2Uoc3RhcnQsIGxlbmd0aCkpOworfQorCisvLyBW
ZXJpZmllcyB0aGF0IGZpbGVFbnRyeSwgYXQgb2Zmc2V0LCBpcyBhbGwgemVyb2VzIGZvciBsZW5n
dGggYnl0ZXMuCitmdW5jdGlvbiB2ZXJpZnlCeXRlUmFuZ2VJc1plcm9lcyhmaWxlRW50cnksIG9m
ZnNldCwgbGVuZ3RoLCBvblN1Y2Nlc3MpCit7CisgICAgdmVyaWZ5RmlsZUNvbnRlbnRzKGZpbGVF
bnRyeSwgdmVyaWZ5Qnl0ZVJhbmdlSXNaZXJvZXNIZWxwZXIsIG9mZnNldCwgbGVuZ3RoLCBvblN1
Y2Nlc3MpOworfQorCisvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCB3aXRoIHZlcmlmeUZpbGVDb250
ZW50cy4KK2Z1bmN0aW9uIHZlcmlmeUJ5dGVSYW5nZUFzU3RyaW5nSGVscGVyKGZpbGUsIHN0YXJ0
LCBkYXRhLCBvblN1Y2Nlc3MpCit7CisgICAgdmFyIGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRl
cigpOworICAgIGZpbGVSZWFkZXIub25lcnJvciA9IG9uRXJyb3I7CisgICAgZmlsZVJlYWRlci5v
bmxvYWQgPQorICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFzc2VydChmaWxlUmVh
ZGVyLnJlc3VsdCA9PSBkYXRhKTsKKyAgICAgICAgICAgIG9uU3VjY2VzcygpOworICAgICAgICB9
OworICAgIGZpbGVSZWFkZXIucmVhZEFzVGV4dChmaWxlLnNsaWNlKHN0YXJ0LCBkYXRhLmxlbmd0
aCkpOworfQorCisvLyBWZXJpZmllcyB0aGF0IHRoZSBjb250ZW50cyBvZiBmaWxlRW50cnksIGF0
IG9mZnNldCwgbWF0Y2ggY29udGVudHMgW2Egc3RyaW5nXS4KK2Z1bmN0aW9uIHZlcmlmeUJ5dGVS
YW5nZUFzU3RyaW5nKGZpbGVFbnRyeSwgb2Zmc2V0LCBjb250ZW50cywgb25TdWNjZXNzKQorewor
ICAgIHZlcmlmeUZpbGVDb250ZW50cyhmaWxlRW50cnksIHZlcmlmeUJ5dGVSYW5nZUFzU3RyaW5n
SGVscGVyLCBvZmZzZXQsIGNvbnRlbnRzLCBvblN1Y2Nlc3MpOworfQorCisvLyBDcmVhdGVzIGEg
ZmlsZSBjYWxsZWQgZmlsZU5hbWUgaW4gZmlsZVN5c3RlbSdzIHJvb3QgZGlyZWN0b3J5LCB0cnVu
Y2F0ZXMgaXQgdG8gemVybyBsZW5ndGgganVzdCBpbiBjYXNlLCBhbmQgY2FsbHMgb25TdWNjZXNz
LCBwYXNzaW5nIGl0IGEgRmlsZUVudHJ5IGFuZCBGaWxlV3JpdGVyIGZvciB0aGUgbmV3IGZpbGUu
CitmdW5jdGlvbiBjcmVhdGVFbXB0eUZpbGUoZmlsZVN5c3RlbSwgZmlsZU5hbWUsIG9uU3VjY2Vz
cykKK3sKKyAgICBmdW5jdGlvbiBnZXRTdWNjZXNzRnVuYyhmaWxlRW50cnksIGZpbGVXcml0ZXIp
IHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgb25TdWNjZXNzKGZp
bGVFbnRyeSwgZmlsZVdyaXRlcik7CisgICAgICAgIH0KKyAgICB9CisgICAgZnVuY3Rpb24gZ2V0
RmlsZVdyaXRlckNhbGxiYWNrKGZpbGVFbnRyeSkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24o
ZmlsZVdyaXRlcikgeworICAgICAgICAgICAgdmFyIHN1Y2Nlc3NGdW5jID0gZ2V0U3VjY2Vzc0Z1
bmMoZmlsZUVudHJ5LCBmaWxlV3JpdGVyKTsKKyAgICAgICAgICAgIGZpbGVXcml0ZXIub25FcnJv
ciA9IG9uRXJyb3I7CisgICAgICAgICAgICBmaWxlV3JpdGVyLm9ud3JpdGUgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICB2ZXJpZnlGaWxlTGVuZ3RoKGZpbGVFbnRyeSwgMCwgc3VjY2Vz
c0Z1bmMpOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGZpbGVXcml0ZXIudHJ1bmNhdGUo
MCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZnVuY3Rpb24gb25GaWxlRW50cnkoZmlsZUVudHJ5
KSB7CisgICAgICAgIGZpbGVFbnRyeUZvckNsZWFudXAgPSBmaWxlRW50cnk7CisgICAgICAgIHZh
ciBvbkZpbGVXcml0ZXIgPSBnZXRGaWxlV3JpdGVyQ2FsbGJhY2soZmlsZUVudHJ5KTsKKyAgICAg
ICAgZmlsZUVudHJ5LmNyZWF0ZVdyaXRlcihvbkZpbGVXcml0ZXIsIG9uRXJyb3IpOworICAgIH0K
KyAgICBhc3NlcnQoZmlsZVN5c3RlbSk7CisgICAgZmlsZVN5c3RlbS5yb290LmdldEZpbGUoZmls
ZU5hbWUsIHtjcmVhdGU6dHJ1ZX0sIG9uRmlsZUVudHJ5LCBvbkVycm9yKTsKK30KKworZnVuY3Rp
b24gd3JpdGVTdHJpbmcoZmlsZUVudHJ5LCBmaWxlV3JpdGVyLCBvZmZzZXQsIGRhdGEsIG9uU3Vj
Y2VzcykKK3sKKyAgICB2YXIgYmIgPSBuZXcgQmxvYkJ1aWxkZXIoKTsKKyAgICBiYi5hcHBlbmQo
ZGF0YSk7CisgICAgdmFyIGJsb2IgPSBiYi5nZXRCbG9iKCk7CisgICAgZmlsZVdyaXRlci5zZWVr
KG9mZnNldCk7CisgICAgZmlsZVdyaXRlci53cml0ZShibG9iKTsKKyAgICBmaWxlV3JpdGVyLm9u
d3JpdGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmVyaWZ5Qnl0ZVJhbmdlQXNTdHJpbmcoZmls
ZUVudHJ5LCBvZmZzZXQsIGRhdGEsIG9uU3VjY2Vzcyk7CisgICAgfTsKK30KKworZnVuY3Rpb24g
c2V0dXBBbmRSdW5UZXN0KHNpemUsIHRlc3ROYW1lLCB0ZXN0RnVuYykKK3sKKyAgICBpZiAoIXJl
cXVlc3RGaWxlU3lzdGVtKSB7CisgICAgICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRmls
ZVN5c3RlbSBBUEkgc3VwcG9ydC4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBkZWJ1
Zygic3RhcnRpbmcgdGVzdCIpOworICAgIHJlcXVlc3RGaWxlU3lzdGVtKFRFTVBPUkFSWSwgc2l6
ZSwgZnVuY3Rpb24oZnMpIHsKKyAgICAgICAgY3JlYXRlRW1wdHlGaWxlKGZzLCB0ZXN0TmFtZSwg
dGVzdEZ1bmMpOworICAgIH0sIG9uRXJyb3IpOworfQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpz
CShyZXZpc2lvbiA3MjEyNSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJj
ZXMvZnMtd29ya2VyLWNvbW1vbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwxNiArMSwyNSBAQAog
ZnVuY3Rpb24gZGVidWcobWVzc2FnZSkKIHsKLSAgICBwb3N0TWVzc2FnZShtZXNzYWdlKTsKKyAg
ICBwb3N0TWVzc2FnZSgiTUVTRzoiICsgbWVzc2FnZSk7CiB9CiAKIGZ1bmN0aW9uIGZpbmlzaEpT
VGVzdCgpCiB7Ci0gICAgcG9zdE1lc3NhZ2UoIkRPTkUiKTsKKyAgICBzaG91bGRCZVRydWUoInN1
Y2Nlc3NmdWxseVBhcnNlZCIpOworICAgIHBvc3RNZXNzYWdlKCJET05FOiIpOwogfQogCiBmdW5j
dGlvbiBkZXNjcmlwdGlvbihtZXNzYWdlKQogewotICAgIHBvc3RNZXNzYWdlKCdEZXNjcmlwdGlv
bjogJyArIG1lc3NhZ2UpOworICAgIHBvc3RNZXNzYWdlKCdERVNDOicgKyBtZXNzYWdlKTsKK30K
KworZnVuY3Rpb24gdGVzdFBhc3NlZChtc2cpIHsKKyAgICBwb3N0TWVzc2FnZSgiUEFTUzoiICsg
bXNnKTsKK30KKworZnVuY3Rpb24gdGVzdEZhaWxlZChtc2cpIHsKKyAgICBwb3N0TWVzc2FnZSgi
RkFJTDoiICsgbXNnKTsKIH0KIAogZnVuY3Rpb24gc2hvdWxkQmUoX2EsIF9iKQpAQCAtMjAsOSAr
MjksOSBAQCBmdW5jdGlvbiBzaG91bGRCZShfYSwgX2IpCiAgIHZhciBfYXYgPSBldmFsKF9hKTsK
ICAgdmFyIF9idiA9IGV2YWwoX2IpOwogICBpZiAoX2F2ID09PSBfYnYpCi0gICAgZGVidWcoIlBB
U1M6ICIgKyBfYSArICIgaXMgIiArIF9iKTsKKyAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyAiICsg
X2IpOwogICBlbHNlCi0gICAgZGVidWcoIkZBSUw6ICIgKyBfYSArICIgc2hvdWxkIGJlICIgKyBf
YnYgKyAiIChvZiB0eXBlICIgKyB0eXBlb2YgX2J2ICsgIikuIFdhcyAiICsgX2F2ICsgIiAob2Yg
dHlwZSAiICsgdHlwZW9mIF9hdiArICIpLiIpOworICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3Vs
ZCBiZSAiICsgX2J2ICsgIiAob2YgdHlwZSAiICsgdHlwZW9mIF9idiArICIpLiBXYXMgIiArIF9h
diArICIgKG9mIHR5cGUgIiArIHR5cGVvZiBfYXYgKyAiKS4iKTsKIH0KIAogZnVuY3Rpb24gc2hv
dWxkQmVUcnVlKF9hKSB7IHNob3VsZEJlKF9hLCAidHJ1ZSIpOyB9CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXBvc3QuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXIt
dGVzdC1wb3N0LmpzCShyZXZpc2lvbiA3MjEyNSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcG9zdC5qcwkod29ya2luZyBjb3B5KQpAQCAt
MSw4ICswLDAgQEAKLXdhc1Bvc3RUZXN0U2NyaXB0UGFyc2VkID0gdHJ1ZTsKLQotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKLSAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci19Ci1pZiAod2lu
ZG93Lndhc0ZpbmlzaEpTVGVzdENhbGxlZCkKLSAgICBmaW5pc2hKU1Rlc3QoKTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJlLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMt
d29ya2VyLXRlc3QtcHJlLmpzCShyZXZpc2lvbiA3MjEyNSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJlLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDM2ICswLDAgQEAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotCi1mdW5jdGlvbiBkZWJ1ZyhtZXNz
YWdlKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1M
ICs9IG1lc3NhZ2UgKyAiPGJyLz4iOwotfQotCi1mdW5jdGlvbiBzdGFydFdvcmtlcih0ZXN0U2Ny
aXB0VVJMKQotewotICAgIGRlYnVnKCdTdGFydGluZyB3b3JrZXI6ICcgKyB0ZXN0U2NyaXB0VVJM
KTsKLSAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcih0ZXN0U2NyaXB0VVJMKTsKLSAgICB3b3Jr
ZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBkZWJ1ZyhldmVu
dC5kYXRhKTsKLSAgICAgICAgaWYgKGV2ZW50LmRhdGEgPT0gIkRPTkUiKQotICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7Ci0gICAgfTsKLQotICAgIHdvcmtlci5vbmVycm9yID0gZnVuY3Rpb24o
ZXZlbnQpCi0gICAgewotICAgICAgICBhbGVydChldmVudCk7Ci0gICAgICAgIGRlYnVnKCdHb3Qg
ZXJyb3IgZnJvbSB3b3JrZXI6ICcgKyBldmVudC5tZXNzYWdlKTsKLSAgICAgICAgZmluaXNoSlNU
ZXN0KCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBmaW5pc2hKU1Rlc3QoKQotewotICAgIHdhc0Zp
bmlzaEpTVGVzdENhbGxlZCA9IHRydWU7Ci0gICAgaWYgKCF3aW5kb3cud2FzUG9zdFRlc3RTY3Jp
cHRQYXJzZWQpCi0gICAgICAgIHJldHVybjsKLSAgICBkZWJ1ZygnPGJyIC8+PHNwYW4gY2xhc3M9
InBhc3MiPlRFU1QgQ09NUExFVEU8L3NwYW4+Jyk7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwot
fQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXIt
dGVzdC11dGlsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9y
ZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcwkocmV2aXNpb24gNzE1NDkpCShmcm9tIExh
eW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJlLmpz
OjcxNTQ5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3Jr
ZXItdGVzdC11dGlsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzYgQEAKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworCitmdW5jdGlvbiBkZWJ1ZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyLz4iOworfQor
CitmdW5jdGlvbiBzdGFydFdvcmtlcih0ZXN0U2NyaXB0VVJMKQoreworICAgIGRlYnVnKCdTdGFy
dGluZyB3b3JrZXI6ICcgKyB0ZXN0U2NyaXB0VVJMKTsKKyAgICB2YXIgd29ya2VyID0gbmV3IFdv
cmtlcih0ZXN0U2NyaXB0VVJMKTsKKyAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZl
bnQpCisgICAgeworICAgICAgICBkZWJ1ZyhldmVudC5kYXRhKTsKKyAgICAgICAgaWYgKGV2ZW50
LmRhdGEgPT0gIkRPTkUiKQorICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfTsKKwor
ICAgIHdvcmtlci5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBhbGVy
dChldmVudCk7CisgICAgICAgIGRlYnVnKCdHb3QgZXJyb3IgZnJvbSB3b3JrZXI6ICcgKyBldmVu
dC5tZXNzYWdlKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorfQorCitmdW5jdGlv
biBmaW5pc2hKU1Rlc3QoKQoreworICAgIHdhc0ZpbmlzaEpTVGVzdENhbGxlZCA9IHRydWU7Cisg
ICAgaWYgKCF3aW5kb3cud2FzUG9zdFRlc3RTY3JpcHRQYXJzZWQpCisgICAgICAgIHJldHVybjsK
KyAgICBkZWJ1ZygnPGJyIC8+PHNwYW4gY2xhc3M9InBhc3MiPlRFU1QgQ09NUExFVEU8L3NwYW4+
Jyk7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC11dGlsLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtdXRp
bC5qcwkocmV2aXNpb24gNzE1NDkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVz
b3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzEs
NCBAQAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0KLWZ1bmN0aW9uIGRlYnVnKG1lc3NhZ2UpCi17Ci0gICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSAr
ICI8YnIvPiI7Ci19Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAKIGZ1bmN0aW9uIHN0
YXJ0V29ya2VyKHRlc3RTY3JpcHRVUkwpCiB7CkBAIC0xMiwyNSArNiwyNyBAQCBmdW5jdGlvbiBz
dGFydFdvcmtlcih0ZXN0U2NyaXB0VVJMKQogICAgIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKHRl
c3RTY3JpcHRVUkwpOwogICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKICAg
ICB7Ci0gICAgICAgIGRlYnVnKGV2ZW50LmRhdGEpOwotICAgICAgICBpZiAoZXZlbnQuZGF0YSA9
PSAiRE9ORSIpCi0gICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgaWYgKGV2ZW50
LmRhdGEubGVuZ3RoIDwgNSB8fCBldmVudC5kYXRhLmNoYXJBdCg0KSAhPSAnOicpIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJHb3QgaW52YWxpZCBtZXNzYWdlIGZyb20gd29ya2VyOiIgKyAoZXZlbnQu
ZGF0YSA/IGV2ZW50LmRhdGEgOiAibnVsbCIpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHZhciBjb2RlID0gZXZlbnQuZGF0YS5zdWJzdHJpbmcoMCwgNCk7CisgICAgICAgICAgICB2
YXIgcGF5bG9hZCA9ICJbV29ya2VyXSAiICsgZXZlbnQuZGF0YS5zdWJzdHJpbmcoNSk7CisgICAg
ICAgICAgICBpZiAoY29kZSA9PSAiUEFTUyIpCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChw
YXlsb2FkKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNvZGUgPT0gIkZBSUwiKQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQocGF5bG9hZCk7CisgICAgICAgICAgICBlbHNlIGlmIChjb2RlID09
ICJERVNDIikKKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbihwYXlsb2FkKTsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKGNvZGUgPT0gIkRPTkUiKQorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICAgICAgZWxzZSBpZiAoY29kZSA9PSAiTUVTRyIpCisgICAgICAgICAgICAg
ICAgZGVidWcocGF5bG9hZCk7CisgICAgICAgIH0KICAgICB9OwogCiAgICAgd29ya2VyLm9uZXJy
b3IgPSBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIGFsZXJ0KGV2ZW50KTsKICAgICAg
ICAgZGVidWcoJ0dvdCBlcnJvciBmcm9tIHdvcmtlcjogJyArIGV2ZW50Lm1lc3NhZ2UpOwogICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICB9CiB9Ci0KLWZ1bmN0aW9uIGZpbmlzaEpTVGVzdCgp
Ci17Ci0gICAgd2FzRmluaXNoSlNUZXN0Q2FsbGVkID0gdHJ1ZTsKLSAgICBpZiAoIXdpbmRvdy53
YXNQb3N0VGVzdFNjcmlwdFBhcnNlZCkKLSAgICAgICAgcmV0dXJuOwotICAgIGRlYnVnKCc8YnIg
Lz48c3BhbiBjbGFzcz0icGFzcyI+VEVTVCBDT01QTEVURTwvc3Bhbj4nKTsKLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7Ci19CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3Vy
Y2VzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmpzCShyZXZp
c2lvbiA3MjEyNSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc2lt
cGxlLXBlcnNpc3RlbnQtc3luYy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTAsNSArMTAsNSBAQCB2
YXIgZmlsZVN5c3RlbSA9IHJlcXVlc3RGaWxlU3lzdGVtU3luYyhQCiBkZWJ1ZygiU3VjY2Vzc2Z1
bGx5IG9idGFpbmVkIFBFUlNJU1RFTlQgRmlsZVN5c3RlbToiICsgZmlsZVN5c3RlbS5uYW1lKTsK
IHNob3VsZEJlVHJ1ZSgiZmlsZVN5c3RlbS5uYW1lLmxlbmd0aCA+IDAiKTsKIHNob3VsZEJlKCJm
aWxlU3lzdGVtLnJvb3QuZnVsbFBhdGgiLCAnIi8iJyk7Ci1maW5pc2hKU1Rlc3QoKTsKIHZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworZmluaXNoSlNUZXN0KCk7CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBs
ZS10ZW1wb3Jhcnktc3luYy5qcwkocmV2aXNpb24gNzIxMjUpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy5qcwkod29ya2luZyBj
b3B5KQpAQCAtMTAsNSArMTAsNSBAQCB2YXIgZmlsZVN5c3RlbSA9IHJlcXVlc3RGaWxlU3lzdGVt
U3luYyhUCiBkZWJ1ZygiU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVt
OiIgKyBmaWxlU3lzdGVtLm5hbWUpOwogc2hvdWxkQmVUcnVlKCJmaWxlU3lzdGVtLm5hbWUubGVu
Z3RoID4gMCIpOwogc2hvdWxkQmUoImZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCIsICciLyInKTsK
LWZpbmlzaEpTVGVzdCgpOwogdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CitmaW5pc2hK
U1Rlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc3lu
Yy1vcGVyYXRpb25zLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9yZXNvdXJjZXMvc3luYy1vcGVyYXRpb25zLmpzCShyZXZpc2lvbiA3MjEyNSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvc3luYy1vcGVyYXRpb25zLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw2ICszOSw1IEBAIHBhdGhzLnNvcnQoKTsKIHNob3VsZEJlKCciJyAr
IHBhdGhzLmpvaW4oJywnKSArICciJywgJyIvYSwvYiwvYywvZDIsL2UsL2YiJyk7CiBzaG91bGRC
ZSgiZGlyc0NvdW50IiwgIjMiKTsKIHJlbW92ZUFsbEluRGlyZWN0b3J5U3luYyhmaWxlU3lzdGVt
LnJvb3QpOwotZmluaXNoSlNUZXN0KCk7Ci0KIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworZmluaXNoSlNUZXN0KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29y
a2Vycy9hc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9hc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gNzIxMjUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9hc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxNSAr
MSwxOCBAQAotVGhpcyB0ZXN0cyBydW5uaW5nIG11bHRpcGxlIGFzeW5jIGZpbGVzeXN0ZW0gb3Bl
cmF0aW9ucyBpbiBXb3JrZXIuCitbV29ya2VyXSBUZXN0IG1ha2luZyBtdWx0aXBsZSBhc3luYyBG
aWxlU3lzdGVtIG9wZXJhdGlvbnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwogCiBT
dGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9hc3luYy1vcGVyYXRpb25zLmpzCi1EZXNjcmlw
dGlvbjogVGVzdCBtYWtpbmcgbXVsdGlwbGUgYXN5bmMgRmlsZVN5c3RlbSBvcGVyYXRpb25zLgot
cmVxdWVzdGVkIEZpbGVTeXN0ZW0uCi1Hb3QgRmlsZVN5c3RlbTpmaWxlX18wOlRlbXBvcmFyeQot
U3RhcnRpbmcgYXN5bmMgdGVzdCBzdGFnZSAxLgotU3RhcnRpbmcgYXN5bmMgdGVzdCBzdGFnZSAy
LgotVmVyaWZ5aW5nIHRoZSBGaWxlU3lzdGVtIHN0YXR1cy4KLVBBU1M6ICIvYSwvYiwvYywvZDIs
L2UsL2YiIGlzICIvYSwvYiwvYywvZDIsL2UsL2YiCi1QQVNTOiBkaXJzQ291bnQgaXMgMwotRE9O
RQorW1dvcmtlcl0gcmVxdWVzdGVkIEZpbGVTeXN0ZW0uCitbV29ya2VyXSBHb3QgRmlsZVN5c3Rl
bTpmaWxlX18wOlRlbXBvcmFyeQorW1dvcmtlcl0gU3RhcnRpbmcgYXN5bmMgdGVzdCBzdGFnZSAx
LgorW1dvcmtlcl0gU3RhcnRpbmcgYXN5bmMgdGVzdCBzdGFnZSAyLgorW1dvcmtlcl0gVmVyaWZ5
aW5nIHRoZSBGaWxlU3lzdGVtIHN0YXR1cy4KK1BBU1MgW1dvcmtlcl0gIi9hLC9iLC9jLC9kMiwv
ZSwvZiIgaXMgIi9hLC9iLC9jLC9kMiwvZSwvZiIKK1BBU1MgW1dvcmtlcl0gZGlyc0NvdW50IGlz
IDMKK1BBU1MgW1dvcmtlcl0gc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9hc3luYy1vcGVyYXRpb25zLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvYXN5bmMtb3BlcmF0aW9u
cy5odG1sCShyZXZpc2lvbiA3MjEyNSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93
b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNSArMSwx
NyBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2Vy
LWNvbW1vbi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtl
ci10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+VGhpcyB0ZXN0cyBydW5uaW5nIG11bHRpcGxlIGFzeW5j
IGZpbGVzeXN0ZW0gb3BlcmF0aW9ucyBpbiBXb3JrZXIuPC9wPgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQ+CiBzdGFydFdvcmtlcign
Li4vcmVzb3VyY2VzL2FzeW5jLW9wZXJhdGlvbnMuanMnKTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwogPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdv
cmtlci10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgogCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRy
eS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3MjEy
NSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxl
LWVudHJ5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSwxNCBAQAotVGhp
cyB0ZXN0cyByZXR1cm5pbmcgRmlsZSBmcm9tIEZpbGVFbnRyeSBpbiB3b3JrZXJzLgorW1dvcmtl
cl0gT2J0YWluaW5nIEZpbGUgZnJvbSBGaWxlRW50cnkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKwogCiBTdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9maWxlLWZyb20tZmlsZS1l
bnRyeS5qcwotRGVzY3JpcHRpb246IE9idGFpbmluZyBGaWxlIGZyb20gRmlsZUVudHJ5LgotUEFT
UzogdGVzdEZpbGUubmFtZSBpcyB0ZXN0RmlsZUVudHJ5Lm5hbWUKLVBBU1M6IHRlc3RGaWxlLnR5
cGUgaXMgJ3RleHQvcGxhaW4nCi1QQVNTOiB0ZXN0RmlsZS5zaXplIGlzIDAKLURPTkUKK1BBU1Mg
W1dvcmtlcl0gdGVzdEZpbGUubmFtZSBpcyB0ZXN0RmlsZUVudHJ5Lm5hbWUKK1BBU1MgW1dvcmtl
cl0gdGVzdEZpbGUudHlwZSBpcyAndGV4dC9wbGFpbicKK1BBU1MgW1dvcmtlcl0gdGVzdEZpbGUu
c2l6ZSBpcyAwCitQQVNTIFtXb3JrZXJdIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIApJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3lu
Yy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDcyMTI1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9t
LWZpbGUtZW50cnktc3luYy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzEs
MTQgQEAKLVRoaXMgdGVzdHMgcmV0dXJuaW5nIEZpbGUgZnJvbSBGaWxlRW50cnlTeW5jIGluIHdv
cmtlcnMuCitbV29ya2VyXSBPYnRhaW5pbmcgRmlsZSBmcm9tIEZpbGVFbnRyeVN5bmMuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwogCiBTdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNl
cy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmpzCi1EZXNjcmlwdGlvbjogT2J0YWluaW5nIEZp
bGUgZnJvbSBGaWxlRW50cnlTeW5jLgotUEFTUzogdGVzdEZpbGUubmFtZSBpcyB0ZXN0RmlsZUVu
dHJ5Lm5hbWUKLVBBU1M6IHRlc3RGaWxlLnR5cGUgaXMgJ3RleHQvcGxhaW4nCi1QQVNTOiB0ZXN0
RmlsZS5zaXplIGlzIDAKLURPTkUKK1BBU1MgW1dvcmtlcl0gdGVzdEZpbGUubmFtZSBpcyB0ZXN0
RmlsZUVudHJ5Lm5hbWUKK1BBU1MgW1dvcmtlcl0gdGVzdEZpbGUudHlwZSBpcyAndGV4dC9wbGFp
bicKK1BBU1MgW1dvcmtlcl0gdGVzdEZpbGUuc2l6ZSBpcyAwCitQQVNTIFtXb3JrZXJdIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAK
IFRFU1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtl
cnMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5bmMuaHRt
bAkocmV2aXNpb24gNzIxMjUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQg
KzEsMTYgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdv
cmtlci1jb21tb24uanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13
b3JrZXItdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgogPC9oZWFkPgog
PGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPlRoaXMgdGVzdHMgcmV0dXJuaW5nIEZpbGUgZnJv
bSBGaWxlRW50cnlTeW5jIGluIHdvcmtlcnMuPC9wPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQ+CiBzdGFydFdvcmtlcignLi4vcmVz
b3VyY2VzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5bmMuanMnKTsKK3dpbmRvdy5zdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwogPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2Zz
LXdvcmtlci10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50
cnkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9maWxlLWZyb20tZmlsZS1lbnRyeS5odG1sCShyZXZpc2lvbiA3MjEyNSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTQgKzEsMTYgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMi
Pjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPlRoaXMgdGVz
dHMgcmV0dXJuaW5nIEZpbGUgZnJvbSBGaWxlRW50cnkgaW4gd29ya2Vycy48L3A+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogPHNjcmlwdD4KIHN0
YXJ0V29ya2VyKCcuLi9yZXNvdXJjZXMvZmlsZS1mcm9tLWZpbGUtZW50cnkuanMnKTsKK3dpbmRv
dy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwogPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5Pgog
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13
cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMiBAQAorW1dvcmtlcl0gVGVzdCBvZiBleHRlbmRpbmcgYSBmaWxl
IHVzaW5nIHRydW5jYXRlKCkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworU3RhcnRp
bmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmpzCitb
V29ya2VyXSBzdGFydGluZyB0ZXN0CitQQVNTIFtXb3JrZXJdIFRydW5jYXRlIGV4dGVuc2lvbiB2
ZXJpZmllZC4KK1BBU1MgW1dvcmtlcl0gc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRl
bmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVu
ZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgSFRNTD4KKzxo
dG1sPgorIDxoZWFkPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKyAgICA8dGl0bGU+RmlsZSBXcml0ZXIgVHJ1
bmNhdGUtVG8tRXh0ZW5kIFdvcmtlcjwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KKyA8L2hlYWQ+Cisg
PGJvZHk+CisgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgICAgIHN0YXJ0V29ya2VyKCIuLi9yZXNv
dXJjZXMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmpzIik7CisgICAgICAgIHdpbmRvdy5z
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyA8L2JvZHk+
Cis8L2h0bWw+CisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMv
c2ltcGxlLXBlcnNpc3RlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gNzIxMjUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9z
aW1wbGUtcGVyc2lzdGVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzEs
MTQgQEAKLVRoaXMgdGVzdHMgcmVxdWVzdGluZyBQRVJTSVNURU5UIEZpbGVTeXN0ZW0gaW4gV29y
a2VyLgorW1dvcmtlcl0gcmVxdWVzdEZpbGVTeXN0ZW0gUEVSU0lTVEVOVCB0ZXN0LgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKIAogU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMv
c2ltcGxlLXBlcnNpc3RlbnQuanMKLURlc2NyaXB0aW9uOiByZXF1ZXN0RmlsZVN5c3RlbSBQRVJT
SVNURU5UIHRlc3QuCi1TdWNjZXNzZnVsbHkgb2J0YWluZWQgUEVSU0lTVEVOVCBGaWxlU3lzdGVt
OmZpbGVfXzA6UGVyc2lzdGVudAotUEFTUzogZmlsZVN5c3RlbS5uYW1lLmxlbmd0aCA+IDAgaXMg
dHJ1ZQotUEFTUzogZmlsZVN5c3RlbS5yb290LmZ1bGxQYXRoIGlzICIvIgotRE9ORQorW1dvcmtl
cl0gU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFBFUlNJU1RFTlQgRmlsZVN5c3RlbTpmaWxlX18wOlBl
cnNpc3RlbnQKK1BBU1MgW1dvcmtlcl0gZmlsZVN5c3RlbS5uYW1lLmxlbmd0aCA+IDAgaXMgdHJ1
ZQorUEFTUyBbV29ya2VyXSBmaWxlU3lzdGVtLnJvb3QuZnVsbFBhdGggaXMgIi8iCitQQVNTIFtX
b3JrZXJdIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQtc3luYy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNp
c3RlbnQtc3luYy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDcyMTI1KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQtc3luYy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzEsMTQgQEAKLVRoaXMgdGVzdHMgcmVxdWVzdGlu
ZyBQRVJTSVNURU5UIEZpbGVTeXN0ZW1TeW5jIGluIFdvcmtlci4KK1tXb3JrZXJdIHJlcXVlc3RG
aWxlU3lzdGVtU3luYyBQRVJTSVNURU5UIHRlc3QuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKwogCiBTdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC1z
eW5jLmpzCi1EZXNjcmlwdGlvbjogcmVxdWVzdEZpbGVTeXN0ZW1TeW5jIFBFUlNJU1RFTlQgdGVz
dC4KLVN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBQRVJTSVNURU5UIEZpbGVTeXN0ZW06ZmlsZV9fMDpQ
ZXJzaXN0ZW50Ci1QQVNTOiBmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCi1QQVNT
OiBmaWxlU3lzdGVtLnJvb3QuZnVsbFBhdGggaXMgIi8iCi1ET05FCitbV29ya2VyXSBTdWNjZXNz
ZnVsbHkgb2J0YWluZWQgUEVSU0lTVEVOVCBGaWxlU3lzdGVtOmZpbGVfXzA6UGVyc2lzdGVudAor
UEFTUyBbV29ya2VyXSBmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCitQQVNTIFtX
b3JrZXJdIGZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCBpcyAiLyIKK1BBU1MgW1dvcmtlcl0gc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
IAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29y
a2Vycy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQtc3luYy5odG1sCShy
ZXZpc2lvbiA3MjEyNSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3Np
bXBsZS1wZXJzaXN0ZW50LXN5bmMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNSArMSwxNyBA
QAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNv
bW1vbi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4K
LTxwIGlkPSJkZXNjcmlwdGlvbiI+VGhpcyB0ZXN0cyByZXF1ZXN0aW5nIFBFUlNJU1RFTlQgRmls
ZVN5c3RlbVN5bmMgaW4gV29ya2VyLjwvcD4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgogPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CiA8c2NyaXB0Pgogc3RhcnRXb3JrZXIoJy4uL3Jlc291cmNl
cy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmpzJyk7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKIDwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXIt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KIApJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUt
cGVyc2lzdGVudC5odG1sCShyZXZpc2lvbiA3MjEyNSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTQgKzEsMTYgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2ZzLXdvcmtlci1jb21tb24uanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9mcy13b3JrZXItdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPlRoaXMgdGVzdHMgcmVxdWVzdGluZyBQ
RVJTSVNURU5UIEZpbGVTeXN0ZW0gaW4gV29ya2VyLjwvcD4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiA8c2NyaXB0Pgogc3RhcnRXb3JrZXIoJy4u
L3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC5qcycpOword2luZG93LnN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7CiA8L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29y
a2VyLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vy
cy9zaW1wbGUtdGVtcG9yYXJ5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzIxMjUpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSwxNCBAQAotVGhpcyB0ZXN0cyByZXF1ZXN0
aW5nIFRFTVBPUkFSWSBGaWxlU3lzdGVtIGluIFdvcmtlci4KK1tXb3JrZXJdIHJlcXVlc3RGaWxl
U3lzdGVtIFRFTVBPUkFSWSB0ZXN0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKIAog
U3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvc2ltcGxlLXRlbXBvcmFyeS5qcwotRGVzY3Jp
cHRpb246IHJlcXVlc3RGaWxlU3lzdGVtIFRFTVBPUkFSWSB0ZXN0LgotU3VjY2Vzc2Z1bGx5IG9i
dGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5Ci1QQVNTOiBmaWxl
U3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCi1QQVNTOiBmaWxlU3lzdGVtLnJvb3QuZnVs
bFBhdGggaXMgIi8iCi1ET05FCitbV29ya2VyXSBTdWNjZXNzZnVsbHkgb2J0YWluZWQgVEVNUE9S
QVJZIEZpbGVTeXN0ZW06ZmlsZV9fMDpUZW1wb3JhcnkKK1BBU1MgW1dvcmtlcl0gZmlsZVN5c3Rl
bS5uYW1lLmxlbmd0aCA+IDAgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSBmaWxlU3lzdGVtLnJvb3Qu
ZnVsbFBhdGggaXMgIi8iCitQQVNTIFtXb3JrZXJdIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1z
eW5jLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3
MjEyNSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1w
b3Jhcnktc3luYy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzEsMTQgQEAK
LVRoaXMgdGVzdHMgcmVxdWVzdGluZyBURU1QT1JBUlkgRmlsZVN5c3RlbVN5bmMgaW4gV29ya2Vy
LgorW1dvcmtlcl0gcmVxdWVzdEZpbGVTeXN0ZW1TeW5jIFRFTVBPUkFSWSB0ZXN0LgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKIAogU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMv
c2ltcGxlLXRlbXBvcmFyeS1zeW5jLmpzCi1EZXNjcmlwdGlvbjogcmVxdWVzdEZpbGVTeXN0ZW1T
eW5jIFRFTVBPUkFSWSB0ZXN0LgotU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFRFTVBPUkFSWSBGaWxl
U3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5Ci1QQVNTOiBmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4g
MCBpcyB0cnVlCi1QQVNTOiBmaWxlU3lzdGVtLnJvb3QuZnVsbFBhdGggaXMgIi8iCi1ET05FCitb
V29ya2VyXSBTdWNjZXNzZnVsbHkgb2J0YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06ZmlsZV9f
MDpUZW1wb3JhcnkKK1BBU1MgW1dvcmtlcl0gZmlsZVN5c3RlbS5uYW1lLmxlbmd0aCA+IDAgaXMg
dHJ1ZQorUEFTUyBbV29ya2VyXSBmaWxlU3lzdGVtLnJvb3QuZnVsbFBhdGggaXMgIi8iCitQQVNT
IFtXb3JrZXJdIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1z
eW5jLmh0bWwJKHJldmlzaW9uIDcyMTI1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTUgKzEsMTcgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2Zz
LXdvcmtlci1jb21tb24uanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9m
cy13b3JrZXItdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgogPC9oZWFk
PgogPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPlRoaXMgdGVzdHMgcmVxdWVzdGluZyBURU1Q
T1JBUlkgRmlsZVN5c3RlbVN5bmMgaW4gV29ya2VyLjwvcD4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiA8c2NyaXB0Pgogc3RhcnRXb3JrZXIoJy4u
L3Jlc291cmNlcy9zaW1wbGUtdGVtcG9yYXJ5LXN5bmMuanMnKTsKK3dpbmRvdy5zdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwogPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2Zz
LXdvcmtlci10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgogCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMv
c2ltcGxlLXRlbXBvcmFyeS5odG1sCShyZXZpc2lvbiA3MjEyNSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3JhcnkuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMSwxNCArMSwxNiBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+
CiA8L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+VGhpcyB0ZXN0cyByZXF1ZXN0
aW5nIFRFTVBPUkFSWSBGaWxlU3lzdGVtIGluIFdvcmtlci48L3A+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogPHNjcmlwdD4KIHN0YXJ0V29ya2Vy
KCcuLi9yZXNvdXJjZXMvc2ltcGxlLXRlbXBvcmFyeS5qcycpOword2luZG93LnN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CiA8L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMt
d29ya2VyLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zeW5jLW9wZXJhdGlvbnMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL3N5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDcyMTI1KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMSwxMyBAQAotVGhpcyB0ZXN0cyBydW5uaW5n
IG11bHRpcGxlIHN5bmMgZmlsZXN5c3RlbSBvcGVyYXRpb25zIGluIFdvcmtlci4KK1tXb3JrZXJd
IFRlc3QgbWFraW5nIG11bHRpcGxlIHN5bmNocm9ub3VzIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucy4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCiAKIFN0YXJ0aW5nIHdvcmtlcjogLi4vcmVz
b3VyY2VzL3N5bmMtb3BlcmF0aW9ucy5qcwotRGVzY3JpcHRpb246IFRlc3QgbWFraW5nIG11bHRp
cGxlIHN5bmNocm9ub3VzIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucy4KLVBBU1M6ICIvYSwvYiwvYywv
ZDIsL2UsL2YiIGlzICIvYSwvYiwvYywvZDIsL2UsL2YiCi1QQVNTOiBkaXJzQ291bnQgaXMgMwot
RE9ORQorUEFTUyBbV29ya2VyXSAiL2EsL2IsL2MsL2QyLC9lLC9mIiBpcyAiL2EsL2IsL2MsL2Qy
LC9lLC9mIgorUEFTUyBbV29ya2VyXSBkaXJzQ291bnQgaXMgMworUEFTUyBbV29ya2VyXSBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CiBURVNUIENPTVBMRVRFCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL3N5bmMtb3BlcmF0aW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS93b3JrZXJzL3N5bmMtb3BlcmF0aW9ucy5odG1sCShyZXZpc2lvbiA3MjEyNSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3N5bmMtb3BlcmF0aW9ucy5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1ICsxLDE3IEBACiA8aHRtbD4KIDxoZWFkPgotPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
c3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC11
dGlsLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj5U
aGlzIHRlc3RzIHJ1bm5pbmcgbXVsdGlwbGUgc3luYyBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgaW4g
V29ya2VyLjwvcD4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgogPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CiA8c2NyaXB0Pgogc3RhcnRXb3JrZXIoJy4uL3Jlc291cmNlcy9zeW5jLW9wZXJhdGlv
bnMuanMnKTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwogPC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74712</attachid>
            <date>2010-11-23 17:58:28 -0800</date>
            <delta_ts>2010-11-24 15:59:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47680-20101123175826.patch</filename>
            <type>text/plain</type>
            <size>34741</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDcyNjQzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTAtMTEtMjMgIEVyaWMgVWhyaGFuZSAgPGVy
aWN1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgRmlsZVdyaXRlciB0ZXN0IHV0aWxpdGllcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NjgwCisKKyAgICAgICAgQ2xlYW5p
bmcgdXAgc2hhcmVkIHRlc3QgdXRpbGl0eSBmaWxlcyBjYXVzZWQgdGhlIGluY2x1ZGVzIGFuZCBv
dXRwdXQgb2YKKyAgICAgICAgYSBidW5jaCBvZiBleGlzdGluZyB0ZXN0cyBjaGFuZ2Ugc2xpZ2h0
bHksIHNvIEkndmUgcmVidWlsdCB0aGUKKyAgICAgICAgZXhwZWN0YXRpb24gZmlsZXMuCisKKyAg
ICAgICAgVGhpcyBpcyB0aGUgZmlyc3QgdGVzdCBbaW4gRE9NIGFuZCB3b3JrZXIgdmVyc2lvbnNd
IHRvIHVzZSB0aGUgbmV3IHV0aWxpdGllcy4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vZmls
ZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXRydW5jYXRl
LWV4dGVuZC5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmls
ZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmh0bWw6
IEFkZGVkLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBhIG5ldyB1dGlsaXR5IGZpbGUgZm9y
IEZpbGVXcml0ZXIgdGVzdHMuCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9m
aWxlLXdyaXRlci11dGlscy5qczogQWRkZWQuCisKKyAgICAgICAgVG91Y2hlZCB1cCBhIGJpdAor
ICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLWNvbW1vbi5qczoK
KworICAgICAgICBSZW1vdmVkCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9m
cy13b3JrZXItdGVzdC1wb3N0LmpzOgorCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3Jlc291
cmNlcy9mcy13b3JrZXItdGVzdC1wcmUuanM6CisgICAgICAgIHJlbmFtZWQgdG8gCisgICAgICAg
ICogZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC11dGlsLmpzOgorCisg
ICAgICAgIFRoZXNlIHRlc3RzIGFuZCB0aGVpciBleHBlY3RhdGlvbnMgd2VyZSB0d2Vha2VkIHNs
aWdodGx5IHRvIHVzZSB0aGUgbmV3IGNvZGUgbW9yZSBjbGVhbmx5LgorICAgICAgICAqIGZhc3Qv
ZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2FzeW5jLW9wZXJhdGlvbnMuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUt
ZW50cnktc3luYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtl
cnMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy5odG1sOgorICAgICAgICAqIGZhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVudHJ5Lmh0bWw6CisgICAgICAgICogZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0
ZW50LXN5bmMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUt
cGVyc2lzdGVudC5odG1sOgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBs
ZS10ZW1wb3JhcnktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9m
aWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLmh0bWw6CisgICAgICAgICog
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS5odG1sOgorICAgICAgICAq
IGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3N5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLmh0bWw6CisK
KyAgICAgICAgUmVtb3ZlZCBzdXBwcmVzc2lvbiBvZiBGaWxlV3JpdGVyIHRlc3RzLCBhcyB3ZSBu
b3cgaGF2ZSBzdXBwb3J0IGluIFRlc3RTaGVsbC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTAtMTEtMjMgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCB1cGRhdGUgb2YgR1RLJ3Mgc2tp
cHBlZCBsaXN0LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVy
LXRydW5jYXRlLWV4dGVuZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vZmlsZS13cml0ZXIt
dHJ1bmNhdGUtZXh0ZW5kLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBA
CitUZXN0IG9mIGV4dGVuZGluZyBhIGZpbGUgdXNpbmcgdHJ1bmNhdGUoKS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCitzdGFydGluZyB0ZXN0CitQQVNTIFRydW5jYXRlIGV4dGVuc2lv
biB2ZXJpZmllZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2ZpbGUtd3JpdGVyLXRydW5j
YXRlLWV4dGVuZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKyA8
aGVhZD4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyI+CisgICAgPHRpdGxlPkZpbGUgV3JpdGVyIFRydW5jYXRlLVRvLUV4
dGVuZDwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9maWxlLXdyaXRlci11
dGlscy5qcyI+PC9zY3JpcHQ+CisgPC9oZWFkPgorIDxib2R5PgorICAgIDxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorIDwvYm9keT4KKzwvaHRtbD4KKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
eXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXRy
dW5jYXRlLWV4dGVuZC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmpzCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDM4IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0
U2NyaXB0cygnZnMtd29ya2VyLWNvbW1vbi5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ2ZpbGUt
d3JpdGVyLXV0aWxzLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IG9mIGV4dGVuZGluZyBh
IGZpbGUgdXNpbmcgdHJ1bmNhdGUoKS4iKTsKKworZnVuY3Rpb24gb25UZXN0U3VjY2VlZGVkKCkK
K3sKKyAgICB0ZXN0UGFzc2VkKCJUcnVuY2F0ZSBleHRlbnNpb24gdmVyaWZpZWQuIik7CisgICAg
Y2xlYW5VcCgpOworfQorCitmdW5jdGlvbiB0cnVuY2F0ZVRvRXh0ZW5kKGZpbGVFbnRyeSwgZmls
ZVdyaXRlciwgY29udGVudHMsIG9uU3VjY2VzcykKK3sKKyAgICB2YXIgZXh0ZW5zaW9uID0gNTsK
KyAgICB2YXIgbGVuZ3RoQ2hlY2tlciA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2ZXJpZnlGaWxl
TGVuZ3RoKGZpbGVFbnRyeSwgY29udGVudHMubGVuZ3RoICsgZXh0ZW5zaW9uLCBvblN1Y2Nlc3Mp
OworICAgIH07CisgICAgdmFyIGV4dGVuc2lvbkNoZWNrZXIgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgdmVyaWZ5Qnl0ZVJhbmdlSXNaZXJvZXMoZmlsZUVudHJ5LCBjb250ZW50cy5sZW5ndGgsIGV4
dGVuc2lvbiwgbGVuZ3RoQ2hlY2tlcik7CisgICAgfTsKKyAgICBmaWxlV3JpdGVyLm9ud3JpdGUg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmVyaWZ5Qnl0ZVJhbmdlQXNTdHJpbmcoZmlsZUVudHJ5
LCAwLCBjb250ZW50cywgZXh0ZW5zaW9uQ2hlY2tlcik7CisgICAgfTsKKyAgICBmaWxlV3JpdGVy
LnRydW5jYXRlKGNvbnRlbnRzLmxlbmd0aCArIGV4dGVuc2lvbik7Cit9CisKK2Z1bmN0aW9uIHJ1
blRlc3QoZmlsZUVudHJ5LCBmaWxlV3JpdGVyKSB7CisgICAgdmFyIGNvbnRlbnRzID0gIkxvcmVt
IGlwc3VtIjsKKyAgICB3cml0ZVN0cmluZyhmaWxlRW50cnksIGZpbGVXcml0ZXIsIDAsIGNvbnRl
bnRzLAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB0
cnVuY2F0ZVRvRXh0ZW5kKGZpbGVFbnRyeSwgZmlsZVdyaXRlciwgY29udGVudHMsIG9uVGVzdFN1
Y2NlZWRlZCk7CisgICAgICAgICAgICAgICAgfSk7Cit9CisKK3ZhciBqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKK3NldHVwQW5kUnVuVGVzdCgxMDI0LCAnZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5k
JywgcnVuVGVzdCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2Vz
L2ZpbGUtd3JpdGVyLXV0aWxzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZXNvdXJjZXMvZmlsZS13cml0ZXItdXRpbHMuanMJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZpbGUtd3JpdGVyLXV0aWxzLmpz
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0OCBAQAorZnVuY3Rpb24gc3RyaW5naWZ5T2JqKG8p
Cit7CisgICAgcyA9ICIiOworICAgIGlmIChvKQorICAgICAgICBmb3IgKGluZGV4IGluIG8pIHsK
KyAgICAgICAgICAgIHMgKz0gaW5kZXggKyAiOiAiICsgb1tpbmRleF0gKyAiOyI7CisgICAgICAg
IH0KKyAgICByZXR1cm4gczsKK30KKworZnVuY3Rpb24gb25FcnJvcihlKQoreworICAgIHRlc3RG
YWlsZWQoIkdvdCBlcnJvcjogIiArIHN0cmluZ2lmeU9iaihlKSk7CisgICAgY2xlYW5VcCgpOwor
fQorCitmdW5jdGlvbiBhc3NlcnQocykKK3sKKyAgICBpZiAoIXMpCisgICAgICAgIG9uRXJyb3Io
bmV3IEVycm9yKCJBc3NlcnRpb24gZmFpbGVkLiAiKSk7Cit9CisKK3ZhciBmaWxlRW50cnlGb3JD
bGVhbnVwOyAgLy8gU2V0IGFzIHNvb24gYXMgd2UgaGF2ZSBvbmUuCisKK2Z1bmN0aW9uIGNsZWFu
VXAoKQoreworICAgIHRyeSB7CisgICAgICAgIGlmIChmaWxlRW50cnlGb3JDbGVhbnVwKQorICAg
ICAgICAgICAgZmlsZUVudHJ5Rm9yQ2xlYW51cC5yZW1vdmUoZmluaXNoSlNUZXN0LCBmaW5pc2hK
U1Rlc3QpOworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
IH0KK30KKworLy8gR2VuZXJpYyBmdW5jdGlvbiB0aGF0IGdldHMgYSBGaWxlIGZyb20gYSBGaWxl
RW50cnkgYW5kIGNhbGxzIGEgY3VzdG9tIHZlcmlmaWNhdGlvbiBmdW5jdGlvbiBvbiBpdC4KK2Z1
bmN0aW9uIHZlcmlmeUZpbGVDb250ZW50cyhmaWxlRW50cnksIHZlcmlmeUZ1bmMsIGFyZzAsIGFy
ZzEsIG9uU3VjY2VzcykKK3sKKyAgICBmaWxlRW50cnkuZmlsZSgKKyAgICAgICAgZnVuY3Rpb24o
ZmlsZSkgeworICAgICAgICAgICAgdmVyaWZ5RnVuYyhmaWxlLCBhcmcwLCBhcmcxLCBvblN1Y2Nl
c3MpOworICAgICAgICB9LAorICAgICAgICBvbkVycm9yKTsKK30KKworLy8gSGVscGVyIGZ1bmN0
aW9uIHVzZWQgd2l0aCB2ZXJpZnlGaWxlQ29udGVudHMuCitmdW5jdGlvbiB2ZXJpZnlGaWxlTGVu
Z3RoSGVscGVyKGZpbGUsIGxlbmd0aCwgdW51c2VkLCBvblN1Y2Nlc3MpCit7CisgICAgYXNzZXJ0
KGZpbGUuc2l6ZSA9PSBsZW5ndGgpOworICAgIG9uU3VjY2VzcygpOworfQorCisvLyBWZXJpZmll
cyB0aGF0IHRoZSBjb250ZW50cyBvZiBmaWxlRW50cnkgaGF2ZSB0aGUgc3VwcGxpZWQgbGVuZ3Ro
LgorZnVuY3Rpb24gdmVyaWZ5RmlsZUxlbmd0aChmaWxlRW50cnksIGxlbmd0aCwgb25TdWNjZXNz
KQoreworICAgIHZlcmlmeUZpbGVDb250ZW50cyhmaWxlRW50cnksIHZlcmlmeUZpbGVMZW5ndGhI
ZWxwZXIsIGxlbmd0aCwgbnVsbCwgb25TdWNjZXNzKTsKK30KKworLy8gSGVscGVyIGZ1bmN0aW9u
IHVzZWQgd2l0aCB2ZXJpZnlGaWxlQ29udGVudHMuCitmdW5jdGlvbiB2ZXJpZnlCeXRlUmFuZ2VJ
c1plcm9lc0hlbHBlcihmaWxlLCBzdGFydCwgbGVuZ3RoLCBvblN1Y2Nlc3MpCit7CisgICAgdmFy
IGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOworICAgIGZpbGVSZWFkZXIub25lcnJvciA9
IG9uRXJyb3I7CisgICAgZmlsZVJlYWRlci5vbmxvYWQgPQorICAgICAgICBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIHZhciByZXN1bHQgPSBmaWxlUmVhZGVyLnJlc3VsdDsKKyAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgYXNzZXJ0
KHJlc3VsdC5jaGFyQ29kZUF0KGkpID09IDApOworICAgICAgICAgICAgb25TdWNjZXNzKCk7Cisg
ICAgICAgIH07CisgICAgZmlsZVJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZS5zbGljZShz
dGFydCwgbGVuZ3RoKSk7Cit9CisKKy8vIFZlcmlmaWVzIHRoYXQgZmlsZUVudHJ5LCBhdCBvZmZz
ZXQsIGlzIGFsbCB6ZXJvZXMgZm9yIGxlbmd0aCBieXRlcy4KK2Z1bmN0aW9uIHZlcmlmeUJ5dGVS
YW5nZUlzWmVyb2VzKGZpbGVFbnRyeSwgb2Zmc2V0LCBsZW5ndGgsIG9uU3VjY2VzcykKK3sKKyAg
ICB2ZXJpZnlGaWxlQ29udGVudHMoZmlsZUVudHJ5LCB2ZXJpZnlCeXRlUmFuZ2VJc1plcm9lc0hl
bHBlciwgb2Zmc2V0LCBsZW5ndGgsIG9uU3VjY2Vzcyk7Cit9CisKKy8vIEhlbHBlciBmdW5jdGlv
biB1c2VkIHdpdGggdmVyaWZ5RmlsZUNvbnRlbnRzLgorZnVuY3Rpb24gdmVyaWZ5Qnl0ZVJhbmdl
QXNTdHJpbmdIZWxwZXIoZmlsZSwgc3RhcnQsIGRhdGEsIG9uU3VjY2VzcykKK3sKKyAgICB2YXIg
ZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CisgICAgZmlsZVJlYWRlci5vbmVycm9yID0g
b25FcnJvcjsKKyAgICBmaWxlUmVhZGVyLm9ubG9hZCA9CisgICAgICAgIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgYXNzZXJ0KGZpbGVSZWFkZXIucmVzdWx0ID09IGRhdGEpOworICAgICAgICAg
ICAgb25TdWNjZXNzKCk7CisgICAgICAgIH07CisgICAgZmlsZVJlYWRlci5yZWFkQXNUZXh0KGZp
bGUuc2xpY2Uoc3RhcnQsIGRhdGEubGVuZ3RoKSk7Cit9CisKKy8vIFZlcmlmaWVzIHRoYXQgdGhl
IGNvbnRlbnRzIG9mIGZpbGVFbnRyeSwgYXQgb2Zmc2V0LCBtYXRjaCBjb250ZW50cyBbYSBzdHJp
bmddLgorZnVuY3Rpb24gdmVyaWZ5Qnl0ZVJhbmdlQXNTdHJpbmcoZmlsZUVudHJ5LCBvZmZzZXQs
IGNvbnRlbnRzLCBvblN1Y2Nlc3MpCit7CisgICAgdmVyaWZ5RmlsZUNvbnRlbnRzKGZpbGVFbnRy
eSwgdmVyaWZ5Qnl0ZVJhbmdlQXNTdHJpbmdIZWxwZXIsIG9mZnNldCwgY29udGVudHMsIG9uU3Vj
Y2Vzcyk7Cit9CisKKy8vIENyZWF0ZXMgYSBmaWxlIGNhbGxlZCBmaWxlTmFtZSBpbiBmaWxlU3lz
dGVtJ3Mgcm9vdCBkaXJlY3RvcnksIHRydW5jYXRlcyBpdCB0byB6ZXJvIGxlbmd0aCBqdXN0IGlu
IGNhc2UsIGFuZCBjYWxscyBvblN1Y2Nlc3MsIHBhc3NpbmcgaXQgYSBGaWxlRW50cnkgYW5kIEZp
bGVXcml0ZXIgZm9yIHRoZSBuZXcgZmlsZS4KK2Z1bmN0aW9uIGNyZWF0ZUVtcHR5RmlsZShmaWxl
U3lzdGVtLCBmaWxlTmFtZSwgb25TdWNjZXNzKQoreworICAgIGZ1bmN0aW9uIGdldFN1Y2Nlc3NG
dW5jKGZpbGVFbnRyeSwgZmlsZVdyaXRlcikgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBvblN1Y2Nlc3MoZmlsZUVudHJ5LCBmaWxlV3JpdGVyKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBmdW5jdGlvbiBnZXRGaWxlV3JpdGVyQ2FsbGJhY2soZmlsZUVudHJ5KSB7
CisgICAgICAgIHJldHVybiBmdW5jdGlvbihmaWxlV3JpdGVyKSB7CisgICAgICAgICAgICB2YXIg
c3VjY2Vzc0Z1bmMgPSBnZXRTdWNjZXNzRnVuYyhmaWxlRW50cnksIGZpbGVXcml0ZXIpOworICAg
ICAgICAgICAgZmlsZVdyaXRlci5vbkVycm9yID0gb25FcnJvcjsKKyAgICAgICAgICAgIGZpbGVX
cml0ZXIub253cml0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHZlcmlmeUZpbGVM
ZW5ndGgoZmlsZUVudHJ5LCAwLCBzdWNjZXNzRnVuYyk7CisgICAgICAgICAgICB9OworICAgICAg
ICAgICAgZmlsZVdyaXRlci50cnVuY2F0ZSgwKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBmdW5j
dGlvbiBvbkZpbGVFbnRyeShmaWxlRW50cnkpIHsKKyAgICAgICAgZmlsZUVudHJ5Rm9yQ2xlYW51
cCA9IGZpbGVFbnRyeTsKKyAgICAgICAgdmFyIG9uRmlsZVdyaXRlciA9IGdldEZpbGVXcml0ZXJD
YWxsYmFjayhmaWxlRW50cnkpOworICAgICAgICBmaWxlRW50cnkuY3JlYXRlV3JpdGVyKG9uRmls
ZVdyaXRlciwgb25FcnJvcik7CisgICAgfQorICAgIGFzc2VydChmaWxlU3lzdGVtKTsKKyAgICBm
aWxlU3lzdGVtLnJvb3QuZ2V0RmlsZShmaWxlTmFtZSwge2NyZWF0ZTp0cnVlfSwgb25GaWxlRW50
cnksIG9uRXJyb3IpOworfQorCitmdW5jdGlvbiB3cml0ZVN0cmluZyhmaWxlRW50cnksIGZpbGVX
cml0ZXIsIG9mZnNldCwgZGF0YSwgb25TdWNjZXNzKQoreworICAgIHZhciBiYiA9IG5ldyBCbG9i
QnVpbGRlcigpOworICAgIGJiLmFwcGVuZChkYXRhKTsKKyAgICB2YXIgYmxvYiA9IGJiLmdldEJs
b2IoKTsKKyAgICBmaWxlV3JpdGVyLnNlZWsob2Zmc2V0KTsKKyAgICBmaWxlV3JpdGVyLndyaXRl
KGJsb2IpOworICAgIGZpbGVXcml0ZXIub253cml0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICB2
ZXJpZnlCeXRlUmFuZ2VBc1N0cmluZyhmaWxlRW50cnksIG9mZnNldCwgZGF0YSwgb25TdWNjZXNz
KTsKKyAgICB9OworfQorCitmdW5jdGlvbiBzZXR1cEFuZFJ1blRlc3Qoc2l6ZSwgdGVzdE5hbWUs
IHRlc3RGdW5jKQoreworICAgIGlmICghcmVxdWVzdEZpbGVTeXN0ZW0pIHsKKyAgICAgICAgZGVi
dWcoIlRoaXMgdGVzdCByZXF1aXJlcyBGaWxlU3lzdGVtIEFQSSBzdXBwb3J0LiIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGRlYnVnKCJzdGFydGluZyB0ZXN0Iik7CisgICAgcmVxdWVz
dEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCBzaXplLCBmdW5jdGlvbihmcykgeworICAgICAgICBjcmVh
dGVFbXB0eUZpbGUoZnMsIHRlc3ROYW1lLCB0ZXN0RnVuYyk7CisgICAgfSwgb25FcnJvcik7Cit9
CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2Vy
LWNvbW1vbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVz
b3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMJKHJldmlzaW9uIDcyMTI1KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDE2ICsxLDI0IEBACiBmdW5jdGlvbiBkZWJ1ZyhtZXNzYWdlKQogewotICAg
IHBvc3RNZXNzYWdlKG1lc3NhZ2UpOworICAgIHBvc3RNZXNzYWdlKCJNRVNHOiIgKyBtZXNzYWdl
KTsKIH0KIAogZnVuY3Rpb24gZmluaXNoSlNUZXN0KCkKIHsKLSAgICBwb3N0TWVzc2FnZSgiRE9O
RSIpOworICAgIHBvc3RNZXNzYWdlKCJET05FOiIpOwogfQogCiBmdW5jdGlvbiBkZXNjcmlwdGlv
bihtZXNzYWdlKQogewotICAgIHBvc3RNZXNzYWdlKCdEZXNjcmlwdGlvbjogJyArIG1lc3NhZ2Up
OworICAgIHBvc3RNZXNzYWdlKCdERVNDOicgKyBtZXNzYWdlKTsKK30KKworZnVuY3Rpb24gdGVz
dFBhc3NlZChtc2cpIHsKKyAgICBwb3N0TWVzc2FnZSgiUEFTUzoiICsgbXNnKTsKK30KKworZnVu
Y3Rpb24gdGVzdEZhaWxlZChtc2cpIHsKKyAgICBwb3N0TWVzc2FnZSgiRkFJTDoiICsgbXNnKTsK
IH0KIAogZnVuY3Rpb24gc2hvdWxkQmUoX2EsIF9iKQpAQCAtMjAsOSArMjgsOSBAQCBmdW5jdGlv
biBzaG91bGRCZShfYSwgX2IpCiAgIHZhciBfYXYgPSBldmFsKF9hKTsKICAgdmFyIF9idiA9IGV2
YWwoX2IpOwogICBpZiAoX2F2ID09PSBfYnYpCi0gICAgZGVidWcoIlBBU1M6ICIgKyBfYSArICIg
aXMgIiArIF9iKTsKKyAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyAiICsgX2IpOwogICBlbHNlCi0g
ICAgZGVidWcoIkZBSUw6ICIgKyBfYSArICIgc2hvdWxkIGJlICIgKyBfYnYgKyAiIChvZiB0eXBl
ICIgKyB0eXBlb2YgX2J2ICsgIikuIFdhcyAiICsgX2F2ICsgIiAob2YgdHlwZSAiICsgdHlwZW9m
IF9hdiArICIpLiIpOworICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSAiICsgX2J2ICsg
IiAob2YgdHlwZSAiICsgdHlwZW9mIF9idiArICIpLiBXYXMgIiArIF9hdiArICIgKG9mIHR5cGUg
IiArIHR5cGVvZiBfYXYgKyAiKS4iKTsKIH0KIAogZnVuY3Rpb24gc2hvdWxkQmVUcnVlKF9hKSB7
IHNob3VsZEJlKF9hLCAidHJ1ZSIpOyB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXBvc3QuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC1wb3N0LmpzCShy
ZXZpc2lvbiA3MjEyNSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMv
ZnMtd29ya2VyLXRlc3QtcG9zdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw4ICswLDAgQEAKLXdh
c1Bvc3RUZXN0U2NyaXB0UGFyc2VkID0gdHJ1ZTsKLQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci19Ci1pZiAod2luZG93Lndhc0ZpbmlzaEpT
VGVzdENhbGxlZCkKLSAgICBmaW5pc2hKU1Rlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJlLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJl
LmpzCShyZXZpc2lvbiA3MjEyNSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNv
dXJjZXMvZnMtd29ya2VyLXRlc3QtcHJlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM2ICswLDAg
QEAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotCi1mdW5jdGlvbiBkZWJ1ZyhtZXNzYWdlKQotewotICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAi
PGJyLz4iOwotfQotCi1mdW5jdGlvbiBzdGFydFdvcmtlcih0ZXN0U2NyaXB0VVJMKQotewotICAg
IGRlYnVnKCdTdGFydGluZyB3b3JrZXI6ICcgKyB0ZXN0U2NyaXB0VVJMKTsKLSAgICB2YXIgd29y
a2VyID0gbmV3IFdvcmtlcih0ZXN0U2NyaXB0VVJMKTsKLSAgICB3b3JrZXIub25tZXNzYWdlID0g
ZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBkZWJ1ZyhldmVudC5kYXRhKTsKLSAgICAg
ICAgaWYgKGV2ZW50LmRhdGEgPT0gIkRPTkUiKQotICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
Ci0gICAgfTsKLQotICAgIHdvcmtlci5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpCi0gICAgewot
ICAgICAgICBhbGVydChldmVudCk7Ci0gICAgICAgIGRlYnVnKCdHb3QgZXJyb3IgZnJvbSB3b3Jr
ZXI6ICcgKyBldmVudC5tZXNzYWdlKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfQot
fQotCi1mdW5jdGlvbiBmaW5pc2hKU1Rlc3QoKQotewotICAgIHdhc0ZpbmlzaEpTVGVzdENhbGxl
ZCA9IHRydWU7Ci0gICAgaWYgKCF3aW5kb3cud2FzUG9zdFRlc3RTY3JpcHRQYXJzZWQpCi0gICAg
ICAgIHJldHVybjsKLSAgICBkZWJ1ZygnPGJyIC8+PHNwYW4gY2xhc3M9InBhc3MiPlRFU1QgQ09N
UExFVEU8L3NwYW4+Jyk7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotfQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC11dGlsLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29y
a2VyLXRlc3QtdXRpbC5qcwkocmV2aXNpb24gNzE1NDkpCShmcm9tIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJlLmpzOjcxNTQ5KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC11dGlsLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzYgQEAKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCitmdW5j
dGlvbiBkZWJ1ZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25z
b2xlIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyLz4iOworfQorCitmdW5jdGlvbiBzdGFy
dFdvcmtlcih0ZXN0U2NyaXB0VVJMKQoreworICAgIGRlYnVnKCdTdGFydGluZyB3b3JrZXI6ICcg
KyB0ZXN0U2NyaXB0VVJMKTsKKyAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcih0ZXN0U2NyaXB0
VVJMKTsKKyAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAg
ICAgICBkZWJ1ZyhldmVudC5kYXRhKTsKKyAgICAgICAgaWYgKGV2ZW50LmRhdGEgPT0gIkRPTkUi
KQorICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfTsKKworICAgIHdvcmtlci5vbmVy
cm9yID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBhbGVydChldmVudCk7CisgICAg
ICAgIGRlYnVnKCdHb3QgZXJyb3IgZnJvbSB3b3JrZXI6ICcgKyBldmVudC5tZXNzYWdlKTsKKyAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorfQorCitmdW5jdGlvbiBmaW5pc2hKU1Rlc3Qo
KQoreworICAgIHdhc0ZpbmlzaEpTVGVzdENhbGxlZCA9IHRydWU7CisgICAgaWYgKCF3aW5kb3cu
d2FzUG9zdFRlc3RTY3JpcHRQYXJzZWQpCisgICAgICAgIHJldHVybjsKKyAgICBkZWJ1ZygnPGJy
IC8+PHNwYW4gY2xhc3M9InBhc3MiPlRFU1QgQ09NUExFVEU8L3NwYW4+Jyk7CisgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3Jlc291
cmNlcy9mcy13b3JrZXItdGVzdC11dGlsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcwkocmV2aXNpb24g
NzE1NDkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL2ZzLXdvcmtl
ci10ZXN0LXV0aWwuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzEsNCBAQAotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7Ci0KLWZ1bmN0aW9uIGRlYnVnKG1lc3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnIvPiI7Ci19Cit3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAKIGZ1bmN0aW9uIHN0YXJ0V29ya2VyKHRlc3RT
Y3JpcHRVUkwpCiB7CkBAIC0xMiwyNSArNiwyNyBAQCBmdW5jdGlvbiBzdGFydFdvcmtlcih0ZXN0
U2NyaXB0VVJMKQogICAgIHZhciB3b3JrZXIgPSBuZXcgV29ya2VyKHRlc3RTY3JpcHRVUkwpOwog
ICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIGRl
YnVnKGV2ZW50LmRhdGEpOwotICAgICAgICBpZiAoZXZlbnQuZGF0YSA9PSAiRE9ORSIpCi0gICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgaWYgKGV2ZW50LmRhdGEubGVuZ3RoIDwg
NSB8fCBldmVudC5kYXRhLmNoYXJBdCg0KSAhPSAnOicpIHsKKyAgICAgICAgICAgIGRlYnVnKCJH
b3QgaW52YWxpZCBtZXNzYWdlIGZyb20gd29ya2VyOiIgKyAoZXZlbnQuZGF0YSA/IGV2ZW50LmRh
dGEgOiAibnVsbCIpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhciBjb2RlID0g
ZXZlbnQuZGF0YS5zdWJzdHJpbmcoMCwgNCk7CisgICAgICAgICAgICB2YXIgcGF5bG9hZCA9ICJb
V29ya2VyXSAiICsgZXZlbnQuZGF0YS5zdWJzdHJpbmcoNSk7CisgICAgICAgICAgICBpZiAoY29k
ZSA9PSAiUEFTUyIpCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChwYXlsb2FkKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGNvZGUgPT0gIkZBSUwiKQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQocGF5bG9hZCk7CisgICAgICAgICAgICBlbHNlIGlmIChjb2RlID09ICJERVNDIikKKyAgICAg
ICAgICAgICAgICBkZXNjcmlwdGlvbihwYXlsb2FkKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNv
ZGUgPT0gIkRPTkUiKQorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAg
ICAgZWxzZSBpZiAoY29kZSA9PSAiTUVTRyIpCisgICAgICAgICAgICAgICAgZGVidWcocGF5bG9h
ZCk7CisgICAgICAgIH0KICAgICB9OwogCiAgICAgd29ya2VyLm9uZXJyb3IgPSBmdW5jdGlvbihl
dmVudCkKICAgICB7Ci0gICAgICAgIGFsZXJ0KGV2ZW50KTsKICAgICAgICAgZGVidWcoJ0dvdCBl
cnJvciBmcm9tIHdvcmtlcjogJyArIGV2ZW50Lm1lc3NhZ2UpOwogICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKICAgICB9CiB9Ci0KLWZ1bmN0aW9uIGZpbmlzaEpTVGVzdCgpCi17Ci0gICAgd2FzRmlu
aXNoSlNUZXN0Q2FsbGVkID0gdHJ1ZTsKLSAgICBpZiAoIXdpbmRvdy53YXNQb3N0VGVzdFNjcmlw
dFBhcnNlZCkKLSAgICAgICAgcmV0dXJuOwotICAgIGRlYnVnKCc8YnIgLz48c3BhbiBjbGFzcz0i
cGFzcyI+VEVTVCBDT01QTEVURTwvc3Bhbj4nKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9hc3luYy1vcGVyYXRp
b25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0
ZW0vd29ya2Vycy9hc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzIxMjUp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9hc3luYy1vcGVyYXRpb25z
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxNSArMSwxNyBAQAotVGhpcyB0ZXN0
cyBydW5uaW5nIG11bHRpcGxlIGFzeW5jIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucyBpbiBXb3JrZXIu
CitbV29ya2VyXSBUZXN0IG1ha2luZyBtdWx0aXBsZSBhc3luYyBGaWxlU3lzdGVtIG9wZXJhdGlv
bnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwogCiBTdGFydGluZyB3b3JrZXI6IC4u
L3Jlc291cmNlcy9hc3luYy1vcGVyYXRpb25zLmpzCi1EZXNjcmlwdGlvbjogVGVzdCBtYWtpbmcg
bXVsdGlwbGUgYXN5bmMgRmlsZVN5c3RlbSBvcGVyYXRpb25zLgotcmVxdWVzdGVkIEZpbGVTeXN0
ZW0uCi1Hb3QgRmlsZVN5c3RlbTpmaWxlX18wOlRlbXBvcmFyeQotU3RhcnRpbmcgYXN5bmMgdGVz
dCBzdGFnZSAxLgotU3RhcnRpbmcgYXN5bmMgdGVzdCBzdGFnZSAyLgotVmVyaWZ5aW5nIHRoZSBG
aWxlU3lzdGVtIHN0YXR1cy4KLVBBU1M6ICIvYSwvYiwvYywvZDIsL2UsL2YiIGlzICIvYSwvYiwv
YywvZDIsL2UsL2YiCi1QQVNTOiBkaXJzQ291bnQgaXMgMwotRE9ORQorW1dvcmtlcl0gcmVxdWVz
dGVkIEZpbGVTeXN0ZW0uCitbV29ya2VyXSBHb3QgRmlsZVN5c3RlbTpmaWxlX18wOlRlbXBvcmFy
eQorW1dvcmtlcl0gU3RhcnRpbmcgYXN5bmMgdGVzdCBzdGFnZSAxLgorW1dvcmtlcl0gU3RhcnRp
bmcgYXN5bmMgdGVzdCBzdGFnZSAyLgorW1dvcmtlcl0gVmVyaWZ5aW5nIHRoZSBGaWxlU3lzdGVt
IHN0YXR1cy4KK1BBU1MgW1dvcmtlcl0gIi9hLC9iLC9jLC9kMiwvZSwvZiIgaXMgIi9hLC9iLC9j
LC9kMiwvZSwvZiIKK1BBU1MgW1dvcmtlcl0gZGlyc0NvdW50IGlzIDMKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9hc3luYy1vcGVyYXRpb25zLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvYXN5bmMtb3BlcmF0aW9ucy5o
dG1sCShyZXZpc2lvbiA3MjEyNSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3Jr
ZXJzL2FzeW5jLW9wZXJhdGlvbnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNSArMSwxNyBA
QAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLWNv
bW1vbi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4K
LTxwIGlkPSJkZXNjcmlwdGlvbiI+VGhpcyB0ZXN0cyBydW5uaW5nIG11bHRpcGxlIGFzeW5jIGZp
bGVzeXN0ZW0gb3BlcmF0aW9ucyBpbiBXb3JrZXIuPC9wPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48
L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQ+CiBzdGFydFdvcmtlcignLi4v
cmVzb3VyY2VzL2FzeW5jLW9wZXJhdGlvbnMuanMnKTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOwogPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtl
ci10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgogCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dv
cmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3MjEyNSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2ZpbGUtZnJvbS1maWxlLWVu
dHJ5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSwxMyBAQAotVGhpcyB0
ZXN0cyByZXR1cm5pbmcgRmlsZSBmcm9tIEZpbGVFbnRyeSBpbiB3b3JrZXJzLgorW1dvcmtlcl0g
T2J0YWluaW5nIEZpbGUgZnJvbSBGaWxlRW50cnkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKwogCiBTdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9maWxlLWZyb20tZmlsZS1lbnRy
eS5qcwotRGVzY3JpcHRpb246IE9idGFpbmluZyBGaWxlIGZyb20gRmlsZUVudHJ5LgotUEFTUzog
dGVzdEZpbGUubmFtZSBpcyB0ZXN0RmlsZUVudHJ5Lm5hbWUKLVBBU1M6IHRlc3RGaWxlLnR5cGUg
aXMgJ3RleHQvcGxhaW4nCi1QQVNTOiB0ZXN0RmlsZS5zaXplIGlzIDAKLURPTkUKK1BBU1MgW1dv
cmtlcl0gdGVzdEZpbGUubmFtZSBpcyB0ZXN0RmlsZUVudHJ5Lm5hbWUKK1BBU1MgW1dvcmtlcl0g
dGVzdEZpbGUudHlwZSBpcyAndGV4dC9wbGFpbicKK1BBU1MgW1dvcmtlcl0gdGVzdEZpbGUuc2l6
ZSBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUK
IApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZp
bGUtZW50cnktc3luYy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDcyMTI1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtl
cnMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTEgKzEsMTMgQEAKLVRoaXMgdGVzdHMgcmV0dXJuaW5nIEZpbGUgZnJvbSBGaWxlRW50
cnlTeW5jIGluIHdvcmtlcnMuCitbV29ya2VyXSBPYnRhaW5pbmcgRmlsZSBmcm9tIEZpbGVFbnRy
eVN5bmMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwogCiBTdGFydGluZyB3b3JrZXI6
IC4uL3Jlc291cmNlcy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmpzCi1EZXNjcmlwdGlvbjog
T2J0YWluaW5nIEZpbGUgZnJvbSBGaWxlRW50cnlTeW5jLgotUEFTUzogdGVzdEZpbGUubmFtZSBp
cyB0ZXN0RmlsZUVudHJ5Lm5hbWUKLVBBU1M6IHRlc3RGaWxlLnR5cGUgaXMgJ3RleHQvcGxhaW4n
Ci1QQVNTOiB0ZXN0RmlsZS5zaXplIGlzIDAKLURPTkUKK1BBU1MgW1dvcmtlcl0gdGVzdEZpbGUu
bmFtZSBpcyB0ZXN0RmlsZUVudHJ5Lm5hbWUKK1BBU1MgW1dvcmtlcl0gdGVzdEZpbGUudHlwZSBp
cyAndGV4dC9wbGFpbicKK1BBU1MgW1dvcmtlcl0gdGVzdEZpbGUuc2l6ZSBpcyAwCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnktc3luYy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2Zp
bGUtZnJvbS1maWxlLWVudHJ5LXN5bmMuaHRtbAkocmV2aXNpb24gNzIxMjUpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS1zeW5jLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzEsMTYgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0
aWwuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPlRo
aXMgdGVzdHMgcmV0dXJuaW5nIEZpbGUgZnJvbSBGaWxlRW50cnlTeW5jIGluIHdvcmtlcnMuPC9w
PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxz
Y3JpcHQ+CiBzdGFydFdvcmtlcignLi4vcmVzb3VyY2VzL2ZpbGUtZnJvbS1maWxlLWVudHJ5LXN5
bmMuanMnKTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwogPC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3dvcmtlcnMvZmlsZS1mcm9tLWZpbGUtZW50cnkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLWZyb20tZmlsZS1lbnRyeS5odG1sCShy
ZXZpc2lvbiA3MjEyNSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL2Zp
bGUtZnJvbS1maWxlLWVudHJ5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzEsMTYgQEAK
IDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21t
b24uanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08
cCBpZD0iZGVzY3JpcHRpb24iPlRoaXMgdGVzdHMgcmV0dXJuaW5nIEZpbGUgZnJvbSBGaWxlRW50
cnkgaW4gd29ya2Vycy48L3A+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgogPHNjcmlwdD4KIHN0YXJ0V29ya2VyKCcuLi9yZXNvdXJjZXMvZmlsZS1m
cm9tLWZpbGUtZW50cnkuanMnKTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwog
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9m
aWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvZmlsZS13cml0ZXItdHJ1bmNhdGUt
ZXh0ZW5kLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorW1dvcmtl
cl0gVGVzdCBvZiBleHRlbmRpbmcgYSBmaWxlIHVzaW5nIHRydW5jYXRlKCkuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvZmlsZS13
cml0ZXItdHJ1bmNhdGUtZXh0ZW5kLmpzCitbV29ya2VyXSBzdGFydGluZyB0ZXN0CitQQVNTIFtX
b3JrZXJdIFRydW5jYXRlIGV4dGVuc2lvbiB2ZXJpZmllZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci10cnVuY2F0ZS1leHRlbmQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9maWxlLXdyaXRlci10
cnVuY2F0ZS1leHRlbmQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS93b3JrZXJzL2ZpbGUtd3JpdGVyLXRydW5jYXRlLWV4dGVuZC5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorIDxoZWFkPgor
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKyAgICA8dGl0bGU+RmlsZSBXcml0ZXIgVHJ1bmNhdGUtVG8tRXh0ZW5k
IFdvcmtlcjwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13
b3JrZXItdGVzdC11dGlsLmpzIj48L3NjcmlwdD4KKyA8L2hlYWQ+CisgPGJvZHk+CisgICAgPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgIDxzY3JpcHQ+CisgICAgICAgIHN0YXJ0V29ya2VyKCIuLi9yZXNvdXJjZXMvZmlsZS13cml0
ZXItdHJ1bmNhdGUtZXh0ZW5kLmpzIik7CisgICAgICAgIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyA8L2JvZHk+Cis8L2h0bWw+CisKKwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3Rl
bnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzIxMjUp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVu
dC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzEsMTMgQEAKLVRoaXMgdGVz
dHMgcmVxdWVzdGluZyBQRVJTSVNURU5UIEZpbGVTeXN0ZW0gaW4gV29ya2VyLgorW1dvcmtlcl0g
cmVxdWVzdEZpbGVTeXN0ZW0gUEVSU0lTVEVOVCB0ZXN0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKIAogU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvc2ltcGxlLXBlcnNpc3Rl
bnQuanMKLURlc2NyaXB0aW9uOiByZXF1ZXN0RmlsZVN5c3RlbSBQRVJTSVNURU5UIHRlc3QuCi1T
dWNjZXNzZnVsbHkgb2J0YWluZWQgUEVSU0lTVEVOVCBGaWxlU3lzdGVtOmZpbGVfXzA6UGVyc2lz
dGVudAotUEFTUzogZmlsZVN5c3RlbS5uYW1lLmxlbmd0aCA+IDAgaXMgdHJ1ZQotUEFTUzogZmls
ZVN5c3RlbS5yb290LmZ1bGxQYXRoIGlzICIvIgotRE9ORQorW1dvcmtlcl0gU3VjY2Vzc2Z1bGx5
IG9idGFpbmVkIFBFUlNJU1RFTlQgRmlsZVN5c3RlbTpmaWxlX18wOlBlcnNpc3RlbnQKK1BBU1Mg
W1dvcmtlcl0gZmlsZVN5c3RlbS5uYW1lLmxlbmd0aCA+IDAgaXMgdHJ1ZQorUEFTUyBbV29ya2Vy
XSBmaWxlU3lzdGVtLnJvb3QuZnVsbFBhdGggaXMgIi8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQtc3luYy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNp
c3RlbnQtc3luYy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDcyMTI1KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3RlbnQtc3luYy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzEsMTMgQEAKLVRoaXMgdGVzdHMgcmVxdWVzdGlu
ZyBQRVJTSVNURU5UIEZpbGVTeXN0ZW1TeW5jIGluIFdvcmtlci4KK1tXb3JrZXJdIHJlcXVlc3RG
aWxlU3lzdGVtU3luYyBQRVJTSVNURU5UIHRlc3QuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKwogCiBTdGFydGluZyB3b3JrZXI6IC4uL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC1z
eW5jLmpzCi1EZXNjcmlwdGlvbjogcmVxdWVzdEZpbGVTeXN0ZW1TeW5jIFBFUlNJU1RFTlQgdGVz
dC4KLVN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBQRVJTSVNURU5UIEZpbGVTeXN0ZW06ZmlsZV9fMDpQ
ZXJzaXN0ZW50Ci1QQVNTOiBmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCi1QQVNT
OiBmaWxlU3lzdGVtLnJvb3QuZnVsbFBhdGggaXMgIi8iCi1ET05FCitbV29ya2VyXSBTdWNjZXNz
ZnVsbHkgb2J0YWluZWQgUEVSU0lTVEVOVCBGaWxlU3lzdGVtOmZpbGVfXzA6UGVyc2lzdGVudAor
UEFTUyBbV29ya2VyXSBmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCitQQVNTIFtX
b3JrZXJdIGZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCBpcyAiLyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBlcnNpc3Rl
bnQtc3luYy5odG1sCShyZXZpc2lvbiA3MjEyNSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5
c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50LXN5bmMuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMSwxNSArMSwxNyBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvZnMtd29ya2VyLWNvbW1vbi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2ZzLXdvcmtlci10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+CiA8
L2hlYWQ+CiA8Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+VGhpcyB0ZXN0cyByZXF1ZXN0aW5n
IFBFUlNJU1RFTlQgRmlsZVN5c3RlbVN5bmMgaW4gV29ya2VyLjwvcD4KKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiA8c2NyaXB0Pgogc3RhcnRXb3Jr
ZXIoJy4uL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC1zeW5jLmpzJyk7Cit3aW5kb3cuc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIDwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9mcy13b3JrZXItdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRt
bD4KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXBl
cnNpc3RlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
d29ya2Vycy9zaW1wbGUtcGVyc2lzdGVudC5odG1sCShyZXZpc2lvbiA3MjEyNSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS1wZXJzaXN0ZW50Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTQgKzEsMTYgQEAKIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21tb24uanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMi
Pjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPlRoaXMgdGVz
dHMgcmVxdWVzdGluZyBQRVJTSVNURU5UIEZpbGVTeXN0ZW0gaW4gV29ya2VyLjwvcD4KKzxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CiA8c2NyaXB0Pgog
c3RhcnRXb3JrZXIoJy4uL3Jlc291cmNlcy9zaW1wbGUtcGVyc2lzdGVudC5qcycpOword2luZG93
LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CiA8L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUt
dGVtcG9yYXJ5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
NzIxMjUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVt
cG9yYXJ5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSwxMyBAQAotVGhp
cyB0ZXN0cyByZXF1ZXN0aW5nIFRFTVBPUkFSWSBGaWxlU3lzdGVtIGluIFdvcmtlci4KK1tXb3Jr
ZXJdIHJlcXVlc3RGaWxlU3lzdGVtIFRFTVBPUkFSWSB0ZXN0LgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKIAogU3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvc2ltcGxlLXRlbXBv
cmFyeS5qcwotRGVzY3JpcHRpb246IHJlcXVlc3RGaWxlU3lzdGVtIFRFTVBPUkFSWSB0ZXN0Lgot
U3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9y
YXJ5Ci1QQVNTOiBmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCi1QQVNTOiBmaWxl
U3lzdGVtLnJvb3QuZnVsbFBhdGggaXMgIi8iCi1ET05FCitbV29ya2VyXSBTdWNjZXNzZnVsbHkg
b2J0YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06ZmlsZV9fMDpUZW1wb3JhcnkKK1BBU1MgW1dv
cmtlcl0gZmlsZVN5c3RlbS5uYW1lLmxlbmd0aCA+IDAgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSBm
aWxlU3lzdGVtLnJvb3QuZnVsbFBhdGggaXMgIi8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lz
dGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5
LXN5bmMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3MjEyNSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS93b3JrZXJzL3NpbXBsZS10ZW1wb3Jhcnktc3luYy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTEgKzEsMTMgQEAKLVRoaXMgdGVzdHMgcmVxdWVzdGluZyBURU1Q
T1JBUlkgRmlsZVN5c3RlbVN5bmMgaW4gV29ya2VyLgorW1dvcmtlcl0gcmVxdWVzdEZpbGVTeXN0
ZW1TeW5jIFRFTVBPUkFSWSB0ZXN0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKIAog
U3RhcnRpbmcgd29ya2VyOiAuLi9yZXNvdXJjZXMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLmpzCi1E
ZXNjcmlwdGlvbjogcmVxdWVzdEZpbGVTeXN0ZW1TeW5jIFRFTVBPUkFSWSB0ZXN0LgotU3VjY2Vz
c2Z1bGx5IG9idGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5Ci1Q
QVNTOiBmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCi1QQVNTOiBmaWxlU3lzdGVt
LnJvb3QuZnVsbFBhdGggaXMgIi8iCi1ET05FCitbV29ya2VyXSBTdWNjZXNzZnVsbHkgb2J0YWlu
ZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06ZmlsZV9fMDpUZW1wb3JhcnkKK1BBU1MgW1dvcmtlcl0g
ZmlsZVN5c3RlbS5uYW1lLmxlbmd0aCA+IDAgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSBmaWxlU3lz
dGVtLnJvb3QuZnVsbFBhdGggaXMgIi8iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CiAKIFRFU1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dv
cmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBvcmFyeS1zeW5jLmh0bWwJKHJl
dmlzaW9uIDcyMTI1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2lt
cGxlLXRlbXBvcmFyeS1zeW5jLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTUgKzEsMTcgQEAK
IDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci1jb21t
b24uanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2ZzLXdvcmtlci10ZXN0LXV0aWwuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08
cCBpZD0iZGVzY3JpcHRpb24iPlRoaXMgdGVzdHMgcmVxdWVzdGluZyBURU1QT1JBUlkgRmlsZVN5
c3RlbVN5bmMgaW4gV29ya2VyLjwvcD4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgogPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CiA8c2NyaXB0Pgogc3RhcnRXb3JrZXIoJy4uL3Jlc291cmNlcy9z
aW1wbGUtdGVtcG9yYXJ5LXN5bmMuanMnKTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOwogPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgogCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zaW1wbGUtdGVtcG9yYXJ5Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3dvcmtlcnMvc2ltcGxlLXRlbXBv
cmFyeS5odG1sCShyZXZpc2lvbiA3MjEyNSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS93b3JrZXJzL3NpbXBsZS10ZW1wb3JhcnkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCAr
MSwxNiBAQAogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29y
a2VyLWNvbW1vbi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdv
cmtlci10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtdXRpbC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8
Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+VGhpcyB0ZXN0cyByZXF1ZXN0aW5nIFRFTVBPUkFS
WSBGaWxlU3lzdGVtIGluIFdvcmtlci48L3A+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogPHNjcmlwdD4KIHN0YXJ0V29ya2VyKCcuLi9yZXNvdXJj
ZXMvc2ltcGxlLXRlbXBvcmFyeS5qcycpOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CiA8L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzeXN0ZW0vd29ya2Vycy9zeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3N5bmMtb3Bl
cmF0aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDcyMTI1KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9maWxlc3lzdGVtL3dvcmtlcnMvc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMCArMSwxMiBAQAotVGhpcyB0ZXN0cyBydW5uaW5nIG11bHRpcGxlIHN5
bmMgZmlsZXN5c3RlbSBvcGVyYXRpb25zIGluIFdvcmtlci4KK1tXb3JrZXJdIFRlc3QgbWFraW5n
IG11bHRpcGxlIHN5bmNocm9ub3VzIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucy4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCiAKIFN0YXJ0aW5nIHdvcmtlcjogLi4vcmVzb3VyY2VzL3N5bmMt
b3BlcmF0aW9ucy5qcwotRGVzY3JpcHRpb246IFRlc3QgbWFraW5nIG11bHRpcGxlIHN5bmNocm9u
b3VzIEZpbGVTeXN0ZW0gb3BlcmF0aW9ucy4KLVBBU1M6ICIvYSwvYiwvYywvZDIsL2UsL2YiIGlz
ICIvYSwvYiwvYywvZDIsL2UsL2YiCi1QQVNTOiBkaXJzQ291bnQgaXMgMwotRE9ORQorUEFTUyBb
V29ya2VyXSAiL2EsL2IsL2MsL2QyLC9lLC9mIiBpcyAiL2EsL2IsL2MsL2QyLC9lLC9mIgorUEFT
UyBbV29ya2VyXSBkaXJzQ291bnQgaXMgMworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQogCiBURVNUIENPTVBMRVRFCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93
b3JrZXJzL3N5bmMtb3BlcmF0aW9ucy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS93b3JrZXJzL3N5bmMtb3BlcmF0aW9ucy5odG1sCShyZXZpc2lvbiA3MjEy
NSkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS93b3JrZXJzL3N5bmMtb3BlcmF0aW9u
cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1ICsxLDE3IEBACiA8aHRtbD4KIDxoZWFkPgot
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItY29tbW9uLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZnMtd29ya2VyLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9mcy13b3JrZXItdGVz
dC11dGlsLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9u
Ij5UaGlzIHRlc3RzIHJ1bm5pbmcgbXVsdGlwbGUgc3luYyBmaWxlc3lzdGVtIG9wZXJhdGlvbnMg
aW4gV29ya2VyLjwvcD4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgogPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CiA8c2NyaXB0Pgogc3RhcnRXb3JrZXIoJy4uL3Jlc291cmNlcy9zeW5jLW9wZXJh
dGlvbnMuanMnKTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwogPC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2ZzLXdvcmtlci10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>