<?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>98422</bug_id>
          
          <creation_ts>2012-10-04 10:19:21 -0700</creation_ts>
          <short_desc>[TestResultServer] Add support for non-Chromium TestExpectations files</short_desc>
          <delta_ts>2012-10-14 13:08:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>dpranke</cc>
    
    <cc>ojan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>734792</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-10-04 10:19:21 -0700</bug_when>
    <thetext>[TestResultServer] Add support for non-Chromium TestExpectations files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734835</commentid>
    <comment_count>1</comment_count>
      <attachid>167131</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-10-04 11:01:22 -0700</bug_when>
    <thetext>Created attachment 167131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734865</commentid>
    <comment_count>2</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-10-04 11:25:27 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=167131) [details]
&gt; Patch

The ChangeLog is quite detailed, but feel free (or obliged :&gt;) to raise any other issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739162</commentid>
    <comment_count>3</comment_count>
      <attachid>167131</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-10-10 11:30:05 -0700</bug_when>
    <thetext>Comment on attachment 167131
Patch

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

Thanks for working on this! This stuff it crazy complicated.

Overall, my comments are mostly about style. The only correctness concern I have is the early &quot;return false&quot; in processExpectations. I&apos;ve long wished that we could avoid duplicating all the python logic for this, but this patch a fine interim step to keep things working until then.

What I had in mind is that we&apos;d have some python code that would generate JSON representing the expectations/modifiers for each test on each platform. Something like:
{
    &quot;fast&quot;: {
        &quot;ChromiumLion&quot;: { buildTypes: [...], bugs: [...], expectations: [...] }
        &quot;AppleLion&quot;: {...},
        &quot;forms&quot;: {
            &quot;ChromiumLion&quot;: { buildTypes: [...], bugs: [...], expectations: [...] }
            &quot;AppleMountainLion&quot;: {...},
        }
    }
}

Once we have the python code generate this global expectations json file, then the flakiness dashboard just needs to walk this trie and doesn&apos;t need to duplicate (and more importantly, keep up to date with) the python logic.

As to this patch, at a high-level, I&apos;m trying to incrementally move this code away from being a big group of global functions into being more object oriented. One place you could maybe do so here is to make the trie a proper class.

function TestTrie()
TestTrie.prototype.addTest(test)  // instead of addTestToTrie
TestTrie.prototype.forEach(callback)  // instead of allTestsTrieTraversal

&gt; Tools/TestResultServer/static-dashboards/dashboard_base.js:566
&gt; +    (function requestExpectationsFile() {

Why not request all the expectations files in parallel? Won&apos;t that improve dashboard load time? I think it would also simplify the code a bit.

&gt; Tools/TestResultServer/static-dashboards/dashboard_base.js:569
&gt; +            logTime(&apos;requestExpectationsFiles: &apos;, start);

Nit: here and elsewhere. I&apos;ve been trying to cut back on the amount of stuff we always spew to the console. Logging these things it not much more useful than what you can get automatically with modern dev tools (e.g. network panel + profiler).

&gt; Tools/TestResultServer/static-dashboards/dashboard_base.js:622
&gt; +    g_waitingOnExpectations = isLayoutTestResults() &amp;&amp; !isTreeMap();

lol. whoops!

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.js:283
&gt; +function platformsTreeTraversal(callback)

I find the non-verbness of this name confusing. How about traversePlatformsTree?

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.js:287
&gt; +        for (var i = 0; i &lt; platformsList.length; i++) {

Nit: How about using platformsList.forEach(...)?

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.js:332
&gt; +function determineWKPlatform(builderName, basePlatform) {

Nit: curly on new line

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.js:439
&gt; +function allTestsTrieTraversal(callback, startingTriePath) {

Ditto: How about traverseAllTestsTrie?

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.js:663
&gt; +    for (var i = 1; i &lt; platformsList.length; i++)

Nit: use forEach

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.js:692
&gt; +            for (var i = 0; i &lt; subPlatformsList.length; i++)

Nit: use forEach

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.js:861
&gt; +        if (platform.platformModifierUnions) {
&gt; +            processExpectationsForPlatform(platformName, g_expectationsByPlatform[platformName]);
&gt; +            return false;
&gt; +        }

I&apos;m confused by this. For Chromium, we don&apos;t look at subplatforms? Shouldn&apos;t we return true here?

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.js:866
&gt; +                if (fallbackPlatform in g_expectationsByPlatform)

Isn&apos;t it an error if fallbackPlatform isn&apos;t in g_expectationsByPlatform? I think it makes sense to fail gracefully, but maybe we should console.error?

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.js:871
&gt; +        if (platformName in g_expectationsByPlatform)

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739772</commentid>
    <comment_count>4</comment_count>
      <attachid>167131</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-10-11 03:01:30 -0700</bug_when>
    <thetext>Comment on attachment 167131
Patch

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

&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.js:861
&gt;&gt; +        }
&gt; 
&gt; I&apos;m confused by this. For Chromium, we don&apos;t look at subplatforms? Shouldn&apos;t we return true here?

Chromium has a TestExpectations file that&apos;s (in the current PLATFORMS tree structure) tied to the base CHROMIUM platform, with platform modifier unions and subplatform modifiers used in it extensively. Because of that these expectations are processed for the base CHROMIUM platform but not for its subplatforms (hence the returning of false value). Any possible platform modifiers or unions are then appropriately processed in addTestToAllExpectationsForPlatform.

&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.js:866
&gt;&gt; +                if (fallbackPlatform in g_expectationsByPlatform)
&gt; 
&gt; Isn&apos;t it an error if fallbackPlatform isn&apos;t in g_expectationsByPlatform? I think it makes sense to fail gracefully, but maybe we should console.error?

That makes for a lot of console output when running unit tests, but I can put the console.error call in if desired.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739794</commentid>
    <comment_count>5</comment_count>
      <attachid>168189</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-10-11 04:08:34 -0700</bug_when>
    <thetext>Created attachment 168189
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739797</commentid>
    <comment_count>6</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-10-11 04:11:29 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=168189) [details]
&gt; Patch

Adds the TestTrie class, requests TestExpectations files in parallel, fixes the nits. The raised issues left open were responded to in comment #4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740442</commentid>
    <comment_count>7</comment_count>
      <attachid>168189</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-10-11 16:56:32 -0700</bug_when>
    <thetext>Comment on attachment 168189
Patch

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

This looks great. Just a few more tests if you don&apos;t mind.

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.js:425
&gt; +var TestTrie = function()

How about taking builders as an argument to the constructor instead? Then you can easily test this by passing in a more manageable object and pass in g_builders in the actual code.

Mind adding some tests for this? Shouldn&apos;t be too hard to get good test coverage of all the code paths.

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.js:885
&gt; +    logTime(&apos;processExpectations: &apos;, start);

Nit: please remove this and the start variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740453</commentid>
    <comment_count>8</comment_count>
      <attachid>167131</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-10-11 17:12:30 -0700</bug_when>
    <thetext>Comment on attachment 167131
Patch

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

&gt;&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.js:861
&gt;&gt;&gt; +        }
&gt;&gt; 
&gt;&gt; I&apos;m confused by this. For Chromium, we don&apos;t look at subplatforms? Shouldn&apos;t we return true here?
&gt; 
&gt; Chromium has a TestExpectations file that&apos;s (in the current PLATFORMS tree structure) tied to the base CHROMIUM platform, with platform modifier unions and subplatform modifiers used in it extensively. Because of that these expectations are processed for the base CHROMIUM platform but not for its subplatforms (hence the returning of false value). Any possible platform modifiers or unions are then appropriately processed in addTestToAllExpectationsForPlatform.

ANDROID should have CHROMIUM_ANDROID in its fallbackPlatforms list. I think that might be the confusion.

Maybe Chromium platforms shouldn&apos;t have &apos;CHROMIUM&apos; in the fallback list and should just have an empty fallback list except for CHROMIUM_ANDROID, and that would need to go through the fallbackPlatforms codepath as well?

&gt;&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.js:866
&gt;&gt;&gt; +                if (fallbackPlatform in g_expectationsByPlatform)
&gt;&gt; 
&gt;&gt; Isn&apos;t it an error if fallbackPlatform isn&apos;t in g_expectationsByPlatform? I think it makes sense to fail gracefully, but maybe we should console.error?
&gt; 
&gt; That makes for a lot of console output when running unit tests, but I can put the console.error call in if desired.

I see. Ideally we&apos;d change processExpectations to take g_expectationsByPlatform, then the tests can pass in a dummy object and we can make sure to test every codepath.

That&apos;s too much for this patch though. Maybe add a FIXME for now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740735</commentid>
    <comment_count>9</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-10-12 02:05:52 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 167131 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=167131&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.js:861
&gt; &gt;&gt;&gt; +        }
&gt; &gt;&gt; 
&gt; &gt;&gt; I&apos;m confused by this. For Chromium, we don&apos;t look at subplatforms? Shouldn&apos;t we return true here?
&gt; &gt; 
&gt; &gt; Chromium has a TestExpectations file that&apos;s (in the current PLATFORMS tree structure) tied to the base CHROMIUM platform, with platform modifier unions and subplatform modifiers used in it extensively. Because of that these expectations are processed for the base CHROMIUM platform but not for its subplatforms (hence the returning of false value). Any possible platform modifiers or unions are then appropriately processed in addTestToAllExpectationsForPlatform.
&gt; 
&gt; ANDROID should have CHROMIUM_ANDROID in its fallbackPlatforms list. I think that might be the confusion.
&gt; 
&gt; Maybe Chromium platforms shouldn&apos;t have &apos;CHROMIUM&apos; in the fallback list and should just have an empty fallback list except for CHROMIUM_ANDROID, and that would need to go through the fallbackPlatforms codepath as well?
&gt; 

Ah, Chromium Android has its own TestExpectations file. That makes the current approach of not traversing into subplatforms of a platform with modifier unions incorrect. I&apos;ll fix that.

&gt; &gt;&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.js:866
&gt; &gt;&gt;&gt; +                if (fallbackPlatform in g_expectationsByPlatform)
&gt; &gt;&gt; 
&gt; &gt;&gt; Isn&apos;t it an error if fallbackPlatform isn&apos;t in g_expectationsByPlatform? I think it makes sense to fail gracefully, but maybe we should console.error?
&gt; &gt; 
&gt; &gt; That makes for a lot of console output when running unit tests, but I can put the console.error call in if desired.
&gt; 
&gt; I see. Ideally we&apos;d change processExpectations to take g_expectationsByPlatform, then the tests can pass in a dummy object and we can make sure to test every codepath.
&gt; 
&gt; That&apos;s too much for this patch though. Maybe add a FIXME for now?

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740849</commentid>
    <comment_count>10</comment_count>
      <attachid>168403</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-10-12 05:33:58 -0700</bug_when>
    <thetext>Created attachment 168403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740859</commentid>
    <comment_count>11</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-10-12 05:43:46 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=168403) [details]
&gt; Patch

Adds a test for TestTrie, loads the Chromium Android test expectations file, platforms tree traversal now executes callback only on leaf nodes, meaning that when processing expectations for a specific platform (in processExpectationsForPlatform) the fallback platforms are checked for any platform modifier unions. The expectations&apos; modifiers are then searched to see if any represent such unions - if so, the expectation is only processed for that platform if the modifier in the expectation represents an union of which the platform is a member.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741179</commentid>
    <comment_count>12</comment_count>
      <attachid>168403</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-10-12 13:57:23 -0700</bug_when>
    <thetext>Comment on attachment 168403
Patch

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

Thanks for fixing this and being so responsive to the code review comments!

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.js:52
&gt; +            &apos;ANDROID&apos;: { fallbackPlatforms: [&apos;CHROMIUM&apos;], expectationsDirectory: &apos;chromium-android&apos; }

Shouldn&apos;t this be [&apos;CHROMIUM&apos;, &apos;CHROMIUM_ANDROID&apos;] ?

&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:773
&gt; +    var trie = new TestTrie(builders, resultsByBuilder);
&gt; +    deepEqual(trie._trie, expectedTrie);

Mind also adding a couple test of TestTrie.forEach (one that takes a startpath and one that doesn&apos;t)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741224</commentid>
    <comment_count>13</comment_count>
      <attachid>168403</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-10-12 14:41:08 -0700</bug_when>
    <thetext>Comment on attachment 168403
Patch

Thanks for all the reviewing!

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

&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard.js:52
&gt;&gt; +            &apos;ANDROID&apos;: { fallbackPlatforms: [&apos;CHROMIUM&apos;], expectationsDirectory: &apos;chromium-android&apos; }
&gt; 
&gt; Shouldn&apos;t this be [&apos;CHROMIUM&apos;, &apos;CHROMIUM_ANDROID&apos;] ?

No, if a platform object has the expectationsDirectory member and subsequently gets the associated test expectations loaded (via requestExpectationsFiles() in dashboard_base.js), then these expectations will be applied to the platform (on the top of those expectations linked to the fallback platforms). See for instance how subplatforms of GTK or EFL do the same.

&gt;&gt; Tools/TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:773
&gt;&gt; +    deepEqual(trie._trie, expectedTrie);
&gt; 
&gt; Mind also adding a couple test of TestTrie.forEach (one that takes a startpath and one that doesn&apos;t)?

Ugh, forgot about that. Will add.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741586</commentid>
    <comment_count>14</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-10-14 13:08:54 -0700</bug_when>
    <thetext>Modified and landed in r131254.
http://trac.webkit.org/changeset/131254</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167131</attachid>
            <date>2012-10-04 11:01:22 -0700</date>
            <delta_ts>2012-10-11 17:12:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98422-20121004200031.patch</filename>
            <type>text/plain</type>
            <size>44661</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5OTcyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTYwMThlZmI5Nzg1ZWJhNjEwMjA1NDdkMDMwMGI3M2Yz
OGFlNTM5NC4uYThhMzAyOGNiYmRhOGRiZjEwZDQ3ODU2ODNlMWQ4MjYwYWE4ZWJlNSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYz
IEBACisyMDEyLTEwLTA0ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisK
KyAgICAgICAgW1Rlc3RSZXN1bHRTZXJ2ZXJdIEFkZCBzdXBwb3J0IGZvciBub24tQ2hyb21pdW0g
VGVzdEV4cGVjdGF0aW9ucyBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTg0MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBMb2FkcyBUZXN0RXhwZWN0YXRpb25zIGZpbGVzIGZvciBzZXZlcmFsIG90
aGVyIG5vbi1DaHJvbWl1bSBwb3J0cywgcGFyc2VzIHRoZW0gYW5kCisgICAgICAgIHByb3Blcmx5
IGRpc3RyaWJ1dGVzIHRoZW0gcGVyIHZhcmlvdXMgcGxhdGZvcm1zLgorCisgICAgICAgICogVGVz
dFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNoYm9hcmRfYmFzZS5qczogZ19leHBl
Y3RhdGlvbnMgaXMgcmVwbGFjZWQgYnkKKyAgICAgICAgZ19leHBlY3RhdGlvbnNCeVBsYXRmb3Jt
LCBhbiBvYmplY3QgdGhhdCBob2xkcyByYXcgVGVzdEV4cGVjdGF0aW9ucyBmaWxlIGNvbnRlbnRz
IGZvcgorICAgICAgICB2YXJpb3VzIHByb2JsZW1zLgorICAgICAgICAocmVxdWVzdEV4cGVjdGF0
aW9uc0ZpbGVzLik6CisgICAgICAgIChyZXF1ZXN0RXhwZWN0YXRpb25zRmlsZXMpOiBGaXJzdCB0
cmF2ZXJzZXMgdGhyb3VnaCB0aGUgcGxhdGZvcm1zIHRyZWUgdG8gZ2F0aGVyIGFsbAorICAgICAg
ICB0aGUgVGVzdEV4cGVjdGF0aW9ucyBmaWxlcyB0aGF0IHNob3VsZCBiZSBsb2FkZWQsIHRoZW4g
bG9hZHMgdGhlbSBzZXJpYWxseS4KKyAgICAgICAgKGFwcGVuZEpTT05TY3JpcHRFbGVtZW50cyk6
CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3Nf
ZGFzaGJvYXJkLmpzOiBUaGUgcGxhdGZvcm1zIHRyZWUgaXMgcmVvcmdhbml6ZWQKKyAgICAgICAg
dG8gZGVzY3JpYmUgZWFjaCBwbGF0Zm9ybSBhbmQgcG9zc2libGUgc3VicGxhdGZvcm1zIHBsYWlu
bHkgeWV0IGluIGRldGFpbC4gVGhlIFBMQVRGT1JNX0ZBTExCQUNLUworICAgICAgICBvYmplY3Qg
aXMgcmVtb3ZlZCBhcyBpdCdzIG5vdCB1c2VkIGFueXdoZXJlLiBnX2FsbFRlc3RzQnlQbGF0Zm9y
bUFuZEJ1aWxkVHlwZSBpcyBub3cgZmlsbGVkIGJ5CisgICAgICAgIHRyYXZlcnNpbmcgdGhlIHBs
YXRmb3JtcyB0cmVlLgorICAgICAgICAocGxhdGZvcm1zVHJlZVRyYXZlcnNhbC50cmF2ZXJzZSk6
CisgICAgICAgIChwbGF0Zm9ybXNUcmVlVHJhdmVyc2FsKTogQSBoZWxwZXIgZnVuY3Rpb24gdGhh
dCB0cmF2ZXJzZXMgdGhlIHBsYXRmb3JtcyB0cmVlLCBpbnZva2luZworICAgICAgICBjYWxsYmFj
ayBvbiBlYWNoIG5vZGUuIFRoZSBjYWxsYmFjayBzaG91bGQgcmV0dXJuIHRydWUgaWYgdGhlIHRy
YXZlcnNhbCBzaG91bGQgY29udGludWUgaW50bworICAgICAgICBwbGF0Zm9ybSdzIHN1YnBsYXRm
b3Jtcy4KKyAgICAgICAgKGRldGVybWluZVdLUGxhdGZvcm0pOiBBIGhlbHBlciBmdW5jdGlvbiB0
byBkZXRlcm1pbmUgd2hldGhlciB0aGUgYnVpbGRlciBpcyBydW5uaW5nIFdlYktpdDEgb3IKKyAg
ICAgICAgV2ViS2l0MiBsYXllciBvZiBhIGdpdmVuIHBsYXRmb3JtLgorICAgICAgICAoY2hyb21p
dW1QbGF0Zm9ybSk6IENocm9taXVtLXNwZWNpZmljIHBsYXRmb3JtcyBhcmUgbm93IHByb3Blcmx5
IHByZWZpeGVkIHdpdGggJ0NIUk9NSVVNXycuCisgICAgICAgIChnZXRBbGxUZXN0c1RyaWUpOiBJ
bnN0ZWFkIG9mIGluIGxpc3QsIHRoZSBwcm9ibGVtYXRpYyB0ZXN0cyBmcm9tIGVhY2ggYnVpbGRl
ciBhcmUgbm93IHN0b3JlZCBpbiBhIHRyaWUuCisgICAgICAgIFRoaXMgYnJpbmdzIGJldHRlciBw
ZXJmb3JtYW5jZSB3aGVuIGFwcGx5aW5nIGV4cGVjdGF0aW9ucyB0byBhY3R1YWwgdGVzdHMuIAor
ICAgICAgICAoYWxsVGVzdHNUcmllVHJhdmVyc2FsLnRyYXZlcnNlKToKKyAgICAgICAgKGFsbFRl
c3RzVHJpZVRyYXZlcnNhbCk6IEEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgdHJhdmVyc2VzIHRoZSB0
ZXN0cyB0cmllLCBpbnZva2luZyBjYWxsYmFjayBvbiBlYWNoIGxlYWYuCisgICAgICAgIEFuIG9w
dGlvbmFsIHN0YXJ0aW5nIHBhdGggY2FuIGJlIGdpdmVuIHRvIHBvc3NpYmx5IG1vdmUgdGhlIHRy
aWUgdG8gdGhhdCBzcGVjaWZpZWQgbG9jYXRpb24gYmVmb3JlIHRyYXZlcnNhbC4KKyAgICAgICAg
KGluZGl2aWR1YWxUZXN0c0ZvclN1YnN0cmluZ0xpc3QpOiBNb2RpZmllZCB0byB0cmF2ZXJzZSB0
aGUgdHJpZSBpbnN0ZWFkIG9mIGl0ZXJhdGluZyB0aGUgbGlzdC4KKyAgICAgICAgKGFsbFRlc3Rz
V2l0aFJlc3VsdCk6IERpdHRvLgorICAgICAgICAoYWRkVGVzdFRvVHJpZSk6IEFsaWducyB0aGUg
dGVzdCBpbnRvIHRoZSBzcGVjaWZpZWQgdHJpZSBiYXNlZCBvbiB0aGUgdGVzdCdzIHBhdGguCisg
ICAgICAgIChhZGRUZXN0c1RvVHJpZUZvckJ1aWxkZXIpOiBJdGVyYXRlcyB0aHJvdWdoIGJ1aWxk
ZXIncyB0ZXN0cyBhbmQgYWRkcyB0aGVtIHRvIHRoZSB0cmllLgorICAgICAgICAocGxhdGZvcm1P
YmplY3RGb3JOYW1lKTogU3BsaXRzIHRoZSBwbGF0Zm9ybSBuYW1lIGJ5IHVuZGVyc2NvcmVzIGFu
ZCBmaW5kcyB0aGUgYXBwcm9wcmlhdGUgcGxhdGZvcm0gb2JqZWN0LgorICAgICAgICAoYWRkVGVz
dFRvQWxsRXhwZWN0YXRpb25zRm9yUGxhdGZvcm0pOiBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVk
IHRvIGJlIGNhbGxlZCBvbmx5IG9uIGxlYWYgbm9kZXMgb2YgdGhlCisgICAgICAgIHBsYXRmb3Jt
cyB0cmVlIHNvIHRoZSBtYWluIGxvZ2ljIGlzIGFkanVzdGVkIHRvIHRoYXQuIFRoZSBvbmx5IGV4
Y2VwdGlvbiBpcyB0aGUgQ2hyb21pdW0gcGxhdGZvcm0gd2hpY2gKKyAgICAgICAgaGFzIHBsYXRm
b3JtIG1vZGlmaWVyIHVuaW9ucy4gS2V5cyBvZiB0aGUgbGF0dGVyIGNhbiBiZSBwcmVzZW50IGFz
IG1vZGlmaWVycyBhbmQgdGhlIHBsYXRmb3JtIG9iamVjdCBpcyB0aGUKKyAgICAgICAgb25seSBv
bmUgdGhhdCBoYXMgdGhlIHN1YlBsYXRmb3JtcyBtZW1iZXIgKGkuZS4gaXMgbm90IGEgbGVhZiBu
b2RlIG9mIHRoZSBwbGF0Zm9ybXMgdHJlZSkuCisgICAgICAgIChnZXRQYXJzZWRFeHBlY3RhdGlv
bnMpOiBOb3cgb3BlcmF0ZXMgb24gdGhlIHBhc3NlZC1pbiBwYXJhbWV0ZXIgcmF0aGVyIHRoYW4g
b24gYSBnbG9iYWwgdmFyaWFibGUuCisgICAgICAgIChwcm9jZXNzRXhwZWN0YXRpb25zRm9yUGxh
dGZvcm0pOiBUcmF2ZXJzZXMgdGhlIHRlc3RzIHRyaWUsIHBhc3NpbmcgdGhyb3VnaCB0aGUgc3Rh
cnRpbmcgcG9pbnQgZm9yIHRoZSB0cmllCisgICAgICAgIHRoYXQncyBiYXNlZCBvbiB0aGUgZXhw
ZWN0YXRpb24ncyBwYXRoLiBJbiBjb250cmFzdCB0byBwcmV2aW91cyBiZWhhdmlvciB0aGUgZXhw
ZWN0YXRpb24gaXMgbm8gbG9uZ2VyIGFkZGVkCisgICAgICAgIGZvciBhIG5vbi1wcmVzZW50IHRl
c3QuCisgICAgICAgIChwcm9jZXNzRXhwZWN0YXRpb25zKTogUHJvY2Vzc2VzIGFsbCBhY3F1aXJl
ZCBleHBlY3RhdGlvbnMgYnkgdHJhdmVyc2luZyB0aGUgcGxhdGZvcm1zIHRyZWUgYW5kIHRha2lu
ZyBpbnRvCisgICAgICAgIGFjY291bnQgcG9zc2libGUgZmFsbGJhY2sgcGxhdGZvcm1zLiBDaHJv
bWl1bSBpcyBvbmNlIGFnYWluIGFuIGV4Y2VwdGlvbiwgYWRkaW5nIHRlc3QgZXhwZWN0YXRpb25z
IHRocm91Z2gKKyAgICAgICAgdGhlIGJhc2UgJ0NIUk9NSVVNJyBwbGF0Zm9ybSBpbnN0ZWFkIG9m
IGl0cyBzdWJwbGF0Zm9ybXMgLSB0aGlzIGFsbG93cyBmb3IgdGhlIHBsYXRmb3JtIG1vZGlmaWVy
IHVuaW9ucyB0byBiZQorICAgICAgICB0YWtlbiBpbnRvIGFjY291bnQuCisgICAgICAgIChwcm9j
ZXNzVGVzdFJ1bnNGb3JCdWlsZGVyKToKKyAgICAgICAgKHJlYWxNb2RpZmllcnMucmV0dXJuLm1v
ZGlmaWVycy5maWx0ZXIpOgorICAgICAgICAocmVhbE1vZGlmaWVycyk6IE1vZGlmaWVycyBvdGhl
ciB0aGFuIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIGFuZCBidWcgaGFuZGxlcyBhcmUgbm93IGZpbHRl
cmVkIG91dCBvbmx5IGlmIHRoZXkKKyAgICAgICAgYXJlIHByZXNlbnQgaW4gdGhlIHBsYXRmb3Jt
J3MgcGxhdGZvcm0gbW9kaWZpZXIgdW5pb25zIG9yIHJlcHJlc2VudCBzdWJwbGF0Zm9ybXMgb2Yg
YSBwbGF0Zm9ybSB0aGF0IHN1cHBvcnRzCisgICAgICAgIHBsYXRmb3JtIG1vZGlmaWVyIHVuaW9u
cy4KKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVz
c19kYXNoYm9hcmRfdW5pdHRlc3RzLmpzOiBUaGUgdGVzdCBjYXNlcyBhcmUgdXBkYXRlZCBhbmQg
ZXhwYW5kZWQKKyAgICAgICAgd2hlcmUgbmVjZXNzYXJ5IHRvIGNvdmVyIHRoZSBjaGFuZ2VzLgor
ICAgICAgICAocmVzZXRHbG9iYWxzKToKKyAgICAgICAgKHRlc3QpOgorCiAyMDEyLTA5LTI4ICBN
YXJpdXN6IEdyemVnb3JjenlrICA8bWFyaXVzei5nQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtX
SzJdW0dUS11bRUZMXSBTaGFyZSBXZWJLaXQyLUdUSyBwbHVnaW4gcHJvY2VzcyBpbXBsZW1lbnRh
dGlvbiB3aXRoIEVGTCBwb3J0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0
YXRpYy1kYXNoYm9hcmRzL2Rhc2hib2FyZF9iYXNlLmpzIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZl
ci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNoYm9hcmRfYmFzZS5qcwppbmRleCAzMWFkZmFiYTM3NzJh
Y2MwNWVlMjFhYmIwMzkyN2MzMDI5OGUyOTk1Li44YmYzN2FkYzNlODQ3N2U0ODQ3NjVkNDg3ODI5
OThiZDRhMmRkZDUwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1k
YXNoYm9hcmRzL2Rhc2hib2FyZF9iYXNlLmpzCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIv
c3RhdGljLWRhc2hib2FyZHMvZGFzaGJvYXJkX2Jhc2UuanMKQEAgLTQ5NCw3ICs0OTQsNyBAQCBm
dW5jdGlvbiBpbml0QnVpbGRlcnMoKQogfQogCiB2YXIgZ19yZXN1bHRzQnlCdWlsZGVyID0ge307
Ci12YXIgZ19leHBlY3RhdGlvbnM7Cit2YXIgZ19leHBlY3RhdGlvbnNCeVBsYXRmb3JtID0ge307
CiB2YXIgZ19zdGFsZUJ1aWxkZXJzID0gW107CiB2YXIgZ19idWlsZGVyc1RoYXRGYWlsZWRUb0xv
YWQgPSBbXTsKIApAQCAtNTUxLDI2ICs1NTEsMzcgQEAgZnVuY3Rpb24gcGF0aFRvQnVpbGRlclJl
c3VsdHNGaWxlKGJ1aWxkZXJOYW1lKQogICAgICAgICAgICAgJyZ0ZXN0dHlwZT0nICsgZ19jcm9z
c0Rhc2hib2FyZFN0YXRlLnRlc3RUeXBlICsgJyZuYW1lPSc7CiB9CiAKLS8vIEZJWE1FOiBNYWtl
IHRoZSBkYXNoYm9hcmQgdW5kZXJzdGFuZCBkaWZmZXJlbnQgcG9ydHMnIGV4cGVjdGF0aW9ucyBm
aWxlcy4KLXZhciBDSFJPTUlVTV9FWFBFQ1RBVElPTlNfVVJMID0gJ2h0dHA6Ly9zdm4ud2Via2l0
Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVuay9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9UZXN0RXhwZWN0YXRpb25zJzsKLXZhciBMRUdBQ1lfQ0hST01JVU1fRVhQRUNUQVRJT05TX1VS
TCA9ICdodHRwOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmsvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0JzsKLQotZnVuY3Rp
b24gcmVxdWVzdEV4cGVjdGF0aW9uc0ZpbGUoKQorZnVuY3Rpb24gcmVxdWVzdEV4cGVjdGF0aW9u
c0ZpbGVzKCkKIHsKLSAgICByZXF1ZXN0KENIUk9NSVVNX0VYUEVDVEFUSU9OU19VUkwsIGZ1bmN0
aW9uKHhocikgewotICAgICAgICBnX3dhaXRpbmdPbkV4cGVjdGF0aW9ucyA9IGZhbHNlOwotICAg
ICAgICBnX2V4cGVjdGF0aW9ucyA9IHhoci5yZXNwb25zZVRleHQ7Ci0gICAgICAgIGhhbmRsZVJl
c291cmNlTG9hZCgpOwotICAgIH0sCi0gICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJlcXVlc3Qo
TEVHQUNZX0NIUk9NSVVNX0VYUEVDVEFUSU9OU19VUkwsIGZ1bmN0aW9uKHhocikgeworICAgIHZh
ciBleHBlY3RhdGlvbnNGaWxlc1RvUmVxdWVzdCA9IHt9OworICAgIHZhciBzdGFydCA9IERhdGUu
bm93KCk7CisKKyAgICBwbGF0Zm9ybXNUcmVlVHJhdmVyc2FsKGZ1bmN0aW9uKHBsYXRmb3JtLCBw
bGF0Zm9ybU5hbWUpIHsKKyAgICAgICAgaWYgKHBsYXRmb3JtLmV4cGVjdGF0aW9uc0RpcmVjdG9y
eSkKKyAgICAgICAgICAgIGV4cGVjdGF0aW9uc0ZpbGVzVG9SZXF1ZXN0W0VYUEVDVEFUSU9OU19V
UkxfQkFTRV9QQVRIICsgcGxhdGZvcm0uZXhwZWN0YXRpb25zRGlyZWN0b3J5ICsgJy9UZXN0RXhw
ZWN0YXRpb25zJ10gPSBwbGF0Zm9ybU5hbWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0p
OworCisgICAgdmFyIGV4cGVjdGF0aW9uc0ZpbGVzTGlzdCA9IE9iamVjdC5rZXlzKGV4cGVjdGF0
aW9uc0ZpbGVzVG9SZXF1ZXN0KTsKKyAgICAoZnVuY3Rpb24gcmVxdWVzdEV4cGVjdGF0aW9uc0Zp
bGUoKSB7CisgICAgICAgIHZhciBleHBlY3RhdGlvbnNGaWxlID0gZXhwZWN0YXRpb25zRmlsZXNM
aXN0LnNoaWZ0KCk7CisgICAgICAgIGlmICghZXhwZWN0YXRpb25zRmlsZSkgeworICAgICAgICAg
ICAgbG9nVGltZSgncmVxdWVzdEV4cGVjdGF0aW9uc0ZpbGVzOiAnLCBzdGFydCk7CiAgICAgICAg
ICAgICBnX3dhaXRpbmdPbkV4cGVjdGF0aW9ucyA9IGZhbHNlOwotICAgICAgICAgICAgZ19leHBl
Y3RhdGlvbnMgPSB4aHIucmVzcG9uc2VUZXh0OwogICAgICAgICAgICAgaGFuZGxlUmVzb3VyY2VM
b2FkKCk7Ci0gICAgICAgIH0sIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgY29uc29sZS5lcnJv
cignQ291bGQgbm90IGxvYWQgZXhwZWN0YXRpb25zIGZpbGUgZnJvbSAnICsgQ0hST01JVU1fRVhQ
RUNUQVRJT05TX1VSTCArICcgb3IgJyArIExFR0FDWV9DSFJPTUlVTV9FWFBFQ1RBVElPTlNfVVJM
KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICByZXF1ZXN0KGV4cGVjdGF0aW9uc0ZpbGUsCisgICAgICAgICAgICAgICAgZnVu
Y3Rpb24oeGhyKSB7CisgICAgICAgICAgICAgICAgICAgIGdfZXhwZWN0YXRpb25zQnlQbGF0Zm9y
bVtleHBlY3RhdGlvbnNGaWxlc1RvUmVxdWVzdFtleHBlY3RhdGlvbnNGaWxlXV0gPSBnZXRQYXJz
ZWRFeHBlY3RhdGlvbnMoeGhyLnJlc3BvbnNlVGV4dCk7CisgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3RFeHBlY3RhdGlvbnNGaWxlKCk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICBmdW5jdGlvbih4aHIpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign
Q291bGQgbm90IGxvYWQgZXhwZWN0YXRpb25zIGZpbGUgZm9yICcgKyBwbGF0Zm9ybSk7CisgICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3RFeHBlY3RhdGlvbnNGaWxlKCk7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgfSkoKTsKIH0KIAogZnVuY3Rpb24gaXNUcmVlTWFwKCkKQEAgLTYwOCw5ICs2
MTksOSBAQCBmdW5jdGlvbiBhcHBlbmRKU09OU2NyaXB0RWxlbWVudHMoKQogICAgIGZvciAodmFy
IGJ1aWxkZXJOYW1lIGluIGdfYnVpbGRlcnMpCiAgICAgICAgIGFwcGVuZEpTT05TY3JpcHRFbGVt
ZW50Rm9yKGJ1aWxkZXJOYW1lKTsKIAotICAgIHZhciBnX3dhaXRpbmdPbkV4cGVjdGF0aW9ucyA9
IGlzTGF5b3V0VGVzdFJlc3VsdHMoKSAmJiAhaXNUcmVlTWFwKCk7CisgICAgZ193YWl0aW5nT25F
eHBlY3RhdGlvbnMgPSBpc0xheW91dFRlc3RSZXN1bHRzKCkgJiYgIWlzVHJlZU1hcCgpOwogICAg
IGlmIChnX3dhaXRpbmdPbkV4cGVjdGF0aW9ucykKLSAgICAgICAgcmVxdWVzdEV4cGVjdGF0aW9u
c0ZpbGUoKTsKKyAgICAgICAgcmVxdWVzdEV4cGVjdGF0aW9uc0ZpbGVzKCk7CiB9CiAKIHZhciBn
X2hhc0RvbmVJbml0aWFsUGFnZUdlbmVyYXRpb24gPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZC5q
cyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rh
c2hib2FyZC5qcwppbmRleCBmOGI1ZTU3ZGEzYjMzOWJlNWU3N2QzMDllY2Q3OTA0ZGFmN2U1ZmRh
Li5iMzcwYzk1MjlkYjk1ZmFjMjI4NTU1NTg2NjgxZjJmZjRlYTcxM2Q3IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9h
cmQuanMKKysrIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFr
aW5lc3NfZGFzaGJvYXJkLmpzCkBAIC0zNSwyOSArMzUsOTIgQEAgdmFyIEJBQ0tXQVJEID0gJ2Jh
Y2t3YXJkJzsKIHZhciBHVEVTVF9NT0RJRklFUlMgPSBbJ0ZMQUtZJywgJ0ZBSUxTJywgJ01BWUJF
JywgJ0RJU0FCTEVEJ107CiB2YXIgVEVTVF9VUkxfQkFTRV9QQVRIX1RSQUMgPSAnaHR0cDovL3Ry
YWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL0xheW91dFRlc3RzLyc7CiB2YXIgVEVTVF9VUkxf
QkFTRV9QQVRIID0gImh0dHA6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVu
ay9MYXlvdXRUZXN0cy8iOwordmFyIEVYUEVDVEFUSU9OU19VUkxfQkFTRV9QQVRIID0gVEVTVF9V
UkxfQkFTRV9QQVRIICsgInBsYXRmb3JtLyI7CiB2YXIgVEVTVF9SRVNVTFRTX0JBU0VfUEFUSCA9
ICdodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0
cy8nOwogdmFyIEdQVV9SRVNVTFRTX0JBU0VfUEFUSCA9ICdodHRwOi8vY2hyb21pdW0tYnJvd3Nl
ci1ncHUtdGVzdHMuY29tbW9uZGF0YXN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vcnVucy8nCiAKLS8v
IEZJWE1FOiBUaGVzZSBwbGF0Zm9ybSBuYW1lcyBzaG91bGQgcHJvYmFibHkgYmUgY2hhbmdlZCB0
byBtYXRjaCB0aGUgZGlyZWN0b3JpZXMgaW4gTGF5b3V0VGVzdHMvcGxhdGZvcm0KLS8vIGluc3Rl
YWQgb2YgbWF0Y2hpbmcgdGhlIHZhbHVlcyB3ZSB1c2UgaW4gdGhlIFRlc3RFeHBlY3RhdGlvbnMg
ZmlsZS4KLXZhciBQTEFURk9STVMgPSBbJ0xJT04nLCAnU05PV0xFT1BBUkQnLCAnWFAnLCAnVklT
VEEnLCAnV0lONycsICdMVUNJRCcsICdBTkRST0lEJywgJ0FQUExFX0xJT04nLCAnQVBQTEVfU05P
V0xFT1BBUkQnLCAnQVBQTEVfWFAnLCAnQVBQTEVfV0lONycsICdHVEtfTElOVVgnLCAnUVRfTElO
VVgnLCAnRUZMJ107Ci12YXIgUExBVEZPUk1fVU5JT05TID0gewotICAgICdNQUMnOiBbJ1NOT1dM
RU9QQVJEJywgJ0xJT04nXSwKLSAgICAnV0lOJzogWydYUCcsICdXSU43J10sCi0gICAgJ0xJTlVY
JzogWydMVUNJRCddCi19Ci0KLS8vIEZJWE1FOiBNYWtlIHRoZSBnX2FsbEV4cGVjdGF0aW9ucyBk
YXRhIHN0cnVjdHVyZSBleHBsaWNpdGx5IGxpc3QgZXZlcnkgcGxhdGZvcm0gaW5zdGVhZCBvZiBo
YXZpbmcgYSBmYWxsYmFja3MgY29uY2VwdC4KLXZhciBQTEFURk9STV9GQUxMQkFDS1MgPSB7Ci0g
ICAgJ1dJTic6ICdBTEwnLAotICAgICdYUCc6ICdXSU4nLAotICAgICdXSU43JzogJ1dJTicsCi0g
ICAgJ01BQyc6ICdBTEwnLAotICAgICdMSU9OJzogJ01BQycsCi0gICAgJ1NOT1dMRU9QQVJEJzog
J01BQycsCi0gICAgJ0xJTlVYJzogJ0FMTCcsCi0gICAgJ0xVQ0lEJzogJ0xJTlVYJwordmFyIFBM
QVRGT1JNUyA9IHsKKyAgICAnQ0hST01JVU0nOiB7CisgICAgICAgIGV4cGVjdGF0aW9uc0RpcmVj
dG9yeTogJ2Nocm9taXVtJywKKyAgICAgICAgc3ViUGxhdGZvcm1zOiB7CisgICAgICAgICAgICAn
TElPTic6IHsgZmFsbGJhY2tQbGF0Zm9ybXM6IFsnQ0hST01JVU0nXSB9LAorICAgICAgICAgICAg
J1NOT1dMRU9QQVJEJzogeyBmYWxsYmFja1BsYXRmb3JtczogWydDSFJPTUlVTSddIH0sCisgICAg
ICAgICAgICAnWFAnOiB7IGZhbGxiYWNrUGxhdGZvcm1zOiBbJ0NIUk9NSVVNJ10gfSwKKyAgICAg
ICAgICAgICdWSVNUQSc6IHsgZmFsbGJhY2tQbGF0Zm9ybXM6IFsnQ0hST01JVU0nXSB9LAorICAg
ICAgICAgICAgJ1dJTjcnOiB7IGZhbGxiYWNrUGxhdGZvcm1zOiBbJ0NIUk9NSVVNJ10gfSwKKyAg
ICAgICAgICAgICdMVUNJRCc6IHsgZmFsbGJhY2tQbGF0Zm9ybXM6IFsnQ0hST01JVU0nXSB9LAor
ICAgICAgICAgICAgJ0FORFJPSUQnOiB7IGZhbGxiYWNrUGxhdGZvcm1zOiBbJ0NIUk9NSVVNJ10g
fQorICAgICAgICB9LAorICAgICAgICBwbGF0Zm9ybU1vZGlmaWVyVW5pb25zOiB7CisgICAgICAg
ICAgICAnTUFDJzogWydMSU9OJywgJ1NOT1dMRU9QQVJEJ10sCisgICAgICAgICAgICAnV0lOJzog
WydYUCcsICdWSVNUQScsICdXSU43J10sCisgICAgICAgICAgICAnTElOVVgnOiBbJ0xVQ0lEJ10K
KyAgICAgICAgfQorICAgIH0sCisgICAgJ0FQUExFJzogeworICAgICAgICBzdWJQbGF0Zm9ybXM6
IHsKKyAgICAgICAgICAgICdNQUMnOiB7CisgICAgICAgICAgICAgICAgZXhwZWN0YXRpb25zRGly
ZWN0b3J5OiAnbWFjJywKKyAgICAgICAgICAgICAgICBzdWJQbGF0Zm9ybXM6IHsKKyAgICAgICAg
ICAgICAgICAgICAgJ0xJT04nOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RhdGlv
bnNEaXJlY3Rvcnk6ICdtYWMtbGlvbicsCisgICAgICAgICAgICAgICAgICAgICAgICBzdWJQbGF0
Zm9ybXM6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnV0sxJzogeyBmYWxsYmFja1Bs
YXRmb3JtczogWydBUFBMRV9NQUNfTElPTicsICdBUFBMRV9NQUMnXSB9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdXSzInOiB7IGZhbGxiYWNrUGxhdGZvcm1zOiBbJ0FQUExFX01BQ19M
SU9OJywgJ0FQUExFX01BQycsICdXSzInXSB9CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICdTTk9XTEVPUEFSRCc6
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uc0RpcmVjdG9yeTogJ21hYy1z
bm93bGVvcGFyZCcsCisgICAgICAgICAgICAgICAgICAgICAgICBzdWJQbGF0Zm9ybXM6IHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnV0sxJzogeyBmYWxsYmFja1BsYXRmb3JtczogWydB
UFBMRV9NQUNfU05PV0xFT1BBUkQnLCAnQVBQTEVfTUFDJ10gfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnV0syJzogeyBmYWxsYmFja1BsYXRmb3JtczogWydBUFBMRV9NQUNfU05PV0xF
T1BBUkQnLCAnQVBQTEVfTUFDJywgJ1dLMiddIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAnV0lOJzogeworICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uc0RpcmVj
dG9yeTogJ3dpbicsCisgICAgICAgICAgICAgICAgc3ViUGxhdGZvcm1zOiB7CisgICAgICAgICAg
ICAgICAgICAgICdYUCc6IHsgZmFsbGJhY2tQbGF0Zm9ybXM6IFsnQVBQTEVfV0lOJ10gfSwKKyAg
ICAgICAgICAgICAgICAgICAgJ1dJTjcnOiB7IGZhbGxiYWNrUGxhdGZvcm1zOiBbJ0FQUExFX1dJ
TiddIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
LAorICAgICdHVEsnOiB7CisgICAgICAgIGV4cGVjdGF0aW9uc0RpcmVjdG9yeTogJ2d0aycsCisg
ICAgICAgIHN1YlBsYXRmb3JtczogeworICAgICAgICAgICAgJ0xJTlVYJzogeworICAgICAgICAg
ICAgICAgIHN1YlBsYXRmb3JtczogeworICAgICAgICAgICAgICAgICAgICAnV0sxJzogeyBmYWxs
YmFja1BsYXRmb3JtczogWydHVEsnXSB9LAorICAgICAgICAgICAgICAgICAgICAnV0syJzogeyBm
YWxsYmFja1BsYXRmb3JtczogWydHVEsnLCAnV0syJ10sIGV4cGVjdGF0aW9uc0RpcmVjdG9yeTog
J2d0ay13azInIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9LAorICAgICdRVCc6IHsKKyAgICAgICAgZXhwZWN0YXRpb25zRGlyZWN0b3J5OiAncXQn
LAorICAgICAgICBzdWJQbGF0Zm9ybXM6IHsKKyAgICAgICAgICAgICdMSU5VWCc6IHsgZmFsbGJh
Y2tQbGF0Zm9ybXM6IFsnUVQnXSB9CisgICAgICAgIH0KKyAgICB9LAorICAgICdFRkwnOiB7Cisg
ICAgICAgIGV4cGVjdGF0aW9uc0RpcmVjdG9yeTogJ2VmbCcsCisgICAgICAgIHN1YlBsYXRmb3Jt
czogeworICAgICAgICAgICAgJ0xJTlVYJzogeworICAgICAgICAgICAgICAgIHN1YlBsYXRmb3Jt
czogeworICAgICAgICAgICAgICAgICAgICAnV0sxJzogeyBmYWxsYmFja1BsYXRmb3JtczogWydF
RkwnXSwgZXhwZWN0YXRpb25zRGlyZWN0b3J5OiAnZWZsLXdrMScgfSwKKyAgICAgICAgICAgICAg
ICAgICAgJ1dLMic6IHsgZmFsbGJhY2tQbGF0Zm9ybXM6IFsnRUZMJywgJ1dLMiddLCBleHBlY3Rh
dGlvbnNEaXJlY3Rvcnk6ICdlZmwtd2syJyB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfSwKKyAgICAnV0syJzogeworICAgICAgICBiYXNlUGxhdGZv
cm06IHRydWUsCisgICAgICAgIGV4cGVjdGF0aW9uc0RpcmVjdG9yeTogJ3drMicKKyAgICB9CiB9
OworCiB2YXIgQlVJTERfVFlQRVMgPSB7J0RFQlVHJzogJ0RCRycsICdSRUxFQVNFJzogJ1JFTEVB
U0UnfTsKIHZhciBNSU5fU0VDT05EU19GT1JfU0xPV19URVNUID0gNDsKIHZhciBNSU5fU0VDT05E
U19GT1JfU0xPV19URVNUX0RFQlVHID0gMiAqIE1JTl9TRUNPTkRTX0ZPUl9TTE9XX1RFU1Q7CkBA
IC0yMTcsNiArMjgwLDIxIEBAIHZhciBnX3Rlc3RUb1Jlc3VsdHNNYXAgPSB7fTsKIC8vIFRlc3Rz
IHRoYXQgdGhlIHVzZXIgd2FudHMgdG8gdXBkYXRlIGV4cGVjdGF0aW9ucyBmb3IuCiB2YXIgZ19j
b25maXJtZWRUZXN0cyA9IHt9OwogCitmdW5jdGlvbiBwbGF0Zm9ybXNUcmVlVHJhdmVyc2FsKGNh
bGxiYWNrKQoreworICAgIGZ1bmN0aW9uIHRyYXZlcnNlKHBsYXRmb3JtT2JqZWN0LCBwYXJlbnRQ
bGF0Zm9ybSkgeworICAgICAgICB2YXIgcGxhdGZvcm1zTGlzdCA9IE9iamVjdC5rZXlzKHBsYXRm
b3JtT2JqZWN0KTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwbGF0Zm9ybXNMaXN0Lmxl
bmd0aDsgaSsrKSB7CisgICAgICAgICAgICB2YXIgcGxhdGZvcm0gPSBwbGF0Zm9ybU9iamVjdFtw
bGF0Zm9ybXNMaXN0W2ldXTsKKyAgICAgICAgICAgIHZhciBwbGF0Zm9ybU5hbWUgPSBwYXJlbnRQ
bGF0Zm9ybSA/IHBhcmVudFBsYXRmb3JtICsgcGxhdGZvcm1zTGlzdFtpXSA6IHBsYXRmb3Jtc0xp
c3RbaV07CisKKyAgICAgICAgICAgIGlmIChjYWxsYmFjayhwbGF0Zm9ybSwgcGxhdGZvcm1OYW1l
KSAmJiBwbGF0Zm9ybS5zdWJQbGF0Zm9ybXMpCisgICAgICAgICAgICAgICAgdHJhdmVyc2UocGxh
dGZvcm0uc3ViUGxhdGZvcm1zLCBwbGF0Zm9ybU5hbWUgKyAnXycpOworICAgICAgICB9CisgICAg
fQorICAgIHRyYXZlcnNlKFBMQVRGT1JNUywgbnVsbCk7Cit9CisKIGZ1bmN0aW9uIGNyZWF0ZVJl
c3VsdHNPYmplY3RGb3JUZXN0KHRlc3QsIGJ1aWxkZXIpCiB7CiAgICAgcmV0dXJuIHsKQEAgLTI1
MSw0NSArMzI5LDUxIEBAIGZ1bmN0aW9uIG1hdGNoaW5nRWxlbWVudChzdHJpbmdUb01hdGNoLCBl
bGVtZW50c01hcCkKICAgICB9CiB9CiAKK2Z1bmN0aW9uIGRldGVybWluZVdLUGxhdGZvcm0oYnVp
bGRlck5hbWUsIGJhc2VQbGF0Zm9ybSkgeworICAgIHZhciBpc1dLMkJ1aWxkZXIgPSBzdHJpbmdD
b250YWlucyhidWlsZGVyTmFtZSwgJ1dLMicpIHx8IHN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJOYW1l
LCAnV0VCS0lUMicpOworICAgIHJldHVybiBiYXNlUGxhdGZvcm0gKyAoaXNXSzJCdWlsZGVyID8g
J19XSzInIDogJ19XSzEnKTsKK30KKwogZnVuY3Rpb24gbm9uQ2hyb21pdW1QbGF0Zm9ybShidWls
ZGVyTmFtZVVwcGVyQ2FzZSkKIHsKLSAgICBpZiAoc3RyaW5nQ29udGFpbnMoYnVpbGRlck5hbWVV
cHBlckNhc2UsICdMSU9OJykpCi0gICAgICAgIHJldHVybiAnQVBQTEVfTElPTic7Ci0gICAgaWYg
KHN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnU05PV0xFT1BBUkQnKSkKLSAg
ICAgICAgcmV0dXJuICdBUFBMRV9TTk9XTEVPUEFSRCc7CiAgICAgaWYgKHN0cmluZ0NvbnRhaW5z
KGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnV0lORE9XUyA3JykpCi0gICAgICAgIHJldHVybiAnQVBQ
TEVfV0lONyc7CisgICAgICAgIHJldHVybiAnQVBQTEVfV0lOX1dJTjcnOwogICAgIGlmIChzdHJp
bmdDb250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ1dJTkRPV1MgWFAnKSkKLSAgICAgICAg
cmV0dXJuICdBUFBMRV9YUCc7Ci0gICAgaWYgKHN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJOYW1lVXBw
ZXJDYXNlLCAnR1RLIExJTlVYJykpCi0gICAgICAgIHJldHVybiAnR1RLX0xJTlVYJzsKKyAgICAg
ICAgcmV0dXJuICdBUFBMRV9XSU5fWFAnOwogICAgIGlmIChzdHJpbmdDb250YWlucyhidWlsZGVy
TmFtZVVwcGVyQ2FzZSwgJ1FUIExJTlVYJykpCiAgICAgICAgIHJldHVybiAnUVRfTElOVVgnOwor
CisgICAgaWYgKHN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnTElPTicpKQor
ICAgICAgICByZXR1cm4gZGV0ZXJtaW5lV0tQbGF0Zm9ybShidWlsZGVyTmFtZVVwcGVyQ2FzZSwg
J0FQUExFX01BQ19MSU9OJyk7CisgICAgaWYgKHN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJOYW1lVXBw
ZXJDYXNlLCAnU05PV0xFT1BBUkQnKSkKKyAgICAgICAgcmV0dXJuIGRldGVybWluZVdLUGxhdGZv
cm0oYnVpbGRlck5hbWVVcHBlckNhc2UsICdBUFBMRV9NQUNfU05PV0xFT1BBUkQnKTsKKyAgICBp
ZiAoc3RyaW5nQ29udGFpbnMoYnVpbGRlck5hbWVVcHBlckNhc2UsICdHVEsgTElOVVgnKSkKKyAg
ICAgICAgcmV0dXJuIGRldGVybWluZVdLUGxhdGZvcm0oYnVpbGRlck5hbWVVcHBlckNhc2UsICdH
VEtfTElOVVgnKTsKICAgICBpZiAoc3RyaW5nQ29udGFpbnMoYnVpbGRlck5hbWVVcHBlckNhc2Us
ICdFRkwnKSkKLSAgICAgICAgcmV0dXJuICdFRkwnOworICAgICAgICByZXR1cm4gZGV0ZXJtaW5l
V0tQbGF0Zm9ybShidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ0VGTF9MSU5VWCcpOwogfQogCiBmdW5j
dGlvbiBjaHJvbWl1bVBsYXRmb3JtKGJ1aWxkZXJOYW1lVXBwZXJDYXNlKQogewogICAgIGlmIChz
dHJpbmdDb250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ01BQycpKSB7CiAgICAgICAgIGlm
IChzdHJpbmdDb250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJzEwLjcnKSkKLSAgICAgICAg
ICAgIHJldHVybiAnTElPTic7CisgICAgICAgICAgICByZXR1cm4gJ0NIUk9NSVVNX0xJT04nOwog
ICAgICAgICAvLyBUaGUgd2Via2l0Lm9yZyAnQ2hyb21pdW0gTWFjIFJlbGVhc2UgKFRlc3RzKScg
Ym90IHJ1bnMgU25vd0xlb3BhcmQuCi0gICAgICAgIHJldHVybiAnU05PV0xFT1BBUkQnOworICAg
ICAgICByZXR1cm4gJ0NIUk9NSVVNX1NOT1dMRU9QQVJEJzsKICAgICB9CiAgICAgaWYgKHN0cmlu
Z0NvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnV0lONycpKQotICAgICAgICByZXR1cm4g
J1dJTjcnOworICAgICAgICByZXR1cm4gJ0NIUk9NSVVNX1dJTjcnOwogICAgIGlmIChzdHJpbmdD
b250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ1ZJU1RBJykpCi0gICAgICAgIHJldHVybiAn
VklTVEEnOworICAgICAgICByZXR1cm4gJ0NIUk9NSVVNX1ZJU1RBJzsKICAgICBpZiAoc3RyaW5n
Q29udGFpbnMoYnVpbGRlck5hbWVVcHBlckNhc2UsICdXSU4nKSB8fCBzdHJpbmdDb250YWlucyhi
dWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ1hQJykpCi0gICAgICAgIHJldHVybiAnWFAnOworICAgICAg
ICByZXR1cm4gJ0NIUk9NSVVNX1hQJzsKICAgICBpZiAoc3RyaW5nQ29udGFpbnMoYnVpbGRlck5h
bWVVcHBlckNhc2UsICdMSU5VWCcpKQotICAgICAgICByZXR1cm4gJ0xVQ0lEJzsKKyAgICAgICAg
cmV0dXJuICdDSFJPTUlVTV9MVUNJRCc7CiAgICAgaWYgKHN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJO
YW1lVXBwZXJDYXNlLCAnQU5EUk9JRCcpKQotICAgICAgICByZXR1cm4gJ0FORFJPSUQnOworICAg
ICAgICByZXR1cm4gJ0NIUk9NSVVNX0FORFJPSUQnOwogICAgIC8vIFRoZSBpbnRlcmFjdGl2ZSBi
b3QgaXMgWFAsIGJ1dCBkb2Vzbid0IGhhdmUgYW4gT1MgaW4gaXQncyBuYW1lLgogICAgIGlmIChz
dHJpbmdDb250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ0lOVEVSQUNUSVZFJykpCi0gICAg
ICAgIHJldHVybiAnWFAnOworICAgICAgICByZXR1cm4gJ0NIUk9NSVVNX1hQJzsKIH0KIAogCkBA
IC0zNDAsMTggKzQyNCwzOCBAQCBmdW5jdGlvbiBleHBlY3RhdGlvbnNGaWxlU3RyaW5nRm9yUmVz
dWx0KHJlc3VsdCkKIAogLy8gTWFwIG9mIGFsbCB0ZXN0cyB0byB0cnVlIHZhbHVlcy4gVGhpcyBp
cyBqdXN0IHNvIHdlIGNhbiBoYXZlIHRoZSBsaXN0IG9mCiAvLyBhbGwgdGVzdHMgYWNyb3NzIGFs
bCB0aGUgYnVpbGRlcnMuCi12YXIgZ19hbGxUZXN0czsKK3ZhciBnX2FsbFRlc3RzVHJpZTsKIAot
Ly8gUmV0dXJucyBhIG1hcCBvZiBhbGwgdGVzdHMgdG8gdHJ1ZSB2YWx1ZXMuIFRoaXMgaXMganVz
dCBzbyB3ZSBjYW4gaGF2ZSB0aGUKLS8vIGxpc3Qgb2YgYWxsIHRlc3RzIGFjcm9zcyBhbGwgdGhl
IGJ1aWxkZXJzLgotZnVuY3Rpb24gZ2V0QWxsVGVzdHMoKQorZnVuY3Rpb24gZ2V0QWxsVGVzdHNU
cmllKCkKIHsKLSAgICBpZiAoIWdfYWxsVGVzdHMpIHsKLSAgICAgICAgZ19hbGxUZXN0cyA9IHt9
OworICAgIGlmICghZ19hbGxUZXN0c1RyaWUpIHsKKyAgICAgICAgZ19hbGxUZXN0c1RyaWUgPSB7
fTsKICAgICAgICAgZm9yICh2YXIgYnVpbGRlciBpbiBnX2J1aWxkZXJzKQotICAgICAgICAgICAg
YWRkVGVzdHNGb3JCdWlsZGVyKGJ1aWxkZXIsIGdfYWxsVGVzdHMpOworICAgICAgICAgICAgYWRk
VGVzdHNUb1RyaWVGb3JCdWlsZGVyKGJ1aWxkZXIsIGdfYWxsVGVzdHNUcmllKTsKICAgICB9Ci0g
ICAgcmV0dXJuIGdfYWxsVGVzdHM7CisgICAgcmV0dXJuIGdfYWxsVGVzdHNUcmllOworfQorCitm
dW5jdGlvbiBhbGxUZXN0c1RyaWVUcmF2ZXJzYWwoY2FsbGJhY2ssIHN0YXJ0aW5nVHJpZVBhdGgp
IHsKKyAgICB2YXIgdGVzdHNUcmllID0gZ2V0QWxsVGVzdHNUcmllKCk7CisgICAgaWYgKHN0YXJ0
aW5nVHJpZVBhdGgpIHsKKyAgICAgICAgdmFyIHNwbGl0UGF0aCA9IHN0YXJ0aW5nVHJpZVBhdGgu
c3BsaXQoJy8nKTsKKyAgICAgICAgd2hpbGUgKHNwbGl0UGF0aC5sZW5ndGggJiYgdGVzdHNUcmll
KQorICAgICAgICAgICAgdGVzdHNUcmllID0gdGVzdHNUcmllW3NwbGl0UGF0aC5zaGlmdCgpXTsK
KyAgICB9CisKKyAgICBpZiAoIXRlc3RzVHJpZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZnVu
Y3Rpb24gdHJhdmVyc2UodHJpZSwgdHJpZVBhdGgpIHsKKyAgICAgICAgaWYgKHRyaWUgPT0gdHJ1
ZSkKKyAgICAgICAgICAgIGNhbGxiYWNrKHRyaWVQYXRoKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBmb3IgKHZhciBtZW1iZXIgaW4gdHJpZSkKKyAgICAgICAgICAgICAgICB0cmF2ZXJz
ZSh0cmllW21lbWJlcl0sIHRyaWVQYXRoID8gdHJpZVBhdGggKyAnLycgKyBtZW1iZXIgOiBtZW1i
ZXIpOworICAgICAgICB9CisgICAgfQorICAgIHRyYXZlcnNlKHRlc3RzVHJpZSwgc3RhcnRpbmdU
cmllUGF0aCk7CiB9CiAKIC8vIFJldHVybnMgYW4gYXJyYXkgb2YgdGVzdHMgdG8gYmUgZGlzcGxh
eWVkIGluIHRoZSBpbmRpdmlkdWFsIHRlc3RzIHZpZXcuCkBAIC00MDIsMTQgKzUwNiwxMyBAQCBm
dW5jdGlvbiBpbmRpdmlkdWFsVGVzdHNGb3JTdWJzdHJpbmdMaXN0KCkKICAgICAgICAgaWYgKHBh
dGgubWF0Y2goL15ccyokLykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICB2YXIg
YWxsVGVzdHMgPSBnZXRBbGxUZXN0cygpOwogICAgICAgICB2YXIgaGFzQW55TWF0Y2hlcyA9IGZh
bHNlOwotICAgICAgICBmb3IgKHZhciB0ZXN0IGluIGFsbFRlc3RzKSB7Ci0gICAgICAgICAgICBp
ZiAoY2FzZUluc2Vuc2l0aXZlQ29udGFpbnModGVzdCwgcGF0aCkpIHsKLSAgICAgICAgICAgICAg
ICB0ZXN0c01hcFt0ZXN0XSA9IDE7CisgICAgICAgIGFsbFRlc3RzVHJpZVRyYXZlcnNhbChmdW5j
dGlvbih0cmllUGF0aCkgeworICAgICAgICAgICAgaWYgKGNhc2VJbnNlbnNpdGl2ZUNvbnRhaW5z
KHRyaWVQYXRoLCBwYXRoKSkgeworICAgICAgICAgICAgICAgIHRlc3RzTWFwW3RyaWVQYXRoXSA9
IDE7CiAgICAgICAgICAgICAgICAgaGFzQW55TWF0Y2hlcyA9IHRydWU7CiAgICAgICAgICAgICB9
Ci0gICAgICAgIH0KKyAgICAgICAgfSk7CiAKICAgICAgICAgLy8gSWYgYSBwYXRoIGRvZXNuJ3Qg
bWF0Y2ggYW55IHRlc3RzLCB0aGVuIGFzc3VtZSBpdCdzIGEgZnVsbCBwYXRoCiAgICAgICAgIC8v
IHRvIGEgdGVzdCB0aGF0IHBhc3NlcyBvbiBhbGwgYnVpbGRlcnMuCkBAIC00NDIsMTYgKzU0NSwx
NyBAQCBmdW5jdGlvbiBpc0Zhc3RUZXN0KHJlc3VsdHNGb3JUZXN0KQogZnVuY3Rpb24gYWxsVGVz
dHNXaXRoUmVzdWx0KHJlc3VsdCkKIHsKICAgICBwcm9jZXNzVGVzdFJ1bnNGb3JBbGxCdWlsZGVy
cygpOwotICAgIHZhciB0ZXN0cyA9IGdldEFsbFRlc3RzKCk7CiAgICAgdmFyIHJldFZhbCA9IFtd
OwotICAgIGZvciAodmFyIHRlc3QgaW4gdGVzdHMpIHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBnX3Rlc3RUb1Jlc3VsdHNNYXBbdGVzdF0ubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAg
IGlmIChnX3Rlc3RUb1Jlc3VsdHNNYXBbdGVzdF1baV0uYWN0dWFsUmVzdWx0cy5pbmRleE9mKHJl
c3VsdCkgIT0gLTEpIHsKLSAgICAgICAgICAgICAgICByZXRWYWwucHVzaCh0ZXN0KTsKKworICAg
IGFsbFRlc3RzVHJpZVRyYXZlcnNhbChmdW5jdGlvbih0cmllUGF0aCkgeworICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGdfdGVzdFRvUmVzdWx0c01hcFt0cmllUGF0aF0ubGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgICAgIGlmIChnX3Rlc3RUb1Jlc3VsdHNNYXBbdHJpZVBhdGhdW2ldLmFjdHVh
bFJlc3VsdHMuaW5kZXhPZihyZXN1bHQpICE9IC0xKSB7CisgICAgICAgICAgICAgICAgcmV0VmFs
LnB1c2godHJpZVBhdGgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICB9Ci0gICAgfQorICAgIH0pOworCiAgICAgcmV0dXJuIHJldFZhbDsKIH0KIApAQCAt
NDY1LDExICs1NjksMzYgQEAgZnVuY3Rpb24gYWRkVGVzdHNGb3JCdWlsZGVyKGJ1aWxkZXIsIHRl
c3RNYXBUb1BvcHVsYXRlKQogICAgIH0KIH0KIAorZnVuY3Rpb24gYWRkVGVzdFRvVHJpZSh0ZXN0
LCB0cmllKQoreworICAgIHZhciByb290Q29tcG9uZW50ID0gdGVzdC5zaGlmdCgpOworICAgIGlm
ICghdGVzdC5sZW5ndGgpIHsKKyAgICAgICAgaWYgKCF0cmllW3Jvb3RDb21wb25lbnRdKQorICAg
ICAgICAgICAgdHJpZVtyb290Q29tcG9uZW50XSA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAoIXRyaWVbcm9vdENvbXBvbmVudF0gfHwgdHJpZVtyb290Q29tcG9uZW50
XSA9PSB0cnVlKQorICAgICAgICB0cmllW3Jvb3RDb21wb25lbnRdID0ge307CisgICAgYWRkVGVz
dFRvVHJpZSh0ZXN0LCB0cmllW3Jvb3RDb21wb25lbnRdKTsKK30KKworZnVuY3Rpb24gYWRkVGVz
dHNUb1RyaWVGb3JCdWlsZGVyKGJ1aWxkZXIsIHRlc3RUcmllVG9Qb3B1bGF0ZSkKK3sKKyAgICB2
YXIgdGVzdHMgPSBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlcl0udGVzdHM7CisgICAgZm9yICh2
YXIgdGVzdCBpbiB0ZXN0cykKKyAgICAgICAgYWRkVGVzdFRvVHJpZSh0ZXN0LnNwbGl0KCcvJyks
IHRlc3RUcmllVG9Qb3B1bGF0ZSk7Cit9CisKIC8vIE1hcCBvZiBhbGwgdGVzdHMgdG8gdHJ1ZSB2
YWx1ZXMgYnkgcGxhdGZvcm0gYW5kIGJ1aWxkIHR5cGUuCiAvLyBlLmcuIGdfYWxsVGVzdHNCeVBs
YXRmb3JtQW5kQnVpbGRUeXBlWydYUCddWydERUJVRyddIHdpbGwgaGF2ZSB0aGUgdW5pb24KIC8v
IG9mIGFsbCB0ZXN0cyBydW4gb24gdGhlIHhwLWRlYnVnIGJ1aWxkZXJzLgogdmFyIGdfYWxsVGVz
dHNCeVBsYXRmb3JtQW5kQnVpbGRUeXBlID0ge307Ci1QTEFURk9STVMuZm9yRWFjaChmdW5jdGlv
bihwbGF0Zm9ybSkgeyBnX2FsbFRlc3RzQnlQbGF0Zm9ybUFuZEJ1aWxkVHlwZVtwbGF0Zm9ybV0g
PSB7fTsgfSk7CitwbGF0Zm9ybXNUcmVlVHJhdmVyc2FsKGZ1bmN0aW9uKHBsYXRmb3JtLCBwbGF0
Zm9ybU5hbWUpIHsKKyAgICBpZiAoIXBsYXRmb3JtLnN1YlBsYXRmb3JtcyAmJiAhcGxhdGZvcm0u
YmFzZVBsYXRmb3JtKQorICAgICAgICBnX2FsbFRlc3RzQnlQbGF0Zm9ybUFuZEJ1aWxkVHlwZVtw
bGF0Zm9ybU5hbWVdID0ge307CisgICAgcmV0dXJuIHRydWU7Cit9KTsKIAogLy8gTWFwIG9mIGFs
bCB0ZXN0cyB0byB0cnVlIHZhbHVlcyBieSBwbGF0Zm9ybSBhbmQgYnVpbGQgdHlwZS4KIC8vIGUu
Zy4gZ19hbGxUZXN0c0J5UGxhdGZvcm1BbmRCdWlsZFR5cGVbJ1dJTiddWydERUJVRyddIHdpbGwg
aGF2ZSB0aGUgdW5pb24KQEAgLTUyNywxMSArNjU2LDIxIEBAIGZ1bmN0aW9uIHBvcHVsYXRlRXhw
ZWN0YXRpb25zRGF0YShyZXN1bHRzT2JqZWN0KQogICAgIHJlc3VsdHNPYmplY3QuaXNXb250Rml4
U2tpcCA9IHN0cmluZ0NvbnRhaW5zKGV4cGVjdGF0aW9ucy5tb2RpZmllcnMsICdXT05URklYJykg
fHwgc3RyaW5nQ29udGFpbnMoZXhwZWN0YXRpb25zLm1vZGlmaWVycywgJ1NLSVAnKTsgCiB9CiAK
LWZ1bmN0aW9uIGFkZFRlc3RUb0FsbEV4cGVjdGF0aW9ucyh0ZXN0LCBleHBlY3RhdGlvbnMsIG1v
ZGlmaWVycykKK2Z1bmN0aW9uIHBsYXRmb3JtT2JqZWN0Rm9yTmFtZShwbGF0Zm9ybU5hbWUpCit7
CisgICAgdmFyIHBsYXRmb3Jtc0xpc3QgPSBwbGF0Zm9ybU5hbWUuc3BsaXQoIl8iKTsKKyAgICB2
YXIgcGxhdGZvcm1PYmplY3QgPSBQTEFURk9STVNbcGxhdGZvcm1zTGlzdFswXV07CisgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBwbGF0Zm9ybXNMaXN0Lmxlbmd0aDsgaSsrKQorICAgICAgICBwbGF0
Zm9ybU9iamVjdCA9IHBsYXRmb3JtT2JqZWN0LnN1YlBsYXRmb3Jtc1twbGF0Zm9ybXNMaXN0W2ld
XTsKKyAgICByZXR1cm4gcGxhdGZvcm1PYmplY3Q7Cit9CisKK2Z1bmN0aW9uIGFkZFRlc3RUb0Fs
bEV4cGVjdGF0aW9uc0ZvclBsYXRmb3JtKHRlc3QsIHBsYXRmb3JtLCBleHBlY3RhdGlvbnMsIG1v
ZGlmaWVycykKIHsKICAgICBpZiAoIWdfYWxsRXhwZWN0YXRpb25zW3Rlc3RdKQogICAgICAgICBn
X2FsbEV4cGVjdGF0aW9uc1t0ZXN0XSA9IHt9OwogCisgICAgdmFyIHBsYXRmb3JtT2JqZWN0ID0g
cGxhdGZvcm1PYmplY3RGb3JOYW1lKHBsYXRmb3JtKTsKICAgICB2YXIgYWxsUGxhdGZvcm1zID0g
W107CiAgICAgdmFyIGFsbEJ1aWxkVHlwZXMgPSBbXTsKICAgICBtb2RpZmllcnMuc3BsaXQoJyAn
KS5mb3JFYWNoKGZ1bmN0aW9uKG1vZGlmaWVyKSB7CkBAIC01MzksMjUgKzY3OCwyNiBAQCBmdW5j
dGlvbiBhZGRUZXN0VG9BbGxFeHBlY3RhdGlvbnModGVzdCwgZXhwZWN0YXRpb25zLCBtb2RpZmll
cnMpCiAgICAgICAgICAgICBhbGxCdWlsZFR5cGVzLnB1c2gobW9kaWZpZXIpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoUExBVEZPUk1TLmlu
ZGV4T2YobW9kaWZpZXIpICE9IC0xKSB7Ci0gICAgICAgICAgICBhbGxQbGF0Zm9ybXMucHVzaCht
b2RpZmllcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIGlmIChtb2RpZmllciBpbiBQTEFURk9STV9VTklPTlMpIHsKLSAgICAgICAgICAgIFBMQVRG
T1JNX1VOSU9OU1ttb2RpZmllcl0uZm9yRWFjaChmdW5jdGlvbihwbGF0Zm9ybSkgewotICAgICAg
ICAgICAgICAgIGFsbFBsYXRmb3Jtcy5wdXNoKHBsYXRmb3JtKTsKLSAgICAgICAgICAgIH0pOwor
CisgICAgICAgIGlmIChwbGF0Zm9ybU9iamVjdC5wbGF0Zm9ybU1vZGlmaWVyVW5pb25zICYmIG1v
ZGlmaWVyIGluIHBsYXRmb3JtT2JqZWN0LnBsYXRmb3JtTW9kaWZpZXJVbmlvbnMpIHsKKyAgICAg
ICAgICAgIHBsYXRmb3JtT2JqZWN0LnBsYXRmb3JtTW9kaWZpZXJVbmlvbnNbbW9kaWZpZXJdLmZv
ckVhY2goZnVuY3Rpb24ocGxhdGZvcm1JblVuaW9uKSB7CisgICAgICAgICAgICAgICAgYWxsUGxh
dGZvcm1zLnB1c2gocGxhdGZvcm0gKyAnXycgKyBwbGF0Zm9ybUluVW5pb24pOworICAgICAgICAg
ICAgfSkKICAgICAgICAgfQogICAgIH0pCi0gICAgCi0gICAgaWYgKCFhbGxQbGF0Zm9ybXMubGVu
Z3RoKQotICAgICAgICBhbGxQbGF0Zm9ybXMgPSBQTEFURk9STVM7Ci0gICAgICAgIAorCisgICAg
aWYgKCFhbGxQbGF0Zm9ybXMubGVuZ3RoKSB7CisgICAgICAgIGlmIChwbGF0Zm9ybU9iamVjdC5z
dWJQbGF0Zm9ybXMpIHsKKyAgICAgICAgICAgIHZhciBzdWJQbGF0Zm9ybXNMaXN0ID0gT2JqZWN0
LmtleXMocGxhdGZvcm1PYmplY3Quc3ViUGxhdGZvcm1zKTsKKyAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgc3ViUGxhdGZvcm1zTGlzdC5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAg
ICBhbGxQbGF0Zm9ybXMucHVzaChwbGF0Zm9ybSArICdfJyArIHN1YlBsYXRmb3Jtc0xpc3RbaV0p
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFsbFBsYXRmb3Jtcy5wdXNoKHBsYXRmb3Jt
KTsKKyAgICB9CisKICAgICBpZiAoIWFsbEJ1aWxkVHlwZXMubGVuZ3RoKQogICAgICAgICBhbGxC
dWlsZFR5cGVzID0gT2JqZWN0LmtleXMoQlVJTERfVFlQRVMpOwotICAgIAorCiAgICAgYWxsUGxh
dGZvcm1zLmZvckVhY2goZnVuY3Rpb24ocGxhdGZvcm0pIHsKICAgICAgICAgaWYgKCFnX2FsbEV4
cGVjdGF0aW9uc1t0ZXN0XVtwbGF0Zm9ybV0pCiAgICAgICAgICAgICBnX2FsbEV4cGVjdGF0aW9u
c1t0ZXN0XVtwbGF0Zm9ybV0gPSB7fTsKQEAgLTU3OSwxMyArNzE5LDEwIEBAIGZ1bmN0aW9uIGFk
ZFRlc3RUb0FsbEV4cGVjdGF0aW9ucyh0ZXN0LCBleHBlY3RhdGlvbnMsIG1vZGlmaWVycykKIC8v
IGJ1aWxkVHlwZSwgdGhlbiBBTEwuCiB2YXIgZ19hbGxFeHBlY3RhdGlvbnM7CiAKLWZ1bmN0aW9u
IHBhcnNlZEV4cGVjdGF0aW9ucygpCitmdW5jdGlvbiBnZXRQYXJzZWRFeHBlY3RhdGlvbnMoZGF0
YSkKIHsKLSAgICBpZiAoIWdfZXhwZWN0YXRpb25zKQotICAgICAgICByZXR1cm4gW107Ci0gICAg
CiAgICAgdmFyIGV4cGVjdGF0aW9ucyA9IFtdOwotICAgIHZhciBsaW5lcyA9IGdfZXhwZWN0YXRp
b25zLnNwbGl0KCdcbicpOworICAgIHZhciBsaW5lcyA9IGRhdGEuc3BsaXQoJ1xuJyk7CiAgICAg
bGluZXMuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7CiAgICAgICAgIGxpbmUgPSB0cmltU3RyaW5n
KGxpbmUpOwogICAgICAgICBpZiAoIWxpbmUgfHwgc3RhcnRzV2l0aChsaW5lLCAnIycpKQpAQCAt
Njg2LDQxICs4MjMsNTkgQEAgZnVuY3Rpb24gcGFyc2VkRXhwZWN0YXRpb25zKCkKICAgICByZXR1
cm4gZXhwZWN0YXRpb25zOwogfQogCi1mdW5jdGlvbiBwcm9jZXNzRXhwZWN0YXRpb25zKCkKK2Z1
bmN0aW9uIHByb2Nlc3NFeHBlY3RhdGlvbnNGb3JQbGF0Zm9ybShwbGF0Zm9ybSwgZXhwZWN0YXRp
b25zQXJyYXkpCiB7Ci0gICAgaWYgKGdfYWxsRXhwZWN0YXRpb25zKQotICAgICAgICByZXR1cm4g
Z19hbGxFeHBlY3RhdGlvbnM7CisgICAgaWYgKCFnX2FsbEV4cGVjdGF0aW9ucykKKyAgICAgICAg
Z19hbGxFeHBlY3RhdGlvbnMgPSB7fTsKIAotICAgIGdfYWxsRXhwZWN0YXRpb25zID0ge307Ci0K
LSAgICB2YXIgZXhwZWN0YXRpb25zQXJyYXkgPSBwYXJzZWRFeHBlY3RhdGlvbnMoKTsKKyAgICBp
ZiAoIWV4cGVjdGF0aW9uc0FycmF5KQorICAgICAgICByZXR1cm47CiAKICAgICAvLyBTb3J0IHRo
ZSBhcnJheSB0byBoaXQgbW9yZSBzcGVjaWZpYyBwYXRocyBsYXN0LiBNb3JlIHNwZWNpZmljCiAg
ICAgLy8gcGF0aHMgKGUuZy4gZm9vL2Jhci9iYXouaHRtbCkgb3ZlcnJpZGUgZW50cmllcyBmb3Ig
bGVzcy1zcGVjaWZpYyBvbmVzIChlLmcuIGZvby9iYXIpLgogICAgIGV4cGVjdGF0aW9uc0FycmF5
LnNvcnQoYWxwaGFudW1lcmljQ29tcGFyZSgncGF0aCcpKTsKIAotICAgIHZhciBhbGxUZXN0cyA9
IGdldEFsbFRlc3RzKCk7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3RhdGlvbnNBcnJh
eS5sZW5ndGg7IGkrKykgewogICAgICAgICB2YXIgcGF0aCA9IGV4cGVjdGF0aW9uc0FycmF5W2ld
LnBhdGg7CiAgICAgICAgIHZhciBtb2RpZmllcnMgPSBleHBlY3RhdGlvbnNBcnJheVtpXS5tb2Rp
ZmllcnM7CiAgICAgICAgIHZhciBleHBlY3RhdGlvbnMgPSBleHBlY3RhdGlvbnNBcnJheVtpXS5l
eHBlY3RhdGlvbnM7CiAKLSAgICAgICAgdmFyIHBhdGhNYXRjaGVzQW55VGVzdCA9IGZhbHNlOwot
ICAgICAgICBpZiAoYWxsVGVzdHNbcGF0aF0pIHsKLSAgICAgICAgICAgIHBhdGhNYXRjaGVzQW55
VGVzdCA9IHRydWU7Ci0gICAgICAgICAgICBhZGRUZXN0VG9BbGxFeHBlY3RhdGlvbnMocGF0aCwg
ZXhwZWN0YXRpb25zLCBtb2RpZmllcnMpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
Zm9yICh2YXIgdGVzdCBpbiBhbGxUZXN0cykgewotICAgICAgICAgICAgICAgIGlmIChzdGFydHNX
aXRoKHRlc3QsIHBhdGgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhdGhNYXRjaGVzQW55VGVz
dCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGFkZFRlc3RUb0FsbEV4cGVjdGF0aW9ucyh0
ZXN0LCBleHBlY3RhdGlvbnMsIG1vZGlmaWVycyk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAg
ICBhbGxUZXN0c1RyaWVUcmF2ZXJzYWwoZnVuY3Rpb24odHJpZVBhdGgpIHsKKyAgICAgICAgICAg
IGFkZFRlc3RUb0FsbEV4cGVjdGF0aW9uc0ZvclBsYXRmb3JtKHRyaWVQYXRoLCBwbGF0Zm9ybSwg
ZXhwZWN0YXRpb25zLCBtb2RpZmllcnMpOworICAgICAgICB9LCBwYXRoKTsKKworICAgIH0KK30K
KworZnVuY3Rpb24gcHJvY2Vzc0V4cGVjdGF0aW9ucygpCit7CisgICAgaWYgKCFnX2V4cGVjdGF0
aW9uc0J5UGxhdGZvcm0pCisgICAgICAgIHJldHVybjsKKworICAgIHZhciBzdGFydCA9IERhdGUu
bm93KCk7CisKKyAgICBwbGF0Zm9ybXNUcmVlVHJhdmVyc2FsKGZ1bmN0aW9uKHBsYXRmb3JtLCBw
bGF0Zm9ybU5hbWUpIHsKKyAgICAgICAgaWYgKHBsYXRmb3JtLnBsYXRmb3JtTW9kaWZpZXJVbmlv
bnMpIHsKKyAgICAgICAgICAgIHByb2Nlc3NFeHBlY3RhdGlvbnNGb3JQbGF0Zm9ybShwbGF0Zm9y
bU5hbWUsIGdfZXhwZWN0YXRpb25zQnlQbGF0Zm9ybVtwbGF0Zm9ybU5hbWVdKTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwbGF0Zm9ybS5mYWxs
YmFja1BsYXRmb3JtcykgeworICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwbGF0Zm9y
bS5mYWxsYmFja1BsYXRmb3Jtcy5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgICAgIHZhciBm
YWxsYmFja1BsYXRmb3JtID0gcGxhdGZvcm0uZmFsbGJhY2tQbGF0Zm9ybXNbal07CisgICAgICAg
ICAgICAgICAgaWYgKGZhbGxiYWNrUGxhdGZvcm0gaW4gZ19leHBlY3RhdGlvbnNCeVBsYXRmb3Jt
KQorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzRXhwZWN0YXRpb25zRm9yUGxhdGZvcm0ocGxh
dGZvcm1OYW1lLCBnX2V4cGVjdGF0aW9uc0J5UGxhdGZvcm1bZmFsbGJhY2tQbGF0Zm9ybV0pOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFwYXRoTWF0Y2hlc0FueVRl
c3QpCi0gICAgICAgICAgICBhZGRUZXN0VG9BbGxFeHBlY3RhdGlvbnMocGF0aCwgZXhwZWN0YXRp
b25zLCBtb2RpZmllcnMpOwotICAgIH0KKyAgICAgICAgaWYgKHBsYXRmb3JtTmFtZSBpbiBnX2V4
cGVjdGF0aW9uc0J5UGxhdGZvcm0pCisgICAgICAgICAgICBwcm9jZXNzRXhwZWN0YXRpb25zRm9y
UGxhdGZvcm0ocGxhdGZvcm1OYW1lLCBnX2V4cGVjdGF0aW9uc0J5UGxhdGZvcm1bcGxhdGZvcm1O
YW1lXSk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSk7CisKKyAgICBnX2V4cGVjdGF0
aW9uc0J5UGxhdGZvcm0gPSB1bmRlZmluZWQ7CisgICAgbG9nVGltZSgncHJvY2Vzc0V4cGVjdGF0
aW9uczogJywgc3RhcnQpOwogfQogCiBmdW5jdGlvbiBwcm9jZXNzTWlzc2luZ1Rlc3RzV2l0aEV4
cGVjdGF0aW9ucyhidWlsZGVyLCBwbGF0Zm9ybSwgYnVpbGRUeXBlKQpAQCAtNzc2LDggKzkzMSw4
IEBAIGZ1bmN0aW9uIHByb2Nlc3NUZXN0UnVuc0ZvckJ1aWxkZXIoYnVpbGRlck5hbWUpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICB2YXIgc3RhcnQgPSBEYXRlLm5vdygpOwogICAgIHBy
b2Nlc3NFeHBlY3RhdGlvbnMoKTsKKyAgICB2YXIgc3RhcnQgPSBEYXRlLm5vdygpOwogCiAgICAg
dmFyIGJ1aWxkSW5mbyA9IHBsYXRmb3JtQW5kQnVpbGRUeXBlKGJ1aWxkZXJOYW1lKTsKICAgICB2
YXIgcGxhdGZvcm0gPSBidWlsZEluZm8ucGxhdGZvcm07CkBAIC0xNDE3LDcgKzE1NzIsMTkgQEAg
ZnVuY3Rpb24gcmVhbE1vZGlmaWVycyhtb2RpZmllclN0cmluZykKIHsKICAgICB2YXIgbW9kaWZp
ZXJzID0gbW9kaWZpZXJTdHJpbmcuc3BsaXQoJyAnKTs7CiAgICAgcmV0dXJuIG1vZGlmaWVycy5m
aWx0ZXIoZnVuY3Rpb24obW9kaWZpZXIpIHsKLSAgICAgICAgcmV0dXJuICEobW9kaWZpZXIgaW4g
QlVJTERfVFlQRVMpICYmIFBMQVRGT1JNUy5pbmRleE9mKG1vZGlmaWVyKSA9PSAtMSAmJiAhKG1v
ZGlmaWVyIGluIFBMQVRGT1JNX1VOSU9OUykgJiYgIXN0YXJ0c1dpdGgobW9kaWZpZXIsICdCVUcn
KTsKKyAgICAgICAgaWYgKG1vZGlmaWVyIGluIEJVSUxEX1RZUEVTIHx8IHN0YXJ0c1dpdGgobW9k
aWZpZXIsICdCVUcnKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB2YXIg
bWF0Y2hlc1N1YlBsYXRmb3JtID0gZmFsc2U7CisgICAgICAgIHBsYXRmb3Jtc1RyZWVUcmF2ZXJz
YWwoZnVuY3Rpb24ocGxhdGZvcm0sIHBsYXRmb3JtTmFtZSkgeworICAgICAgICAgICAgaWYgKG1h
dGNoZXNTdWJQbGF0Zm9ybSB8fCAhcGxhdGZvcm0ucGxhdGZvcm1Nb2RpZmllclVuaW9ucykKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIG1hdGNoZXNTdWJQbGF0
Zm9ybSA9IG1vZGlmaWVyIGluIHBsYXRmb3JtLnBsYXRmb3JtTW9kaWZpZXJVbmlvbnMgfHwgbW9k
aWZpZXIgaW4gcGxhdGZvcm0uc3ViUGxhdGZvcm1zOworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9KTsKKworICAgICAgICByZXR1cm4gIW1hdGNoZXNTdWJQbGF0Zm9ybTsKICAg
ICB9KS5qb2luKCcgJyk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIv
c3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZF91bml0dGVzdHMuanMgYi9Ub29s
cy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmRf
dW5pdHRlc3RzLmpzCmluZGV4IDk2NmY0Y2RiMzhhNDliNDI3MTAzMWY3MDYwMGZlNjdjMzc1MWZh
NzMuLmVkN2MyMjQwNmMxZWVhYTRhM2E5NDM1MmYzMmUyNWM0NmJlNDE1ODQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hi
b2FyZF91bml0dGVzdHMuanMKKysrIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFz
aGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkX3VuaXR0ZXN0cy5qcwpAQCAtMzAsMTEgKzMwLDEx
IEBAIGZ1bmN0aW9uIHJlc2V0R2xvYmFscygpCiB7CiAgICAgYWxsRXhwZWN0YXRpb25zID0gbnVs
bDsKICAgICBhbGxUZXN0cyA9IG51bGw7Ci0gICAgZ19leHBlY3RhdGlvbnMgPSAnJzsKKyAgICBn
X2V4cGVjdGF0aW9uc0J5UGxhdGZvcm0gPSB7fTsKICAgICBnX3Jlc3VsdHNCeUJ1aWxkZXIgPSB7
fTsKICAgICBnX2J1aWxkZXJzID0ge307CiAgICAgZ19hbGxFeHBlY3RhdGlvbnMgPSBudWxsOwot
ICAgIGdfYWxsVGVzdHMgPSBudWxsOworICAgIGdfYWxsVGVzdHNUcmllID0gbnVsbDsKICAgICBn
X2N1cnJlbnRTdGF0ZSA9IHt9OwogICAgIGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZSA9IHt9OwogICAg
IGZvciAodmFyIGtleSBpbiBnX2RlZmF1bHRDcm9zc0Rhc2hib2FyZFN0YXRlVmFsdWVzKQpAQCAt
ODQsNyArODQsNyBAQCB0ZXN0KCdyZWxlYXNlRmFpbCcsIDIsIGZ1bmN0aW9uKCkgewogICAgIHZh
ciBleHBlY3RhdGlvbnNBcnJheSA9IFsKICAgICAgICAgeydtb2RpZmllcnMnOiAnUkVMRUFTRScs
ICdleHBlY3RhdGlvbnMnOiAnRkFJTCd9CiAgICAgXTsKLSAgICBnX2V4cGVjdGF0aW9ucyA9ICdb
IFJlbGVhc2UgXSAnICsgdGVzdCArICcgWyBGYWlsdXJlIF0nOworICAgIGdfZXhwZWN0YXRpb25z
QnlQbGF0Zm9ybVsnQ0hST01JVU0nXSA9IGdldFBhcnNlZEV4cGVjdGF0aW9ucygnWyBSZWxlYXNl
IF0gJyArIHRlc3QgKyAnIFsgRmFpbHVyZSBdJyk7CiAgICAgcnVuRXhwZWN0YXRpb25zVGVzdChi
dWlsZGVyLCB0ZXN0LCAnRkFJTCcsICdSRUxFQVNFJyk7CiB9KTsKIApAQCAtOTYsOCArOTYsOCBA
QCB0ZXN0KCdyZWxlYXNlRmFpbERlYnVnQ3Jhc2hSZWxlYXNlQnVpbGRlcicsIDIsIGZ1bmN0aW9u
KCkgewogICAgICAgICB7J21vZGlmaWVycyc6ICdSRUxFQVNFJywgJ2V4cGVjdGF0aW9ucyc6ICdG
QUlMJ30sCiAgICAgICAgIHsnbW9kaWZpZXJzJzogJ0RFQlVHJywgJ2V4cGVjdGF0aW9ucyc6ICdD
UkFTSCd9CiAgICAgXTsKLSAgICBnX2V4cGVjdGF0aW9ucyA9ICdbIFJlbGVhc2UgXSAnICsgdGVz
dCArICcgWyBGYWlsdXJlIF1cbicgKwotICAgICAgICAnWyBEZWJ1ZyBdICcgKyB0ZXN0ICsgJyBb
IENyYXNoIF0nOworICAgIGdfZXhwZWN0YXRpb25zQnlQbGF0Zm9ybVsnQ0hST01JVU0nXSA9IGdl
dFBhcnNlZEV4cGVjdGF0aW9ucygnWyBSZWxlYXNlIF0gJyArIHRlc3QgKyAnIFsgRmFpbHVyZSBd
XG4nICsKKyAgICAgICAgJ1sgRGVidWcgXSAnICsgdGVzdCArICcgWyBDcmFzaCBdJyk7CiAgICAg
cnVuRXhwZWN0YXRpb25zVGVzdChidWlsZGVyLCB0ZXN0LCAnRkFJTCcsICdSRUxFQVNFJyk7CiB9
KTsKIApAQCAtMTA5LDE3ICsxMDksMTcgQEAgdGVzdCgncmVsZWFzZUZhaWxEZWJ1Z0NyYXNoRGVi
dWdCdWlsZGVyJywgMiwgZnVuY3Rpb24oKSB7CiAgICAgICAgIHsnbW9kaWZpZXJzJzogJ1JFTEVB
U0UnLCAnZXhwZWN0YXRpb25zJzogJ0ZBSUwnfSwKICAgICAgICAgeydtb2RpZmllcnMnOiAnREVC
VUcnLCAnZXhwZWN0YXRpb25zJzogJ0NSQVNIJ30KICAgICBdOwotICAgIGdfZXhwZWN0YXRpb25z
ID0gJ1sgUmVsZWFzZSBdICcgKyB0ZXN0ICsgJyBbIEZhaWx1cmUgXVxuJyArCi0gICAgICAgICdb
IERlYnVnIF0gJyArIHRlc3QgKyAnIFsgQ3Jhc2ggXSc7CisgICAgZ19leHBlY3RhdGlvbnNCeVBs
YXRmb3JtWydDSFJPTUlVTSddID0gZ2V0UGFyc2VkRXhwZWN0YXRpb25zKCdbIFJlbGVhc2UgXSAn
ICsgdGVzdCArICcgWyBGYWlsdXJlIF1cbicgKworICAgICAgICAnWyBEZWJ1ZyBdICcgKyB0ZXN0
ICsgJyBbIENyYXNoIF0nKTsKICAgICBydW5FeHBlY3RhdGlvbnNUZXN0KGJ1aWxkZXIsIHRlc3Qs
ICdDUkFTSCcsICdERUJVRycpOwogfSk7CiAKIHRlc3QoJ292ZXJyaWRlSnVzdEJ1aWxkVHlwZScs
IDEyLCBmdW5jdGlvbigpIHsKICAgICByZXNldEdsb2JhbHMoKTsKICAgICB2YXIgdGVzdCA9ICdi
YXIvMS5odG1sJzsKLSAgICBnX2V4cGVjdGF0aW9ucyA9ICdiYXIgWyBXb250Rml4IEZhaWx1cmUg
UGFzcyBUaW1lb3V0IF1cbicgKworICAgIGdfZXhwZWN0YXRpb25zQnlQbGF0Zm9ybVsnQ0hST01J
VU0nXSA9IGdldFBhcnNlZEV4cGVjdGF0aW9ucygnYmFyIFsgV29udEZpeCBGYWlsdXJlIFBhc3Mg
VGltZW91dCBdXG4nICsKICAgICAgICAgJ1sgTWFjIF0gJyArIHRlc3QgKyAnIFsgV29udEZpeCBG
YWlsdXJlIF1cbicgKwotICAgICAgICAnWyBMaW51eCBEZWJ1ZyBdICcgKyB0ZXN0ICsgJyBbIENy
YXNoIF0nOworICAgICAgICAnWyBMaW51eCBEZWJ1ZyBdICcgKyB0ZXN0ICsgJyBbIENyYXNoIF0n
KTsKICAgICAKICAgICBydW5FeHBlY3RhdGlvbnNUZXN0KCdXZWJraXQgV2luJywgdGVzdCwgJ0ZB
SUwgUEFTUyBUSU1FT1VUJywgJ1dPTlRGSVgnKTsKICAgICBydW5FeHBlY3RhdGlvbnNUZXN0KCdX
ZWJraXQgV2luIChkYmcpKDMpJywgdGVzdCwgJ0ZBSUwgUEFTUyBUSU1FT1VUJywgJ1dPTlRGSVgn
KTsKQEAgLTEyOSw3ICsxMjksNyBAQCB0ZXN0KCdvdmVycmlkZUp1c3RCdWlsZFR5cGUnLCAxMiwg
ZnVuY3Rpb24oKSB7CiAgICAgcnVuRXhwZWN0YXRpb25zVGVzdCgnV2Via2l0IE1hYzEwLjcgKGRi
ZykoMyknLCB0ZXN0LCAnRkFJTCcsICdNQUMgV09OVEZJWCcpOwogfSk7CiAKLXRlc3QoJ3BsYXRm
b3JtQW5kQnVpbGRUeXBlJywgNzYsIGZ1bmN0aW9uKCkgewordGVzdCgncGxhdGZvcm1BbmRCdWls
ZFR5cGUnLCA3OCwgZnVuY3Rpb24oKSB7CiAgICAgdmFyIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBl
VGVzdCA9IGZ1bmN0aW9uKGJ1aWxkZXIsIGV4cGVjdGVkUGxhdGZvcm0sIGV4cGVjdGVkQnVpbGRU
eXBlKSB7CiAgICAgICAgIGdfcGVyQnVpbGRlclBsYXRmb3JtQW5kQnVpbGRUeXBlID0ge307CiAg
ICAgICAgIGJ1aWxkSW5mbyA9IHBsYXRmb3JtQW5kQnVpbGRUeXBlKGJ1aWxkZXIpOwpAQCAtMTM3
LDUxICsxMzcsNTIgQEAgdGVzdCgncGxhdGZvcm1BbmRCdWlsZFR5cGUnLCA3NiwgZnVuY3Rpb24o
KSB7CiAgICAgICAgIGVxdWFsKGJ1aWxkSW5mby5wbGF0Zm9ybSwgZXhwZWN0ZWRQbGF0Zm9ybSwg
bWVzc2FnZSk7CiAgICAgICAgIGVxdWFsKGJ1aWxkSW5mby5idWlsZFR5cGUsIGV4cGVjdGVkQnVp
bGRUeXBlLCBtZXNzYWdlKTsKICAgICB9Ci0gICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0
KCdXZWJraXQgV2luIChkZXBzKScsICdYUCcsICdSRUxFQVNFJyk7Ci0gICAgcnVuUGxhdGZvcm1B
bmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgV2luIChkZXBzKShkYmcpKDEpJywgJ1hQJywgJ0RFQlVH
Jyk7Ci0gICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgV2luIChkZXBzKShk
YmcpKDIpJywgJ1hQJywgJ0RFQlVHJyk7Ci0gICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0
KCdXZWJraXQgTGludXggKGRlcHMpJywgJ0xVQ0lEJywgJ1JFTEVBU0UnKTsKLSAgICBydW5QbGF0
Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBMaW51eCAoZGVwcykoZGJnKSgxKScsICdMVUNJ
RCcsICdERUJVRycpOwotICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IExp
bnV4IChkZXBzKShkYmcpKDIpJywgJ0xVQ0lEJywgJ0RFQlVHJyk7Ci0gICAgcnVuUGxhdGZvcm1B
bmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgTWFjMTAuNiAoZGVwcyknLCAnU05PV0xFT1BBUkQnLCAn
UkVMRUFTRScpOwotICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IE1hYzEw
LjYgKGRlcHMpKGRiZykoMSknLCAnU05PV0xFT1BBUkQnLCAnREVCVUcnKTsKLSAgICBydW5QbGF0
Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBNYWMxMC42IChkZXBzKShkYmcpKDIpJywgJ1NO
T1dMRU9QQVJEJywgJ0RFQlVHJyk7Ci0gICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdX
ZWJraXQgV2luJywgJ1hQJywgJ1JFTEVBU0UnKTsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlw
ZVRlc3QoJ1dlYmtpdCBXaW43JywgJ1dJTjcnLCAnUkVMRUFTRScpOwotICAgIHJ1blBsYXRmb3Jt
QW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IFdpbiAoZGJnKSgxKScsICdYUCcsICdERUJVRycpOwot
ICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IFdpbiAoZGJnKSgyKScsICdY
UCcsICdERUJVRycpOwotICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IExp
bnV4JywgJ0xVQ0lEJywgJ1JFTEVBU0UnKTsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRl
c3QoJ1dlYmtpdCBMaW51eCAzMicsICdMVUNJRCcsICdSRUxFQVNFJyk7Ci0gICAgcnVuUGxhdGZv
cm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgTGludXggKGRiZykoMSknLCAnTFVDSUQnLCAnREVC
VUcnKTsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBMaW51eCAoZGJn
KSgyKScsICdMVUNJRCcsICdERUJVRycpOwotICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVz
dCgnV2Via2l0IE1hYzEwLjYnLCAnU05PV0xFT1BBUkQnLCAnUkVMRUFTRScpOwotICAgIHJ1blBs
YXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IE1hYzEwLjYgKGRiZyknLCAnU05PV0xFT1BB
UkQnLCAnREVCVUcnKTsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1hQIFRlc3Rz
JywgJ1hQJywgJ1JFTEVBU0UnKTsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0lu
dGVyYWN0aXZlIFRlc3RzIChkYmcpJywgJ1hQJywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1B
bmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgV2luIChkZXBzKScsICdDSFJPTUlVTV9YUCcsICdSRUxF
QVNFJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgV2luIChkZXBz
KShkYmcpKDEpJywgJ0NIUk9NSVVNX1hQJywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRC
dWlsZFR5cGVUZXN0KCdXZWJraXQgV2luIChkZXBzKShkYmcpKDIpJywgJ0NIUk9NSVVNX1hQJywg
J0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgTGludXgg
KGRlcHMpJywgJ0NIUk9NSVVNX0xVQ0lEJywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFu
ZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBMaW51eCAoZGVwcykoZGJnKSgxKScsICdDSFJPTUlVTV9M
VUNJRCcsICdERUJVRycpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0
IExpbnV4IChkZXBzKShkYmcpKDIpJywgJ0NIUk9NSVVNX0xVQ0lEJywgJ0RFQlVHJyk7CisgICAg
cnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgTWFjMTAuNiAoZGVwcyknLCAnQ0hS
T01JVU1fU05PV0xFT1BBUkQnLCAnUkVMRUFTRScpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRU
eXBlVGVzdCgnV2Via2l0IE1hYzEwLjYgKGRlcHMpKGRiZykoMSknLCAnQ0hST01JVU1fU05PV0xF
T1BBUkQnLCAnREVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtp
dCBNYWMxMC42IChkZXBzKShkYmcpKDIpJywgJ0NIUk9NSVVNX1NOT1dMRU9QQVJEJywgJ0RFQlVH
Jyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgV2luJywgJ0NIUk9N
SVVNX1hQJywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dl
YmtpdCBXaW43JywgJ0NIUk9NSVVNX1dJTjcnLCAnUkVMRUFTRScpOworICAgIHJ1blBsYXRmb3Jt
QW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IFdpbiAoZGJnKSgxKScsICdDSFJPTUlVTV9YUCcsICdE
RUJVRycpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IFdpbiAoZGJn
KSgyKScsICdDSFJPTUlVTV9YUCcsICdERUJVRycpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRU
eXBlVGVzdCgnV2Via2l0IExpbnV4JywgJ0NIUk9NSVVNX0xVQ0lEJywgJ1JFTEVBU0UnKTsKKyAg
ICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBMaW51eCAzMicsICdDSFJPTUlV
TV9MVUNJRCcsICdSRUxFQVNFJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdX
ZWJraXQgTGludXggKGRiZykoMSknLCAnQ0hST01JVU1fTFVDSUQnLCAnREVCVUcnKTsKKyAgICBy
dW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBMaW51eCAoZGJnKSgyKScsICdDSFJP
TUlVTV9MVUNJRCcsICdERUJVRycpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgn
V2Via2l0IE1hYzEwLjYnLCAnQ0hST01JVU1fU05PV0xFT1BBUkQnLCAnUkVMRUFTRScpOworICAg
IHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IE1hYzEwLjYgKGRiZyknLCAnQ0hS
T01JVU1fU05PV0xFT1BBUkQnLCAnREVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlw
ZVRlc3QoJ1hQIFRlc3RzJywgJ0NIUk9NSVVNX1hQJywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0
Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0ludGVyYWN0aXZlIFRlc3RzIChkYmcpJywgJ0NIUk9NSVVN
X1hQJywgJ0RFQlVHJyk7CiAgICAgCiAgICAgZ19jcm9zc0Rhc2hib2FyZFN0YXRlLmdyb3VwID0g
J0BUb1QgLSB3ZWJraXQub3JnJzsKICAgICBnX2Nyb3NzRGFzaGJvYXJkU3RhdGUudGVzdFR5cGUg
PSAnbGF5b3V0LXRlc3RzJzsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0Nocm9t
aXVtIFdpbiBSZWxlYXNlIChUZXN0cyknLCAnWFAnLCAnUkVMRUFTRScpOwotICAgIHJ1blBsYXRm
b3JtQW5kQnVpbGRUeXBlVGVzdCgnQ2hyb21pdW0gTGludXggUmVsZWFzZSAoVGVzdHMpJywgJ0xV
Q0lEJywgJ1JFTEVBU0UnKTsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0Nocm9t
aXVtIE1hYyBSZWxlYXNlIChUZXN0cyknLCAnU05PV0xFT1BBUkQnLCAnUkVMRUFTRScpOworICAg
IHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnQ2hyb21pdW0gV2luIFJlbGVhc2UgKFRlc3Rz
KScsICdDSFJPTUlVTV9YUCcsICdSRUxFQVNFJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5
cGVUZXN0KCdDaHJvbWl1bSBMaW51eCBSZWxlYXNlIChUZXN0cyknLCAnQ0hST01JVU1fTFVDSUQn
LCAnUkVMRUFTRScpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnQ2hyb21pdW0g
TWFjIFJlbGVhc2UgKFRlc3RzKScsICdDSFJPTUlVTV9TTk9XTEVPUEFSRCcsICdSRUxFQVNFJyk7
CiAgICAgCiAgICAgLy8gRklYTUU6IFRoZXNlIHBsYXRmb3JtcyBzaG91bGQgbWF0Y2ggd2hhdGV2
ZXIgd2UgdXNlIGluIHRoZSBUZXN0RXhwZWN0YXRpb25zIGZvcm1hdC4KLSAgICBydW5QbGF0Zm9y
bUFuZEJ1aWxkVHlwZVRlc3QoJ0xpb24gUmVsZWFzZSAoVGVzdHMpJywgJ0FQUExFX0xJT04nLCAn
UkVMRUFTRScpOwotICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnTGlvbiBEZWJ1ZyAo
VGVzdHMpJywgJ0FQUExFX0xJT04nLCAnREVCVUcnKTsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxk
VHlwZVRlc3QoJ1Nub3dMZW9wYXJkIEludGVsIFJlbGVhc2UgKFRlc3RzKScsICdBUFBMRV9TTk9X
TEVPUEFSRCcsICdSRUxFQVNFJyk7Ci0gICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdT
bm93TGVvcGFyZCBJbnRlbCBMZWFrcycsICdBUFBMRV9TTk9XTEVPUEFSRCcsICdSRUxFQVNFJyk7
Ci0gICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdTbm93TGVvcGFyZCBJbnRlbCBEZWJ1
ZyAoVGVzdHMpJywgJ0FQUExFX1NOT1dMRU9QQVJEJywgJ0RFQlVHJyk7Ci0gICAgcnVuUGxhdGZv
cm1BbmRCdWlsZFR5cGVUZXN0KCdHVEsgTGludXggMzItYml0IFJlbGVhc2UnLCAnR1RLX0xJTlVY
JywgJ1JFTEVBU0UnKTsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0dUSyBMaW51
eCAzMi1iaXQgRGVidWcnLCAnR1RLX0xJTlVYJywgJ0RFQlVHJyk7Ci0gICAgcnVuUGxhdGZvcm1B
bmRCdWlsZFR5cGVUZXN0KCdHVEsgTGludXggNjQtYml0IERlYnVnJywgJ0dUS19MSU5VWCcsICdE
RUJVRycpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnTGlvbiBSZWxlYXNlIChU
ZXN0cyknLCAnQVBQTEVfTUFDX0xJT05fV0sxJywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9y
bUFuZEJ1aWxkVHlwZVRlc3QoJ0xpb24gRGVidWcgKFRlc3RzKScsICdBUFBMRV9NQUNfTElPTl9X
SzEnLCAnREVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1Nub3dMZW9w
YXJkIEludGVsIFJlbGVhc2UgKFRlc3RzKScsICdBUFBMRV9NQUNfU05PV0xFT1BBUkRfV0sxJywg
J1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1Nub3dMZW9wYXJk
IEludGVsIExlYWtzJywgJ0FQUExFX01BQ19TTk9XTEVPUEFSRF9XSzEnLCAnUkVMRUFTRScpOwor
ICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnU25vd0xlb3BhcmQgSW50ZWwgRGVidWcg
KFRlc3RzKScsICdBUFBMRV9NQUNfU05PV0xFT1BBUkRfV0sxJywgJ0RFQlVHJyk7CisgICAgcnVu
UGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdHVEsgTGludXggMzItYml0IFJlbGVhc2UnLCAnR1RL
X0xJTlVYX1dLMScsICdSRUxFQVNFJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0
KCdHVEsgTGludXggMzItYml0IERlYnVnJywgJ0dUS19MSU5VWF9XSzEnLCAnREVCVUcnKTsKKyAg
ICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0dUSyBMaW51eCA2NC1iaXQgRGVidWcnLCAn
R1RLX0xJTlVYX1dLMScsICdERUJVRycpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVz
dCgnR1RLIExpbnV4IDY0LWJpdCBEZWJ1ZyBXSzInLCAnR1RLX0xJTlVYX1dLMicsICdERUJVRycp
OwogICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnUXQgTGludXggUmVsZWFzZScsICdR
VF9MSU5VWCcsICdSRUxFQVNFJyk7Ci0gICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdX
aW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpJywgJ0FQUExFX1dJTjcnLCAnUkVMRUFTRScpOwotICAg
IHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2luZG93cyBYUCBEZWJ1ZyAoVGVzdHMpJywg
J0FQUExFX1hQJywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdX
aW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpJywgJ0FQUExFX1dJTl9XSU43JywgJ1JFTEVBU0UnKTsK
KyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dpbmRvd3MgWFAgRGVidWcgKFRlc3Rz
KScsICdBUFBMRV9XSU5fWFAnLCAnREVCVUcnKTsKICAgICAKICAgICAvLyBGSVhNRTogU2hvdWxk
IFdlYktpdDIgYmUgaXQncyBvd24gcGxhdGZvcm0/Ci0gICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5
cGVUZXN0KCdTbm93TGVvcGFyZCBJbnRlbCBSZWxlYXNlIChXZWJLaXQyIFRlc3RzKScsICdBUFBM
RV9TTk9XTEVPUEFSRCcsICdSRUxFQVNFJyk7Ci0gICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVU
ZXN0KCdTbm93TGVvcGFyZCBJbnRlbCBEZWJ1ZyAoV2ViS2l0MiBUZXN0cyknLCAnQVBQTEVfU05P
V0xFT1BBUkQnLCAnREVCVUcnKTsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dp
bmRvd3MgNyBSZWxlYXNlIChXZWJLaXQyIFRlc3RzKScsICdBUFBMRV9XSU43JywgJ1JFTEVBU0Un
KTsgICAgCisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdTbm93TGVvcGFyZCBJbnRl
bCBSZWxlYXNlIChXZWJLaXQyIFRlc3RzKScsICdBUFBMRV9NQUNfU05PV0xFT1BBUkRfV0syJywg
J1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1Nub3dMZW9wYXJk
IEludGVsIERlYnVnIChXZWJLaXQyIFRlc3RzKScsICdBUFBMRV9NQUNfU05PV0xFT1BBUkRfV0sy
JywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXaW5kb3dzIDcg
UmVsZWFzZSAoV2ViS2l0MiBUZXN0cyknLCAnQVBQTEVfV0lOX1dJTjcnLCAnUkVMRUFTRScpOyAg
ICAKIH0pOwogCiB0ZXN0KCdyZWFsTW9kaWZpZXJzJywgMywgZnVuY3Rpb24oKSB7CkBAIC0xOTAs
MTAgKzE5MSwxMyBAQCB0ZXN0KCdyZWFsTW9kaWZpZXJzJywgMywgZnVuY3Rpb24oKSB7CiAgICAg
ZXF1YWwocmVhbE1vZGlmaWVycygnQlVHKEZvbyknKSwgJycpOwogfSk7CiAKLXRlc3QoJ2FsbFRl
c3RzV2l0aFNhbWVQbGF0Zm9ybUFuZEJ1aWxkVHlwZScsIDE0LCBmdW5jdGlvbigpIHsKK3Rlc3Qo
J2FsbFRlc3RzV2l0aFNhbWVQbGF0Zm9ybUFuZEJ1aWxkVHlwZScsIDEsIGZ1bmN0aW9uKCkgewog
ICAgIC8vIEZJWE1FOiB0ZXN0IHRoYXQgYWxsVGVzdHNXaXRoU2FtZVBsYXRmb3JtQW5kQnVpbGRU
eXBlIGFjdHVhbGx5IHJldHVybnMgdGhlIHJpZ2h0IHNldCBvZiB0ZXN0cy4KLSAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IFBMQVRGT1JNUy5sZW5ndGg7IGkrKykKLSAgICAgICAgb2soZ19hbGxUZXN0
c0J5UGxhdGZvcm1BbmRCdWlsZFR5cGVbUExBVEZPUk1TW2ldXSk7CisgICAgdmFyIGV4cGVjdGVk
UGxhdGZvcm1zTGlzdCA9IFsnQ0hST01JVU1fTElPTicsICdDSFJPTUlVTV9TTk9XTEVPUEFSRCcs
ICdDSFJPTUlVTV9YUCcsICdDSFJPTUlVTV9WSVNUQScsICdDSFJPTUlVTV9XSU43JywgJ0NIUk9N
SVVNX0xVQ0lEJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDSFJPTUlVTV9B
TkRST0lEJywgJ0FQUExFX01BQ19MSU9OX1dLMScsICdBUFBMRV9NQUNfTElPTl9XSzInLCAnQVBQ
TEVfTUFDX1NOT1dMRU9QQVJEX1dLMScsICdBUFBMRV9NQUNfU05PV0xFT1BBUkRfV0syJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBUFBMRV9XSU5fWFAnLCAnQVBQTEVfV0lO
X1dJTjcnLCAgJ0dUS19MSU5VWF9XSzEnLCAnR1RLX0xJTlVYX1dLMicsICdRVF9MSU5VWCcsICdF
RkxfTElOVVhfV0sxJywgJ0VGTF9MSU5VWF9XSzInXTsKKyAgICB2YXIgYWN0dWFsUGxhdGZvcm1z
TGlzdCA9IE9iamVjdC5rZXlzKGdfYWxsVGVzdHNCeVBsYXRmb3JtQW5kQnVpbGRUeXBlKTsKKyAg
ICBkZWVwRXF1YWwoZXhwZWN0ZWRQbGF0Zm9ybXNMaXN0LCBhY3R1YWxQbGF0Zm9ybXNMaXN0KTsK
IH0pOwogCiB0ZXN0KCdmaWx0ZXJCdWdzJyw0LCBmdW5jdGlvbigpIHsKQEAgLTIwNiw2MyArMjEw
LDc3IEBAIHRlc3QoJ2ZpbHRlckJ1Z3MnLDQsIGZ1bmN0aW9uKCkgewogICAgIGVxdWFsKGZpbHRl
cmVkLmJ1Z3MsICcnKTsKIH0pOwogCi10ZXN0KCdnZXRFeHBlY3RhdGlvbnMnLCAxMSwgZnVuY3Rp
b24oKSB7Cit0ZXN0KCdnZXRFeHBlY3RhdGlvbnMnLCAxNCwgZnVuY3Rpb24oKSB7CiAgICAgcmVz
ZXRHbG9iYWxzKCk7CiAgICAgZ19idWlsZGVyc1snV2ViS2l0IFdpbiddID0gdHJ1ZTsKICAgICBn
X3Jlc3VsdHNCeUJ1aWxkZXIgPSB7CiAgICAgICAgICdXZWJLaXQgV2luJzogewogICAgICAgICAg
ICAgJ3Rlc3RzJzogewogICAgICAgICAgICAgICAgICdmb28vdGVzdDEuaHRtbCc6IHsncmVzdWx0
cyc6IFtbMTAwLCAnRiddXSwgJ3RpbWVzJzogW1sxMDAsIDBdXX0sCisgICAgICAgICAgICAgICAg
J2Zvby90ZXN0Mi5odG1sJzogeydyZXN1bHRzJzogW1sxMDAsICdGJ11dLCAndGltZXMnOiBbWzEw
MCwgMF1dfSwKICAgICAgICAgICAgICAgICAnZm9vL3Rlc3QzLmh0bWwnOiB7J3Jlc3VsdHMnOiBb
WzEwMCwgJ0YnXV0sICd0aW1lcyc6IFtbMTAwLCAwXV19LAogICAgICAgICAgICAgICAgICd0ZXN0
MS5odG1sJzogeydyZXN1bHRzJzogW1sxMDAsICdGJ11dLCAndGltZXMnOiBbWzEwMCwgMF1dfQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgZ19leHBlY3RhdGlvbnMgPSAn
QnVnKDEyMykgZm9vIFsgRmFpbHVyZSBQYXNzIENyYXNoIF1cbicgKworICAgIGdfZXhwZWN0YXRp
b25zQnlQbGF0Zm9ybVsnQ0hST01JVU0nXSA9IGdldFBhcnNlZEV4cGVjdGF0aW9ucygnQnVnKDEy
MykgZm9vIFsgRmFpbHVyZSBQYXNzIENyYXNoIF1cbicgKwogICAgICAgICAnQnVnKEZvbykgWyBS
ZWxlYXNlIF0gZm9vL3Rlc3QxLmh0bWwgWyBGYWlsdXJlIF1cbicgKwogICAgICAgICAnWyBEZWJ1
ZyBdIGZvby90ZXN0MS5odG1sIFsgQ3Jhc2ggXVxuJyArCiAgICAgICAgICdCdWcoNDU2KSBmb28v
dGVzdDIuaHRtbCBbIEZhaWx1cmUgXVxuJyArCiAgICAgICAgICdbIExpbnV4IERlYnVnIF0gZm9v
L3Rlc3QyLmh0bWwgWyBDcmFzaCBdXG4nICsKICAgICAgICAgJ1sgUmVsZWFzZSBdIHRlc3QxLmh0
bWwgWyBGYWlsdXJlIF1cbicgKwotICAgICAgICAnWyBEZWJ1ZyBdIHRlc3QxLmh0bWwgWyBDcmFz
aCBdXG4nICsKLSAgICAgICAgJ1sgV2luNyBdIGh0dHAvdGVzdHMvYXBwY2FjaGUvaW50ZXJydXB0
ZWQtdXBkYXRlLmh0bWwgWyBUaW1lb3V0IF1cbicgKwotICAgICAgICAnWyBNYWMgTGludXggWFAg
XSBodHRwL3Rlc3RzL2FwcGNhY2hlL2ludGVycnVwdGVkLXVwZGF0ZS5odG1sIFsgRmFpbHVyZSBd
XG4nOworICAgICAgICAnWyBEZWJ1ZyBdIHRlc3QxLmh0bWwgWyBDcmFzaCBdXG4nKTsKKworICAg
IGdfZXhwZWN0YXRpb25zQnlQbGF0Zm9ybVsnR1RLJ10gPSBnZXRQYXJzZWRFeHBlY3RhdGlvbnMo
J0J1Zyg0MikgZm9vL3Rlc3QyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF1cbicgKworICAgICAg
ICAnWyBEZWJ1ZyBdIHRlc3QxLmh0bWwgWyBDcmFzaCBdXG4nKTsKKyAgICBnX2V4cGVjdGF0aW9u
c0J5UGxhdGZvcm1bJ0dUS19MSU5VWF9XSzEnXSA9IGdldFBhcnNlZEV4cGVjdGF0aW9ucygnWyBS
ZWxlYXNlIF0gZm9vL3Rlc3QxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF1cbicgKworICAgICAg
ICAnQnVnKDc4OSkgZm9vL3Rlc3QyLmh0bWwgWyBDcmFzaCBdXG4nKTsKKyAgICBnX2V4cGVjdGF0
aW9uc0J5UGxhdGZvcm1bJ0dUS19MSU5VWF9XSzInXSA9IGdldFBhcnNlZEV4cGVjdGF0aW9ucygn
QnVnKDk4NykgZm9vL3Rlc3QyLmh0bWwgWyBGYWlsdXJlIF1cbicpOwogCiAgICAgcHJvY2Vzc0V4
cGVjdGF0aW9ucygpOwogICAgIAotICAgIHZhciBleHBlY3RhdGlvbnMgPSBnZXRFeHBlY3RhdGlv
bnMoJ2Zvby90ZXN0MS5odG1sJywgJ1hQJywgJ0RFQlVHJyk7CisgICAgdmFyIGV4cGVjdGF0aW9u
cyA9IGdldEV4cGVjdGF0aW9ucygnZm9vL3Rlc3QxLmh0bWwnLCAnQ0hST01JVU1fWFAnLCAnREVC
VUcnKTsKICAgICBlcXVhbChKU09OLnN0cmluZ2lmeShleHBlY3RhdGlvbnMpLCAneyJtb2RpZmll
cnMiOiJERUJVRyIsImV4cGVjdGF0aW9ucyI6IkNSQVNIIn0nKTsKIAotICAgIHZhciBleHBlY3Rh
dGlvbnMgPSBnZXRFeHBlY3RhdGlvbnMoJ2Zvby90ZXN0MS5odG1sJywgJ0xVQ0lEJywgJ1JFTEVB
U0UnKTsKKyAgICB2YXIgZXhwZWN0YXRpb25zID0gZ2V0RXhwZWN0YXRpb25zKCdmb28vdGVzdDEu
aHRtbCcsICdDSFJPTUlVTV9MVUNJRCcsICdSRUxFQVNFJyk7CiAgICAgZXF1YWwoSlNPTi5zdHJp
bmdpZnkoZXhwZWN0YXRpb25zKSwgJ3sibW9kaWZpZXJzIjoiQnVnKEZvbykgUkVMRUFTRSIsImV4
cGVjdGF0aW9ucyI6IkZBSUwifScpOwogCi0gICAgdmFyIGV4cGVjdGF0aW9ucyA9IGdldEV4cGVj
dGF0aW9ucygnZm9vL3Rlc3QyLmh0bWwnLCAnTFVDSUQnLCAnUkVMRUFTRScpOworICAgIHZhciBl
eHBlY3RhdGlvbnMgPSBnZXRFeHBlY3RhdGlvbnMoJ2Zvby90ZXN0Mi5odG1sJywgJ0NIUk9NSVVN
X0xVQ0lEJywgJ1JFTEVBU0UnKTsKICAgICBlcXVhbChKU09OLnN0cmluZ2lmeShleHBlY3RhdGlv
bnMpLCAneyJtb2RpZmllcnMiOiJCdWcoNDU2KSIsImV4cGVjdGF0aW9ucyI6IkZBSUwifScpOwog
Ci0gICAgdmFyIGV4cGVjdGF0aW9ucyA9IGdldEV4cGVjdGF0aW9ucygnZm9vL3Rlc3QyLmh0bWwn
LCAnTElPTicsICdERUJVRycpOworICAgIHZhciBleHBlY3RhdGlvbnMgPSBnZXRFeHBlY3RhdGlv
bnMoJ2Zvby90ZXN0Mi5odG1sJywgJ0NIUk9NSVVNX0xJT04nLCAnREVCVUcnKTsKICAgICBlcXVh
bChKU09OLnN0cmluZ2lmeShleHBlY3RhdGlvbnMpLCAneyJtb2RpZmllcnMiOiJCdWcoNDU2KSIs
ImV4cGVjdGF0aW9ucyI6IkZBSUwifScpOwogCi0gICAgdmFyIGV4cGVjdGF0aW9ucyA9IGdldEV4
cGVjdGF0aW9ucygnZm9vL3Rlc3QyLmh0bWwnLCAnTFVDSUQnLCAnREVCVUcnKTsKKyAgICB2YXIg
ZXhwZWN0YXRpb25zID0gZ2V0RXhwZWN0YXRpb25zKCdmb28vdGVzdDIuaHRtbCcsICdDSFJPTUlV
TV9MVUNJRCcsICdERUJVRycpOwogICAgIGVxdWFsKEpTT04uc3RyaW5naWZ5KGV4cGVjdGF0aW9u
cyksICd7Im1vZGlmaWVycyI6IkxJTlVYIERFQlVHIiwiZXhwZWN0YXRpb25zIjoiQ1JBU0gifScp
OwogCi0gICAgdmFyIGV4cGVjdGF0aW9ucyA9IGdldEV4cGVjdGF0aW9ucygnZm9vL3Rlc3QzLmh0
bWwnLCAnTFVDSUQnLCAnREVCVUcnKTsKKyAgICB2YXIgZXhwZWN0YXRpb25zID0gZ2V0RXhwZWN0
YXRpb25zKCdmb28vdGVzdDMuaHRtbCcsICdDSFJPTUlVTV9MVUNJRCcsICdERUJVRycpOwogICAg
IGVxdWFsKEpTT04uc3RyaW5naWZ5KGV4cGVjdGF0aW9ucyksICd7Im1vZGlmaWVycyI6IkJ1Zygx
MjMpIiwiZXhwZWN0YXRpb25zIjoiRkFJTCBQQVNTIENSQVNIIn0nKTsKIAotICAgIHZhciBleHBl
Y3RhdGlvbnMgPSBnZXRFeHBlY3RhdGlvbnMoJ3Rlc3QxLmh0bWwnLCAnWFAnLCAnREVCVUcnKTsK
KyAgICB2YXIgZXhwZWN0YXRpb25zID0gZ2V0RXhwZWN0YXRpb25zKCd0ZXN0MS5odG1sJywgJ0NI
Uk9NSVVNX1hQJywgJ0RFQlVHJyk7CiAgICAgZXF1YWwoSlNPTi5zdHJpbmdpZnkoZXhwZWN0YXRp
b25zKSwgJ3sibW9kaWZpZXJzIjoiREVCVUciLCJleHBlY3RhdGlvbnMiOiJDUkFTSCJ9Jyk7CiAK
LSAgICB2YXIgZXhwZWN0YXRpb25zID0gZ2V0RXhwZWN0YXRpb25zKCd0ZXN0MS5odG1sJywgJ0xV
Q0lEJywgJ1JFTEVBU0UnKTsKKyAgICB2YXIgZXhwZWN0YXRpb25zID0gZ2V0RXhwZWN0YXRpb25z
KCd0ZXN0MS5odG1sJywgJ0NIUk9NSVVNX0xVQ0lEJywgJ1JFTEVBU0UnKTsKICAgICBlcXVhbChK
U09OLnN0cmluZ2lmeShleHBlY3RhdGlvbnMpLCAneyJtb2RpZmllcnMiOiJSRUxFQVNFIiwiZXhw
ZWN0YXRpb25zIjoiRkFJTCJ9Jyk7CiAKLSAgICB2YXIgZXhwZWN0YXRpb25zID0gZ2V0RXhwZWN0
YXRpb25zKCdodHRwL3Rlc3RzL2FwcGNhY2hlL2ludGVycnVwdGVkLXVwZGF0ZS5odG1sJywgJ1dJ
TjcnLCAnUkVMRUFTRScpOwotICAgIGVxdWFsKEpTT04uc3RyaW5naWZ5KGV4cGVjdGF0aW9ucyks
ICd7Im1vZGlmaWVycyI6IldJTjciLCJleHBlY3RhdGlvbnMiOiJUSU1FT1VUIn0nKTsKKyAgICB2
YXIgZXhwZWN0YXRpb25zID0gZ2V0RXhwZWN0YXRpb25zKCdmb28vdGVzdDEuaHRtbCcsICdHVEtf
TElOVVhfV0sxJywgJ1JFTEVBU0UnKTsKKyAgICBlcXVhbChKU09OLnN0cmluZ2lmeShleHBlY3Rh
dGlvbnMpLCAneyJtb2RpZmllcnMiOiJSRUxFQVNFIiwiZXhwZWN0YXRpb25zIjoiSU1BR0UifScp
OworCisgICAgdmFyIGV4cGVjdGF0aW9ucyA9IGdldEV4cGVjdGF0aW9ucygnZm9vL3Rlc3QyLmh0
bWwnLCAnR1RLX0xJTlVYX1dLMScsICdERUJVRycpOworICAgIGVxdWFsKEpTT04uc3RyaW5naWZ5
KGV4cGVjdGF0aW9ucyksICd7Im1vZGlmaWVycyI6IkJ1Zyg3ODkpIiwiZXhwZWN0YXRpb25zIjoi
Q1JBU0gifScpOworCisgICAgdmFyIGV4cGVjdGF0aW9ucyA9IGdldEV4cGVjdGF0aW9ucygndGVz
dDEuaHRtbCcsICdHVEtfTElOVVhfV0sxJywgJ0RFQlVHJyk7CisgICAgZXF1YWwoSlNPTi5zdHJp
bmdpZnkoZXhwZWN0YXRpb25zKSwgJ3sibW9kaWZpZXJzIjoiREVCVUciLCJleHBlY3RhdGlvbnMi
OiJDUkFTSCJ9Jyk7CisKKyAgICB2YXIgZXhwZWN0YXRpb25zID0gZ2V0RXhwZWN0YXRpb25zKCdm
b28vdGVzdDIuaHRtbCcsICdHVEtfTElOVVhfV0syJywgJ0RFQlVHJyk7CisgICAgZXF1YWwoSlNP
Ti5zdHJpbmdpZnkoZXhwZWN0YXRpb25zKSwgJ3sibW9kaWZpZXJzIjoiQnVnKDk4NykiLCJleHBl
Y3RhdGlvbnMiOiJGQUlMIn0nKTsKIAotICAgIHZhciBleHBlY3RhdGlvbnMgPSBnZXRFeHBlY3Rh
dGlvbnMoJ2h0dHAvdGVzdHMvYXBwY2FjaGUvaW50ZXJydXB0ZWQtdXBkYXRlLmh0bWwnLCAnTElP
TicsICdSRUxFQVNFJyk7Ci0gICAgZXF1YWwoSlNPTi5zdHJpbmdpZnkoZXhwZWN0YXRpb25zKSwg
J3sibW9kaWZpZXJzIjoiTUFDIExJTlVYIFhQIiwiZXhwZWN0YXRpb25zIjoiRkFJTCJ9Jyk7Cisg
ICAgdmFyIGV4cGVjdGF0aW9ucyA9IGdldEV4cGVjdGF0aW9ucygnZm9vL3Rlc3QyLmh0bWwnLCAn
R1RLX0xJTlVYX1dLMicsICdSRUxFQVNFJyk7CisgICAgZXF1YWwoSlNPTi5zdHJpbmdpZnkoZXhw
ZWN0YXRpb25zKSwgJ3sibW9kaWZpZXJzIjoiQnVnKDk4NykiLCJleHBlY3RhdGlvbnMiOiJGQUlM
In0nKTsKIAotICAgIHZhciBleHBlY3RhdGlvbnMgPSBnZXRFeHBlY3RhdGlvbnMoJ2h0dHAvdGVz
dHMvYXBwY2FjaGUvaW50ZXJydXB0ZWQtdXBkYXRlLmh0bWwnLCAnTFVDSUQnLCAnUkVMRUFTRScp
OwotICAgIGVxdWFsKEpTT04uc3RyaW5naWZ5KGV4cGVjdGF0aW9ucyksICd7Im1vZGlmaWVycyI6
Ik1BQyBMSU5VWCBYUCIsImV4cGVjdGF0aW9ucyI6IkZBSUwifScpOworICAgIHZhciBleHBlY3Rh
dGlvbnMgPSBnZXRFeHBlY3RhdGlvbnMoJ3Rlc3QxLmh0bWwnLCAnR1RLX0xJTlVYX1dLMicsICdE
RUJVRycpOworICAgIGVxdWFsKEpTT04uc3RyaW5naWZ5KGV4cGVjdGF0aW9ucyksICd7Im1vZGlm
aWVycyI6IkRFQlVHIiwiZXhwZWN0YXRpb25zIjoiQ1JBU0gifScpOwogfSk7CiAKIHRlc3QoJ3N1
YnN0cmluZ0xpc3QnLCAyLCBmdW5jdGlvbigpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168189</attachid>
            <date>2012-10-11 04:08:34 -0700</date>
            <delta_ts>2012-10-12 05:33:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98422-20121011040731.patch</filename>
            <type>text/plain</type>
            <size>44580</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMDI4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTE0ZGI0ZDQ0ZTU4NDdjNzgyYzYyYThlOTc4ODU1ODI0
Nzk0Y2I4ZC4uMzBjNzg2ZjcxZWYzZTlhYjU5MmYxNTA3MTY4MWM2MWNkNDBhNTg3NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYy
IEBACisyMDEyLTEwLTExICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisK
KyAgICAgICAgW1Rlc3RSZXN1bHRTZXJ2ZXJdIEFkZCBzdXBwb3J0IGZvciBub24tQ2hyb21pdW0g
VGVzdEV4cGVjdGF0aW9ucyBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTg0MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBMb2FkcyBUZXN0RXhwZWN0YXRpb25zIGZpbGVzIGZvciBzZXZlcmFsIG90
aGVyIG5vbi1DaHJvbWl1bSBwb3J0cywgcGFyc2VzIHRoZW0gYW5kCisgICAgICAgIHByb3Blcmx5
IGRpc3RyaWJ1dGVzIHRoZW0gcGVyIHZhcmlvdXMgcGxhdGZvcm1zLgorCisgICAgICAgICogVGVz
dFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNoYm9hcmRfYmFzZS5qczogZ19leHBl
Y3RhdGlvbnMgaXMgcmVwbGFjZWQgYnkKKyAgICAgICAgZ19leHBlY3RhdGlvbnNCeVBsYXRmb3Jt
LCBhbiBvYmplY3QgdGhhdCBob2xkcyByYXcgVGVzdEV4cGVjdGF0aW9ucyBmaWxlIGNvbnRlbnRz
IGZvcgorICAgICAgICB2YXJpb3VzIHBsYXRmb3Jtcy4KKyAgICAgICAgKHJlcXVlc3RFeHBlY3Rh
dGlvbnNGaWxlcyk6IEZpcnN0IHRyYXZlcnNlcyB0aHJvdWdoIHRoZSBwbGF0Zm9ybXMgdHJlZSB0
byBnYXRoZXIgYWxsCisgICAgICAgIHRoZSBUZXN0RXhwZWN0YXRpb25zIGZpbGVzIHRoYXQgc2hv
dWxkIGJlIGxvYWRlZCwgdGhlbiBsb2FkcyB0aGVtIGluIHBhcmFsbGVsLgorICAgICAgICAoYXBw
ZW5kSlNPTlNjcmlwdEVsZW1lbnRzKToKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0YXRp
Yy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuanM6IFRoZSBwbGF0Zm9ybXMgdHJlZSBp
cyByZW9yZ2FuaXplZAorICAgICAgICB0byBkZXNjcmliZSBlYWNoIHBsYXRmb3JtIGFuZCBwb3Nz
aWJsZSBzdWJwbGF0Zm9ybXMgcGxhaW5seSB5ZXQgaW4gZGV0YWlsLiBUaGUgUExBVEZPUk1fRkFM
TEJBQ0tTCisgICAgICAgIG9iamVjdCBpcyByZW1vdmVkIGFzIGl0J3Mgbm90IHVzZWQgYW55d2hl
cmUuIGdfYWxsVGVzdHNCeVBsYXRmb3JtQW5kQnVpbGRUeXBlIGlzIG5vdyBmaWxsZWQgYnkKKyAg
ICAgICAgdHJhdmVyc2luZyB0aGUgcGxhdGZvcm1zIHRyZWUuCisgICAgICAgICh0cmF2ZXJzZVBs
YXRmb3Jtc1RyZWUudHJhdmVyc2UpOgorICAgICAgICAoZGV0ZXJtaW5lV0tQbGF0Zm9ybSk6IEEg
aGVscGVyIGZ1bmN0aW9uIHRoYXQgdHJhdmVyc2VzIHRoZSBwbGF0Zm9ybXMgdHJlZSwgaW52b2tp
bmcKKyAgICAgICAgY2FsbGJhY2sgb24gZWFjaCBub2RlLiBUaGUgY2FsbGJhY2sgc2hvdWxkIHJl
dHVybiB0cnVlIGlmIHRoZSB0cmF2ZXJzYWwgc2hvdWxkIGNvbnRpbnVlIGludG8KKyAgICAgICAg
cGxhdGZvcm0ncyBzdWJwbGF0Zm9ybXMuCisgICAgICAgIChkZXRlcm1pbmVXS1BsYXRmb3JtKTog
QSBoZWxwZXIgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGJ1aWxkZXIgaXMgcnVu
bmluZyBXZWJLaXQxIG9yCisgICAgICAgIFdlYktpdDIgbGF5ZXIgb2YgYSBnaXZlbiBwbGF0Zm9y
bS4KKyAgICAgICAgKGNocm9taXVtUGxhdGZvcm0pOiBDaHJvbWl1bS1zcGVjaWZpYyBwbGF0Zm9y
bXMgYXJlIG5vdyBwcm9wZXJseSBwcmVmaXhlZCB3aXRoICdDSFJPTUlVTV8nLgorICAgICAgICAo
VGVzdFRyaWUpOiBBIG5ldyBjbGFzcyB0aGF0IGhvbGRzIGFsbCB0aGUgdGVzdHMgaW4gYSB0cmll
LiBUaGUgdHJpZSBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSB0ZXN0cyBpbiBlYWNoIGJ1aWxkZXIu
CisgICAgICAgIChUZXN0VHJpZS5wcm90b3R5cGUuZm9yRWFjaC50cmF2ZXJzZSk6CisgICAgICAg
IChUZXN0VHJpZS5wcm90b3R5cGUuZm9yRWFjaCk6IEEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgdHJh
dmVyc2VzIHRoZSB0ZXN0cyB0cmllLCBpbnZva2luZyBjYWxsYmFjayBvbiBlYWNoIGxlYWYuCisg
ICAgICAgIChUZXN0VHJpZS5wcm90b3R5cGUuX2FkZFRlc3QpOiBBbGlnbnMgdGhlIHRlc3QgaW50
byB0aGUgc3BlY2lmaWVkIHRyaWUgYmFzZWQgb24gdGhlIHRlc3QncyBwYXRoLgorICAgICAgICAo
VGVzdFRyaWUucHJvdG90eXBlLl9hZGRUZXN0c0ZvckJ1aWxkZXIpOiBJdGVyYXRlcyB0aHJvdWdo
IGJ1aWxkZXIncyB0ZXN0cyBhbmQgYWRkcyB0aGVtIHRvIHRoZSB0cmllLgorICAgICAgICAoZ2V0
QWxsVGVzdHNUcmllKTogSW5zdGVhZCBvZiBpbiBsaXN0LCB0aGUgcHJvYmxlbWF0aWMgdGVzdHMg
ZnJvbSBlYWNoIGJ1aWxkZXIgYXJlIG5vdyBzdG9yZWQgaW4gYSB0cmllLgorICAgICAgICBUaGlz
IGJyaW5ncyBiZXR0ZXIgcGVyZm9ybWFuY2Ugd2hlbiBhcHBseWluZyBleHBlY3RhdGlvbnMgdG8g
YWN0dWFsIHRlc3RzLgorICAgICAgICAoaW5kaXZpZHVhbFRlc3RzRm9yU3Vic3RyaW5nTGlzdCk6
IE1vZGlmaWVkIHRvIHRyYXZlcnNlIHRoZSB0cmllIGluc3RlYWQgb2YgaXRlcmF0aW5nIHRoZSBs
aXN0LgorICAgICAgICAoYWxsVGVzdHNXaXRoUmVzdWx0KTogRGl0dG8uCisgICAgICAgIChwbGF0
Zm9ybU9iamVjdEZvck5hbWUpOiBTcGxpdHMgdGhlIHBsYXRmb3JtIG5hbWUgYnkgdW5kZXJzY29y
ZXMgYW5kIGZpbmRzIHRoZSBhcHByb3ByaWF0ZSBwbGF0Zm9ybSBvYmplY3QuCisgICAgICAgIChh
ZGRUZXN0VG9BbGxFeHBlY3RhdGlvbnNGb3JQbGF0Zm9ybSk6IFRoaXMgZnVuY3Rpb24gaXMgaW50
ZW5kZWQgdG8gYmUgY2FsbGVkIG9ubHkgb24gbGVhZiBub2RlcyBvZiB0aGUKKyAgICAgICAgcGxh
dGZvcm1zIHRyZWUgc28gdGhlIG1haW4gbG9naWMgaXMgYWRqdXN0ZWQgdG8gdGhhdC4gVGhlIG9u
bHkgZXhjZXB0aW9uIGlzIHRoZSBDaHJvbWl1bSBwbGF0Zm9ybSB3aGljaAorICAgICAgICBoYXMg
cGxhdGZvcm0gbW9kaWZpZXIgdW5pb25zLiBLZXlzIG9mIHRoZSBsYXR0ZXIgY2FuIGJlIHByZXNl
bnQgYXMgbW9kaWZpZXJzIGFuZCB0aGUgcGxhdGZvcm0gb2JqZWN0IGlzIHRoZQorICAgICAgICBv
bmx5IG9uZSB0aGF0IGhhcyB0aGUgc3ViUGxhdGZvcm1zIG1lbWJlciAoaS5lLiBpcyBub3QgYSBs
ZWFmIG5vZGUgb2YgdGhlIHBsYXRmb3JtcyB0cmVlKS4KKyAgICAgICAgKGdldFBhcnNlZEV4cGVj
dGF0aW9ucyk6IE5vdyBvcGVyYXRlcyBvbiB0aGUgcGFzc2VkLWluIHBhcmFtZXRlciByYXRoZXIg
dGhhbiBvbiBhIGdsb2JhbCB2YXJpYWJsZS4KKyAgICAgICAgKHByb2Nlc3NFeHBlY3RhdGlvbnNG
b3JQbGF0Zm9ybSk6IFRyYXZlcnNlcyB0aGUgdGVzdHMgdHJpZSwgcGFzc2luZyB0aHJvdWdoIHRo
ZSBzdGFydGluZyBwb2ludCBmb3IgdGhlIHRyaWUKKyAgICAgICAgdGhhdCdzIGJhc2VkIG9uIHRo
ZSBleHBlY3RhdGlvbidzIHBhdGguIEluIGNvbnRyYXN0IHRvIHByZXZpb3VzIGJlaGF2aW9yIHRo
ZSBleHBlY3RhdGlvbiBpcyBubyBsb25nZXIgYWRkZWQKKyAgICAgICAgZm9yIGEgbm9uLXByZXNl
bnQgdGVzdC4KKyAgICAgICAgKHByb2Nlc3NFeHBlY3RhdGlvbnMpOiBQcm9jZXNzZXMgYWxsIGFj
cXVpcmVkIGV4cGVjdGF0aW9ucyBieSB0cmF2ZXJzaW5nIHRoZSBwbGF0Zm9ybXMgdHJlZSBhbmQg
dGFraW5nIGludG8KKyAgICAgICAgYWNjb3VudCBwb3NzaWJsZSBmYWxsYmFjayBwbGF0Zm9ybXMu
IENocm9taXVtIGlzIG9uY2UgYWdhaW4gYW4gZXhjZXB0aW9uLCBhZGRpbmcgdGVzdCBleHBlY3Rh
dGlvbnMgdGhyb3VnaAorICAgICAgICB0aGUgYmFzZSAnQ0hST01JVU0nIHBsYXRmb3JtIGluc3Rl
YWQgb2YgaXRzIHN1YnBsYXRmb3JtcyAtIHRoaXMgYWxsb3dzIGZvciB0aGUgcGxhdGZvcm0gbW9k
aWZpZXIgdW5pb25zIHRvIGJlCisgICAgICAgIHRha2VuIGludG8gYWNjb3VudC4KKyAgICAgICAg
KHByb2Nlc3NUZXN0UnVuc0ZvckJ1aWxkZXIpOgorICAgICAgICAocmVhbE1vZGlmaWVycy5yZXR1
cm4ubW9kaWZpZXJzLmZpbHRlcik6CisgICAgICAgIChyZWFsTW9kaWZpZXJzKTogTW9kaWZpZXJz
IG90aGVyIHRoYW4gYnVpbGQgY29uZmlndXJhdGlvbnMgYW5kIGJ1ZyBoYW5kbGVzIGFyZSBub3cg
ZmlsdGVyZWQgb3V0IG9ubHkgaWYgdGhleQorICAgICAgICBhcmUgcHJlc2VudCBpbiB0aGUgcGxh
dGZvcm0ncyBwbGF0Zm9ybSBtb2RpZmllciB1bmlvbnMgb3IgcmVwcmVzZW50IHN1YnBsYXRmb3Jt
cyBvZiBhIHBsYXRmb3JtIHRoYXQgc3VwcG9ydHMKKyAgICAgICAgcGxhdGZvcm0gbW9kaWZpZXIg
dW5pb25zLgorICAgICAgICAqIFRlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxh
a2luZXNzX2Rhc2hib2FyZF91bml0dGVzdHMuanM6IFRoZSB0ZXN0IGNhc2VzIGFyZSB1cGRhdGVk
IGFuZCBleHBhbmRlZAorICAgICAgICB3aGVyZSBuZWNlc3NhcnkgdG8gY292ZXIgdGhlIGNoYW5n
ZXMuCisgICAgICAgIChyZXNldEdsb2JhbHMpOgorICAgICAgICAodGVzdCk6CisKIDIwMTItMTAt
MTAgIEx1Y2FzIEZvcnNjaGxlciAgPGxmb3JzY2hsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bW92ZSBBcHBsZSBNYWMgU25vdyBMZW9wYXJkIGJvdHMuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2Rhc2hib2FyZF9iYXNlLmpzIGIvVG9vbHMv
VGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNoYm9hcmRfYmFzZS5qcwppbmRl
eCAzMWFkZmFiYTM3NzJhY2MwNWVlMjFhYmIwMzkyN2MzMDI5OGUyOTk1Li4zNmFkMzc0MTkyNGQw
OTRiZjhjZWY2Nzg3N2NlMzRiZTJkODQyYWRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0
U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2Rhc2hib2FyZF9iYXNlLmpzCisrKyBiL1Rvb2xzL1Rl
c3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZGFzaGJvYXJkX2Jhc2UuanMKQEAgLTQ5
NCw3ICs0OTQsNyBAQCBmdW5jdGlvbiBpbml0QnVpbGRlcnMoKQogfQogCiB2YXIgZ19yZXN1bHRz
QnlCdWlsZGVyID0ge307Ci12YXIgZ19leHBlY3RhdGlvbnM7Cit2YXIgZ19leHBlY3RhdGlvbnNC
eVBsYXRmb3JtID0ge307CiB2YXIgZ19zdGFsZUJ1aWxkZXJzID0gW107CiB2YXIgZ19idWlsZGVy
c1RoYXRGYWlsZWRUb0xvYWQgPSBbXTsKIApAQCAtNTUxLDI2ICs1NTEsMjkgQEAgZnVuY3Rpb24g
cGF0aFRvQnVpbGRlclJlc3VsdHNGaWxlKGJ1aWxkZXJOYW1lKQogICAgICAgICAgICAgJyZ0ZXN0
dHlwZT0nICsgZ19jcm9zc0Rhc2hib2FyZFN0YXRlLnRlc3RUeXBlICsgJyZuYW1lPSc7CiB9CiAK
LS8vIEZJWE1FOiBNYWtlIHRoZSBkYXNoYm9hcmQgdW5kZXJzdGFuZCBkaWZmZXJlbnQgcG9ydHMn
IGV4cGVjdGF0aW9ucyBmaWxlcy4KLXZhciBDSFJPTUlVTV9FWFBFQ1RBVElPTlNfVVJMID0gJ2h0
dHA6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVuay9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zJzsKLXZhciBMRUdBQ1lfQ0hST01JVU1f
RVhQRUNUQVRJT05TX1VSTCA9ICdodHRwOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJr
aXQvdHJ1bmsvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMu
dHh0JzsKLQotZnVuY3Rpb24gcmVxdWVzdEV4cGVjdGF0aW9uc0ZpbGUoKQotewotICAgIHJlcXVl
c3QoQ0hST01JVU1fRVhQRUNUQVRJT05TX1VSTCwgZnVuY3Rpb24oeGhyKSB7Ci0gICAgICAgIGdf
d2FpdGluZ09uRXhwZWN0YXRpb25zID0gZmFsc2U7Ci0gICAgICAgIGdfZXhwZWN0YXRpb25zID0g
eGhyLnJlc3BvbnNlVGV4dDsKLSAgICAgICAgaGFuZGxlUmVzb3VyY2VMb2FkKCk7Ci0gICAgfSwK
LSAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgcmVxdWVzdChMRUdBQ1lfQ0hST01JVU1fRVhQRUNU
QVRJT05TX1VSTCwgZnVuY3Rpb24oeGhyKSB7Ci0gICAgICAgICAgICBnX3dhaXRpbmdPbkV4cGVj
dGF0aW9ucyA9IGZhbHNlOwotICAgICAgICAgICAgZ19leHBlY3RhdGlvbnMgPSB4aHIucmVzcG9u
c2VUZXh0OwotICAgICAgICAgICAgaGFuZGxlUmVzb3VyY2VMb2FkKCk7Ci0gICAgICAgIH0sIGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgY29uc29sZS5lcnJvcignQ291bGQgbm90IGxvYWQgZXhw
ZWN0YXRpb25zIGZpbGUgZnJvbSAnICsgQ0hST01JVU1fRVhQRUNUQVRJT05TX1VSTCArICcgb3Ig
JyArIExFR0FDWV9DSFJPTUlVTV9FWFBFQ1RBVElPTlNfVVJMKTsKLSAgICAgICAgfSk7CitmdW5j
dGlvbiByZXF1ZXN0RXhwZWN0YXRpb25zRmlsZXMoKQoreworICAgIHZhciBleHBlY3RhdGlvbnNG
aWxlc1RvUmVxdWVzdCA9IHt9OworICAgIHRyYXZlcnNlUGxhdGZvcm1zVHJlZShmdW5jdGlvbihw
bGF0Zm9ybSwgcGxhdGZvcm1OYW1lKSB7CisgICAgICAgIGlmIChwbGF0Zm9ybS5leHBlY3RhdGlv
bnNEaXJlY3RvcnkpCisgICAgICAgICAgICBleHBlY3RhdGlvbnNGaWxlc1RvUmVxdWVzdFtwbGF0
Zm9ybU5hbWVdID0gRVhQRUNUQVRJT05TX1VSTF9CQVNFX1BBVEggKyBwbGF0Zm9ybS5leHBlY3Rh
dGlvbnNEaXJlY3RvcnkgKyAnL1Rlc3RFeHBlY3RhdGlvbnMnOworICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9KTsKKworICAgIGZvciAocGxhdGZvcm1XaXRoRXhwZWN0YXRpb25zIGluIGV4cGVj
dGF0aW9uc0ZpbGVzVG9SZXF1ZXN0KQorICAgICAgICByZXF1ZXN0KGV4cGVjdGF0aW9uc0ZpbGVz
VG9SZXF1ZXN0W3BsYXRmb3JtV2l0aEV4cGVjdGF0aW9uc10sCisgICAgICAgICAgICAgICAgcGFy
dGlhbChmdW5jdGlvbihwbGF0Zm9ybU5hbWUsIHhocikgeworICAgICAgICAgICAgICAgICAgICBn
X2V4cGVjdGF0aW9uc0J5UGxhdGZvcm1bcGxhdGZvcm1OYW1lXSA9IGdldFBhcnNlZEV4cGVjdGF0
aW9ucyh4aHIucmVzcG9uc2VUZXh0KTsKKworICAgICAgICAgICAgICAgICAgICBkZWxldGUgZXhw
ZWN0YXRpb25zRmlsZXNUb1JlcXVlc3RbcGxhdGZvcm1OYW1lXTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFPYmplY3Qua2V5cyhleHBlY3RhdGlvbnNGaWxlc1RvUmVxdWVzdCkubGVuZ3RoKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBnX3dhaXRpbmdPbkV4cGVjdGF0aW9ucyA9IGZhbHNl
OworICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlUmVzb3VyY2VMb2FkKCk7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LCBwbGF0Zm9ybVdpdGhFeHBlY3RhdGlv
bnMpLAorICAgICAgICAgICAgICAgIHBhcnRpYWwoZnVuY3Rpb24ocGxhdGZvcm1OYW1lLCB4aHIp
IHsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignQ291bGQgbm90IGxvYWQgZXhw
ZWN0YXRpb25zIGZpbGUgZm9yICcgKyBwbGF0Zm9ybU5hbWUpOworICAgICAgICAgICAgICAgIH0s
IHBsYXRmb3JtV2l0aEV4cGVjdGF0aW9ucykpOwogfQogCiBmdW5jdGlvbiBpc1RyZWVNYXAoKQpA
QCAtNjA4LDkgKzYxMSw5IEBAIGZ1bmN0aW9uIGFwcGVuZEpTT05TY3JpcHRFbGVtZW50cygpCiAg
ICAgZm9yICh2YXIgYnVpbGRlck5hbWUgaW4gZ19idWlsZGVycykKICAgICAgICAgYXBwZW5kSlNP
TlNjcmlwdEVsZW1lbnRGb3IoYnVpbGRlck5hbWUpOwogCi0gICAgdmFyIGdfd2FpdGluZ09uRXhw
ZWN0YXRpb25zID0gaXNMYXlvdXRUZXN0UmVzdWx0cygpICYmICFpc1RyZWVNYXAoKTsKKyAgICBn
X3dhaXRpbmdPbkV4cGVjdGF0aW9ucyA9IGlzTGF5b3V0VGVzdFJlc3VsdHMoKSAmJiAhaXNUcmVl
TWFwKCk7CiAgICAgaWYgKGdfd2FpdGluZ09uRXhwZWN0YXRpb25zKQotICAgICAgICByZXF1ZXN0
RXhwZWN0YXRpb25zRmlsZSgpOworICAgICAgICByZXF1ZXN0RXhwZWN0YXRpb25zRmlsZXMoKTsK
IH0KIAogdmFyIGdfaGFzRG9uZUluaXRpYWxQYWdlR2VuZXJhdGlvbiA9IGZhbHNlOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3Nf
ZGFzaGJvYXJkLmpzIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9m
bGFraW5lc3NfZGFzaGJvYXJkLmpzCmluZGV4IGY4YjVlNTdkYTNiMzM5YmU1ZTc3ZDMwOWVjZDc5
MDRkYWY3ZTVmZGEuLjUxMmYwOTViMGM5YjNmZDA0NDBhZjI3NzE4OTc1OGY0NmUwNTE4ODAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2lu
ZXNzX2Rhc2hib2FyZC5qcworKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNo
Ym9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuanMKQEAgLTM1LDI5ICszNSw5MiBAQCB2YXIgQkFD
S1dBUkQgPSAnYmFja3dhcmQnOwogdmFyIEdURVNUX01PRElGSUVSUyA9IFsnRkxBS1knLCAnRkFJ
TFMnLCAnTUFZQkUnLCAnRElTQUJMRUQnXTsKIHZhciBURVNUX1VSTF9CQVNFX1BBVEhfVFJBQyA9
ICdodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvTGF5b3V0VGVzdHMvJzsKIHZh
ciBURVNUX1VSTF9CQVNFX1BBVEggPSAiaHR0cDovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkv
d2Via2l0L3RydW5rL0xheW91dFRlc3RzLyI7Cit2YXIgRVhQRUNUQVRJT05TX1VSTF9CQVNFX1BB
VEggPSBURVNUX1VSTF9CQVNFX1BBVEggKyAicGxhdGZvcm0vIjsKIHZhciBURVNUX1JFU1VMVFNf
QkFTRV9QQVRIID0gJ2h0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvZi9jaHJvbWl1bS9sYXlvdXRf
dGVzdF9yZXN1bHRzLyc7CiB2YXIgR1BVX1JFU1VMVFNfQkFTRV9QQVRIID0gJ2h0dHA6Ly9jaHJv
bWl1bS1icm93c2VyLWdwdS10ZXN0cy5jb21tb25kYXRhc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9y
dW5zLycKIAotLy8gRklYTUU6IFRoZXNlIHBsYXRmb3JtIG5hbWVzIHNob3VsZCBwcm9iYWJseSBi
ZSBjaGFuZ2VkIHRvIG1hdGNoIHRoZSBkaXJlY3RvcmllcyBpbiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bQotLy8gaW5zdGVhZCBvZiBtYXRjaGluZyB0aGUgdmFsdWVzIHdlIHVzZSBpbiB0aGUgVGVzdEV4
cGVjdGF0aW9ucyBmaWxlLgotdmFyIFBMQVRGT1JNUyA9IFsnTElPTicsICdTTk9XTEVPUEFSRCcs
ICdYUCcsICdWSVNUQScsICdXSU43JywgJ0xVQ0lEJywgJ0FORFJPSUQnLCAnQVBQTEVfTElPTics
ICdBUFBMRV9TTk9XTEVPUEFSRCcsICdBUFBMRV9YUCcsICdBUFBMRV9XSU43JywgJ0dUS19MSU5V
WCcsICdRVF9MSU5VWCcsICdFRkwnXTsKLXZhciBQTEFURk9STV9VTklPTlMgPSB7Ci0gICAgJ01B
Qyc6IFsnU05PV0xFT1BBUkQnLCAnTElPTiddLAotICAgICdXSU4nOiBbJ1hQJywgJ1dJTjcnXSwK
LSAgICAnTElOVVgnOiBbJ0xVQ0lEJ10KLX0KLQotLy8gRklYTUU6IE1ha2UgdGhlIGdfYWxsRXhw
ZWN0YXRpb25zIGRhdGEgc3RydWN0dXJlIGV4cGxpY2l0bHkgbGlzdCBldmVyeSBwbGF0Zm9ybSBp
bnN0ZWFkIG9mIGhhdmluZyBhIGZhbGxiYWNrcyBjb25jZXB0LgotdmFyIFBMQVRGT1JNX0ZBTExC
QUNLUyA9IHsKLSAgICAnV0lOJzogJ0FMTCcsCi0gICAgJ1hQJzogJ1dJTicsCi0gICAgJ1dJTjcn
OiAnV0lOJywKLSAgICAnTUFDJzogJ0FMTCcsCi0gICAgJ0xJT04nOiAnTUFDJywKLSAgICAnU05P
V0xFT1BBUkQnOiAnTUFDJywKLSAgICAnTElOVVgnOiAnQUxMJywKLSAgICAnTFVDSUQnOiAnTElO
VVgnCit2YXIgUExBVEZPUk1TID0geworICAgICdDSFJPTUlVTSc6IHsKKyAgICAgICAgZXhwZWN0
YXRpb25zRGlyZWN0b3J5OiAnY2hyb21pdW0nLAorICAgICAgICBzdWJQbGF0Zm9ybXM6IHsKKyAg
ICAgICAgICAgICdMSU9OJzogeyBmYWxsYmFja1BsYXRmb3JtczogWydDSFJPTUlVTSddIH0sCisg
ICAgICAgICAgICAnU05PV0xFT1BBUkQnOiB7IGZhbGxiYWNrUGxhdGZvcm1zOiBbJ0NIUk9NSVVN
J10gfSwKKyAgICAgICAgICAgICdYUCc6IHsgZmFsbGJhY2tQbGF0Zm9ybXM6IFsnQ0hST01JVU0n
XSB9LAorICAgICAgICAgICAgJ1ZJU1RBJzogeyBmYWxsYmFja1BsYXRmb3JtczogWydDSFJPTUlV
TSddIH0sCisgICAgICAgICAgICAnV0lONyc6IHsgZmFsbGJhY2tQbGF0Zm9ybXM6IFsnQ0hST01J
VU0nXSB9LAorICAgICAgICAgICAgJ0xVQ0lEJzogeyBmYWxsYmFja1BsYXRmb3JtczogWydDSFJP
TUlVTSddIH0sCisgICAgICAgICAgICAnQU5EUk9JRCc6IHsgZmFsbGJhY2tQbGF0Zm9ybXM6IFsn
Q0hST01JVU0nXSB9CisgICAgICAgIH0sCisgICAgICAgIHBsYXRmb3JtTW9kaWZpZXJVbmlvbnM6
IHsKKyAgICAgICAgICAgICdNQUMnOiBbJ0xJT04nLCAnU05PV0xFT1BBUkQnXSwKKyAgICAgICAg
ICAgICdXSU4nOiBbJ1hQJywgJ1ZJU1RBJywgJ1dJTjcnXSwKKyAgICAgICAgICAgICdMSU5VWCc6
IFsnTFVDSUQnXQorICAgICAgICB9CisgICAgfSwKKyAgICAnQVBQTEUnOiB7CisgICAgICAgIHN1
YlBsYXRmb3JtczogeworICAgICAgICAgICAgJ01BQyc6IHsKKyAgICAgICAgICAgICAgICBleHBl
Y3RhdGlvbnNEaXJlY3Rvcnk6ICdtYWMnLAorICAgICAgICAgICAgICAgIHN1YlBsYXRmb3Jtczog
eworICAgICAgICAgICAgICAgICAgICAnTElPTic6IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGV4cGVjdGF0aW9uc0RpcmVjdG9yeTogJ21hYy1saW9uJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN1YlBsYXRmb3JtczogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdXSzEnOiB7
IGZhbGxiYWNrUGxhdGZvcm1zOiBbJ0FQUExFX01BQ19MSU9OJywgJ0FQUExFX01BQyddIH0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1dLMic6IHsgZmFsbGJhY2tQbGF0Zm9ybXM6IFsn
QVBQTEVfTUFDX0xJT04nLCAnQVBQTEVfTUFDJywgJ1dLMiddIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgJ1NO
T1dMRU9QQVJEJzogeworICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0YXRpb25zRGlyZWN0
b3J5OiAnbWFjLXNub3dsZW9wYXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1YlBsYXRm
b3JtczogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdXSzEnOiB7IGZhbGxiYWNrUGxh
dGZvcm1zOiBbJ0FQUExFX01BQ19TTk9XTEVPUEFSRCcsICdBUFBMRV9NQUMnXSB9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdXSzInOiB7IGZhbGxiYWNrUGxhdGZvcm1zOiBbJ0FQUExF
X01BQ19TTk9XTEVPUEFSRCcsICdBUFBMRV9NQUMnLCAnV0syJ10gfQorICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICdXSU4nOiB7CisgICAgICAgICAgICAgICAgZXhwZWN0
YXRpb25zRGlyZWN0b3J5OiAnd2luJywKKyAgICAgICAgICAgICAgICBzdWJQbGF0Zm9ybXM6IHsK
KyAgICAgICAgICAgICAgICAgICAgJ1hQJzogeyBmYWxsYmFja1BsYXRmb3JtczogWydBUFBMRV9X
SU4nXSB9LAorICAgICAgICAgICAgICAgICAgICAnV0lONyc6IHsgZmFsbGJhY2tQbGF0Zm9ybXM6
IFsnQVBQTEVfV0lOJ10gfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0sCisgICAgJ0dUSyc6IHsKKyAgICAgICAgZXhwZWN0YXRpb25zRGlyZWN0b3J5
OiAnZ3RrJywKKyAgICAgICAgc3ViUGxhdGZvcm1zOiB7CisgICAgICAgICAgICAnTElOVVgnOiB7
CisgICAgICAgICAgICAgICAgc3ViUGxhdGZvcm1zOiB7CisgICAgICAgICAgICAgICAgICAgICdX
SzEnOiB7IGZhbGxiYWNrUGxhdGZvcm1zOiBbJ0dUSyddIH0sCisgICAgICAgICAgICAgICAgICAg
ICdXSzInOiB7IGZhbGxiYWNrUGxhdGZvcm1zOiBbJ0dUSycsICdXSzInXSwgZXhwZWN0YXRpb25z
RGlyZWN0b3J5OiAnZ3RrLXdrMicgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0sCisgICAgJ1FUJzogeworICAgICAgICBleHBlY3RhdGlvbnNEaXJl
Y3Rvcnk6ICdxdCcsCisgICAgICAgIHN1YlBsYXRmb3JtczogeworICAgICAgICAgICAgJ0xJTlVY
JzogeyBmYWxsYmFja1BsYXRmb3JtczogWydRVCddIH0KKyAgICAgICAgfQorICAgIH0sCisgICAg
J0VGTCc6IHsKKyAgICAgICAgZXhwZWN0YXRpb25zRGlyZWN0b3J5OiAnZWZsJywKKyAgICAgICAg
c3ViUGxhdGZvcm1zOiB7CisgICAgICAgICAgICAnTElOVVgnOiB7CisgICAgICAgICAgICAgICAg
c3ViUGxhdGZvcm1zOiB7CisgICAgICAgICAgICAgICAgICAgICdXSzEnOiB7IGZhbGxiYWNrUGxh
dGZvcm1zOiBbJ0VGTCddLCBleHBlY3RhdGlvbnNEaXJlY3Rvcnk6ICdlZmwtd2sxJyB9LAorICAg
ICAgICAgICAgICAgICAgICAnV0syJzogeyBmYWxsYmFja1BsYXRmb3JtczogWydFRkwnLCAnV0sy
J10sIGV4cGVjdGF0aW9uc0RpcmVjdG9yeTogJ2VmbC13azInIH0KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9LAorICAgICdXSzInOiB7CisgICAgICAg
IGJhc2VQbGF0Zm9ybTogdHJ1ZSwKKyAgICAgICAgZXhwZWN0YXRpb25zRGlyZWN0b3J5OiAnd2sy
JworICAgIH0KIH07CisKIHZhciBCVUlMRF9UWVBFUyA9IHsnREVCVUcnOiAnREJHJywgJ1JFTEVB
U0UnOiAnUkVMRUFTRSd9OwogdmFyIE1JTl9TRUNPTkRTX0ZPUl9TTE9XX1RFU1QgPSA0OwogdmFy
IE1JTl9TRUNPTkRTX0ZPUl9TTE9XX1RFU1RfREVCVUcgPSAyICogTUlOX1NFQ09ORFNfRk9SX1NM
T1dfVEVTVDsKQEAgLTIxNyw2ICsyODAsMjAgQEAgdmFyIGdfdGVzdFRvUmVzdWx0c01hcCA9IHt9
OwogLy8gVGVzdHMgdGhhdCB0aGUgdXNlciB3YW50cyB0byB1cGRhdGUgZXhwZWN0YXRpb25zIGZv
ci4KIHZhciBnX2NvbmZpcm1lZFRlc3RzID0ge307CiAKK2Z1bmN0aW9uIHRyYXZlcnNlUGxhdGZv
cm1zVHJlZShjYWxsYmFjaykKK3sKKyAgICBmdW5jdGlvbiB0cmF2ZXJzZShwbGF0Zm9ybU9iamVj
dCwgcGFyZW50UGxhdGZvcm0pIHsKKyAgICAgICAgT2JqZWN0LmtleXMocGxhdGZvcm1PYmplY3Qp
LmZvckVhY2goZnVuY3Rpb24ocGxhdGZvcm1OYW1lKSB7CisgICAgICAgICAgICB2YXIgcGxhdGZv
cm0gPSBwbGF0Zm9ybU9iamVjdFtwbGF0Zm9ybU5hbWVdOworICAgICAgICAgICAgcGxhdGZvcm1O
YW1lID0gcGFyZW50UGxhdGZvcm0gPyBwYXJlbnRQbGF0Zm9ybSArIHBsYXRmb3JtTmFtZSA6IHBs
YXRmb3JtTmFtZTsKKworICAgICAgICAgICAgaWYgKGNhbGxiYWNrKHBsYXRmb3JtLCBwbGF0Zm9y
bU5hbWUpICYmIHBsYXRmb3JtLnN1YlBsYXRmb3JtcykKKyAgICAgICAgICAgICAgICB0cmF2ZXJz
ZShwbGF0Zm9ybS5zdWJQbGF0Zm9ybXMsIHBsYXRmb3JtTmFtZSArICdfJyk7CisgICAgICAgIH0p
OworICAgIH0KKyAgICB0cmF2ZXJzZShQTEFURk9STVMsIG51bGwpOworfQorCiBmdW5jdGlvbiBj
cmVhdGVSZXN1bHRzT2JqZWN0Rm9yVGVzdCh0ZXN0LCBidWlsZGVyKQogewogICAgIHJldHVybiB7
CkBAIC0yNTEsNDUgKzMyOCw1MiBAQCBmdW5jdGlvbiBtYXRjaGluZ0VsZW1lbnQoc3RyaW5nVG9N
YXRjaCwgZWxlbWVudHNNYXApCiAgICAgfQogfQogCitmdW5jdGlvbiBkZXRlcm1pbmVXS1BsYXRm
b3JtKGJ1aWxkZXJOYW1lLCBiYXNlUGxhdGZvcm0pCit7CisgICAgdmFyIGlzV0syQnVpbGRlciA9
IHN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJOYW1lLCAnV0syJykgfHwgc3RyaW5nQ29udGFpbnMoYnVp
bGRlck5hbWUsICdXRUJLSVQyJyk7CisgICAgcmV0dXJuIGJhc2VQbGF0Zm9ybSArIChpc1dLMkJ1
aWxkZXIgPyAnX1dLMicgOiAnX1dLMScpOworfQorCiBmdW5jdGlvbiBub25DaHJvbWl1bVBsYXRm
b3JtKGJ1aWxkZXJOYW1lVXBwZXJDYXNlKQogewotICAgIGlmIChzdHJpbmdDb250YWlucyhidWls
ZGVyTmFtZVVwcGVyQ2FzZSwgJ0xJT04nKSkKLSAgICAgICAgcmV0dXJuICdBUFBMRV9MSU9OJzsK
LSAgICBpZiAoc3RyaW5nQ29udGFpbnMoYnVpbGRlck5hbWVVcHBlckNhc2UsICdTTk9XTEVPUEFS
RCcpKQotICAgICAgICByZXR1cm4gJ0FQUExFX1NOT1dMRU9QQVJEJzsKICAgICBpZiAoc3RyaW5n
Q29udGFpbnMoYnVpbGRlck5hbWVVcHBlckNhc2UsICdXSU5ET1dTIDcnKSkKLSAgICAgICAgcmV0
dXJuICdBUFBMRV9XSU43JzsKKyAgICAgICAgcmV0dXJuICdBUFBMRV9XSU5fV0lONyc7CiAgICAg
aWYgKHN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnV0lORE9XUyBYUCcpKQot
ICAgICAgICByZXR1cm4gJ0FQUExFX1hQJzsKLSAgICBpZiAoc3RyaW5nQ29udGFpbnMoYnVpbGRl
ck5hbWVVcHBlckNhc2UsICdHVEsgTElOVVgnKSkKLSAgICAgICAgcmV0dXJuICdHVEtfTElOVVgn
OworICAgICAgICByZXR1cm4gJ0FQUExFX1dJTl9YUCc7CiAgICAgaWYgKHN0cmluZ0NvbnRhaW5z
KGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnUVQgTElOVVgnKSkKICAgICAgICAgcmV0dXJuICdRVF9M
SU5VWCc7CisKKyAgICBpZiAoc3RyaW5nQ29udGFpbnMoYnVpbGRlck5hbWVVcHBlckNhc2UsICdM
SU9OJykpCisgICAgICAgIHJldHVybiBkZXRlcm1pbmVXS1BsYXRmb3JtKGJ1aWxkZXJOYW1lVXBw
ZXJDYXNlLCAnQVBQTEVfTUFDX0xJT04nKTsKKyAgICBpZiAoc3RyaW5nQ29udGFpbnMoYnVpbGRl
ck5hbWVVcHBlckNhc2UsICdTTk9XTEVPUEFSRCcpKQorICAgICAgICByZXR1cm4gZGV0ZXJtaW5l
V0tQbGF0Zm9ybShidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ0FQUExFX01BQ19TTk9XTEVPUEFSRCcp
OworICAgIGlmIChzdHJpbmdDb250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ0dUSyBMSU5V
WCcpKQorICAgICAgICByZXR1cm4gZGV0ZXJtaW5lV0tQbGF0Zm9ybShidWlsZGVyTmFtZVVwcGVy
Q2FzZSwgJ0dUS19MSU5VWCcpOwogICAgIGlmIChzdHJpbmdDb250YWlucyhidWlsZGVyTmFtZVVw
cGVyQ2FzZSwgJ0VGTCcpKQotICAgICAgICByZXR1cm4gJ0VGTCc7CisgICAgICAgIHJldHVybiBk
ZXRlcm1pbmVXS1BsYXRmb3JtKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnRUZMX0xJTlVYJyk7CiB9
CiAKIGZ1bmN0aW9uIGNocm9taXVtUGxhdGZvcm0oYnVpbGRlck5hbWVVcHBlckNhc2UpCiB7CiAg
ICAgaWYgKHN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnTUFDJykpIHsKICAg
ICAgICAgaWYgKHN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnMTAuNycpKQot
ICAgICAgICAgICAgcmV0dXJuICdMSU9OJzsKKyAgICAgICAgICAgIHJldHVybiAnQ0hST01JVU1f
TElPTic7CiAgICAgICAgIC8vIFRoZSB3ZWJraXQub3JnICdDaHJvbWl1bSBNYWMgUmVsZWFzZSAo
VGVzdHMpJyBib3QgcnVucyBTbm93TGVvcGFyZC4KLSAgICAgICAgcmV0dXJuICdTTk9XTEVPUEFS
RCc7CisgICAgICAgIHJldHVybiAnQ0hST01JVU1fU05PV0xFT1BBUkQnOwogICAgIH0KICAgICBp
ZiAoc3RyaW5nQ29udGFpbnMoYnVpbGRlck5hbWVVcHBlckNhc2UsICdXSU43JykpCi0gICAgICAg
IHJldHVybiAnV0lONyc7CisgICAgICAgIHJldHVybiAnQ0hST01JVU1fV0lONyc7CiAgICAgaWYg
KHN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnVklTVEEnKSkKLSAgICAgICAg
cmV0dXJuICdWSVNUQSc7CisgICAgICAgIHJldHVybiAnQ0hST01JVU1fVklTVEEnOwogICAgIGlm
IChzdHJpbmdDb250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ1dJTicpIHx8IHN0cmluZ0Nv
bnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnWFAnKSkKLSAgICAgICAgcmV0dXJuICdYUCc7
CisgICAgICAgIHJldHVybiAnQ0hST01JVU1fWFAnOwogICAgIGlmIChzdHJpbmdDb250YWlucyhi
dWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ0xJTlVYJykpCi0gICAgICAgIHJldHVybiAnTFVDSUQnOwor
ICAgICAgICByZXR1cm4gJ0NIUk9NSVVNX0xVQ0lEJzsKICAgICBpZiAoc3RyaW5nQ29udGFpbnMo
YnVpbGRlck5hbWVVcHBlckNhc2UsICdBTkRST0lEJykpCi0gICAgICAgIHJldHVybiAnQU5EUk9J
RCc7CisgICAgICAgIHJldHVybiAnQ0hST01JVU1fQU5EUk9JRCc7CiAgICAgLy8gVGhlIGludGVy
YWN0aXZlIGJvdCBpcyBYUCwgYnV0IGRvZXNuJ3QgaGF2ZSBhbiBPUyBpbiBpdCdzIG5hbWUuCiAg
ICAgaWYgKHN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnSU5URVJBQ1RJVkUn
KSkKLSAgICAgICAgcmV0dXJuICdYUCc7CisgICAgICAgIHJldHVybiAnQ0hST01JVU1fWFAnOwog
fQogCiAKQEAgLTMzOCwyMCArNDIyLDY4IEBAIGZ1bmN0aW9uIGV4cGVjdGF0aW9uc0ZpbGVTdHJp
bmdGb3JSZXN1bHQocmVzdWx0KQogICAgIHJldHVybiBleHBlY3RhdGlvbnNNYXAoKVtyZXN1bHRd
OwogfQogCit2YXIgVGVzdFRyaWUgPSBmdW5jdGlvbigpCit7CisgICAgdGhpcy5fdHJpZSA9IHt9
OworCisgICAgZm9yICh2YXIgYnVpbGRlciBpbiBnX2J1aWxkZXJzKQorICAgICAgICB0aGlzLl9h
ZGRUZXN0c0ZvckJ1aWxkZXIoYnVpbGRlcik7Cit9CisKK1Rlc3RUcmllLnByb3RvdHlwZS5mb3JF
YWNoID0gZnVuY3Rpb24oY2FsbGJhY2ssIHN0YXJ0aW5nVHJpZVBhdGgpCit7CisgICAgdmFyIHRl
c3RzVHJpZSA9IHRoaXMuX3RyaWU7CisgICAgaWYgKHN0YXJ0aW5nVHJpZVBhdGgpIHsKKyAgICAg
ICAgdmFyIHNwbGl0UGF0aCA9IHN0YXJ0aW5nVHJpZVBhdGguc3BsaXQoJy8nKTsKKyAgICAgICAg
d2hpbGUgKHNwbGl0UGF0aC5sZW5ndGggJiYgdGVzdHNUcmllKQorICAgICAgICAgICAgdGVzdHNU
cmllID0gdGVzdHNUcmllW3NwbGl0UGF0aC5zaGlmdCgpXTsKKyAgICB9CisKKyAgICBpZiAoIXRl
c3RzVHJpZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZnVuY3Rpb24gdHJhdmVyc2UodHJpZSwg
dHJpZVBhdGgpIHsKKyAgICAgICAgaWYgKHRyaWUgPT0gdHJ1ZSkKKyAgICAgICAgICAgIGNhbGxi
YWNrKHRyaWVQYXRoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmb3IgKHZhciBtZW1i
ZXIgaW4gdHJpZSkKKyAgICAgICAgICAgICAgICB0cmF2ZXJzZSh0cmllW21lbWJlcl0sIHRyaWVQ
YXRoID8gdHJpZVBhdGggKyAnLycgKyBtZW1iZXIgOiBtZW1iZXIpOworICAgICAgICB9CisgICAg
fQorICAgIHRyYXZlcnNlKHRlc3RzVHJpZSwgc3RhcnRpbmdUcmllUGF0aCk7Cit9CisKK1Rlc3RU
cmllLnByb3RvdHlwZS5fYWRkVGVzdCA9IGZ1bmN0aW9uKHRlc3QsIHRyaWUpCit7CisgICAgdmFy
IHJvb3RDb21wb25lbnQgPSB0ZXN0LnNoaWZ0KCk7CisgICAgaWYgKCF0ZXN0Lmxlbmd0aCkgewor
ICAgICAgICBpZiAoIXRyaWVbcm9vdENvbXBvbmVudF0pCisgICAgICAgICAgICB0cmllW3Jvb3RD
b21wb25lbnRdID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdHJp
ZVtyb290Q29tcG9uZW50XSB8fCB0cmllW3Jvb3RDb21wb25lbnRdID09IHRydWUpCisgICAgICAg
IHRyaWVbcm9vdENvbXBvbmVudF0gPSB7fTsKKyAgICB0aGlzLl9hZGRUZXN0KHRlc3QsIHRyaWVb
cm9vdENvbXBvbmVudF0pOworfQorCitUZXN0VHJpZS5wcm90b3R5cGUuX2FkZFRlc3RzRm9yQnVp
bGRlciA9IGZ1bmN0aW9uKGJ1aWxkZXIpCit7CisgICAgdmFyIHRlc3RzID0gZ19yZXN1bHRzQnlC
dWlsZGVyW2J1aWxkZXJdLnRlc3RzOworICAgIGZvciAodmFyIHRlc3QgaW4gdGVzdHMpCisgICAg
ICAgIHRoaXMuX2FkZFRlc3QodGVzdC5zcGxpdCgnLycpLCB0aGlzLl90cmllKTsKK30KKwogLy8g
TWFwIG9mIGFsbCB0ZXN0cyB0byB0cnVlIHZhbHVlcy4gVGhpcyBpcyBqdXN0IHNvIHdlIGNhbiBo
YXZlIHRoZSBsaXN0IG9mCiAvLyBhbGwgdGVzdHMgYWNyb3NzIGFsbCB0aGUgYnVpbGRlcnMuCi12
YXIgZ19hbGxUZXN0czsKK3ZhciBnX2FsbFRlc3RzVHJpZTsKIAotLy8gUmV0dXJucyBhIG1hcCBv
ZiBhbGwgdGVzdHMgdG8gdHJ1ZSB2YWx1ZXMuIFRoaXMgaXMganVzdCBzbyB3ZSBjYW4gaGF2ZSB0
aGUKLS8vIGxpc3Qgb2YgYWxsIHRlc3RzIGFjcm9zcyBhbGwgdGhlIGJ1aWxkZXJzLgotZnVuY3Rp
b24gZ2V0QWxsVGVzdHMoKQorZnVuY3Rpb24gZ2V0QWxsVGVzdHNUcmllKCkKIHsKLSAgICBpZiAo
IWdfYWxsVGVzdHMpIHsKLSAgICAgICAgZ19hbGxUZXN0cyA9IHt9OwotICAgICAgICBmb3IgKHZh
ciBidWlsZGVyIGluIGdfYnVpbGRlcnMpCi0gICAgICAgICAgICBhZGRUZXN0c0ZvckJ1aWxkZXIo
YnVpbGRlciwgZ19hbGxUZXN0cyk7Ci0gICAgfQotICAgIHJldHVybiBnX2FsbFRlc3RzOworICAg
IGlmICghZ19hbGxUZXN0c1RyaWUpCisgICAgICAgIGdfYWxsVGVzdHNUcmllID0gbmV3IFRlc3RU
cmllKCk7CisKKyAgICByZXR1cm4gZ19hbGxUZXN0c1RyaWU7CiB9CiAKIC8vIFJldHVybnMgYW4g
YXJyYXkgb2YgdGVzdHMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBpbmRpdmlkdWFsIHRlc3RzIHZp
ZXcuCkBAIC00MDIsMTQgKzUzNCwxMyBAQCBmdW5jdGlvbiBpbmRpdmlkdWFsVGVzdHNGb3JTdWJz
dHJpbmdMaXN0KCkKICAgICAgICAgaWYgKHBhdGgubWF0Y2goL15ccyokLykpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICB2YXIgYWxsVGVzdHMgPSBnZXRBbGxUZXN0cygpOwogICAg
ICAgICB2YXIgaGFzQW55TWF0Y2hlcyA9IGZhbHNlOwotICAgICAgICBmb3IgKHZhciB0ZXN0IGlu
IGFsbFRlc3RzKSB7Ci0gICAgICAgICAgICBpZiAoY2FzZUluc2Vuc2l0aXZlQ29udGFpbnModGVz
dCwgcGF0aCkpIHsKLSAgICAgICAgICAgICAgICB0ZXN0c01hcFt0ZXN0XSA9IDE7CisgICAgICAg
IGdldEFsbFRlc3RzVHJpZSgpLmZvckVhY2goZnVuY3Rpb24odHJpZVBhdGgpIHsKKyAgICAgICAg
ICAgIGlmIChjYXNlSW5zZW5zaXRpdmVDb250YWlucyh0cmllUGF0aCwgcGF0aCkpIHsKKyAgICAg
ICAgICAgICAgICB0ZXN0c01hcFt0cmllUGF0aF0gPSAxOwogICAgICAgICAgICAgICAgIGhhc0Fu
eU1hdGNoZXMgPSB0cnVlOwogICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIH0pOwog
CiAgICAgICAgIC8vIElmIGEgcGF0aCBkb2Vzbid0IG1hdGNoIGFueSB0ZXN0cywgdGhlbiBhc3N1
bWUgaXQncyBhIGZ1bGwgcGF0aAogICAgICAgICAvLyB0byBhIHRlc3QgdGhhdCBwYXNzZXMgb24g
YWxsIGJ1aWxkZXJzLgpAQCAtNDQyLDE2ICs1NzMsMTcgQEAgZnVuY3Rpb24gaXNGYXN0VGVzdChy
ZXN1bHRzRm9yVGVzdCkKIGZ1bmN0aW9uIGFsbFRlc3RzV2l0aFJlc3VsdChyZXN1bHQpCiB7CiAg
ICAgcHJvY2Vzc1Rlc3RSdW5zRm9yQWxsQnVpbGRlcnMoKTsKLSAgICB2YXIgdGVzdHMgPSBnZXRB
bGxUZXN0cygpOwogICAgIHZhciByZXRWYWwgPSBbXTsKLSAgICBmb3IgKHZhciB0ZXN0IGluIHRl
c3RzKSB7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ190ZXN0VG9SZXN1bHRzTWFwW3Rl
c3RdLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAoZ190ZXN0VG9SZXN1bHRzTWFwW3Rl
c3RdW2ldLmFjdHVhbFJlc3VsdHMuaW5kZXhPZihyZXN1bHQpICE9IC0xKSB7Ci0gICAgICAgICAg
ICAgICAgcmV0VmFsLnB1c2godGVzdCk7CisKKyAgICBnZXRBbGxUZXN0c1RyaWUoKS5mb3JFYWNo
KGZ1bmN0aW9uKHRyaWVQYXRoKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ190ZXN0
VG9SZXN1bHRzTWFwW3RyaWVQYXRoXS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKGdf
dGVzdFRvUmVzdWx0c01hcFt0cmllUGF0aF1baV0uYWN0dWFsUmVzdWx0cy5pbmRleE9mKHJlc3Vs
dCkgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICByZXRWYWwucHVzaCh0cmllUGF0aCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9CisgICAg
fSk7CisKICAgICByZXR1cm4gcmV0VmFsOwogfQogCkBAIC00NjksNyArNjAxLDExIEBAIGZ1bmN0
aW9uIGFkZFRlc3RzRm9yQnVpbGRlcihidWlsZGVyLCB0ZXN0TWFwVG9Qb3B1bGF0ZSkKIC8vIGUu
Zy4gZ19hbGxUZXN0c0J5UGxhdGZvcm1BbmRCdWlsZFR5cGVbJ1hQJ11bJ0RFQlVHJ10gd2lsbCBo
YXZlIHRoZSB1bmlvbgogLy8gb2YgYWxsIHRlc3RzIHJ1biBvbiB0aGUgeHAtZGVidWcgYnVpbGRl
cnMuCiB2YXIgZ19hbGxUZXN0c0J5UGxhdGZvcm1BbmRCdWlsZFR5cGUgPSB7fTsKLVBMQVRGT1JN
Uy5mb3JFYWNoKGZ1bmN0aW9uKHBsYXRmb3JtKSB7IGdfYWxsVGVzdHNCeVBsYXRmb3JtQW5kQnVp
bGRUeXBlW3BsYXRmb3JtXSA9IHt9OyB9KTsKK3RyYXZlcnNlUGxhdGZvcm1zVHJlZShmdW5jdGlv
bihwbGF0Zm9ybSwgcGxhdGZvcm1OYW1lKSB7CisgICAgaWYgKCFwbGF0Zm9ybS5zdWJQbGF0Zm9y
bXMgJiYgIXBsYXRmb3JtLmJhc2VQbGF0Zm9ybSkKKyAgICAgICAgZ19hbGxUZXN0c0J5UGxhdGZv
cm1BbmRCdWlsZFR5cGVbcGxhdGZvcm1OYW1lXSA9IHt9OworICAgIHJldHVybiB0cnVlOworfSk7
CiAKIC8vIE1hcCBvZiBhbGwgdGVzdHMgdG8gdHJ1ZSB2YWx1ZXMgYnkgcGxhdGZvcm0gYW5kIGJ1
aWxkIHR5cGUuCiAvLyBlLmcuIGdfYWxsVGVzdHNCeVBsYXRmb3JtQW5kQnVpbGRUeXBlWydXSU4n
XVsnREVCVUcnXSB3aWxsIGhhdmUgdGhlIHVuaW9uCkBAIC01MjcsMTEgKzY2MywyMiBAQCBmdW5j
dGlvbiBwb3B1bGF0ZUV4cGVjdGF0aW9uc0RhdGEocmVzdWx0c09iamVjdCkKICAgICByZXN1bHRz
T2JqZWN0LmlzV29udEZpeFNraXAgPSBzdHJpbmdDb250YWlucyhleHBlY3RhdGlvbnMubW9kaWZp
ZXJzLCAnV09OVEZJWCcpIHx8IHN0cmluZ0NvbnRhaW5zKGV4cGVjdGF0aW9ucy5tb2RpZmllcnMs
ICdTS0lQJyk7IAogfQogCi1mdW5jdGlvbiBhZGRUZXN0VG9BbGxFeHBlY3RhdGlvbnModGVzdCwg
ZXhwZWN0YXRpb25zLCBtb2RpZmllcnMpCitmdW5jdGlvbiBwbGF0Zm9ybU9iamVjdEZvck5hbWUo
cGxhdGZvcm1OYW1lKQoreworICAgIHZhciBwbGF0Zm9ybXNMaXN0ID0gcGxhdGZvcm1OYW1lLnNw
bGl0KCJfIik7CisgICAgdmFyIHBsYXRmb3JtT2JqZWN0ID0gUExBVEZPUk1TW3BsYXRmb3Jtc0xp
c3Quc2hpZnQoKV07CisgICAgcGxhdGZvcm1zTGlzdC5mb3JFYWNoKGZ1bmN0aW9uKHBsYXRmb3Jt
TmFtZSkgeworICAgICAgICBwbGF0Zm9ybU9iamVjdCA9IHBsYXRmb3JtT2JqZWN0LnN1YlBsYXRm
b3Jtc1twbGF0Zm9ybU5hbWVdOworICAgIH0pOworICAgIHJldHVybiBwbGF0Zm9ybU9iamVjdDsK
K30KKworZnVuY3Rpb24gYWRkVGVzdFRvQWxsRXhwZWN0YXRpb25zRm9yUGxhdGZvcm0odGVzdCwg
cGxhdGZvcm0sIGV4cGVjdGF0aW9ucywgbW9kaWZpZXJzKQogewogICAgIGlmICghZ19hbGxFeHBl
Y3RhdGlvbnNbdGVzdF0pCiAgICAgICAgIGdfYWxsRXhwZWN0YXRpb25zW3Rlc3RdID0ge307CiAK
KyAgICB2YXIgcGxhdGZvcm1PYmplY3QgPSBwbGF0Zm9ybU9iamVjdEZvck5hbWUocGxhdGZvcm0p
OwogICAgIHZhciBhbGxQbGF0Zm9ybXMgPSBbXTsKICAgICB2YXIgYWxsQnVpbGRUeXBlcyA9IFtd
OwogICAgIG1vZGlmaWVycy5zcGxpdCgnICcpLmZvckVhY2goZnVuY3Rpb24obW9kaWZpZXIpIHsK
QEAgLTUzOSwyNSArNjg2LDI2IEBAIGZ1bmN0aW9uIGFkZFRlc3RUb0FsbEV4cGVjdGF0aW9ucyh0
ZXN0LCBleHBlY3RhdGlvbnMsIG1vZGlmaWVycykKICAgICAgICAgICAgIGFsbEJ1aWxkVHlwZXMu
cHVzaChtb2RpZmllcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIGlmIChQTEFURk9STVMuaW5kZXhPZihtb2RpZmllcikgIT0gLTEpIHsKLSAgICAg
ICAgICAgIGFsbFBsYXRmb3Jtcy5wdXNoKG1vZGlmaWVyKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKG1vZGlmaWVyIGluIFBMQVRGT1JNX1VO
SU9OUykgewotICAgICAgICAgICAgUExBVEZPUk1fVU5JT05TW21vZGlmaWVyXS5mb3JFYWNoKGZ1
bmN0aW9uKHBsYXRmb3JtKSB7Ci0gICAgICAgICAgICAgICAgYWxsUGxhdGZvcm1zLnB1c2gocGxh
dGZvcm0pOwotICAgICAgICAgICAgfSk7CisKKyAgICAgICAgaWYgKHBsYXRmb3JtT2JqZWN0LnBs
YXRmb3JtTW9kaWZpZXJVbmlvbnMgJiYgbW9kaWZpZXIgaW4gcGxhdGZvcm1PYmplY3QucGxhdGZv
cm1Nb2RpZmllclVuaW9ucykgeworICAgICAgICAgICAgcGxhdGZvcm1PYmplY3QucGxhdGZvcm1N
b2RpZmllclVuaW9uc1ttb2RpZmllcl0uZm9yRWFjaChmdW5jdGlvbihwbGF0Zm9ybUluVW5pb24p
IHsKKyAgICAgICAgICAgICAgICBhbGxQbGF0Zm9ybXMucHVzaChwbGF0Zm9ybSArICdfJyArIHBs
YXRmb3JtSW5Vbmlvbik7CisgICAgICAgICAgICB9KQogICAgICAgICB9CiAgICAgfSkKLSAgICAK
LSAgICBpZiAoIWFsbFBsYXRmb3Jtcy5sZW5ndGgpCi0gICAgICAgIGFsbFBsYXRmb3JtcyA9IFBM
QVRGT1JNUzsKLSAgICAgICAgCisKKyAgICBpZiAoIWFsbFBsYXRmb3Jtcy5sZW5ndGgpIHsKKyAg
ICAgICAgaWYgKHBsYXRmb3JtT2JqZWN0LnN1YlBsYXRmb3JtcykKKyAgICAgICAgICAgIE9iamVj
dC5rZXlzKHBsYXRmb3JtT2JqZWN0LnN1YlBsYXRmb3JtcykuZm9yRWFjaChmdW5jdGlvbihzdWJQ
bGF0Zm9ybSkgeworICAgICAgICAgICAgICAgIGFsbFBsYXRmb3Jtcy5wdXNoKHBsYXRmb3JtICsg
J18nICsgc3ViUGxhdGZvcm0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGFsbFBsYXRmb3Jtcy5wdXNoKHBsYXRmb3JtKTsKKyAgICB9CisKICAgICBpZiAoIWFs
bEJ1aWxkVHlwZXMubGVuZ3RoKQogICAgICAgICBhbGxCdWlsZFR5cGVzID0gT2JqZWN0LmtleXMo
QlVJTERfVFlQRVMpOwotICAgIAorCiAgICAgYWxsUGxhdGZvcm1zLmZvckVhY2goZnVuY3Rpb24o
cGxhdGZvcm0pIHsKICAgICAgICAgaWYgKCFnX2FsbEV4cGVjdGF0aW9uc1t0ZXN0XVtwbGF0Zm9y
bV0pCiAgICAgICAgICAgICBnX2FsbEV4cGVjdGF0aW9uc1t0ZXN0XVtwbGF0Zm9ybV0gPSB7fTsK
QEAgLTU3OSwxMyArNzI3LDEwIEBAIGZ1bmN0aW9uIGFkZFRlc3RUb0FsbEV4cGVjdGF0aW9ucyh0
ZXN0LCBleHBlY3RhdGlvbnMsIG1vZGlmaWVycykKIC8vIGJ1aWxkVHlwZSwgdGhlbiBBTEwuCiB2
YXIgZ19hbGxFeHBlY3RhdGlvbnM7CiAKLWZ1bmN0aW9uIHBhcnNlZEV4cGVjdGF0aW9ucygpCitm
dW5jdGlvbiBnZXRQYXJzZWRFeHBlY3RhdGlvbnMoZGF0YSkKIHsKLSAgICBpZiAoIWdfZXhwZWN0
YXRpb25zKQotICAgICAgICByZXR1cm4gW107Ci0gICAgCiAgICAgdmFyIGV4cGVjdGF0aW9ucyA9
IFtdOwotICAgIHZhciBsaW5lcyA9IGdfZXhwZWN0YXRpb25zLnNwbGl0KCdcbicpOworICAgIHZh
ciBsaW5lcyA9IGRhdGEuc3BsaXQoJ1xuJyk7CiAgICAgbGluZXMuZm9yRWFjaChmdW5jdGlvbihs
aW5lKSB7CiAgICAgICAgIGxpbmUgPSB0cmltU3RyaW5nKGxpbmUpOwogICAgICAgICBpZiAoIWxp
bmUgfHwgc3RhcnRzV2l0aChsaW5lLCAnIycpKQpAQCAtNjg2LDQxICs4MzEsNTggQEAgZnVuY3Rp
b24gcGFyc2VkRXhwZWN0YXRpb25zKCkKICAgICByZXR1cm4gZXhwZWN0YXRpb25zOwogfQogCi1m
dW5jdGlvbiBwcm9jZXNzRXhwZWN0YXRpb25zKCkKK2Z1bmN0aW9uIHByb2Nlc3NFeHBlY3RhdGlv
bnNGb3JQbGF0Zm9ybShwbGF0Zm9ybSwgZXhwZWN0YXRpb25zQXJyYXkpCiB7Ci0gICAgaWYgKGdf
YWxsRXhwZWN0YXRpb25zKQotICAgICAgICByZXR1cm4gZ19hbGxFeHBlY3RhdGlvbnM7Ci0KLSAg
ICBnX2FsbEV4cGVjdGF0aW9ucyA9IHt9OworICAgIGlmICghZ19hbGxFeHBlY3RhdGlvbnMpCisg
ICAgICAgIGdfYWxsRXhwZWN0YXRpb25zID0ge307CiAKLSAgICB2YXIgZXhwZWN0YXRpb25zQXJy
YXkgPSBwYXJzZWRFeHBlY3RhdGlvbnMoKTsKKyAgICBpZiAoIWV4cGVjdGF0aW9uc0FycmF5KQor
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBTb3J0IHRoZSBhcnJheSB0byBoaXQgbW9yZSBzcGVj
aWZpYyBwYXRocyBsYXN0LiBNb3JlIHNwZWNpZmljCiAgICAgLy8gcGF0aHMgKGUuZy4gZm9vL2Jh
ci9iYXouaHRtbCkgb3ZlcnJpZGUgZW50cmllcyBmb3IgbGVzcy1zcGVjaWZpYyBvbmVzIChlLmcu
IGZvby9iYXIpLgogICAgIGV4cGVjdGF0aW9uc0FycmF5LnNvcnQoYWxwaGFudW1lcmljQ29tcGFy
ZSgncGF0aCcpKTsKIAotICAgIHZhciBhbGxUZXN0cyA9IGdldEFsbFRlc3RzKCk7CiAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBleHBlY3RhdGlvbnNBcnJheS5sZW5ndGg7IGkrKykgewogICAgICAg
ICB2YXIgcGF0aCA9IGV4cGVjdGF0aW9uc0FycmF5W2ldLnBhdGg7CiAgICAgICAgIHZhciBtb2Rp
ZmllcnMgPSBleHBlY3RhdGlvbnNBcnJheVtpXS5tb2RpZmllcnM7CiAgICAgICAgIHZhciBleHBl
Y3RhdGlvbnMgPSBleHBlY3RhdGlvbnNBcnJheVtpXS5leHBlY3RhdGlvbnM7CiAKLSAgICAgICAg
dmFyIHBhdGhNYXRjaGVzQW55VGVzdCA9IGZhbHNlOwotICAgICAgICBpZiAoYWxsVGVzdHNbcGF0
aF0pIHsKLSAgICAgICAgICAgIHBhdGhNYXRjaGVzQW55VGVzdCA9IHRydWU7Ci0gICAgICAgICAg
ICBhZGRUZXN0VG9BbGxFeHBlY3RhdGlvbnMocGF0aCwgZXhwZWN0YXRpb25zLCBtb2RpZmllcnMp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZm9yICh2YXIgdGVzdCBpbiBhbGxUZXN0
cykgewotICAgICAgICAgICAgICAgIGlmIChzdGFydHNXaXRoKHRlc3QsIHBhdGgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHBhdGhNYXRjaGVzQW55VGVzdCA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgICAgIGFkZFRlc3RUb0FsbEV4cGVjdGF0aW9ucyh0ZXN0LCBleHBlY3RhdGlvbnMsIG1vZGlm
aWVycyk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICBnZXRBbGxUZXN0c1RyaWUoKS5mb3JF
YWNoKGZ1bmN0aW9uKHRyaWVQYXRoKSB7CisgICAgICAgICAgICBhZGRUZXN0VG9BbGxFeHBlY3Rh
dGlvbnNGb3JQbGF0Zm9ybSh0cmllUGF0aCwgcGxhdGZvcm0sIGV4cGVjdGF0aW9ucywgbW9kaWZp
ZXJzKTsKKyAgICAgICAgfSwgcGF0aCk7CisgICAgfQorfQorCitmdW5jdGlvbiBwcm9jZXNzRXhw
ZWN0YXRpb25zKCkKK3sKKyAgICBpZiAoIWdfZXhwZWN0YXRpb25zQnlQbGF0Zm9ybSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgdmFyIHN0YXJ0ID0gRGF0ZS5ub3coKTsKKworICAgIHRyYXZlcnNl
UGxhdGZvcm1zVHJlZShmdW5jdGlvbihwbGF0Zm9ybSwgcGxhdGZvcm1OYW1lKSB7CisgICAgICAg
IGlmIChwbGF0Zm9ybS5wbGF0Zm9ybU1vZGlmaWVyVW5pb25zKSB7CisgICAgICAgICAgICBwcm9j
ZXNzRXhwZWN0YXRpb25zRm9yUGxhdGZvcm0ocGxhdGZvcm1OYW1lLCBnX2V4cGVjdGF0aW9uc0J5
UGxhdGZvcm1bcGxhdGZvcm1OYW1lXSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAocGxhdGZvcm0uZmFsbGJhY2tQbGF0Zm9ybXMpIHsKKyAgICAg
ICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcGxhdGZvcm0uZmFsbGJhY2tQbGF0Zm9ybXMubGVu
Z3RoOyBqKyspIHsKKyAgICAgICAgICAgICAgICB2YXIgZmFsbGJhY2tQbGF0Zm9ybSA9IHBsYXRm
b3JtLmZhbGxiYWNrUGxhdGZvcm1zW2pdOworICAgICAgICAgICAgICAgIGlmIChmYWxsYmFja1Bs
YXRmb3JtIGluIGdfZXhwZWN0YXRpb25zQnlQbGF0Zm9ybSkKKyAgICAgICAgICAgICAgICAgICAg
cHJvY2Vzc0V4cGVjdGF0aW9uc0ZvclBsYXRmb3JtKHBsYXRmb3JtTmFtZSwgZ19leHBlY3RhdGlv
bnNCeVBsYXRmb3JtW2ZhbGxiYWNrUGxhdGZvcm1dKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIGlmICghcGF0aE1hdGNoZXNBbnlUZXN0KQotICAgICAgICAgICAgYWRkVGVz
dFRvQWxsRXhwZWN0YXRpb25zKHBhdGgsIGV4cGVjdGF0aW9ucywgbW9kaWZpZXJzKTsKLSAgICB9
CisgICAgICAgIGlmIChwbGF0Zm9ybU5hbWUgaW4gZ19leHBlY3RhdGlvbnNCeVBsYXRmb3JtKQor
ICAgICAgICAgICAgcHJvY2Vzc0V4cGVjdGF0aW9uc0ZvclBsYXRmb3JtKHBsYXRmb3JtTmFtZSwg
Z19leHBlY3RhdGlvbnNCeVBsYXRmb3JtW3BsYXRmb3JtTmFtZV0pOworCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0pOworCisgICAgZ19leHBlY3RhdGlvbnNCeVBsYXRmb3JtID0gdW5kZWZp
bmVkOworICAgIGxvZ1RpbWUoJ3Byb2Nlc3NFeHBlY3RhdGlvbnM6ICcsIHN0YXJ0KTsKIH0KIAog
ZnVuY3Rpb24gcHJvY2Vzc01pc3NpbmdUZXN0c1dpdGhFeHBlY3RhdGlvbnMoYnVpbGRlciwgcGxh
dGZvcm0sIGJ1aWxkVHlwZSkKQEAgLTc3Niw4ICs5MzgsOCBAQCBmdW5jdGlvbiBwcm9jZXNzVGVz
dFJ1bnNGb3JCdWlsZGVyKGJ1aWxkZXJOYW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgdmFyIHN0YXJ0ID0gRGF0ZS5ub3coKTsKICAgICBwcm9jZXNzRXhwZWN0YXRpb25zKCk7Cisg
ICAgdmFyIHN0YXJ0ID0gRGF0ZS5ub3coKTsKIAogICAgIHZhciBidWlsZEluZm8gPSBwbGF0Zm9y
bUFuZEJ1aWxkVHlwZShidWlsZGVyTmFtZSk7CiAgICAgdmFyIHBsYXRmb3JtID0gYnVpbGRJbmZv
LnBsYXRmb3JtOwpAQCAtMTQxNyw3ICsxNTc5LDE5IEBAIGZ1bmN0aW9uIHJlYWxNb2RpZmllcnMo
bW9kaWZpZXJTdHJpbmcpCiB7CiAgICAgdmFyIG1vZGlmaWVycyA9IG1vZGlmaWVyU3RyaW5nLnNw
bGl0KCcgJyk7OwogICAgIHJldHVybiBtb2RpZmllcnMuZmlsdGVyKGZ1bmN0aW9uKG1vZGlmaWVy
KSB7Ci0gICAgICAgIHJldHVybiAhKG1vZGlmaWVyIGluIEJVSUxEX1RZUEVTKSAmJiBQTEFURk9S
TVMuaW5kZXhPZihtb2RpZmllcikgPT0gLTEgJiYgIShtb2RpZmllciBpbiBQTEFURk9STV9VTklP
TlMpICYmICFzdGFydHNXaXRoKG1vZGlmaWVyLCAnQlVHJyk7CisgICAgICAgIGlmIChtb2RpZmll
ciBpbiBCVUlMRF9UWVBFUyB8fCBzdGFydHNXaXRoKG1vZGlmaWVyLCAnQlVHJykpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdmFyIG1hdGNoZXNTdWJQbGF0Zm9ybSA9IGZh
bHNlOworICAgICAgICB0cmF2ZXJzZVBsYXRmb3Jtc1RyZWUoZnVuY3Rpb24ocGxhdGZvcm0sIHBs
YXRmb3JtTmFtZSkgeworICAgICAgICAgICAgaWYgKG1hdGNoZXNTdWJQbGF0Zm9ybSB8fCAhcGxh
dGZvcm0ucGxhdGZvcm1Nb2RpZmllclVuaW9ucykKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgICAgIG1hdGNoZXNTdWJQbGF0Zm9ybSA9IG1vZGlmaWVyIGluIHBsYXRm
b3JtLnBsYXRmb3JtTW9kaWZpZXJVbmlvbnMgfHwgbW9kaWZpZXIgaW4gcGxhdGZvcm0uc3ViUGxh
dGZvcm1zOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9KTsKKworICAgICAg
ICByZXR1cm4gIW1hdGNoZXNTdWJQbGF0Zm9ybTsKICAgICB9KS5qb2luKCcgJyk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2lu
ZXNzX2Rhc2hib2FyZF91bml0dGVzdHMuanMgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRp
Yy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmRfdW5pdHRlc3RzLmpzCmluZGV4IGQxZTIy
NDNlYzVlMWQ4NDhjNjEyNjVlZmJiMWY2YWU2ZTU0MWRlZmYuLjhhZjE1ZTM5NTcwMmQ4YjczOGI5
OTE4MmFlZjAzNWVlODUxMTM2ZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIv
c3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZF91bml0dGVzdHMuanMKKysrIGIv
VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJv
YXJkX3VuaXR0ZXN0cy5qcwpAQCAtMzAsMTEgKzMwLDExIEBAIGZ1bmN0aW9uIHJlc2V0R2xvYmFs
cygpCiB7CiAgICAgYWxsRXhwZWN0YXRpb25zID0gbnVsbDsKICAgICBhbGxUZXN0cyA9IG51bGw7
Ci0gICAgZ19leHBlY3RhdGlvbnMgPSAnJzsKKyAgICBnX2V4cGVjdGF0aW9uc0J5UGxhdGZvcm0g
PSB7fTsKICAgICBnX3Jlc3VsdHNCeUJ1aWxkZXIgPSB7fTsKICAgICBnX2J1aWxkZXJzID0ge307
CiAgICAgZ19hbGxFeHBlY3RhdGlvbnMgPSBudWxsOwotICAgIGdfYWxsVGVzdHMgPSBudWxsOwor
ICAgIGdfYWxsVGVzdHNUcmllID0gbnVsbDsKICAgICBnX2N1cnJlbnRTdGF0ZSA9IHt9OwogICAg
IGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZSA9IHt9OwogICAgIGZvciAodmFyIGtleSBpbiBnX2RlZmF1
bHRDcm9zc0Rhc2hib2FyZFN0YXRlVmFsdWVzKQpAQCAtODQsNyArODQsNyBAQCB0ZXN0KCdyZWxl
YXNlRmFpbCcsIDIsIGZ1bmN0aW9uKCkgewogICAgIHZhciBleHBlY3RhdGlvbnNBcnJheSA9IFsK
ICAgICAgICAgeydtb2RpZmllcnMnOiAnUkVMRUFTRScsICdleHBlY3RhdGlvbnMnOiAnRkFJTCd9
CiAgICAgXTsKLSAgICBnX2V4cGVjdGF0aW9ucyA9ICdbIFJlbGVhc2UgXSAnICsgdGVzdCArICcg
WyBGYWlsdXJlIF0nOworICAgIGdfZXhwZWN0YXRpb25zQnlQbGF0Zm9ybVsnQ0hST01JVU0nXSA9
IGdldFBhcnNlZEV4cGVjdGF0aW9ucygnWyBSZWxlYXNlIF0gJyArIHRlc3QgKyAnIFsgRmFpbHVy
ZSBdJyk7CiAgICAgcnVuRXhwZWN0YXRpb25zVGVzdChidWlsZGVyLCB0ZXN0LCAnRkFJTCcsICdS
RUxFQVNFJyk7CiB9KTsKIApAQCAtOTYsOCArOTYsOCBAQCB0ZXN0KCdyZWxlYXNlRmFpbERlYnVn
Q3Jhc2hSZWxlYXNlQnVpbGRlcicsIDIsIGZ1bmN0aW9uKCkgewogICAgICAgICB7J21vZGlmaWVy
cyc6ICdSRUxFQVNFJywgJ2V4cGVjdGF0aW9ucyc6ICdGQUlMJ30sCiAgICAgICAgIHsnbW9kaWZp
ZXJzJzogJ0RFQlVHJywgJ2V4cGVjdGF0aW9ucyc6ICdDUkFTSCd9CiAgICAgXTsKLSAgICBnX2V4
cGVjdGF0aW9ucyA9ICdbIFJlbGVhc2UgXSAnICsgdGVzdCArICcgWyBGYWlsdXJlIF1cbicgKwot
ICAgICAgICAnWyBEZWJ1ZyBdICcgKyB0ZXN0ICsgJyBbIENyYXNoIF0nOworICAgIGdfZXhwZWN0
YXRpb25zQnlQbGF0Zm9ybVsnQ0hST01JVU0nXSA9IGdldFBhcnNlZEV4cGVjdGF0aW9ucygnWyBS
ZWxlYXNlIF0gJyArIHRlc3QgKyAnIFsgRmFpbHVyZSBdXG4nICsKKyAgICAgICAgJ1sgRGVidWcg
XSAnICsgdGVzdCArICcgWyBDcmFzaCBdJyk7CiAgICAgcnVuRXhwZWN0YXRpb25zVGVzdChidWls
ZGVyLCB0ZXN0LCAnRkFJTCcsICdSRUxFQVNFJyk7CiB9KTsKIApAQCAtMTA5LDE3ICsxMDksMTcg
QEAgdGVzdCgncmVsZWFzZUZhaWxEZWJ1Z0NyYXNoRGVidWdCdWlsZGVyJywgMiwgZnVuY3Rpb24o
KSB7CiAgICAgICAgIHsnbW9kaWZpZXJzJzogJ1JFTEVBU0UnLCAnZXhwZWN0YXRpb25zJzogJ0ZB
SUwnfSwKICAgICAgICAgeydtb2RpZmllcnMnOiAnREVCVUcnLCAnZXhwZWN0YXRpb25zJzogJ0NS
QVNIJ30KICAgICBdOwotICAgIGdfZXhwZWN0YXRpb25zID0gJ1sgUmVsZWFzZSBdICcgKyB0ZXN0
ICsgJyBbIEZhaWx1cmUgXVxuJyArCi0gICAgICAgICdbIERlYnVnIF0gJyArIHRlc3QgKyAnIFsg
Q3Jhc2ggXSc7CisgICAgZ19leHBlY3RhdGlvbnNCeVBsYXRmb3JtWydDSFJPTUlVTSddID0gZ2V0
UGFyc2VkRXhwZWN0YXRpb25zKCdbIFJlbGVhc2UgXSAnICsgdGVzdCArICcgWyBGYWlsdXJlIF1c
bicgKworICAgICAgICAnWyBEZWJ1ZyBdICcgKyB0ZXN0ICsgJyBbIENyYXNoIF0nKTsKICAgICBy
dW5FeHBlY3RhdGlvbnNUZXN0KGJ1aWxkZXIsIHRlc3QsICdDUkFTSCcsICdERUJVRycpOwogfSk7
CiAKIHRlc3QoJ292ZXJyaWRlSnVzdEJ1aWxkVHlwZScsIDEyLCBmdW5jdGlvbigpIHsKICAgICBy
ZXNldEdsb2JhbHMoKTsKICAgICB2YXIgdGVzdCA9ICdiYXIvMS5odG1sJzsKLSAgICBnX2V4cGVj
dGF0aW9ucyA9ICdiYXIgWyBXb250Rml4IEZhaWx1cmUgUGFzcyBUaW1lb3V0IF1cbicgKworICAg
IGdfZXhwZWN0YXRpb25zQnlQbGF0Zm9ybVsnQ0hST01JVU0nXSA9IGdldFBhcnNlZEV4cGVjdGF0
aW9ucygnYmFyIFsgV29udEZpeCBGYWlsdXJlIFBhc3MgVGltZW91dCBdXG4nICsKICAgICAgICAg
J1sgTWFjIF0gJyArIHRlc3QgKyAnIFsgV29udEZpeCBGYWlsdXJlIF1cbicgKwotICAgICAgICAn
WyBMaW51eCBEZWJ1ZyBdICcgKyB0ZXN0ICsgJyBbIENyYXNoIF0nOworICAgICAgICAnWyBMaW51
eCBEZWJ1ZyBdICcgKyB0ZXN0ICsgJyBbIENyYXNoIF0nKTsKICAgICAKICAgICBydW5FeHBlY3Rh
dGlvbnNUZXN0KCdXZWJraXQgV2luJywgdGVzdCwgJ0ZBSUwgUEFTUyBUSU1FT1VUJywgJ1dPTlRG
SVgnKTsKICAgICBydW5FeHBlY3RhdGlvbnNUZXN0KCdXZWJraXQgV2luIChkYmcpKDMpJywgdGVz
dCwgJ0ZBSUwgUEFTUyBUSU1FT1VUJywgJ1dPTlRGSVgnKTsKQEAgLTEyOSw3ICsxMjksNyBAQCB0
ZXN0KCdvdmVycmlkZUp1c3RCdWlsZFR5cGUnLCAxMiwgZnVuY3Rpb24oKSB7CiAgICAgcnVuRXhw
ZWN0YXRpb25zVGVzdCgnV2Via2l0IE1hYzEwLjcgKGRiZykoMyknLCB0ZXN0LCAnRkFJTCcsICdN
QUMgV09OVEZJWCcpOwogfSk7CiAKLXRlc3QoJ3BsYXRmb3JtQW5kQnVpbGRUeXBlJywgNzYsIGZ1
bmN0aW9uKCkgewordGVzdCgncGxhdGZvcm1BbmRCdWlsZFR5cGUnLCA3OCwgZnVuY3Rpb24oKSB7
CiAgICAgdmFyIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCA9IGZ1bmN0aW9uKGJ1aWxkZXIs
IGV4cGVjdGVkUGxhdGZvcm0sIGV4cGVjdGVkQnVpbGRUeXBlKSB7CiAgICAgICAgIGdfcGVyQnVp
bGRlclBsYXRmb3JtQW5kQnVpbGRUeXBlID0ge307CiAgICAgICAgIGJ1aWxkSW5mbyA9IHBsYXRm
b3JtQW5kQnVpbGRUeXBlKGJ1aWxkZXIpOwpAQCAtMTM3LDUxICsxMzcsNTIgQEAgdGVzdCgncGxh
dGZvcm1BbmRCdWlsZFR5cGUnLCA3NiwgZnVuY3Rpb24oKSB7CiAgICAgICAgIGVxdWFsKGJ1aWxk
SW5mby5wbGF0Zm9ybSwgZXhwZWN0ZWRQbGF0Zm9ybSwgbWVzc2FnZSk7CiAgICAgICAgIGVxdWFs
KGJ1aWxkSW5mby5idWlsZFR5cGUsIGV4cGVjdGVkQnVpbGRUeXBlLCBtZXNzYWdlKTsKICAgICB9
Ci0gICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgV2luIChkZXBzKScsICdY
UCcsICdSRUxFQVNFJyk7Ci0gICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQg
V2luIChkZXBzKShkYmcpKDEpJywgJ1hQJywgJ0RFQlVHJyk7Ci0gICAgcnVuUGxhdGZvcm1BbmRC
dWlsZFR5cGVUZXN0KCdXZWJraXQgV2luIChkZXBzKShkYmcpKDIpJywgJ1hQJywgJ0RFQlVHJyk7
Ci0gICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgTGludXggKGRlcHMpJywg
J0xVQ0lEJywgJ1JFTEVBU0UnKTsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dl
YmtpdCBMaW51eCAoZGVwcykoZGJnKSgxKScsICdMVUNJRCcsICdERUJVRycpOwotICAgIHJ1blBs
YXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IExpbnV4IChkZXBzKShkYmcpKDIpJywgJ0xV
Q0lEJywgJ0RFQlVHJyk7Ci0gICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQg
TWFjMTAuNiAoZGVwcyknLCAnU05PV0xFT1BBUkQnLCAnUkVMRUFTRScpOwotICAgIHJ1blBsYXRm
b3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IE1hYzEwLjYgKGRlcHMpKGRiZykoMSknLCAnU05P
V0xFT1BBUkQnLCAnREVCVUcnKTsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dl
YmtpdCBNYWMxMC42IChkZXBzKShkYmcpKDIpJywgJ1NOT1dMRU9QQVJEJywgJ0RFQlVHJyk7Ci0g
ICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgV2luJywgJ1hQJywgJ1JFTEVB
U0UnKTsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBXaW43JywgJ1dJ
TjcnLCAnUkVMRUFTRScpOwotICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0
IFdpbiAoZGJnKSgxKScsICdYUCcsICdERUJVRycpOwotICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRU
eXBlVGVzdCgnV2Via2l0IFdpbiAoZGJnKSgyKScsICdYUCcsICdERUJVRycpOwotICAgIHJ1blBs
YXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IExpbnV4JywgJ0xVQ0lEJywgJ1JFTEVBU0Un
KTsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBMaW51eCAzMicsICdM
VUNJRCcsICdSRUxFQVNFJyk7Ci0gICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJr
aXQgTGludXggKGRiZykoMSknLCAnTFVDSUQnLCAnREVCVUcnKTsKLSAgICBydW5QbGF0Zm9ybUFu
ZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBMaW51eCAoZGJnKSgyKScsICdMVUNJRCcsICdERUJVRycp
OwotICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IE1hYzEwLjYnLCAnU05P
V0xFT1BBUkQnLCAnUkVMRUFTRScpOwotICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgn
V2Via2l0IE1hYzEwLjYgKGRiZyknLCAnU05PV0xFT1BBUkQnLCAnREVCVUcnKTsKLSAgICBydW5Q
bGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1hQIFRlc3RzJywgJ1hQJywgJ1JFTEVBU0UnKTsKLSAg
ICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0ludGVyYWN0aXZlIFRlc3RzIChkYmcpJywg
J1hQJywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQg
V2luIChkZXBzKScsICdDSFJPTUlVTV9YUCcsICdSRUxFQVNFJyk7CisgICAgcnVuUGxhdGZvcm1B
bmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgV2luIChkZXBzKShkYmcpKDEpJywgJ0NIUk9NSVVNX1hQ
JywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgV2lu
IChkZXBzKShkYmcpKDIpJywgJ0NIUk9NSVVNX1hQJywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZv
cm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgTGludXggKGRlcHMpJywgJ0NIUk9NSVVNX0xVQ0lE
JywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBM
aW51eCAoZGVwcykoZGJnKSgxKScsICdDSFJPTUlVTV9MVUNJRCcsICdERUJVRycpOworICAgIHJ1
blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IExpbnV4IChkZXBzKShkYmcpKDIpJywg
J0NIUk9NSVVNX0xVQ0lEJywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVU
ZXN0KCdXZWJraXQgTWFjMTAuNiAoZGVwcyknLCAnQ0hST01JVU1fU05PV0xFT1BBUkQnLCAnUkVM
RUFTRScpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IE1hYzEwLjYg
KGRlcHMpKGRiZykoMSknLCAnQ0hST01JVU1fU05PV0xFT1BBUkQnLCAnREVCVUcnKTsKKyAgICBy
dW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBNYWMxMC42IChkZXBzKShkYmcpKDIp
JywgJ0NIUk9NSVVNX1NOT1dMRU9QQVJEJywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRC
dWlsZFR5cGVUZXN0KCdXZWJraXQgV2luJywgJ0NIUk9NSVVNX1hQJywgJ1JFTEVBU0UnKTsKKyAg
ICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBXaW43JywgJ0NIUk9NSVVNX1dJ
TjcnLCAnUkVMRUFTRScpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0
IFdpbiAoZGJnKSgxKScsICdDSFJPTUlVTV9YUCcsICdERUJVRycpOworICAgIHJ1blBsYXRmb3Jt
QW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IFdpbiAoZGJnKSgyKScsICdDSFJPTUlVTV9YUCcsICdE
RUJVRycpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IExpbnV4Jywg
J0NIUk9NSVVNX0xVQ0lEJywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlw
ZVRlc3QoJ1dlYmtpdCBMaW51eCAzMicsICdDSFJPTUlVTV9MVUNJRCcsICdSRUxFQVNFJyk7Cisg
ICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgTGludXggKGRiZykoMSknLCAn
Q0hST01JVU1fTFVDSUQnLCAnREVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRl
c3QoJ1dlYmtpdCBMaW51eCAoZGJnKSgyKScsICdDSFJPTUlVTV9MVUNJRCcsICdERUJVRycpOwor
ICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IE1hYzEwLjYnLCAnQ0hST01J
VU1fU05PV0xFT1BBUkQnLCAnUkVMRUFTRScpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBl
VGVzdCgnV2Via2l0IE1hYzEwLjYgKGRiZyknLCAnQ0hST01JVU1fU05PV0xFT1BBUkQnLCAnREVC
VUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1hQIFRlc3RzJywgJ0NIUk9N
SVVNX1hQJywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0lu
dGVyYWN0aXZlIFRlc3RzIChkYmcpJywgJ0NIUk9NSVVNX1hQJywgJ0RFQlVHJyk7CiAgICAgCiAg
ICAgZ19jcm9zc0Rhc2hib2FyZFN0YXRlLmdyb3VwID0gJ0BUb1QgLSB3ZWJraXQub3JnJzsKICAg
ICBnX2Nyb3NzRGFzaGJvYXJkU3RhdGUudGVzdFR5cGUgPSAnbGF5b3V0LXRlc3RzJzsKLSAgICBy
dW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0Nocm9taXVtIFdpbiBSZWxlYXNlIChUZXN0cykn
LCAnWFAnLCAnUkVMRUFTRScpOwotICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnQ2hy
b21pdW0gTGludXggUmVsZWFzZSAoVGVzdHMpJywgJ0xVQ0lEJywgJ1JFTEVBU0UnKTsKLSAgICBy
dW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0Nocm9taXVtIE1hYyBSZWxlYXNlIChUZXN0cykn
LCAnU05PV0xFT1BBUkQnLCAnUkVMRUFTRScpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBl
VGVzdCgnQ2hyb21pdW0gV2luIFJlbGVhc2UgKFRlc3RzKScsICdDSFJPTUlVTV9YUCcsICdSRUxF
QVNFJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdDaHJvbWl1bSBMaW51eCBS
ZWxlYXNlIChUZXN0cyknLCAnQ0hST01JVU1fTFVDSUQnLCAnUkVMRUFTRScpOworICAgIHJ1blBs
YXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnQ2hyb21pdW0gTWFjIFJlbGVhc2UgKFRlc3RzKScsICdD
SFJPTUlVTV9TTk9XTEVPUEFSRCcsICdSRUxFQVNFJyk7CiAgICAgCiAgICAgLy8gRklYTUU6IFRo
ZXNlIHBsYXRmb3JtcyBzaG91bGQgbWF0Y2ggd2hhdGV2ZXIgd2UgdXNlIGluIHRoZSBUZXN0RXhw
ZWN0YXRpb25zIGZvcm1hdC4KLSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0xpb24g
UmVsZWFzZSAoVGVzdHMpJywgJ0FQUExFX0xJT04nLCAnUkVMRUFTRScpOwotICAgIHJ1blBsYXRm
b3JtQW5kQnVpbGRUeXBlVGVzdCgnTGlvbiBEZWJ1ZyAoVGVzdHMpJywgJ0FQUExFX0xJT04nLCAn
REVCVUcnKTsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1Nub3dMZW9wYXJkIElu
dGVsIFJlbGVhc2UgKFRlc3RzKScsICdBUFBMRV9TTk9XTEVPUEFSRCcsICdSRUxFQVNFJyk7Ci0g
ICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdTbm93TGVvcGFyZCBJbnRlbCBMZWFrcycs
ICdBUFBMRV9TTk9XTEVPUEFSRCcsICdSRUxFQVNFJyk7Ci0gICAgcnVuUGxhdGZvcm1BbmRCdWls
ZFR5cGVUZXN0KCdTbm93TGVvcGFyZCBJbnRlbCBEZWJ1ZyAoVGVzdHMpJywgJ0FQUExFX1NOT1dM
RU9QQVJEJywgJ0RFQlVHJyk7Ci0gICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdHVEsg
TGludXggMzItYml0IFJlbGVhc2UnLCAnR1RLX0xJTlVYJywgJ1JFTEVBU0UnKTsKLSAgICBydW5Q
bGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0dUSyBMaW51eCAzMi1iaXQgRGVidWcnLCAnR1RLX0xJ
TlVYJywgJ0RFQlVHJyk7Ci0gICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdHVEsgTGlu
dXggNjQtYml0IERlYnVnJywgJ0dUS19MSU5VWCcsICdERUJVRycpOworICAgIHJ1blBsYXRmb3Jt
QW5kQnVpbGRUeXBlVGVzdCgnTGlvbiBSZWxlYXNlIChUZXN0cyknLCAnQVBQTEVfTUFDX0xJT05f
V0sxJywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0xpb24g
RGVidWcgKFRlc3RzKScsICdBUFBMRV9NQUNfTElPTl9XSzEnLCAnREVCVUcnKTsKKyAgICBydW5Q
bGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1Nub3dMZW9wYXJkIEludGVsIFJlbGVhc2UgKFRlc3Rz
KScsICdBUFBMRV9NQUNfU05PV0xFT1BBUkRfV0sxJywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0
Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1Nub3dMZW9wYXJkIEludGVsIExlYWtzJywgJ0FQUExFX01B
Q19TTk9XTEVPUEFSRF9XSzEnLCAnUkVMRUFTRScpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRU
eXBlVGVzdCgnU25vd0xlb3BhcmQgSW50ZWwgRGVidWcgKFRlc3RzKScsICdBUFBMRV9NQUNfU05P
V0xFT1BBUkRfV0sxJywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0
KCdHVEsgTGludXggMzItYml0IFJlbGVhc2UnLCAnR1RLX0xJTlVYX1dLMScsICdSRUxFQVNFJyk7
CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdHVEsgTGludXggMzItYml0IERlYnVn
JywgJ0dUS19MSU5VWF9XSzEnLCAnREVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlw
ZVRlc3QoJ0dUSyBMaW51eCA2NC1iaXQgRGVidWcnLCAnR1RLX0xJTlVYX1dLMScsICdERUJVRycp
OworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnR1RLIExpbnV4IDY0LWJpdCBEZWJ1
ZyBXSzInLCAnR1RLX0xJTlVYX1dLMicsICdERUJVRycpOwogICAgIHJ1blBsYXRmb3JtQW5kQnVp
bGRUeXBlVGVzdCgnUXQgTGludXggUmVsZWFzZScsICdRVF9MSU5VWCcsICdSRUxFQVNFJyk7Ci0g
ICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMp
JywgJ0FQUExFX1dJTjcnLCAnUkVMRUFTRScpOwotICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBl
VGVzdCgnV2luZG93cyBYUCBEZWJ1ZyAoVGVzdHMpJywgJ0FQUExFX1hQJywgJ0RFQlVHJyk7Cisg
ICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMp
JywgJ0FQUExFX1dJTl9XSU43JywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxk
VHlwZVRlc3QoJ1dpbmRvd3MgWFAgRGVidWcgKFRlc3RzKScsICdBUFBMRV9XSU5fWFAnLCAnREVC
VUcnKTsKICAgICAKICAgICAvLyBGSVhNRTogU2hvdWxkIFdlYktpdDIgYmUgaXQncyBvd24gcGxh
dGZvcm0/Ci0gICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdTbm93TGVvcGFyZCBJbnRl
bCBSZWxlYXNlIChXZWJLaXQyIFRlc3RzKScsICdBUFBMRV9TTk9XTEVPUEFSRCcsICdSRUxFQVNF
Jyk7Ci0gICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdTbm93TGVvcGFyZCBJbnRlbCBE
ZWJ1ZyAoV2ViS2l0MiBUZXN0cyknLCAnQVBQTEVfU05PV0xFT1BBUkQnLCAnREVCVUcnKTsKLSAg
ICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dpbmRvd3MgNyBSZWxlYXNlIChXZWJLaXQy
IFRlc3RzKScsICdBUFBMRV9XSU43JywgJ1JFTEVBU0UnKTsgICAgCisgICAgcnVuUGxhdGZvcm1B
bmRCdWlsZFR5cGVUZXN0KCdTbm93TGVvcGFyZCBJbnRlbCBSZWxlYXNlIChXZWJLaXQyIFRlc3Rz
KScsICdBUFBMRV9NQUNfU05PV0xFT1BBUkRfV0syJywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0
Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1Nub3dMZW9wYXJkIEludGVsIERlYnVnIChXZWJLaXQyIFRl
c3RzKScsICdBUFBMRV9NQUNfU05PV0xFT1BBUkRfV0syJywgJ0RFQlVHJyk7CisgICAgcnVuUGxh
dGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXaW5kb3dzIDcgUmVsZWFzZSAoV2ViS2l0MiBUZXN0cykn
LCAnQVBQTEVfV0lOX1dJTjcnLCAnUkVMRUFTRScpOyAgICAKIH0pOwogCiB0ZXN0KCdyZWFsTW9k
aWZpZXJzJywgMywgZnVuY3Rpb24oKSB7CkBAIC0xOTAsMTAgKzE5MSwxMyBAQCB0ZXN0KCdyZWFs
TW9kaWZpZXJzJywgMywgZnVuY3Rpb24oKSB7CiAgICAgZXF1YWwocmVhbE1vZGlmaWVycygnQlVH
KEZvbyknKSwgJycpOwogfSk7CiAKLXRlc3QoJ2FsbFRlc3RzV2l0aFNhbWVQbGF0Zm9ybUFuZEJ1
aWxkVHlwZScsIDE0LCBmdW5jdGlvbigpIHsKK3Rlc3QoJ2FsbFRlc3RzV2l0aFNhbWVQbGF0Zm9y
bUFuZEJ1aWxkVHlwZScsIDEsIGZ1bmN0aW9uKCkgewogICAgIC8vIEZJWE1FOiB0ZXN0IHRoYXQg
YWxsVGVzdHNXaXRoU2FtZVBsYXRmb3JtQW5kQnVpbGRUeXBlIGFjdHVhbGx5IHJldHVybnMgdGhl
IHJpZ2h0IHNldCBvZiB0ZXN0cy4KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IFBMQVRGT1JNUy5s
ZW5ndGg7IGkrKykKLSAgICAgICAgb2soZ19hbGxUZXN0c0J5UGxhdGZvcm1BbmRCdWlsZFR5cGVb
UExBVEZPUk1TW2ldXSk7CisgICAgdmFyIGV4cGVjdGVkUGxhdGZvcm1zTGlzdCA9IFsnQ0hST01J
VU1fTElPTicsICdDSFJPTUlVTV9TTk9XTEVPUEFSRCcsICdDSFJPTUlVTV9YUCcsICdDSFJPTUlV
TV9WSVNUQScsICdDSFJPTUlVTV9XSU43JywgJ0NIUk9NSVVNX0xVQ0lEJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdDSFJPTUlVTV9BTkRST0lEJywgJ0FQUExFX01BQ19MSU9O
X1dLMScsICdBUFBMRV9NQUNfTElPTl9XSzInLCAnQVBQTEVfTUFDX1NOT1dMRU9QQVJEX1dLMScs
ICdBUFBMRV9NQUNfU05PV0xFT1BBUkRfV0syJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdBUFBMRV9XSU5fWFAnLCAnQVBQTEVfV0lOX1dJTjcnLCAgJ0dUS19MSU5VWF9XSzEn
LCAnR1RLX0xJTlVYX1dLMicsICdRVF9MSU5VWCcsICdFRkxfTElOVVhfV0sxJywgJ0VGTF9MSU5V
WF9XSzInXTsKKyAgICB2YXIgYWN0dWFsUGxhdGZvcm1zTGlzdCA9IE9iamVjdC5rZXlzKGdfYWxs
VGVzdHNCeVBsYXRmb3JtQW5kQnVpbGRUeXBlKTsKKyAgICBkZWVwRXF1YWwoZXhwZWN0ZWRQbGF0
Zm9ybXNMaXN0LCBhY3R1YWxQbGF0Zm9ybXNMaXN0KTsKIH0pOwogCiB0ZXN0KCdmaWx0ZXJCdWdz
Jyw0LCBmdW5jdGlvbigpIHsKQEAgLTIwNiw2MyArMjEwLDc3IEBAIHRlc3QoJ2ZpbHRlckJ1Z3Mn
LDQsIGZ1bmN0aW9uKCkgewogICAgIGVxdWFsKGZpbHRlcmVkLmJ1Z3MsICcnKTsKIH0pOwogCi10
ZXN0KCdnZXRFeHBlY3RhdGlvbnMnLCAxMSwgZnVuY3Rpb24oKSB7Cit0ZXN0KCdnZXRFeHBlY3Rh
dGlvbnMnLCAxNCwgZnVuY3Rpb24oKSB7CiAgICAgcmVzZXRHbG9iYWxzKCk7CiAgICAgZ19idWls
ZGVyc1snV2ViS2l0IFdpbiddID0gdHJ1ZTsKICAgICBnX3Jlc3VsdHNCeUJ1aWxkZXIgPSB7CiAg
ICAgICAgICdXZWJLaXQgV2luJzogewogICAgICAgICAgICAgJ3Rlc3RzJzogewogICAgICAgICAg
ICAgICAgICdmb28vdGVzdDEuaHRtbCc6IHsncmVzdWx0cyc6IFtbMTAwLCAnRiddXSwgJ3RpbWVz
JzogW1sxMDAsIDBdXX0sCisgICAgICAgICAgICAgICAgJ2Zvby90ZXN0Mi5odG1sJzogeydyZXN1
bHRzJzogW1sxMDAsICdGJ11dLCAndGltZXMnOiBbWzEwMCwgMF1dfSwKICAgICAgICAgICAgICAg
ICAnZm9vL3Rlc3QzLmh0bWwnOiB7J3Jlc3VsdHMnOiBbWzEwMCwgJ0YnXV0sICd0aW1lcyc6IFtb
MTAwLCAwXV19LAogICAgICAgICAgICAgICAgICd0ZXN0MS5odG1sJzogeydyZXN1bHRzJzogW1sx
MDAsICdGJ11dLCAndGltZXMnOiBbWzEwMCwgMF1dfQogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQogCi0gICAgZ19leHBlY3RhdGlvbnMgPSAnQnVnKDEyMykgZm9vIFsgRmFpbHVyZSBQ
YXNzIENyYXNoIF1cbicgKworICAgIGdfZXhwZWN0YXRpb25zQnlQbGF0Zm9ybVsnQ0hST01JVU0n
XSA9IGdldFBhcnNlZEV4cGVjdGF0aW9ucygnQnVnKDEyMykgZm9vIFsgRmFpbHVyZSBQYXNzIENy
YXNoIF1cbicgKwogICAgICAgICAnQnVnKEZvbykgWyBSZWxlYXNlIF0gZm9vL3Rlc3QxLmh0bWwg
WyBGYWlsdXJlIF1cbicgKwogICAgICAgICAnWyBEZWJ1ZyBdIGZvby90ZXN0MS5odG1sIFsgQ3Jh
c2ggXVxuJyArCiAgICAgICAgICdCdWcoNDU2KSBmb28vdGVzdDIuaHRtbCBbIEZhaWx1cmUgXVxu
JyArCiAgICAgICAgICdbIExpbnV4IERlYnVnIF0gZm9vL3Rlc3QyLmh0bWwgWyBDcmFzaCBdXG4n
ICsKICAgICAgICAgJ1sgUmVsZWFzZSBdIHRlc3QxLmh0bWwgWyBGYWlsdXJlIF1cbicgKwotICAg
ICAgICAnWyBEZWJ1ZyBdIHRlc3QxLmh0bWwgWyBDcmFzaCBdXG4nICsKLSAgICAgICAgJ1sgV2lu
NyBdIGh0dHAvdGVzdHMvYXBwY2FjaGUvaW50ZXJydXB0ZWQtdXBkYXRlLmh0bWwgWyBUaW1lb3V0
IF1cbicgKwotICAgICAgICAnWyBNYWMgTGludXggWFAgXSBodHRwL3Rlc3RzL2FwcGNhY2hlL2lu
dGVycnVwdGVkLXVwZGF0ZS5odG1sIFsgRmFpbHVyZSBdXG4nOworICAgICAgICAnWyBEZWJ1ZyBd
IHRlc3QxLmh0bWwgWyBDcmFzaCBdXG4nKTsKKworICAgIGdfZXhwZWN0YXRpb25zQnlQbGF0Zm9y
bVsnR1RLJ10gPSBnZXRQYXJzZWRFeHBlY3RhdGlvbnMoJ0J1Zyg0MikgZm9vL3Rlc3QyLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF1cbicgKworICAgICAgICAnWyBEZWJ1ZyBdIHRlc3QxLmh0bWwg
WyBDcmFzaCBdXG4nKTsKKyAgICBnX2V4cGVjdGF0aW9uc0J5UGxhdGZvcm1bJ0dUS19MSU5VWF9X
SzEnXSA9IGdldFBhcnNlZEV4cGVjdGF0aW9ucygnWyBSZWxlYXNlIF0gZm9vL3Rlc3QxLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF1cbicgKworICAgICAgICAnQnVnKDc4OSkgZm9vL3Rlc3QyLmh0
bWwgWyBDcmFzaCBdXG4nKTsKKyAgICBnX2V4cGVjdGF0aW9uc0J5UGxhdGZvcm1bJ0dUS19MSU5V
WF9XSzInXSA9IGdldFBhcnNlZEV4cGVjdGF0aW9ucygnQnVnKDk4NykgZm9vL3Rlc3QyLmh0bWwg
WyBGYWlsdXJlIF1cbicpOwogCiAgICAgcHJvY2Vzc0V4cGVjdGF0aW9ucygpOwogICAgIAotICAg
IHZhciBleHBlY3RhdGlvbnMgPSBnZXRFeHBlY3RhdGlvbnMoJ2Zvby90ZXN0MS5odG1sJywgJ1hQ
JywgJ0RFQlVHJyk7CisgICAgdmFyIGV4cGVjdGF0aW9ucyA9IGdldEV4cGVjdGF0aW9ucygnZm9v
L3Rlc3QxLmh0bWwnLCAnQ0hST01JVU1fWFAnLCAnREVCVUcnKTsKICAgICBlcXVhbChKU09OLnN0
cmluZ2lmeShleHBlY3RhdGlvbnMpLCAneyJtb2RpZmllcnMiOiJERUJVRyIsImV4cGVjdGF0aW9u
cyI6IkNSQVNIIn0nKTsKIAotICAgIHZhciBleHBlY3RhdGlvbnMgPSBnZXRFeHBlY3RhdGlvbnMo
J2Zvby90ZXN0MS5odG1sJywgJ0xVQ0lEJywgJ1JFTEVBU0UnKTsKKyAgICB2YXIgZXhwZWN0YXRp
b25zID0gZ2V0RXhwZWN0YXRpb25zKCdmb28vdGVzdDEuaHRtbCcsICdDSFJPTUlVTV9MVUNJRCcs
ICdSRUxFQVNFJyk7CiAgICAgZXF1YWwoSlNPTi5zdHJpbmdpZnkoZXhwZWN0YXRpb25zKSwgJ3si
bW9kaWZpZXJzIjoiQnVnKEZvbykgUkVMRUFTRSIsImV4cGVjdGF0aW9ucyI6IkZBSUwifScpOwog
Ci0gICAgdmFyIGV4cGVjdGF0aW9ucyA9IGdldEV4cGVjdGF0aW9ucygnZm9vL3Rlc3QyLmh0bWwn
LCAnTFVDSUQnLCAnUkVMRUFTRScpOworICAgIHZhciBleHBlY3RhdGlvbnMgPSBnZXRFeHBlY3Rh
dGlvbnMoJ2Zvby90ZXN0Mi5odG1sJywgJ0NIUk9NSVVNX0xVQ0lEJywgJ1JFTEVBU0UnKTsKICAg
ICBlcXVhbChKU09OLnN0cmluZ2lmeShleHBlY3RhdGlvbnMpLCAneyJtb2RpZmllcnMiOiJCdWco
NDU2KSIsImV4cGVjdGF0aW9ucyI6IkZBSUwifScpOwogCi0gICAgdmFyIGV4cGVjdGF0aW9ucyA9
IGdldEV4cGVjdGF0aW9ucygnZm9vL3Rlc3QyLmh0bWwnLCAnTElPTicsICdERUJVRycpOworICAg
IHZhciBleHBlY3RhdGlvbnMgPSBnZXRFeHBlY3RhdGlvbnMoJ2Zvby90ZXN0Mi5odG1sJywgJ0NI
Uk9NSVVNX0xJT04nLCAnREVCVUcnKTsKICAgICBlcXVhbChKU09OLnN0cmluZ2lmeShleHBlY3Rh
dGlvbnMpLCAneyJtb2RpZmllcnMiOiJCdWcoNDU2KSIsImV4cGVjdGF0aW9ucyI6IkZBSUwifScp
OwogCi0gICAgdmFyIGV4cGVjdGF0aW9ucyA9IGdldEV4cGVjdGF0aW9ucygnZm9vL3Rlc3QyLmh0
bWwnLCAnTFVDSUQnLCAnREVCVUcnKTsKKyAgICB2YXIgZXhwZWN0YXRpb25zID0gZ2V0RXhwZWN0
YXRpb25zKCdmb28vdGVzdDIuaHRtbCcsICdDSFJPTUlVTV9MVUNJRCcsICdERUJVRycpOwogICAg
IGVxdWFsKEpTT04uc3RyaW5naWZ5KGV4cGVjdGF0aW9ucyksICd7Im1vZGlmaWVycyI6IkxJTlVY
IERFQlVHIiwiZXhwZWN0YXRpb25zIjoiQ1JBU0gifScpOwogCi0gICAgdmFyIGV4cGVjdGF0aW9u
cyA9IGdldEV4cGVjdGF0aW9ucygnZm9vL3Rlc3QzLmh0bWwnLCAnTFVDSUQnLCAnREVCVUcnKTsK
KyAgICB2YXIgZXhwZWN0YXRpb25zID0gZ2V0RXhwZWN0YXRpb25zKCdmb28vdGVzdDMuaHRtbCcs
ICdDSFJPTUlVTV9MVUNJRCcsICdERUJVRycpOwogICAgIGVxdWFsKEpTT04uc3RyaW5naWZ5KGV4
cGVjdGF0aW9ucyksICd7Im1vZGlmaWVycyI6IkJ1ZygxMjMpIiwiZXhwZWN0YXRpb25zIjoiRkFJ
TCBQQVNTIENSQVNIIn0nKTsKIAotICAgIHZhciBleHBlY3RhdGlvbnMgPSBnZXRFeHBlY3RhdGlv
bnMoJ3Rlc3QxLmh0bWwnLCAnWFAnLCAnREVCVUcnKTsKKyAgICB2YXIgZXhwZWN0YXRpb25zID0g
Z2V0RXhwZWN0YXRpb25zKCd0ZXN0MS5odG1sJywgJ0NIUk9NSVVNX1hQJywgJ0RFQlVHJyk7CiAg
ICAgZXF1YWwoSlNPTi5zdHJpbmdpZnkoZXhwZWN0YXRpb25zKSwgJ3sibW9kaWZpZXJzIjoiREVC
VUciLCJleHBlY3RhdGlvbnMiOiJDUkFTSCJ9Jyk7CiAKLSAgICB2YXIgZXhwZWN0YXRpb25zID0g
Z2V0RXhwZWN0YXRpb25zKCd0ZXN0MS5odG1sJywgJ0xVQ0lEJywgJ1JFTEVBU0UnKTsKKyAgICB2
YXIgZXhwZWN0YXRpb25zID0gZ2V0RXhwZWN0YXRpb25zKCd0ZXN0MS5odG1sJywgJ0NIUk9NSVVN
X0xVQ0lEJywgJ1JFTEVBU0UnKTsKICAgICBlcXVhbChKU09OLnN0cmluZ2lmeShleHBlY3RhdGlv
bnMpLCAneyJtb2RpZmllcnMiOiJSRUxFQVNFIiwiZXhwZWN0YXRpb25zIjoiRkFJTCJ9Jyk7CiAK
LSAgICB2YXIgZXhwZWN0YXRpb25zID0gZ2V0RXhwZWN0YXRpb25zKCdodHRwL3Rlc3RzL2FwcGNh
Y2hlL2ludGVycnVwdGVkLXVwZGF0ZS5odG1sJywgJ1dJTjcnLCAnUkVMRUFTRScpOwotICAgIGVx
dWFsKEpTT04uc3RyaW5naWZ5KGV4cGVjdGF0aW9ucyksICd7Im1vZGlmaWVycyI6IldJTjciLCJl
eHBlY3RhdGlvbnMiOiJUSU1FT1VUIn0nKTsKKyAgICB2YXIgZXhwZWN0YXRpb25zID0gZ2V0RXhw
ZWN0YXRpb25zKCdmb28vdGVzdDEuaHRtbCcsICdHVEtfTElOVVhfV0sxJywgJ1JFTEVBU0UnKTsK
KyAgICBlcXVhbChKU09OLnN0cmluZ2lmeShleHBlY3RhdGlvbnMpLCAneyJtb2RpZmllcnMiOiJS
RUxFQVNFIiwiZXhwZWN0YXRpb25zIjoiSU1BR0UifScpOworCisgICAgdmFyIGV4cGVjdGF0aW9u
cyA9IGdldEV4cGVjdGF0aW9ucygnZm9vL3Rlc3QyLmh0bWwnLCAnR1RLX0xJTlVYX1dLMScsICdE
RUJVRycpOworICAgIGVxdWFsKEpTT04uc3RyaW5naWZ5KGV4cGVjdGF0aW9ucyksICd7Im1vZGlm
aWVycyI6IkJ1Zyg3ODkpIiwiZXhwZWN0YXRpb25zIjoiQ1JBU0gifScpOworCisgICAgdmFyIGV4
cGVjdGF0aW9ucyA9IGdldEV4cGVjdGF0aW9ucygndGVzdDEuaHRtbCcsICdHVEtfTElOVVhfV0sx
JywgJ0RFQlVHJyk7CisgICAgZXF1YWwoSlNPTi5zdHJpbmdpZnkoZXhwZWN0YXRpb25zKSwgJ3si
bW9kaWZpZXJzIjoiREVCVUciLCJleHBlY3RhdGlvbnMiOiJDUkFTSCJ9Jyk7CisKKyAgICB2YXIg
ZXhwZWN0YXRpb25zID0gZ2V0RXhwZWN0YXRpb25zKCdmb28vdGVzdDIuaHRtbCcsICdHVEtfTElO
VVhfV0syJywgJ0RFQlVHJyk7CisgICAgZXF1YWwoSlNPTi5zdHJpbmdpZnkoZXhwZWN0YXRpb25z
KSwgJ3sibW9kaWZpZXJzIjoiQnVnKDk4NykiLCJleHBlY3RhdGlvbnMiOiJGQUlMIn0nKTsKIAot
ICAgIHZhciBleHBlY3RhdGlvbnMgPSBnZXRFeHBlY3RhdGlvbnMoJ2h0dHAvdGVzdHMvYXBwY2Fj
aGUvaW50ZXJydXB0ZWQtdXBkYXRlLmh0bWwnLCAnTElPTicsICdSRUxFQVNFJyk7Ci0gICAgZXF1
YWwoSlNPTi5zdHJpbmdpZnkoZXhwZWN0YXRpb25zKSwgJ3sibW9kaWZpZXJzIjoiTUFDIExJTlVY
IFhQIiwiZXhwZWN0YXRpb25zIjoiRkFJTCJ9Jyk7CisgICAgdmFyIGV4cGVjdGF0aW9ucyA9IGdl
dEV4cGVjdGF0aW9ucygnZm9vL3Rlc3QyLmh0bWwnLCAnR1RLX0xJTlVYX1dLMicsICdSRUxFQVNF
Jyk7CisgICAgZXF1YWwoSlNPTi5zdHJpbmdpZnkoZXhwZWN0YXRpb25zKSwgJ3sibW9kaWZpZXJz
IjoiQnVnKDk4NykiLCJleHBlY3RhdGlvbnMiOiJGQUlMIn0nKTsKIAotICAgIHZhciBleHBlY3Rh
dGlvbnMgPSBnZXRFeHBlY3RhdGlvbnMoJ2h0dHAvdGVzdHMvYXBwY2FjaGUvaW50ZXJydXB0ZWQt
dXBkYXRlLmh0bWwnLCAnTFVDSUQnLCAnUkVMRUFTRScpOwotICAgIGVxdWFsKEpTT04uc3RyaW5n
aWZ5KGV4cGVjdGF0aW9ucyksICd7Im1vZGlmaWVycyI6Ik1BQyBMSU5VWCBYUCIsImV4cGVjdGF0
aW9ucyI6IkZBSUwifScpOworICAgIHZhciBleHBlY3RhdGlvbnMgPSBnZXRFeHBlY3RhdGlvbnMo
J3Rlc3QxLmh0bWwnLCAnR1RLX0xJTlVYX1dLMicsICdERUJVRycpOworICAgIGVxdWFsKEpTT04u
c3RyaW5naWZ5KGV4cGVjdGF0aW9ucyksICd7Im1vZGlmaWVycyI6IkRFQlVHIiwiZXhwZWN0YXRp
b25zIjoiQ1JBU0gifScpOwogfSk7CiAKIHRlc3QoJ3N1YnN0cmluZ0xpc3QnLCAyLCBmdW5jdGlv
bigpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168403</attachid>
            <date>2012-10-12 05:33:58 -0700</date>
            <delta_ts>2012-10-12 14:41:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98422-20121012053254.patch</filename>
            <type>text/plain</type>
            <size>48411</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMTU5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWEzZGJjNTBmOGJjNDY3OTgwMjUyMWNhOWQzZjE2OTg0
MGI0ZjBhMi4uNWRjMGEzZTBlNzU2YmE4YzgzMmM2ZTk0MDFlNmRhNjM1ODdiMDI2MiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3
IEBACisyMDEyLTEwLTEyICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisK
KyAgICAgICAgW1Rlc3RSZXN1bHRTZXJ2ZXJdIEFkZCBzdXBwb3J0IGZvciBub24tQ2hyb21pdW0g
VGVzdEV4cGVjdGF0aW9ucyBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTg0MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBMb2FkcyBUZXN0RXhwZWN0YXRpb25zIGZpbGVzIGZvciBzZXZlcmFsIG90
aGVyIG5vbi1DaHJvbWl1bSBwb3J0cywgcGFyc2VzIHRoZW0gYW5kCisgICAgICAgIHByb3Blcmx5
IGRpc3RyaWJ1dGVzIHRoZW0gcGVyIHZhcmlvdXMgcGxhdGZvcm1zLgorCisgICAgICAgICogVGVz
dFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNoYm9hcmRfYmFzZS5qczogZ19leHBl
Y3RhdGlvbnMgaXMgcmVwbGFjZWQgYnkKKyAgICAgICAgZ19leHBlY3RhdGlvbnNCeVBsYXRmb3Jt
LCBhbiBvYmplY3QgdGhhdCBob2xkcyByYXcgVGVzdEV4cGVjdGF0aW9ucyBmaWxlIGNvbnRlbnRz
IGZvcgorICAgICAgICB2YXJpb3VzIHBsYXRmb3Jtcy4KKyAgICAgICAgKHJlcXVlc3RFeHBlY3Rh
dGlvbnNGaWxlcyk6IEZpcnN0IHRyYXZlcnNlcyB0aHJvdWdoIHRoZSBwbGF0Zm9ybXMgdHJlZSB0
byBnYXRoZXIgYWxsCisgICAgICAgIHRoZSBUZXN0RXhwZWN0YXRpb25zIGZpbGVzIHRoYXQgc2hv
dWxkIGJlIGxvYWRlZCwgdGhlbiBsb2FkcyB0aGVtIGluIHBhcmFsbGVsLgorICAgICAgICAoYXBw
ZW5kSlNPTlNjcmlwdEVsZW1lbnRzKToKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0YXRp
Yy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuanM6IFRoZSBwbGF0Zm9ybXMgdHJlZSBp
cyByZW9yZ2FuaXplZAorICAgICAgICB0byBkZXNjcmliZSBlYWNoIHBsYXRmb3JtIGFuZCBwb3Nz
aWJsZSBzdWJwbGF0Zm9ybXMgcGxhaW5seSB5ZXQgaW4gZGV0YWlsLiBUaGUgUExBVEZPUk1fRkFM
TEJBQ0tTCisgICAgICAgIG9iamVjdCBpcyByZW1vdmVkIGFzIGl0J3Mgbm90IHVzZWQgYW55d2hl
cmUuIGdfYWxsVGVzdHNCeVBsYXRmb3JtQW5kQnVpbGRUeXBlIGlzIG5vdyBmaWxsZWQgYnkKKyAg
ICAgICAgdHJhdmVyc2luZyB0aGUgcGxhdGZvcm1zIHRyZWUuCisgICAgICAgICh0cmF2ZXJzZVBs
YXRmb3Jtc1RyZWUudHJhdmVyc2UpOgorICAgICAgICAodHJhdmVyc2VQbGF0Zm9ybXNUcmVlKTog
QSBoZWxwZXIgZnVuY3Rpb24gdGhhdCB0cmF2ZXJzZXMgdGhlIHBsYXRmb3JtcyB0cmVlLCBpbnZv
a2luZworICAgICAgICBjYWxsYmFjayBvbiBlYWNoIGxlYWYgbm9kZS4KKyAgICAgICAgKGRldGVy
bWluZVdLUGxhdGZvcm0pOiBBIGhlbHBlciBmdW5jdGlvbiB0byBkZXRlcm1pbmUgd2hldGhlciB0
aGUgYnVpbGRlciBpcyBydW5uaW5nIFdlYktpdDEgb3IKKyAgICAgICAgV2ViS2l0MiBsYXllciBv
ZiBhIGdpdmVuIHBsYXRmb3JtLgorICAgICAgICAoY2hyb21pdW1QbGF0Zm9ybSk6IENocm9taXVt
LXNwZWNpZmljIHBsYXRmb3JtcyBhcmUgbm93IHByb3Blcmx5IHByZWZpeGVkIHdpdGggJ0NIUk9N
SVVNXycuCisgICAgICAgIChUZXN0VHJpZSk6IEEgbmV3IGNsYXNzIHRoYXQgaG9sZHMgYWxsIHRo
ZSB0ZXN0cyBpbiBhIHRyaWUuIFRoZSB0cmllIGlzIGNvbnN0cnVjdGVkIGJ5IGl0ZXJhdGluZwor
ICAgICAgICB0aHJvdWdoIHRoZSB0ZXN0cyBmb3IgZWFjaCBidWlsZGVyLCBhZGRpbmcgZWFjaCB0
ZXN0IHRvIHRoZSB0cmllLgorICAgICAgICAoVGVzdFRyaWUucHJvdG90eXBlLmZvckVhY2gudHJh
dmVyc2UpOgorICAgICAgICAoVGVzdFRyaWUucHJvdG90eXBlLmZvckVhY2gpOiBBIGhlbHBlciBm
dW5jdGlvbiB0aGF0IHRyYXZlcnNlcyB0aGUgdGVzdHMgdHJpZSwgaW52b2tpbmcgY2FsbGJhY2sg
b24gZWFjaCBsZWFmLgorICAgICAgICAoVGVzdFRyaWUucHJvdG90eXBlLl9hZGRUZXN0KTogQWxp
Z25zIHRoZSB0ZXN0IGludG8gdGhlIHNwZWNpZmllZCB0cmllIGJhc2VkIG9uIHRoZSB0ZXN0J3Mg
cGF0aC4KKyAgICAgICAgKGdldEFsbFRlc3RzVHJpZSk6IEluc3RlYWQgb2YgaW4gbGlzdCwgdGhl
IHByb2JsZW1hdGljIHRlc3RzIGZyb20gZWFjaCBidWlsZGVyIGFyZSBub3cgc3RvcmVkIGluIGEg
dHJpZS4KKyAgICAgICAgKGluZGl2aWR1YWxUZXN0c0ZvclN1YnN0cmluZ0xpc3QpOiBNb2RpZmll
ZCB0byB0cmF2ZXJzZSB0aGUgdHJpZSBpbnN0ZWFkIG9mIGl0ZXJhdGluZyB0aGUgbGlzdC4KKyAg
ICAgICAgKGFsbFRlc3RzV2l0aFJlc3VsdCk6IERpdHRvLgorICAgICAgICAocGxhdGZvcm1PYmpl
Y3RGb3JOYW1lKTogU3BsaXRzIHRoZSBwbGF0Zm9ybSBuYW1lIGJ5IHVuZGVyc2NvcmVzIGFuZCBm
aW5kcyB0aGUgYXBwcm9wcmlhdGUgcGxhdGZvcm0gb2JqZWN0LgorICAgICAgICAoZ2V0UGFyc2Vk
RXhwZWN0YXRpb25zKTogTm93IG9wZXJhdGVzIG9uIHRoZSBwYXNzZWQtaW4gcGFyYW1ldGVyIHJh
dGhlciB0aGFuIG9uIGEgZ2xvYmFsIHZhcmlhYmxlLgorICAgICAgICAoYWRkVGVzdFRvQWxsRXhw
ZWN0YXRpb25zRm9yUGxhdGZvcm0pOiBMaW5rcyBleHBlY3RhdGlvbnMgYW5kIG1vZGlmaWVycyB0
byB0aGUgdGVzdCBvbiB0aGUgc3BlY2lmaWVkIHBsYXRmb3JtCisgICAgICAgIGFuZCBhbnkgYnVp
bGQgdHlwZSB0aGUgbW9kaWZpZXJzIG1pZ2h0IGFwcGx5IHRvIChvciBhbGwgYnVpbGQgdHlwZXMg
aWYgdGhlcmUgYXJlIG5vIHN1Y2ggbW9kaWZpZXJzKS4KKyAgICAgICAgKHByb2Nlc3NFeHBlY3Rh
dGlvbnNGb3JQbGF0Zm9ybSk6IERldGVybWluZXMgaWYgdGhlIGV4cGVjdGF0aW9uIHNob3VsZCBh
Y3R1YWxseSBiZSBwcm9jZXNzZWQgZm9yIHRoZSBnaXZlbgorICAgICAgICBwbGF0Zm9ybSBieSBj
aGVja2luZyBpZiBhbnkgcGxhdGZvcm0ncyBmYWxsYmFjayBwbGF0Zm9ybXMgc3VwcG9ydCBwbGF0
Zm9ybSBtb2RpZmllciB1bmlvbnMgYW5kIGlmIGFueSBtb2RpZmllcnMKKyAgICAgICAgcmVwcmVz
ZW50IHN1Y2ggYW4gdW5pb24uIElmIHNvLCB0aGUgZXhwZWN0YXRpb24gaXMgdGhlbiBvbmx5IHBy
b2Nlc3NlZCBpZiB0aGUgZ2l2ZW4gcGxhdGZvcm0gaXMgaW4gdGhlIHVuaW9uCisgICAgICAgIHRo
ZSBtb2RpZmllciBwcmVzZW50cyBvciB0aGVyZSBhcmUgbm8gc3VjaCBtb2RpZmllcnMuCisgICAg
ICAgIChwcm9jZXNzRXhwZWN0YXRpb25zKTogUHJvY2Vzc2VzIGFsbCBhY3F1aXJlZCBleHBlY3Rh
dGlvbnMgYnkgdHJhdmVyc2luZyB0aGUgcGxhdGZvcm1zIHRyZWUgYW5kIHRha2luZyBpbnRvCisg
ICAgICAgIGFjY291bnQgcG9zc2libGUgZmFsbGJhY2sgcGxhdGZvcm1zLgorICAgICAgICAocHJv
Y2Vzc1Rlc3RSdW5zRm9yQnVpbGRlcik6CisgICAgICAgIChyZWFsTW9kaWZpZXJzLnJldHVybi5t
b2RpZmllcnMuZmlsdGVyKToKKyAgICAgICAgKHJlYWxNb2RpZmllcnMpOiBNb2RpZmllcnMgb3Ro
ZXIgdGhhbiBidWlsZCBjb25maWd1cmF0aW9ucyBhbmQgYnVnIGhhbmRsZXMgYXJlIG5vdyBmaWx0
ZXJlZCBvdXQgb25seSBpZiB0aGV5CisgICAgICAgIGFyZSBwcmVzZW50IGluIHRoZSBwbGF0Zm9y
bSdzIHBsYXRmb3JtIG1vZGlmaWVyIHVuaW9ucyBvciByZXByZXNlbnQgc3VicGxhdGZvcm1zIG9m
IGEgcGxhdGZvcm0gdGhhdCBzdXBwb3J0cworICAgICAgICBwbGF0Zm9ybSBtb2RpZmllciB1bmlv
bnMuCisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5l
c3NfZGFzaGJvYXJkX3VuaXR0ZXN0cy5qczogVGhlIHRlc3QgY2FzZXMgYXJlIHVwZGF0ZWQgYW5k
IGV4cGFuZGVkCisgICAgICAgIHdoZXJlIG5lY2Vzc2FyeSB0byBjb3ZlciB0aGUgY2hhbmdlcy4K
KyAgICAgICAgKHJlc2V0R2xvYmFscyk6CisgICAgICAgICh0ZXN0KTogQWRkZWQgYSBUZXN0VHJp
ZSB0ZXN0LgorCiAyMDEyLTEwLTEyICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGNvbXBpbGUgZXJyb3IgZml4IGZvciBjaHJvbWl1
bSB3aW5kb3dzIGJvdC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGlj
LWRhc2hib2FyZHMvZGFzaGJvYXJkX2Jhc2UuanMgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0
YXRpYy1kYXNoYm9hcmRzL2Rhc2hib2FyZF9iYXNlLmpzCmluZGV4IDMxYWRmYWJhMzc3MmFjYzA1
ZWUyMWFiYjAzOTI3YzMwMjk4ZTI5OTUuLjc1Njg4NmY0YmUyNDliZjFkMzliOGI4ZTVlNTQxMWI3
OGNhMzVjZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hi
b2FyZHMvZGFzaGJvYXJkX2Jhc2UuanMKKysrIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0
aWMtZGFzaGJvYXJkcy9kYXNoYm9hcmRfYmFzZS5qcwpAQCAtNDk0LDcgKzQ5NCw3IEBAIGZ1bmN0
aW9uIGluaXRCdWlsZGVycygpCiB9CiAKIHZhciBnX3Jlc3VsdHNCeUJ1aWxkZXIgPSB7fTsKLXZh
ciBnX2V4cGVjdGF0aW9uczsKK3ZhciBnX2V4cGVjdGF0aW9uc0J5UGxhdGZvcm0gPSB7fTsKIHZh
ciBnX3N0YWxlQnVpbGRlcnMgPSBbXTsKIHZhciBnX2J1aWxkZXJzVGhhdEZhaWxlZFRvTG9hZCA9
IFtdOwogCkBAIC01NTEsMjYgKzU1MSwzNSBAQCBmdW5jdGlvbiBwYXRoVG9CdWlsZGVyUmVzdWx0
c0ZpbGUoYnVpbGRlck5hbWUpCiAgICAgICAgICAgICAnJnRlc3R0eXBlPScgKyBnX2Nyb3NzRGFz
aGJvYXJkU3RhdGUudGVzdFR5cGUgKyAnJm5hbWU9JzsKIH0KIAotLy8gRklYTUU6IE1ha2UgdGhl
IGRhc2hib2FyZCB1bmRlcnN0YW5kIGRpZmZlcmVudCBwb3J0cycgZXhwZWN0YXRpb25zIGZpbGVz
LgotdmFyIENIUk9NSVVNX0VYUEVDVEFUSU9OU19VUkwgPSAnaHR0cDovL3N2bi53ZWJraXQub3Jn
L3JlcG9zaXRvcnkvd2Via2l0L3RydW5rL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rl
c3RFeHBlY3RhdGlvbnMnOwotdmFyIExFR0FDWV9DSFJPTUlVTV9FWFBFQ1RBVElPTlNfVVJMID0g
J2h0dHA6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVuay9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQnOwotCi1mdW5jdGlvbiBy
ZXF1ZXN0RXhwZWN0YXRpb25zRmlsZSgpCi17Ci0gICAgcmVxdWVzdChDSFJPTUlVTV9FWFBFQ1RB
VElPTlNfVVJMLCBmdW5jdGlvbih4aHIpIHsKLSAgICAgICAgZ193YWl0aW5nT25FeHBlY3RhdGlv
bnMgPSBmYWxzZTsKLSAgICAgICAgZ19leHBlY3RhdGlvbnMgPSB4aHIucmVzcG9uc2VUZXh0Owot
ICAgICAgICBoYW5kbGVSZXNvdXJjZUxvYWQoKTsKLSAgICB9LAotICAgIGZ1bmN0aW9uKCkgewot
ICAgICAgICByZXF1ZXN0KExFR0FDWV9DSFJPTUlVTV9FWFBFQ1RBVElPTlNfVVJMLCBmdW5jdGlv
bih4aHIpIHsKLSAgICAgICAgICAgIGdfd2FpdGluZ09uRXhwZWN0YXRpb25zID0gZmFsc2U7Ci0g
ICAgICAgICAgICBnX2V4cGVjdGF0aW9ucyA9IHhoci5yZXNwb25zZVRleHQ7Ci0gICAgICAgICAg
ICBoYW5kbGVSZXNvdXJjZUxvYWQoKTsKLSAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3QgbG9hZCBleHBlY3RhdGlvbnMgZmlsZSBmcm9t
ICcgKyBDSFJPTUlVTV9FWFBFQ1RBVElPTlNfVVJMICsgJyBvciAnICsgTEVHQUNZX0NIUk9NSVVN
X0VYUEVDVEFUSU9OU19VUkwpOwotICAgICAgICB9KTsKK2Z1bmN0aW9uIHJlcXVlc3RFeHBlY3Rh
dGlvbnNGaWxlcygpCit7CisgICAgdmFyIGV4cGVjdGF0aW9uc0ZpbGVzVG9SZXF1ZXN0ID0ge307
CisgICAgdHJhdmVyc2VQbGF0Zm9ybXNUcmVlKGZ1bmN0aW9uKHBsYXRmb3JtLCBwbGF0Zm9ybU5h
bWUpIHsKKyAgICAgICAgaWYgKHBsYXRmb3JtLmZhbGxiYWNrUGxhdGZvcm1zKQorICAgICAgICAg
ICAgcGxhdGZvcm0uZmFsbGJhY2tQbGF0Zm9ybXMuZm9yRWFjaChmdW5jdGlvbihmYWxsYmFja1Bs
YXRmb3JtKSB7CisgICAgICAgICAgICAgICAgdmFyIGZhbGxiYWNrUGxhdGZvcm1PYmplY3QgPSBw
bGF0Zm9ybU9iamVjdEZvck5hbWUoZmFsbGJhY2tQbGF0Zm9ybSk7CisgICAgICAgICAgICAgICAg
aWYgKGZhbGxiYWNrUGxhdGZvcm1PYmplY3QuZXhwZWN0YXRpb25zRGlyZWN0b3J5ICYmICEoZmFs
bGJhY2tQbGF0Zm9ybSBpbiBleHBlY3RhdGlvbnNGaWxlc1RvUmVxdWVzdCkpCisgICAgICAgICAg
ICAgICAgICAgIGV4cGVjdGF0aW9uc0ZpbGVzVG9SZXF1ZXN0W2ZhbGxiYWNrUGxhdGZvcm1dID0g
RVhQRUNUQVRJT05TX1VSTF9CQVNFX1BBVEggKyBmYWxsYmFja1BsYXRmb3JtT2JqZWN0LmV4cGVj
dGF0aW9uc0RpcmVjdG9yeSArICcvVGVzdEV4cGVjdGF0aW9ucyc7CisgICAgICAgICAgICB9KTsK
KworICAgICAgICBpZiAocGxhdGZvcm0uZXhwZWN0YXRpb25zRGlyZWN0b3J5KQorICAgICAgICAg
ICAgZXhwZWN0YXRpb25zRmlsZXNUb1JlcXVlc3RbcGxhdGZvcm1OYW1lXSA9IEVYUEVDVEFUSU9O
U19VUkxfQkFTRV9QQVRIICsgcGxhdGZvcm0uZXhwZWN0YXRpb25zRGlyZWN0b3J5ICsgJy9UZXN0
RXhwZWN0YXRpb25zJzsKICAgICB9KTsKKworICAgIGZvciAocGxhdGZvcm1XaXRoRXhwZWN0YXRp
b25zIGluIGV4cGVjdGF0aW9uc0ZpbGVzVG9SZXF1ZXN0KQorICAgICAgICByZXF1ZXN0KGV4cGVj
dGF0aW9uc0ZpbGVzVG9SZXF1ZXN0W3BsYXRmb3JtV2l0aEV4cGVjdGF0aW9uc10sCisgICAgICAg
ICAgICAgICAgcGFydGlhbChmdW5jdGlvbihwbGF0Zm9ybU5hbWUsIHhocikgeworICAgICAgICAg
ICAgICAgICAgICBnX2V4cGVjdGF0aW9uc0J5UGxhdGZvcm1bcGxhdGZvcm1OYW1lXSA9IGdldFBh
cnNlZEV4cGVjdGF0aW9ucyh4aHIucmVzcG9uc2VUZXh0KTsKKworICAgICAgICAgICAgICAgICAg
ICBkZWxldGUgZXhwZWN0YXRpb25zRmlsZXNUb1JlcXVlc3RbcGxhdGZvcm1OYW1lXTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhleHBlY3RhdGlvbnNGaWxlc1RvUmVxdWVz
dCkubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnX3dhaXRpbmdPbkV4cGVjdGF0
aW9ucyA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlUmVzb3VyY2VMb2Fk
KCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LCBwbGF0Zm9ybVdp
dGhFeHBlY3RhdGlvbnMpLAorICAgICAgICAgICAgICAgIHBhcnRpYWwoZnVuY3Rpb24ocGxhdGZv
cm1OYW1lLCB4aHIpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignQ291bGQg
bm90IGxvYWQgZXhwZWN0YXRpb25zIGZpbGUgZm9yICcgKyBwbGF0Zm9ybU5hbWUpOworICAgICAg
ICAgICAgICAgIH0sIHBsYXRmb3JtV2l0aEV4cGVjdGF0aW9ucykpOwogfQogCiBmdW5jdGlvbiBp
c1RyZWVNYXAoKQpAQCAtNjA4LDkgKzYxNyw5IEBAIGZ1bmN0aW9uIGFwcGVuZEpTT05TY3JpcHRF
bGVtZW50cygpCiAgICAgZm9yICh2YXIgYnVpbGRlck5hbWUgaW4gZ19idWlsZGVycykKICAgICAg
ICAgYXBwZW5kSlNPTlNjcmlwdEVsZW1lbnRGb3IoYnVpbGRlck5hbWUpOwogCi0gICAgdmFyIGdf
d2FpdGluZ09uRXhwZWN0YXRpb25zID0gaXNMYXlvdXRUZXN0UmVzdWx0cygpICYmICFpc1RyZWVN
YXAoKTsKKyAgICBnX3dhaXRpbmdPbkV4cGVjdGF0aW9ucyA9IGlzTGF5b3V0VGVzdFJlc3VsdHMo
KSAmJiAhaXNUcmVlTWFwKCk7CiAgICAgaWYgKGdfd2FpdGluZ09uRXhwZWN0YXRpb25zKQotICAg
ICAgICByZXF1ZXN0RXhwZWN0YXRpb25zRmlsZSgpOworICAgICAgICByZXF1ZXN0RXhwZWN0YXRp
b25zRmlsZXMoKTsKIH0KIAogdmFyIGdfaGFzRG9uZUluaXRpYWxQYWdlR2VuZXJhdGlvbiA9IGZh
bHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJk
cy9mbGFraW5lc3NfZGFzaGJvYXJkLmpzIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMt
ZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkLmpzCmluZGV4IGY4YjVlNTdkYTNiMzM5YmU1
ZTc3ZDMwOWVjZDc5MDRkYWY3ZTVmZGEuLjJjMTRhM2ExOTlhZTIzOTU5ZDFhMTQzMzc5MGY0N2Q4
YzU0NTBkMTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hi
b2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZC5qcworKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVy
L3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuanMKQEAgLTM1LDI5ICszNSw5
MiBAQCB2YXIgQkFDS1dBUkQgPSAnYmFja3dhcmQnOwogdmFyIEdURVNUX01PRElGSUVSUyA9IFsn
RkxBS1knLCAnRkFJTFMnLCAnTUFZQkUnLCAnRElTQUJMRUQnXTsKIHZhciBURVNUX1VSTF9CQVNF
X1BBVEhfVFJBQyA9ICdodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvTGF5b3V0
VGVzdHMvJzsKIHZhciBURVNUX1VSTF9CQVNFX1BBVEggPSAiaHR0cDovL3N2bi53ZWJraXQub3Jn
L3JlcG9zaXRvcnkvd2Via2l0L3RydW5rL0xheW91dFRlc3RzLyI7Cit2YXIgRVhQRUNUQVRJT05T
X1VSTF9CQVNFX1BBVEggPSBURVNUX1VSTF9CQVNFX1BBVEggKyAicGxhdGZvcm0vIjsKIHZhciBU
RVNUX1JFU1VMVFNfQkFTRV9QQVRIID0gJ2h0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvZi9jaHJv
bWl1bS9sYXlvdXRfdGVzdF9yZXN1bHRzLyc7CiB2YXIgR1BVX1JFU1VMVFNfQkFTRV9QQVRIID0g
J2h0dHA6Ly9jaHJvbWl1bS1icm93c2VyLWdwdS10ZXN0cy5jb21tb25kYXRhc3RvcmFnZS5nb29n
bGVhcGlzLmNvbS9ydW5zLycKIAotLy8gRklYTUU6IFRoZXNlIHBsYXRmb3JtIG5hbWVzIHNob3Vs
ZCBwcm9iYWJseSBiZSBjaGFuZ2VkIHRvIG1hdGNoIHRoZSBkaXJlY3RvcmllcyBpbiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybQotLy8gaW5zdGVhZCBvZiBtYXRjaGluZyB0aGUgdmFsdWVzIHdlIHVzZSBp
biB0aGUgVGVzdEV4cGVjdGF0aW9ucyBmaWxlLgotdmFyIFBMQVRGT1JNUyA9IFsnTElPTicsICdT
Tk9XTEVPUEFSRCcsICdYUCcsICdWSVNUQScsICdXSU43JywgJ0xVQ0lEJywgJ0FORFJPSUQnLCAn
QVBQTEVfTElPTicsICdBUFBMRV9TTk9XTEVPUEFSRCcsICdBUFBMRV9YUCcsICdBUFBMRV9XSU43
JywgJ0dUS19MSU5VWCcsICdRVF9MSU5VWCcsICdFRkwnXTsKLXZhciBQTEFURk9STV9VTklPTlMg
PSB7Ci0gICAgJ01BQyc6IFsnU05PV0xFT1BBUkQnLCAnTElPTiddLAotICAgICdXSU4nOiBbJ1hQ
JywgJ1dJTjcnXSwKLSAgICAnTElOVVgnOiBbJ0xVQ0lEJ10KLX0KLQotLy8gRklYTUU6IE1ha2Ug
dGhlIGdfYWxsRXhwZWN0YXRpb25zIGRhdGEgc3RydWN0dXJlIGV4cGxpY2l0bHkgbGlzdCBldmVy
eSBwbGF0Zm9ybSBpbnN0ZWFkIG9mIGhhdmluZyBhIGZhbGxiYWNrcyBjb25jZXB0LgotdmFyIFBM
QVRGT1JNX0ZBTExCQUNLUyA9IHsKLSAgICAnV0lOJzogJ0FMTCcsCi0gICAgJ1hQJzogJ1dJTics
Ci0gICAgJ1dJTjcnOiAnV0lOJywKLSAgICAnTUFDJzogJ0FMTCcsCi0gICAgJ0xJT04nOiAnTUFD
JywKLSAgICAnU05PV0xFT1BBUkQnOiAnTUFDJywKLSAgICAnTElOVVgnOiAnQUxMJywKLSAgICAn
TFVDSUQnOiAnTElOVVgnCit2YXIgUExBVEZPUk1TID0geworICAgICdDSFJPTUlVTSc6IHsKKyAg
ICAgICAgZXhwZWN0YXRpb25zRGlyZWN0b3J5OiAnY2hyb21pdW0nLAorICAgICAgICBzdWJQbGF0
Zm9ybXM6IHsKKyAgICAgICAgICAgICdMSU9OJzogeyBmYWxsYmFja1BsYXRmb3JtczogWydDSFJP
TUlVTSddIH0sCisgICAgICAgICAgICAnU05PV0xFT1BBUkQnOiB7IGZhbGxiYWNrUGxhdGZvcm1z
OiBbJ0NIUk9NSVVNJ10gfSwKKyAgICAgICAgICAgICdYUCc6IHsgZmFsbGJhY2tQbGF0Zm9ybXM6
IFsnQ0hST01JVU0nXSB9LAorICAgICAgICAgICAgJ1ZJU1RBJzogeyBmYWxsYmFja1BsYXRmb3Jt
czogWydDSFJPTUlVTSddIH0sCisgICAgICAgICAgICAnV0lONyc6IHsgZmFsbGJhY2tQbGF0Zm9y
bXM6IFsnQ0hST01JVU0nXSB9LAorICAgICAgICAgICAgJ0xVQ0lEJzogeyBmYWxsYmFja1BsYXRm
b3JtczogWydDSFJPTUlVTSddIH0sCisgICAgICAgICAgICAnQU5EUk9JRCc6IHsgZmFsbGJhY2tQ
bGF0Zm9ybXM6IFsnQ0hST01JVU0nXSwgZXhwZWN0YXRpb25zRGlyZWN0b3J5OiAnY2hyb21pdW0t
YW5kcm9pZCcgfQorICAgICAgICB9LAorICAgICAgICBwbGF0Zm9ybU1vZGlmaWVyVW5pb25zOiB7
CisgICAgICAgICAgICAnTUFDJzogWydDSFJPTUlVTV9MSU9OJywgJ0NIUk9NSVVNX1NOT1dMRU9Q
QVJEJ10sCisgICAgICAgICAgICAnV0lOJzogWydDSFJPTUlVTV9YUCcsICdDSFJPTUlVTV9WSVNU
QScsICdDSFJPTUlVTV9XSU43J10sCisgICAgICAgICAgICAnTElOVVgnOiBbJ0NIUk9NSVVNX0xV
Q0lEJ10KKyAgICAgICAgfQorICAgIH0sCisgICAgJ0FQUExFJzogeworICAgICAgICBzdWJQbGF0
Zm9ybXM6IHsKKyAgICAgICAgICAgICdNQUMnOiB7CisgICAgICAgICAgICAgICAgZXhwZWN0YXRp
b25zRGlyZWN0b3J5OiAnbWFjJywKKyAgICAgICAgICAgICAgICBzdWJQbGF0Zm9ybXM6IHsKKyAg
ICAgICAgICAgICAgICAgICAgJ0xJT04nOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBleHBl
Y3RhdGlvbnNEaXJlY3Rvcnk6ICdtYWMtbGlvbicsCisgICAgICAgICAgICAgICAgICAgICAgICBz
dWJQbGF0Zm9ybXM6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnV0sxJzogeyBmYWxs
YmFja1BsYXRmb3JtczogWydBUFBMRV9NQUNfTElPTicsICdBUFBMRV9NQUMnXSB9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdXSzInOiB7IGZhbGxiYWNrUGxhdGZvcm1zOiBbJ0FQUExF
X01BQ19MSU9OJywgJ0FQUExFX01BQycsICdXSzInXSB9CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICdTTk9XTEVP
UEFSRCc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uc0RpcmVjdG9yeTog
J21hYy1zbm93bGVvcGFyZCcsCisgICAgICAgICAgICAgICAgICAgICAgICBzdWJQbGF0Zm9ybXM6
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnV0sxJzogeyBmYWxsYmFja1BsYXRmb3Jt
czogWydBUFBMRV9NQUNfU05PV0xFT1BBUkQnLCAnQVBQTEVfTUFDJ10gfSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnV0syJzogeyBmYWxsYmFja1BsYXRmb3JtczogWydBUFBMRV9NQUNf
U05PV0xFT1BBUkQnLCAnQVBQTEVfTUFDJywgJ1dLMiddIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAnV0lOJzogeworICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9u
c0RpcmVjdG9yeTogJ3dpbicsCisgICAgICAgICAgICAgICAgc3ViUGxhdGZvcm1zOiB7CisgICAg
ICAgICAgICAgICAgICAgICdYUCc6IHsgZmFsbGJhY2tQbGF0Zm9ybXM6IFsnQVBQTEVfV0lOJ10g
fSwKKyAgICAgICAgICAgICAgICAgICAgJ1dJTjcnOiB7IGZhbGxiYWNrUGxhdGZvcm1zOiBbJ0FQ
UExFX1dJTiddIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9LAorICAgICdHVEsnOiB7CisgICAgICAgIGV4cGVjdGF0aW9uc0RpcmVjdG9yeTogJ2d0
aycsCisgICAgICAgIHN1YlBsYXRmb3JtczogeworICAgICAgICAgICAgJ0xJTlVYJzogeworICAg
ICAgICAgICAgICAgIHN1YlBsYXRmb3JtczogeworICAgICAgICAgICAgICAgICAgICAnV0sxJzog
eyBmYWxsYmFja1BsYXRmb3JtczogWydHVEsnXSB9LAorICAgICAgICAgICAgICAgICAgICAnV0sy
JzogeyBmYWxsYmFja1BsYXRmb3JtczogWydHVEsnLCAnV0syJ10sIGV4cGVjdGF0aW9uc0RpcmVj
dG9yeTogJ2d0ay13azInIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9LAorICAgICdRVCc6IHsKKyAgICAgICAgZXhwZWN0YXRpb25zRGlyZWN0b3J5
OiAncXQnLAorICAgICAgICBzdWJQbGF0Zm9ybXM6IHsKKyAgICAgICAgICAgICdMSU5VWCc6IHsg
ZmFsbGJhY2tQbGF0Zm9ybXM6IFsnUVQnXSB9CisgICAgICAgIH0KKyAgICB9LAorICAgICdFRkwn
OiB7CisgICAgICAgIGV4cGVjdGF0aW9uc0RpcmVjdG9yeTogJ2VmbCcsCisgICAgICAgIHN1YlBs
YXRmb3JtczogeworICAgICAgICAgICAgJ0xJTlVYJzogeworICAgICAgICAgICAgICAgIHN1YlBs
YXRmb3JtczogeworICAgICAgICAgICAgICAgICAgICAnV0sxJzogeyBmYWxsYmFja1BsYXRmb3Jt
czogWydFRkwnXSwgZXhwZWN0YXRpb25zRGlyZWN0b3J5OiAnZWZsLXdrMScgfSwKKyAgICAgICAg
ICAgICAgICAgICAgJ1dLMic6IHsgZmFsbGJhY2tQbGF0Zm9ybXM6IFsnRUZMJywgJ1dLMiddLCBl
eHBlY3RhdGlvbnNEaXJlY3Rvcnk6ICdlZmwtd2syJyB9CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfSwKKyAgICAnV0syJzogeworICAgICAgICBiYXNl
UGxhdGZvcm06IHRydWUsCisgICAgICAgIGV4cGVjdGF0aW9uc0RpcmVjdG9yeTogJ3drMicKKyAg
ICB9CiB9OworCiB2YXIgQlVJTERfVFlQRVMgPSB7J0RFQlVHJzogJ0RCRycsICdSRUxFQVNFJzog
J1JFTEVBU0UnfTsKIHZhciBNSU5fU0VDT05EU19GT1JfU0xPV19URVNUID0gNDsKIHZhciBNSU5f
U0VDT05EU19GT1JfU0xPV19URVNUX0RFQlVHID0gMiAqIE1JTl9TRUNPTkRTX0ZPUl9TTE9XX1RF
U1Q7CkBAIC0yMTcsNiArMjgwLDIyIEBAIHZhciBnX3Rlc3RUb1Jlc3VsdHNNYXAgPSB7fTsKIC8v
IFRlc3RzIHRoYXQgdGhlIHVzZXIgd2FudHMgdG8gdXBkYXRlIGV4cGVjdGF0aW9ucyBmb3IuCiB2
YXIgZ19jb25maXJtZWRUZXN0cyA9IHt9OwogCitmdW5jdGlvbiB0cmF2ZXJzZVBsYXRmb3Jtc1Ry
ZWUoY2FsbGJhY2spCit7CisgICAgZnVuY3Rpb24gdHJhdmVyc2UocGxhdGZvcm1PYmplY3QsIHBh
cmVudFBsYXRmb3JtKSB7CisgICAgICAgIE9iamVjdC5rZXlzKHBsYXRmb3JtT2JqZWN0KS5mb3JF
YWNoKGZ1bmN0aW9uKHBsYXRmb3JtTmFtZSkgeworICAgICAgICAgICAgdmFyIHBsYXRmb3JtID0g
cGxhdGZvcm1PYmplY3RbcGxhdGZvcm1OYW1lXTsKKyAgICAgICAgICAgIHBsYXRmb3JtTmFtZSA9
IHBhcmVudFBsYXRmb3JtID8gcGFyZW50UGxhdGZvcm0gKyBwbGF0Zm9ybU5hbWUgOiBwbGF0Zm9y
bU5hbWU7CisKKyAgICAgICAgICAgIGlmIChwbGF0Zm9ybS5zdWJQbGF0Zm9ybXMpCisgICAgICAg
ICAgICAgICAgdHJhdmVyc2UocGxhdGZvcm0uc3ViUGxhdGZvcm1zLCBwbGF0Zm9ybU5hbWUgKyAn
XycpOworICAgICAgICAgICAgZWxzZSBpZiAoIXBsYXRmb3JtLmJhc2VQbGF0Zm9ybSkKKyAgICAg
ICAgICAgICAgICBjYWxsYmFjayhwbGF0Zm9ybSwgcGxhdGZvcm1OYW1lKTsKKyAgICAgICAgfSk7
CisgICAgfQorICAgIHRyYXZlcnNlKFBMQVRGT1JNUywgbnVsbCk7Cit9CisKIGZ1bmN0aW9uIGNy
ZWF0ZVJlc3VsdHNPYmplY3RGb3JUZXN0KHRlc3QsIGJ1aWxkZXIpCiB7CiAgICAgcmV0dXJuIHsK
QEAgLTI1MSw0NSArMzMwLDUyIEBAIGZ1bmN0aW9uIG1hdGNoaW5nRWxlbWVudChzdHJpbmdUb01h
dGNoLCBlbGVtZW50c01hcCkKICAgICB9CiB9CiAKK2Z1bmN0aW9uIGRldGVybWluZVdLUGxhdGZv
cm0oYnVpbGRlck5hbWUsIGJhc2VQbGF0Zm9ybSkKK3sKKyAgICB2YXIgaXNXSzJCdWlsZGVyID0g
c3RyaW5nQ29udGFpbnMoYnVpbGRlck5hbWUsICdXSzInKSB8fCBzdHJpbmdDb250YWlucyhidWls
ZGVyTmFtZSwgJ1dFQktJVDInKTsKKyAgICByZXR1cm4gYmFzZVBsYXRmb3JtICsgKGlzV0syQnVp
bGRlciA/ICdfV0syJyA6ICdfV0sxJyk7Cit9CisKIGZ1bmN0aW9uIG5vbkNocm9taXVtUGxhdGZv
cm0oYnVpbGRlck5hbWVVcHBlckNhc2UpCiB7Ci0gICAgaWYgKHN0cmluZ0NvbnRhaW5zKGJ1aWxk
ZXJOYW1lVXBwZXJDYXNlLCAnTElPTicpKQotICAgICAgICByZXR1cm4gJ0FQUExFX0xJT04nOwot
ICAgIGlmIChzdHJpbmdDb250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ1NOT1dMRU9QQVJE
JykpCi0gICAgICAgIHJldHVybiAnQVBQTEVfU05PV0xFT1BBUkQnOwogICAgIGlmIChzdHJpbmdD
b250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ1dJTkRPV1MgNycpKQotICAgICAgICByZXR1
cm4gJ0FQUExFX1dJTjcnOworICAgICAgICByZXR1cm4gJ0FQUExFX1dJTl9XSU43JzsKICAgICBp
ZiAoc3RyaW5nQ29udGFpbnMoYnVpbGRlck5hbWVVcHBlckNhc2UsICdXSU5ET1dTIFhQJykpCi0g
ICAgICAgIHJldHVybiAnQVBQTEVfWFAnOwotICAgIGlmIChzdHJpbmdDb250YWlucyhidWlsZGVy
TmFtZVVwcGVyQ2FzZSwgJ0dUSyBMSU5VWCcpKQotICAgICAgICByZXR1cm4gJ0dUS19MSU5VWCc7
CisgICAgICAgIHJldHVybiAnQVBQTEVfV0lOX1hQJzsKICAgICBpZiAoc3RyaW5nQ29udGFpbnMo
YnVpbGRlck5hbWVVcHBlckNhc2UsICdRVCBMSU5VWCcpKQogICAgICAgICByZXR1cm4gJ1FUX0xJ
TlVYJzsKKworICAgIGlmIChzdHJpbmdDb250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ0xJ
T04nKSkKKyAgICAgICAgcmV0dXJuIGRldGVybWluZVdLUGxhdGZvcm0oYnVpbGRlck5hbWVVcHBl
ckNhc2UsICdBUFBMRV9NQUNfTElPTicpOworICAgIGlmIChzdHJpbmdDb250YWlucyhidWlsZGVy
TmFtZVVwcGVyQ2FzZSwgJ1NOT1dMRU9QQVJEJykpCisgICAgICAgIHJldHVybiBkZXRlcm1pbmVX
S1BsYXRmb3JtKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnQVBQTEVfTUFDX1NOT1dMRU9QQVJEJyk7
CisgICAgaWYgKHN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnR1RLIExJTlVY
JykpCisgICAgICAgIHJldHVybiBkZXRlcm1pbmVXS1BsYXRmb3JtKGJ1aWxkZXJOYW1lVXBwZXJD
YXNlLCAnR1RLX0xJTlVYJyk7CiAgICAgaWYgKHN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJOYW1lVXBw
ZXJDYXNlLCAnRUZMJykpCi0gICAgICAgIHJldHVybiAnRUZMJzsKKyAgICAgICAgcmV0dXJuIGRl
dGVybWluZVdLUGxhdGZvcm0oYnVpbGRlck5hbWVVcHBlckNhc2UsICdFRkxfTElOVVgnKTsKIH0K
IAogZnVuY3Rpb24gY2hyb21pdW1QbGF0Zm9ybShidWlsZGVyTmFtZVVwcGVyQ2FzZSkKIHsKICAg
ICBpZiAoc3RyaW5nQ29udGFpbnMoYnVpbGRlck5hbWVVcHBlckNhc2UsICdNQUMnKSkgewogICAg
ICAgICBpZiAoc3RyaW5nQ29udGFpbnMoYnVpbGRlck5hbWVVcHBlckNhc2UsICcxMC43JykpCi0g
ICAgICAgICAgICByZXR1cm4gJ0xJT04nOworICAgICAgICAgICAgcmV0dXJuICdDSFJPTUlVTV9M
SU9OJzsKICAgICAgICAgLy8gVGhlIHdlYmtpdC5vcmcgJ0Nocm9taXVtIE1hYyBSZWxlYXNlIChU
ZXN0cyknIGJvdCBydW5zIFNub3dMZW9wYXJkLgotICAgICAgICByZXR1cm4gJ1NOT1dMRU9QQVJE
JzsKKyAgICAgICAgcmV0dXJuICdDSFJPTUlVTV9TTk9XTEVPUEFSRCc7CiAgICAgfQogICAgIGlm
IChzdHJpbmdDb250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ1dJTjcnKSkKLSAgICAgICAg
cmV0dXJuICdXSU43JzsKKyAgICAgICAgcmV0dXJuICdDSFJPTUlVTV9XSU43JzsKICAgICBpZiAo
c3RyaW5nQ29udGFpbnMoYnVpbGRlck5hbWVVcHBlckNhc2UsICdWSVNUQScpKQotICAgICAgICBy
ZXR1cm4gJ1ZJU1RBJzsKKyAgICAgICAgcmV0dXJuICdDSFJPTUlVTV9WSVNUQSc7CiAgICAgaWYg
KHN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnV0lOJykgfHwgc3RyaW5nQ29u
dGFpbnMoYnVpbGRlck5hbWVVcHBlckNhc2UsICdYUCcpKQotICAgICAgICByZXR1cm4gJ1hQJzsK
KyAgICAgICAgcmV0dXJuICdDSFJPTUlVTV9YUCc7CiAgICAgaWYgKHN0cmluZ0NvbnRhaW5zKGJ1
aWxkZXJOYW1lVXBwZXJDYXNlLCAnTElOVVgnKSkKLSAgICAgICAgcmV0dXJuICdMVUNJRCc7Cisg
ICAgICAgIHJldHVybiAnQ0hST01JVU1fTFVDSUQnOwogICAgIGlmIChzdHJpbmdDb250YWlucyhi
dWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ0FORFJPSUQnKSkKLSAgICAgICAgcmV0dXJuICdBTkRST0lE
JzsKKyAgICAgICAgcmV0dXJuICdDSFJPTUlVTV9BTkRST0lEJzsKICAgICAvLyBUaGUgaW50ZXJh
Y3RpdmUgYm90IGlzIFhQLCBidXQgZG9lc24ndCBoYXZlIGFuIE9TIGluIGl0J3MgbmFtZS4KICAg
ICBpZiAoc3RyaW5nQ29udGFpbnMoYnVpbGRlck5hbWVVcHBlckNhc2UsICdJTlRFUkFDVElWRScp
KQotICAgICAgICByZXR1cm4gJ1hQJzsKKyAgICAgICAgcmV0dXJuICdDSFJPTUlVTV9YUCc7CiB9
CiAKIApAQCAtMzM4LDIwICs0MjQsNjQgQEAgZnVuY3Rpb24gZXhwZWN0YXRpb25zRmlsZVN0cmlu
Z0ZvclJlc3VsdChyZXN1bHQpCiAgICAgcmV0dXJuIGV4cGVjdGF0aW9uc01hcCgpW3Jlc3VsdF07
CiB9CiAKK3ZhciBUZXN0VHJpZSA9IGZ1bmN0aW9uKGJ1aWxkZXJzLCByZXN1bHRzQnlCdWlsZGVy
KQoreworICAgIHRoaXMuX3RyaWUgPSB7fTsKKworICAgIGZvciAodmFyIGJ1aWxkZXIgaW4gYnVp
bGRlcnMpIHsKKyAgICAgICAgdmFyIHRlc3RzRm9yQnVpbGRlciA9IHJlc3VsdHNCeUJ1aWxkZXJb
YnVpbGRlcl0udGVzdHM7CisgICAgICAgIGZvciAodmFyIHRlc3QgaW4gdGVzdHNGb3JCdWlsZGVy
KQorICAgICAgICAgICAgdGhpcy5fYWRkVGVzdCh0ZXN0LnNwbGl0KCcvJyksIHRoaXMuX3RyaWUp
OworICAgIH0KK30KKworVGVzdFRyaWUucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbihjYWxs
YmFjaywgc3RhcnRpbmdUcmllUGF0aCkKK3sKKyAgICB2YXIgdGVzdHNUcmllID0gdGhpcy5fdHJp
ZTsKKyAgICBpZiAoc3RhcnRpbmdUcmllUGF0aCkgeworICAgICAgICB2YXIgc3BsaXRQYXRoID0g
c3RhcnRpbmdUcmllUGF0aC5zcGxpdCgnLycpOworICAgICAgICB3aGlsZSAoc3BsaXRQYXRoLmxl
bmd0aCAmJiB0ZXN0c1RyaWUpCisgICAgICAgICAgICB0ZXN0c1RyaWUgPSB0ZXN0c1RyaWVbc3Bs
aXRQYXRoLnNoaWZ0KCldOworICAgIH0KKworICAgIGlmICghdGVzdHNUcmllKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBmdW5jdGlvbiB0cmF2ZXJzZSh0cmllLCB0cmllUGF0aCkgeworICAgICAg
ICBpZiAodHJpZSA9PSB0cnVlKQorICAgICAgICAgICAgY2FsbGJhY2sodHJpZVBhdGgpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZvciAodmFyIG1lbWJlciBpbiB0cmllKQorICAgICAg
ICAgICAgICAgIHRyYXZlcnNlKHRyaWVbbWVtYmVyXSwgdHJpZVBhdGggPyB0cmllUGF0aCArICcv
JyArIG1lbWJlciA6IG1lbWJlcik7CisgICAgICAgIH0KKyAgICB9CisgICAgdHJhdmVyc2UodGVz
dHNUcmllLCBzdGFydGluZ1RyaWVQYXRoKTsKK30KKworVGVzdFRyaWUucHJvdG90eXBlLl9hZGRU
ZXN0ID0gZnVuY3Rpb24odGVzdCwgdHJpZSkKK3sKKyAgICB2YXIgcm9vdENvbXBvbmVudCA9IHRl
c3Quc2hpZnQoKTsKKyAgICBpZiAoIXRlc3QubGVuZ3RoKSB7CisgICAgICAgIGlmICghdHJpZVty
b290Q29tcG9uZW50XSkKKyAgICAgICAgICAgIHRyaWVbcm9vdENvbXBvbmVudF0gPSB0cnVlOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCF0cmllW3Jvb3RDb21wb25lbnRdIHx8
IHRyaWVbcm9vdENvbXBvbmVudF0gPT0gdHJ1ZSkKKyAgICAgICAgdHJpZVtyb290Q29tcG9uZW50
XSA9IHt9OworICAgIHRoaXMuX2FkZFRlc3QodGVzdCwgdHJpZVtyb290Q29tcG9uZW50XSk7Cit9
CisKIC8vIE1hcCBvZiBhbGwgdGVzdHMgdG8gdHJ1ZSB2YWx1ZXMuIFRoaXMgaXMganVzdCBzbyB3
ZSBjYW4gaGF2ZSB0aGUgbGlzdCBvZgogLy8gYWxsIHRlc3RzIGFjcm9zcyBhbGwgdGhlIGJ1aWxk
ZXJzLgotdmFyIGdfYWxsVGVzdHM7Cit2YXIgZ19hbGxUZXN0c1RyaWU7CiAKLS8vIFJldHVybnMg
YSBtYXAgb2YgYWxsIHRlc3RzIHRvIHRydWUgdmFsdWVzLiBUaGlzIGlzIGp1c3Qgc28gd2UgY2Fu
IGhhdmUgdGhlCi0vLyBsaXN0IG9mIGFsbCB0ZXN0cyBhY3Jvc3MgYWxsIHRoZSBidWlsZGVycy4K
LWZ1bmN0aW9uIGdldEFsbFRlc3RzKCkKK2Z1bmN0aW9uIGdldEFsbFRlc3RzVHJpZSgpCiB7Ci0g
ICAgaWYgKCFnX2FsbFRlc3RzKSB7Ci0gICAgICAgIGdfYWxsVGVzdHMgPSB7fTsKLSAgICAgICAg
Zm9yICh2YXIgYnVpbGRlciBpbiBnX2J1aWxkZXJzKQotICAgICAgICAgICAgYWRkVGVzdHNGb3JC
dWlsZGVyKGJ1aWxkZXIsIGdfYWxsVGVzdHMpOwotICAgIH0KLSAgICByZXR1cm4gZ19hbGxUZXN0
czsKKyAgICBpZiAoIWdfYWxsVGVzdHNUcmllKQorICAgICAgICBnX2FsbFRlc3RzVHJpZSA9IG5l
dyBUZXN0VHJpZShnX2J1aWxkZXJzLCBnX3Jlc3VsdHNCeUJ1aWxkZXIpOworCisgICAgcmV0dXJu
IGdfYWxsVGVzdHNUcmllOwogfQogCiAvLyBSZXR1cm5zIGFuIGFycmF5IG9mIHRlc3RzIHRvIGJl
IGRpc3BsYXllZCBpbiB0aGUgaW5kaXZpZHVhbCB0ZXN0cyB2aWV3LgpAQCAtNDAyLDE0ICs1MzIs
MTMgQEAgZnVuY3Rpb24gaW5kaXZpZHVhbFRlc3RzRm9yU3Vic3RyaW5nTGlzdCgpCiAgICAgICAg
IGlmIChwYXRoLm1hdGNoKC9eXHMqJC8pKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgdmFyIGFsbFRlc3RzID0gZ2V0QWxsVGVzdHMoKTsKICAgICAgICAgdmFyIGhhc0FueU1hdGNo
ZXMgPSBmYWxzZTsKLSAgICAgICAgZm9yICh2YXIgdGVzdCBpbiBhbGxUZXN0cykgewotICAgICAg
ICAgICAgaWYgKGNhc2VJbnNlbnNpdGl2ZUNvbnRhaW5zKHRlc3QsIHBhdGgpKSB7Ci0gICAgICAg
ICAgICAgICAgdGVzdHNNYXBbdGVzdF0gPSAxOworICAgICAgICBnZXRBbGxUZXN0c1RyaWUoKS5m
b3JFYWNoKGZ1bmN0aW9uKHRyaWVQYXRoKSB7CisgICAgICAgICAgICBpZiAoY2FzZUluc2Vuc2l0
aXZlQ29udGFpbnModHJpZVBhdGgsIHBhdGgpKSB7CisgICAgICAgICAgICAgICAgdGVzdHNNYXBb
dHJpZVBhdGhdID0gMTsKICAgICAgICAgICAgICAgICBoYXNBbnlNYXRjaGVzID0gdHJ1ZTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICB9KTsKIAogICAgICAgICAvLyBJZiBhIHBh
dGggZG9lc24ndCBtYXRjaCBhbnkgdGVzdHMsIHRoZW4gYXNzdW1lIGl0J3MgYSBmdWxsIHBhdGgK
ICAgICAgICAgLy8gdG8gYSB0ZXN0IHRoYXQgcGFzc2VzIG9uIGFsbCBidWlsZGVycy4KQEAgLTQ0
MiwxNiArNTcxLDE3IEBAIGZ1bmN0aW9uIGlzRmFzdFRlc3QocmVzdWx0c0ZvclRlc3QpCiBmdW5j
dGlvbiBhbGxUZXN0c1dpdGhSZXN1bHQocmVzdWx0KQogewogICAgIHByb2Nlc3NUZXN0UnVuc0Zv
ckFsbEJ1aWxkZXJzKCk7Ci0gICAgdmFyIHRlc3RzID0gZ2V0QWxsVGVzdHMoKTsKICAgICB2YXIg
cmV0VmFsID0gW107Ci0gICAgZm9yICh2YXIgdGVzdCBpbiB0ZXN0cykgewotICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGdfdGVzdFRvUmVzdWx0c01hcFt0ZXN0XS5sZW5ndGg7IGkrKykgewot
ICAgICAgICAgICAgaWYgKGdfdGVzdFRvUmVzdWx0c01hcFt0ZXN0XVtpXS5hY3R1YWxSZXN1bHRz
LmluZGV4T2YocmVzdWx0KSAhPSAtMSkgewotICAgICAgICAgICAgICAgIHJldFZhbC5wdXNoKHRl
c3QpOworCisgICAgZ2V0QWxsVGVzdHNUcmllKCkuZm9yRWFjaChmdW5jdGlvbih0cmllUGF0aCkg
eworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdfdGVzdFRvUmVzdWx0c01hcFt0cmllUGF0
aF0ubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChnX3Rlc3RUb1Jlc3VsdHNNYXBbdHJp
ZVBhdGhdW2ldLmFjdHVhbFJlc3VsdHMuaW5kZXhPZihyZXN1bHQpICE9IC0xKSB7CisgICAgICAg
ICAgICAgICAgcmV0VmFsLnB1c2godHJpZVBhdGgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQorICAgIH0pOworCiAgICAgcmV0dXJuIHJl
dFZhbDsKIH0KIApAQCAtNDY5LDcgKzU5OSw5IEBAIGZ1bmN0aW9uIGFkZFRlc3RzRm9yQnVpbGRl
cihidWlsZGVyLCB0ZXN0TWFwVG9Qb3B1bGF0ZSkKIC8vIGUuZy4gZ19hbGxUZXN0c0J5UGxhdGZv
cm1BbmRCdWlsZFR5cGVbJ1hQJ11bJ0RFQlVHJ10gd2lsbCBoYXZlIHRoZSB1bmlvbgogLy8gb2Yg
YWxsIHRlc3RzIHJ1biBvbiB0aGUgeHAtZGVidWcgYnVpbGRlcnMuCiB2YXIgZ19hbGxUZXN0c0J5
UGxhdGZvcm1BbmRCdWlsZFR5cGUgPSB7fTsKLVBMQVRGT1JNUy5mb3JFYWNoKGZ1bmN0aW9uKHBs
YXRmb3JtKSB7IGdfYWxsVGVzdHNCeVBsYXRmb3JtQW5kQnVpbGRUeXBlW3BsYXRmb3JtXSA9IHt9
OyB9KTsKK3RyYXZlcnNlUGxhdGZvcm1zVHJlZShmdW5jdGlvbihwbGF0Zm9ybSwgcGxhdGZvcm1O
YW1lKSB7CisgICAgZ19hbGxUZXN0c0J5UGxhdGZvcm1BbmRCdWlsZFR5cGVbcGxhdGZvcm1OYW1l
XSA9IHt9OworfSk7CiAKIC8vIE1hcCBvZiBhbGwgdGVzdHMgdG8gdHJ1ZSB2YWx1ZXMgYnkgcGxh
dGZvcm0gYW5kIGJ1aWxkIHR5cGUuCiAvLyBlLmcuIGdfYWxsVGVzdHNCeVBsYXRmb3JtQW5kQnVp
bGRUeXBlWydXSU4nXVsnREVCVUcnXSB3aWxsIGhhdmUgdGhlIHVuaW9uCkBAIC01MjcsNDUgKzY1
OSwxNCBAQCBmdW5jdGlvbiBwb3B1bGF0ZUV4cGVjdGF0aW9uc0RhdGEocmVzdWx0c09iamVjdCkK
ICAgICByZXN1bHRzT2JqZWN0LmlzV29udEZpeFNraXAgPSBzdHJpbmdDb250YWlucyhleHBlY3Rh
dGlvbnMubW9kaWZpZXJzLCAnV09OVEZJWCcpIHx8IHN0cmluZ0NvbnRhaW5zKGV4cGVjdGF0aW9u
cy5tb2RpZmllcnMsICdTS0lQJyk7IAogfQogCi1mdW5jdGlvbiBhZGRUZXN0VG9BbGxFeHBlY3Rh
dGlvbnModGVzdCwgZXhwZWN0YXRpb25zLCBtb2RpZmllcnMpCitmdW5jdGlvbiBwbGF0Zm9ybU9i
amVjdEZvck5hbWUocGxhdGZvcm1OYW1lKQogewotICAgIGlmICghZ19hbGxFeHBlY3RhdGlvbnNb
dGVzdF0pCi0gICAgICAgIGdfYWxsRXhwZWN0YXRpb25zW3Rlc3RdID0ge307Ci0KLSAgICB2YXIg
YWxsUGxhdGZvcm1zID0gW107Ci0gICAgdmFyIGFsbEJ1aWxkVHlwZXMgPSBbXTsKLSAgICBtb2Rp
ZmllcnMuc3BsaXQoJyAnKS5mb3JFYWNoKGZ1bmN0aW9uKG1vZGlmaWVyKSB7Ci0gICAgICAgIGlm
IChtb2RpZmllciBpbiBCVUlMRF9UWVBFUykgewotICAgICAgICAgICAgYWxsQnVpbGRUeXBlcy5w
dXNoKG1vZGlmaWVyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAK
LSAgICAgICAgaWYgKFBMQVRGT1JNUy5pbmRleE9mKG1vZGlmaWVyKSAhPSAtMSkgewotICAgICAg
ICAgICAgYWxsUGxhdGZvcm1zLnB1c2gobW9kaWZpZXIpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAobW9kaWZpZXIgaW4gUExBVEZPUk1fVU5J
T05TKSB7Ci0gICAgICAgICAgICBQTEFURk9STV9VTklPTlNbbW9kaWZpZXJdLmZvckVhY2goZnVu
Y3Rpb24ocGxhdGZvcm0pIHsKLSAgICAgICAgICAgICAgICBhbGxQbGF0Zm9ybXMucHVzaChwbGF0
Zm9ybSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotICAgIH0pCi0gICAgCi0gICAgaWYg
KCFhbGxQbGF0Zm9ybXMubGVuZ3RoKQotICAgICAgICBhbGxQbGF0Zm9ybXMgPSBQTEFURk9STVM7
Ci0gICAgICAgIAotICAgIGlmICghYWxsQnVpbGRUeXBlcy5sZW5ndGgpCi0gICAgICAgIGFsbEJ1
aWxkVHlwZXMgPSBPYmplY3Qua2V5cyhCVUlMRF9UWVBFUyk7Ci0gICAgCi0gICAgYWxsUGxhdGZv
cm1zLmZvckVhY2goZnVuY3Rpb24ocGxhdGZvcm0pIHsKLSAgICAgICAgaWYgKCFnX2FsbEV4cGVj
dGF0aW9uc1t0ZXN0XVtwbGF0Zm9ybV0pCi0gICAgICAgICAgICBnX2FsbEV4cGVjdGF0aW9uc1t0
ZXN0XVtwbGF0Zm9ybV0gPSB7fTsKLQotICAgICAgICBhbGxCdWlsZFR5cGVzLmZvckVhY2goZnVu
Y3Rpb24oYnVpbGRUeXBlKSB7Ci0gICAgICAgICAgICBnX2FsbEV4cGVjdGF0aW9uc1t0ZXN0XVtw
bGF0Zm9ybV1bYnVpbGRUeXBlXSA9IHttb2RpZmllcnM6IG1vZGlmaWVycywgZXhwZWN0YXRpb25z
OiBleHBlY3RhdGlvbnN9OwotICAgICAgICB9KTsgCisgICAgdmFyIHBsYXRmb3Jtc0xpc3QgPSBw
bGF0Zm9ybU5hbWUuc3BsaXQoIl8iKTsKKyAgICB2YXIgcGxhdGZvcm1PYmplY3QgPSBQTEFURk9S
TVNbcGxhdGZvcm1zTGlzdC5zaGlmdCgpXTsKKyAgICBwbGF0Zm9ybXNMaXN0LmZvckVhY2goZnVu
Y3Rpb24ocGxhdGZvcm1OYW1lKSB7CisgICAgICAgIHBsYXRmb3JtT2JqZWN0ID0gcGxhdGZvcm1P
YmplY3Quc3ViUGxhdGZvcm1zW3BsYXRmb3JtTmFtZV07CiAgICAgfSk7CisgICAgcmV0dXJuIHBs
YXRmb3JtT2JqZWN0OwogfQogCiAvLyBEYXRhIHN0cnVjdHVyZSB0byBob2xkIHRoZSBwcm9jZXNz
ZWQgZXhwZWN0YXRpb25zLgpAQCAtNTc5LDEzICs2ODAsMTAgQEAgZnVuY3Rpb24gYWRkVGVzdFRv
QWxsRXhwZWN0YXRpb25zKHRlc3QsIGV4cGVjdGF0aW9ucywgbW9kaWZpZXJzKQogLy8gYnVpbGRU
eXBlLCB0aGVuIEFMTC4KIHZhciBnX2FsbEV4cGVjdGF0aW9uczsKIAotZnVuY3Rpb24gcGFyc2Vk
RXhwZWN0YXRpb25zKCkKK2Z1bmN0aW9uIGdldFBhcnNlZEV4cGVjdGF0aW9ucyhkYXRhKQogewot
ICAgIGlmICghZ19leHBlY3RhdGlvbnMpCi0gICAgICAgIHJldHVybiBbXTsKLSAgICAKICAgICB2
YXIgZXhwZWN0YXRpb25zID0gW107Ci0gICAgdmFyIGxpbmVzID0gZ19leHBlY3RhdGlvbnMuc3Bs
aXQoJ1xuJyk7CisgICAgdmFyIGxpbmVzID0gZGF0YS5zcGxpdCgnXG4nKTsKICAgICBsaW5lcy5m
b3JFYWNoKGZ1bmN0aW9uKGxpbmUpIHsKICAgICAgICAgbGluZSA9IHRyaW1TdHJpbmcobGluZSk7
CiAgICAgICAgIGlmICghbGluZSB8fCBzdGFydHNXaXRoKGxpbmUsICcjJykpCkBAIC02ODYsNDMg
Kzc4NCwxMDMgQEAgZnVuY3Rpb24gcGFyc2VkRXhwZWN0YXRpb25zKCkKICAgICByZXR1cm4gZXhw
ZWN0YXRpb25zOwogfQogCi1mdW5jdGlvbiBwcm9jZXNzRXhwZWN0YXRpb25zKCkKKworZnVuY3Rp
b24gYWRkVGVzdFRvQWxsRXhwZWN0YXRpb25zRm9yUGxhdGZvcm0odGVzdCwgcGxhdGZvcm1OYW1l
LCBleHBlY3RhdGlvbnMsIG1vZGlmaWVycykKIHsKLSAgICBpZiAoZ19hbGxFeHBlY3RhdGlvbnMp
Ci0gICAgICAgIHJldHVybiBnX2FsbEV4cGVjdGF0aW9uczsKKyAgICBpZiAoIWdfYWxsRXhwZWN0
YXRpb25zW3Rlc3RdKQorICAgICAgICBnX2FsbEV4cGVjdGF0aW9uc1t0ZXN0XSA9IHt9OworCisg
ICAgaWYgKCFnX2FsbEV4cGVjdGF0aW9uc1t0ZXN0XVtwbGF0Zm9ybU5hbWVdKQorICAgICAgICBn
X2FsbEV4cGVjdGF0aW9uc1t0ZXN0XVtwbGF0Zm9ybU5hbWVdID0ge307CisKKyAgICB2YXIgYWxs
QnVpbGRUeXBlcyA9IFtdOworICAgIG1vZGlmaWVycy5zcGxpdCgnICcpLmZvckVhY2goZnVuY3Rp
b24obW9kaWZpZXIpIHsKKyAgICAgICAgaWYgKG1vZGlmaWVyIGluIEJVSUxEX1RZUEVTKSB7Cisg
ICAgICAgICAgICBhbGxCdWlsZFR5cGVzLnB1c2gobW9kaWZpZXIpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgfSk7CisgICAgaWYgKCFhbGxCdWlsZFR5cGVzLmxlbmd0aCkK
KyAgICAgICAgYWxsQnVpbGRUeXBlcyA9IE9iamVjdC5rZXlzKEJVSUxEX1RZUEVTKTsKIAotICAg
IGdfYWxsRXhwZWN0YXRpb25zID0ge307CisgICAgYWxsQnVpbGRUeXBlcy5mb3JFYWNoKGZ1bmN0
aW9uKGJ1aWxkVHlwZSkgeworICAgICAgICBnX2FsbEV4cGVjdGF0aW9uc1t0ZXN0XVtwbGF0Zm9y
bU5hbWVdW2J1aWxkVHlwZV0gPSB7bW9kaWZpZXJzOiBtb2RpZmllcnMsIGV4cGVjdGF0aW9uczog
ZXhwZWN0YXRpb25zfTsKKyAgICB9KTsKK30KIAotICAgIHZhciBleHBlY3RhdGlvbnNBcnJheSA9
IHBhcnNlZEV4cGVjdGF0aW9ucygpOworZnVuY3Rpb24gcHJvY2Vzc0V4cGVjdGF0aW9uc0ZvclBs
YXRmb3JtKHBsYXRmb3JtT2JqZWN0LCBwbGF0Zm9ybU5hbWUsIGV4cGVjdGF0aW9uc0FycmF5KQor
eworICAgIGlmICghZ19hbGxFeHBlY3RhdGlvbnMpCisgICAgICAgIGdfYWxsRXhwZWN0YXRpb25z
ID0ge307CisKKyAgICBpZiAoIWV4cGVjdGF0aW9uc0FycmF5KQorICAgICAgICByZXR1cm47CiAK
ICAgICAvLyBTb3J0IHRoZSBhcnJheSB0byBoaXQgbW9yZSBzcGVjaWZpYyBwYXRocyBsYXN0LiBN
b3JlIHNwZWNpZmljCiAgICAgLy8gcGF0aHMgKGUuZy4gZm9vL2Jhci9iYXouaHRtbCkgb3ZlcnJp
ZGUgZW50cmllcyBmb3IgbGVzcy1zcGVjaWZpYyBvbmVzIChlLmcuIGZvby9iYXIpLgogICAgIGV4
cGVjdGF0aW9uc0FycmF5LnNvcnQoYWxwaGFudW1lcmljQ29tcGFyZSgncGF0aCcpKTsKIAotICAg
IHZhciBhbGxUZXN0cyA9IGdldEFsbFRlc3RzKCk7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBl
eHBlY3RhdGlvbnNBcnJheS5sZW5ndGg7IGkrKykgewogICAgICAgICB2YXIgcGF0aCA9IGV4cGVj
dGF0aW9uc0FycmF5W2ldLnBhdGg7CiAgICAgICAgIHZhciBtb2RpZmllcnMgPSBleHBlY3RhdGlv
bnNBcnJheVtpXS5tb2RpZmllcnM7CiAgICAgICAgIHZhciBleHBlY3RhdGlvbnMgPSBleHBlY3Rh
dGlvbnNBcnJheVtpXS5leHBlY3RhdGlvbnM7CiAKLSAgICAgICAgdmFyIHBhdGhNYXRjaGVzQW55
VGVzdCA9IGZhbHNlOwotICAgICAgICBpZiAoYWxsVGVzdHNbcGF0aF0pIHsKLSAgICAgICAgICAg
IHBhdGhNYXRjaGVzQW55VGVzdCA9IHRydWU7Ci0gICAgICAgICAgICBhZGRUZXN0VG9BbGxFeHBl
Y3RhdGlvbnMocGF0aCwgZXhwZWN0YXRpb25zLCBtb2RpZmllcnMpOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgZm9yICh2YXIgdGVzdCBpbiBhbGxUZXN0cykgewotICAgICAgICAgICAg
ICAgIGlmIChzdGFydHNXaXRoKHRlc3QsIHBhdGgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBh
dGhNYXRjaGVzQW55VGVzdCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGFkZFRlc3RUb0Fs
bEV4cGVjdGF0aW9ucyh0ZXN0LCBleHBlY3RhdGlvbnMsIG1vZGlmaWVycyk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQorICAgICAgICB2YXIgc2hvdWxkUHJvY2Vzc0V4cGVjdGF0
aW9uID0gZmFsc2U7CisgICAgICAgIHZhciBoYXNQbGF0Zm9ybU1vZGlmaWVyVW5pb25zID0gZmFs
c2U7CisgICAgICAgIGlmIChwbGF0Zm9ybU9iamVjdC5mYWxsYmFja1BsYXRmb3JtcykgeworICAg
ICAgICAgICAgcGxhdGZvcm1PYmplY3QuZmFsbGJhY2tQbGF0Zm9ybXMuZm9yRWFjaChmdW5jdGlv
bihmYWxsYmFja1BsYXRmb3JtKSB7CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZFByb2Nlc3NF
eHBlY3RhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAg
ICAgdmFyIGZhbGxiYWNrUGxhdGZvcm1PYmplY3QgPSBwbGF0Zm9ybU9iamVjdEZvck5hbWUoZmFs
bGJhY2tQbGF0Zm9ybSk7CisgICAgICAgICAgICAgICAgaWYgKCFmYWxsYmFja1BsYXRmb3JtT2Jq
ZWN0LnBsYXRmb3JtTW9kaWZpZXJVbmlvbnMpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgICAgICAgIG1vZGlmaWVycy5zcGxpdCgnICcpLmZvckVhY2goZnVuY3Rpb24o
bW9kaWZpZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGlmaWVyIGluIGZhbGxiYWNr
UGxhdGZvcm1PYmplY3QucGxhdGZvcm1Nb2RpZmllclVuaW9ucykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgaGFzUGxhdGZvcm1Nb2RpZmllclVuaW9ucyA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoZmFsbGJhY2tQbGF0Zm9ybU9iamVjdC5wbGF0Zm9ybU1vZGlmaWVyVW5p
b25zW21vZGlmaWVyXS5pbmRleE9mKHBsYXRmb3JtTmFtZSkgIT0gLTEpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2hvdWxkUHJvY2Vzc0V4cGVjdGF0aW9uID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAoIXBhdGhNYXRjaGVzQW55VGVzdCkKLSAgICAgICAgICAgIGFk
ZFRlc3RUb0FsbEV4cGVjdGF0aW9ucyhwYXRoLCBleHBlY3RhdGlvbnMsIG1vZGlmaWVycyk7Cisg
ICAgICAgIGlmICghaGFzUGxhdGZvcm1Nb2RpZmllclVuaW9ucykKKyAgICAgICAgICAgIHNob3Vs
ZFByb2Nlc3NFeHBlY3RhdGlvbiA9IHRydWU7CisKKyAgICAgICAgaWYgKCFzaG91bGRQcm9jZXNz
RXhwZWN0YXRpb24pCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBnZXRBbGxUZXN0
c1RyaWUoKS5mb3JFYWNoKGZ1bmN0aW9uKHRyaWVQYXRoKSB7CisgICAgICAgICAgICBhZGRUZXN0
VG9BbGxFeHBlY3RhdGlvbnNGb3JQbGF0Zm9ybSh0cmllUGF0aCwgcGxhdGZvcm1OYW1lLCBleHBl
Y3RhdGlvbnMsIG1vZGlmaWVycyk7CisgICAgICAgIH0sIHBhdGgpOwogICAgIH0KIH0KIAorZnVu
Y3Rpb24gcHJvY2Vzc0V4cGVjdGF0aW9ucygpCit7CisgICAgLy8gRklYTUU6IEFuIGV4cGVjdGF0
aW9ucy1ieS1wbGF0Zm9ybSBvYmplY3Qgc2hvdWxkIGJlIHBhc3NlZCBpbnRvIHRoaXMgZnVuY3Rp
b24gcmF0aGVyIHRoYW4gY2hlY2tpbmcKKyAgICAvLyBmb3IgYSBnbG9iYWwgb2JqZWN0LiBUaGF0
IHdheSB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBiZXR0ZXIgdGVzdGVkIGFuZCBtZWFuaW5nZnVsIGVy
cm9ycyBjYW4KKyAgICAvLyBiZSByZXBvcnRlZCB3aGVuIGV4cGVjdGF0aW9ucyBmb3IgYSBnaXZl
biBwbGF0Zm9ybSBhcmUgbm90IGZvdW5kIGluIHRoYXQgb2JqZWN0LgorICAgIGlmICghZ19leHBl
Y3RhdGlvbnNCeVBsYXRmb3JtKQorICAgICAgICByZXR1cm47CisKKyAgICB0cmF2ZXJzZVBsYXRm
b3Jtc1RyZWUoZnVuY3Rpb24ocGxhdGZvcm0sIHBsYXRmb3JtTmFtZSkgeworICAgICAgICBpZiAo
cGxhdGZvcm0uZmFsbGJhY2tQbGF0Zm9ybXMpIHsKKyAgICAgICAgICAgIHBsYXRmb3JtLmZhbGxi
YWNrUGxhdGZvcm1zLmZvckVhY2goZnVuY3Rpb24oZmFsbGJhY2tQbGF0Zm9ybSkgeworICAgICAg
ICAgICAgICAgIGlmIChmYWxsYmFja1BsYXRmb3JtIGluIGdfZXhwZWN0YXRpb25zQnlQbGF0Zm9y
bSkKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0V4cGVjdGF0aW9uc0ZvclBsYXRmb3JtKHBs
YXRmb3JtLCBwbGF0Zm9ybU5hbWUsIGdfZXhwZWN0YXRpb25zQnlQbGF0Zm9ybVtmYWxsYmFja1Bs
YXRmb3JtXSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwbGF0
Zm9ybU5hbWUgaW4gZ19leHBlY3RhdGlvbnNCeVBsYXRmb3JtKQorICAgICAgICAgICAgcHJvY2Vz
c0V4cGVjdGF0aW9uc0ZvclBsYXRmb3JtKHBsYXRmb3JtLCBwbGF0Zm9ybU5hbWUsIGdfZXhwZWN0
YXRpb25zQnlQbGF0Zm9ybVtwbGF0Zm9ybU5hbWVdKTsKKyAgICB9KTsKKworICAgIGdfZXhwZWN0
YXRpb25zQnlQbGF0Zm9ybSA9IHVuZGVmaW5lZDsKK30KKwogZnVuY3Rpb24gcHJvY2Vzc01pc3Np
bmdUZXN0c1dpdGhFeHBlY3RhdGlvbnMoYnVpbGRlciwgcGxhdGZvcm0sIGJ1aWxkVHlwZSkKIHsK
ICAgICB2YXIgbm9GYWlsdXJlcyA9IFtdOwpAQCAtNzc2LDggKzkzNCw4IEBAIGZ1bmN0aW9uIHBy
b2Nlc3NUZXN0UnVuc0ZvckJ1aWxkZXIoYnVpbGRlck5hbWUpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICB2YXIgc3RhcnQgPSBEYXRlLm5vdygpOwogICAgIHByb2Nlc3NFeHBlY3RhdGlv
bnMoKTsKKyAgICB2YXIgc3RhcnQgPSBEYXRlLm5vdygpOwogCiAgICAgdmFyIGJ1aWxkSW5mbyA9
IHBsYXRmb3JtQW5kQnVpbGRUeXBlKGJ1aWxkZXJOYW1lKTsKICAgICB2YXIgcGxhdGZvcm0gPSBi
dWlsZEluZm8ucGxhdGZvcm07CkBAIC0xNDE3LDcgKzE1NzUsMjkgQEAgZnVuY3Rpb24gcmVhbE1v
ZGlmaWVycyhtb2RpZmllclN0cmluZykKIHsKICAgICB2YXIgbW9kaWZpZXJzID0gbW9kaWZpZXJT
dHJpbmcuc3BsaXQoJyAnKTs7CiAgICAgcmV0dXJuIG1vZGlmaWVycy5maWx0ZXIoZnVuY3Rpb24o
bW9kaWZpZXIpIHsKLSAgICAgICAgcmV0dXJuICEobW9kaWZpZXIgaW4gQlVJTERfVFlQRVMpICYm
IFBMQVRGT1JNUy5pbmRleE9mKG1vZGlmaWVyKSA9PSAtMSAmJiAhKG1vZGlmaWVyIGluIFBMQVRG
T1JNX1VOSU9OUykgJiYgIXN0YXJ0c1dpdGgobW9kaWZpZXIsICdCVUcnKTsKKyAgICAgICAgaWYg
KG1vZGlmaWVyIGluIEJVSUxEX1RZUEVTIHx8IHN0YXJ0c1dpdGgobW9kaWZpZXIsICdCVUcnKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB2YXIgbWF0Y2hlc1BsYXRmb3Jt
T3JVbmlvbiA9IGZhbHNlOworICAgICAgICB0cmF2ZXJzZVBsYXRmb3Jtc1RyZWUoZnVuY3Rpb24o
cGxhdGZvcm0sIHBsYXRmb3JtTmFtZSkgeworICAgICAgICAgICAgaWYgKG1hdGNoZXNQbGF0Zm9y
bU9yVW5pb24pCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAocGxh
dGZvcm0uZmFsbGJhY2tQbGF0Zm9ybXMpIHsKKyAgICAgICAgICAgICAgICBwbGF0Zm9ybS5mYWxs
YmFja1BsYXRmb3Jtcy5mb3JFYWNoKGZ1bmN0aW9uKGZhbGxiYWNrUGxhdGZvcm0pIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKG1hdGNoZXNQbGF0Zm9ybU9yVW5pb24pCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICAgICAgdmFyIGZhbGxiYWNrUGxh
dGZvcm1PYmplY3QgPSBwbGF0Zm9ybU9iamVjdEZvck5hbWUoZmFsbGJhY2tQbGF0Zm9ybSk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICghZmFsbGJhY2tQbGF0Zm9ybU9iamVjdC5wbGF0Zm9ybU1v
ZGlmaWVyVW5pb25zKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICAgICAgICAgIG1hdGNoZXNQbGF0Zm9ybU9yVW5pb24gPSBtb2RpZmllciBpbiBmYWxsYmFj
a1BsYXRmb3JtT2JqZWN0LnN1YlBsYXRmb3JtcyB8fCBtb2RpZmllciBpbiBmYWxsYmFja1BsYXRm
b3JtT2JqZWN0LnBsYXRmb3JtTW9kaWZpZXJVbmlvbnM7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIHJldHVybiAhbWF0Y2hlc1BsYXRm
b3JtT3JVbmlvbjsKICAgICB9KS5qb2luKCcgJyk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZF91bml0
dGVzdHMuanMgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtp
bmVzc19kYXNoYm9hcmRfdW5pdHRlc3RzLmpzCmluZGV4IGQxZTIyNDNlYzVlMWQ4NDhjNjEyNjVl
ZmJiMWY2YWU2ZTU0MWRlZmYuLjllMDBjODg4MzI1NDAxNTk2Y2UyNTZkNzNmNDU2ZDcxNGI2MmRk
ODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMv
Zmxha2luZXNzX2Rhc2hib2FyZF91bml0dGVzdHMuanMKKysrIGIvVG9vbHMvVGVzdFJlc3VsdFNl
cnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkX3VuaXR0ZXN0cy5qcwpA
QCAtMzAsMTEgKzMwLDExIEBAIGZ1bmN0aW9uIHJlc2V0R2xvYmFscygpCiB7CiAgICAgYWxsRXhw
ZWN0YXRpb25zID0gbnVsbDsKICAgICBhbGxUZXN0cyA9IG51bGw7Ci0gICAgZ19leHBlY3RhdGlv
bnMgPSAnJzsKKyAgICBnX2V4cGVjdGF0aW9uc0J5UGxhdGZvcm0gPSB7fTsKICAgICBnX3Jlc3Vs
dHNCeUJ1aWxkZXIgPSB7fTsKICAgICBnX2J1aWxkZXJzID0ge307CiAgICAgZ19hbGxFeHBlY3Rh
dGlvbnMgPSBudWxsOwotICAgIGdfYWxsVGVzdHMgPSBudWxsOworICAgIGdfYWxsVGVzdHNUcmll
ID0gbnVsbDsKICAgICBnX2N1cnJlbnRTdGF0ZSA9IHt9OwogICAgIGdfY3Jvc3NEYXNoYm9hcmRT
dGF0ZSA9IHt9OwogICAgIGZvciAodmFyIGtleSBpbiBnX2RlZmF1bHRDcm9zc0Rhc2hib2FyZFN0
YXRlVmFsdWVzKQpAQCAtODQsNyArODQsNyBAQCB0ZXN0KCdyZWxlYXNlRmFpbCcsIDIsIGZ1bmN0
aW9uKCkgewogICAgIHZhciBleHBlY3RhdGlvbnNBcnJheSA9IFsKICAgICAgICAgeydtb2RpZmll
cnMnOiAnUkVMRUFTRScsICdleHBlY3RhdGlvbnMnOiAnRkFJTCd9CiAgICAgXTsKLSAgICBnX2V4
cGVjdGF0aW9ucyA9ICdbIFJlbGVhc2UgXSAnICsgdGVzdCArICcgWyBGYWlsdXJlIF0nOworICAg
IGdfZXhwZWN0YXRpb25zQnlQbGF0Zm9ybVsnQ0hST01JVU0nXSA9IGdldFBhcnNlZEV4cGVjdGF0
aW9ucygnWyBSZWxlYXNlIF0gJyArIHRlc3QgKyAnIFsgRmFpbHVyZSBdJyk7CiAgICAgcnVuRXhw
ZWN0YXRpb25zVGVzdChidWlsZGVyLCB0ZXN0LCAnRkFJTCcsICdSRUxFQVNFJyk7CiB9KTsKIApA
QCAtOTYsOCArOTYsOCBAQCB0ZXN0KCdyZWxlYXNlRmFpbERlYnVnQ3Jhc2hSZWxlYXNlQnVpbGRl
cicsIDIsIGZ1bmN0aW9uKCkgewogICAgICAgICB7J21vZGlmaWVycyc6ICdSRUxFQVNFJywgJ2V4
cGVjdGF0aW9ucyc6ICdGQUlMJ30sCiAgICAgICAgIHsnbW9kaWZpZXJzJzogJ0RFQlVHJywgJ2V4
cGVjdGF0aW9ucyc6ICdDUkFTSCd9CiAgICAgXTsKLSAgICBnX2V4cGVjdGF0aW9ucyA9ICdbIFJl
bGVhc2UgXSAnICsgdGVzdCArICcgWyBGYWlsdXJlIF1cbicgKwotICAgICAgICAnWyBEZWJ1ZyBd
ICcgKyB0ZXN0ICsgJyBbIENyYXNoIF0nOworICAgIGdfZXhwZWN0YXRpb25zQnlQbGF0Zm9ybVsn
Q0hST01JVU0nXSA9IGdldFBhcnNlZEV4cGVjdGF0aW9ucygnWyBSZWxlYXNlIF0gJyArIHRlc3Qg
KyAnIFsgRmFpbHVyZSBdXG4nICsKKyAgICAgICAgJ1sgRGVidWcgXSAnICsgdGVzdCArICcgWyBD
cmFzaCBdJyk7CiAgICAgcnVuRXhwZWN0YXRpb25zVGVzdChidWlsZGVyLCB0ZXN0LCAnRkFJTCcs
ICdSRUxFQVNFJyk7CiB9KTsKIApAQCAtMTA5LDE3ICsxMDksMTcgQEAgdGVzdCgncmVsZWFzZUZh
aWxEZWJ1Z0NyYXNoRGVidWdCdWlsZGVyJywgMiwgZnVuY3Rpb24oKSB7CiAgICAgICAgIHsnbW9k
aWZpZXJzJzogJ1JFTEVBU0UnLCAnZXhwZWN0YXRpb25zJzogJ0ZBSUwnfSwKICAgICAgICAgeydt
b2RpZmllcnMnOiAnREVCVUcnLCAnZXhwZWN0YXRpb25zJzogJ0NSQVNIJ30KICAgICBdOwotICAg
IGdfZXhwZWN0YXRpb25zID0gJ1sgUmVsZWFzZSBdICcgKyB0ZXN0ICsgJyBbIEZhaWx1cmUgXVxu
JyArCi0gICAgICAgICdbIERlYnVnIF0gJyArIHRlc3QgKyAnIFsgQ3Jhc2ggXSc7CisgICAgZ19l
eHBlY3RhdGlvbnNCeVBsYXRmb3JtWydDSFJPTUlVTSddID0gZ2V0UGFyc2VkRXhwZWN0YXRpb25z
KCdbIFJlbGVhc2UgXSAnICsgdGVzdCArICcgWyBGYWlsdXJlIF1cbicgKworICAgICAgICAnWyBE
ZWJ1ZyBdICcgKyB0ZXN0ICsgJyBbIENyYXNoIF0nKTsKICAgICBydW5FeHBlY3RhdGlvbnNUZXN0
KGJ1aWxkZXIsIHRlc3QsICdDUkFTSCcsICdERUJVRycpOwogfSk7CiAKIHRlc3QoJ292ZXJyaWRl
SnVzdEJ1aWxkVHlwZScsIDEyLCBmdW5jdGlvbigpIHsKICAgICByZXNldEdsb2JhbHMoKTsKICAg
ICB2YXIgdGVzdCA9ICdiYXIvMS5odG1sJzsKLSAgICBnX2V4cGVjdGF0aW9ucyA9ICdiYXIgWyBX
b250Rml4IEZhaWx1cmUgUGFzcyBUaW1lb3V0IF1cbicgKworICAgIGdfZXhwZWN0YXRpb25zQnlQ
bGF0Zm9ybVsnQ0hST01JVU0nXSA9IGdldFBhcnNlZEV4cGVjdGF0aW9ucygnYmFyIFsgV29udEZp
eCBGYWlsdXJlIFBhc3MgVGltZW91dCBdXG4nICsKICAgICAgICAgJ1sgTWFjIF0gJyArIHRlc3Qg
KyAnIFsgV29udEZpeCBGYWlsdXJlIF1cbicgKwotICAgICAgICAnWyBMaW51eCBEZWJ1ZyBdICcg
KyB0ZXN0ICsgJyBbIENyYXNoIF0nOworICAgICAgICAnWyBMaW51eCBEZWJ1ZyBdICcgKyB0ZXN0
ICsgJyBbIENyYXNoIF0nKTsKICAgICAKICAgICBydW5FeHBlY3RhdGlvbnNUZXN0KCdXZWJraXQg
V2luJywgdGVzdCwgJ0ZBSUwgUEFTUyBUSU1FT1VUJywgJ1dPTlRGSVgnKTsKICAgICBydW5FeHBl
Y3RhdGlvbnNUZXN0KCdXZWJraXQgV2luIChkYmcpKDMpJywgdGVzdCwgJ0ZBSUwgUEFTUyBUSU1F
T1VUJywgJ1dPTlRGSVgnKTsKQEAgLTEyOSw3ICsxMjksNyBAQCB0ZXN0KCdvdmVycmlkZUp1c3RC
dWlsZFR5cGUnLCAxMiwgZnVuY3Rpb24oKSB7CiAgICAgcnVuRXhwZWN0YXRpb25zVGVzdCgnV2Vi
a2l0IE1hYzEwLjcgKGRiZykoMyknLCB0ZXN0LCAnRkFJTCcsICdNQUMgV09OVEZJWCcpOwogfSk7
CiAKLXRlc3QoJ3BsYXRmb3JtQW5kQnVpbGRUeXBlJywgNzYsIGZ1bmN0aW9uKCkgewordGVzdCgn
cGxhdGZvcm1BbmRCdWlsZFR5cGUnLCA3OCwgZnVuY3Rpb24oKSB7CiAgICAgdmFyIHJ1blBsYXRm
b3JtQW5kQnVpbGRUeXBlVGVzdCA9IGZ1bmN0aW9uKGJ1aWxkZXIsIGV4cGVjdGVkUGxhdGZvcm0s
IGV4cGVjdGVkQnVpbGRUeXBlKSB7CiAgICAgICAgIGdfcGVyQnVpbGRlclBsYXRmb3JtQW5kQnVp
bGRUeXBlID0ge307CiAgICAgICAgIGJ1aWxkSW5mbyA9IHBsYXRmb3JtQW5kQnVpbGRUeXBlKGJ1
aWxkZXIpOwpAQCAtMTM3LDUxICsxMzcsNTIgQEAgdGVzdCgncGxhdGZvcm1BbmRCdWlsZFR5cGUn
LCA3NiwgZnVuY3Rpb24oKSB7CiAgICAgICAgIGVxdWFsKGJ1aWxkSW5mby5wbGF0Zm9ybSwgZXhw
ZWN0ZWRQbGF0Zm9ybSwgbWVzc2FnZSk7CiAgICAgICAgIGVxdWFsKGJ1aWxkSW5mby5idWlsZFR5
cGUsIGV4cGVjdGVkQnVpbGRUeXBlLCBtZXNzYWdlKTsKICAgICB9Ci0gICAgcnVuUGxhdGZvcm1B
bmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgV2luIChkZXBzKScsICdYUCcsICdSRUxFQVNFJyk7Ci0g
ICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgV2luIChkZXBzKShkYmcpKDEp
JywgJ1hQJywgJ0RFQlVHJyk7Ci0gICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJr
aXQgV2luIChkZXBzKShkYmcpKDIpJywgJ1hQJywgJ0RFQlVHJyk7Ci0gICAgcnVuUGxhdGZvcm1B
bmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgTGludXggKGRlcHMpJywgJ0xVQ0lEJywgJ1JFTEVBU0Un
KTsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBMaW51eCAoZGVwcyko
ZGJnKSgxKScsICdMVUNJRCcsICdERUJVRycpOwotICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBl
VGVzdCgnV2Via2l0IExpbnV4IChkZXBzKShkYmcpKDIpJywgJ0xVQ0lEJywgJ0RFQlVHJyk7Ci0g
ICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgTWFjMTAuNiAoZGVwcyknLCAn
U05PV0xFT1BBUkQnLCAnUkVMRUFTRScpOwotICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVz
dCgnV2Via2l0IE1hYzEwLjYgKGRlcHMpKGRiZykoMSknLCAnU05PV0xFT1BBUkQnLCAnREVCVUcn
KTsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBNYWMxMC42IChkZXBz
KShkYmcpKDIpJywgJ1NOT1dMRU9QQVJEJywgJ0RFQlVHJyk7Ci0gICAgcnVuUGxhdGZvcm1BbmRC
dWlsZFR5cGVUZXN0KCdXZWJraXQgV2luJywgJ1hQJywgJ1JFTEVBU0UnKTsKLSAgICBydW5QbGF0
Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBXaW43JywgJ1dJTjcnLCAnUkVMRUFTRScpOwot
ICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IFdpbiAoZGJnKSgxKScsICdY
UCcsICdERUJVRycpOwotICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IFdp
biAoZGJnKSgyKScsICdYUCcsICdERUJVRycpOwotICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBl
VGVzdCgnV2Via2l0IExpbnV4JywgJ0xVQ0lEJywgJ1JFTEVBU0UnKTsKLSAgICBydW5QbGF0Zm9y
bUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBMaW51eCAzMicsICdMVUNJRCcsICdSRUxFQVNFJyk7
Ci0gICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgTGludXggKGRiZykoMSkn
LCAnTFVDSUQnLCAnREVCVUcnKTsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dl
YmtpdCBMaW51eCAoZGJnKSgyKScsICdMVUNJRCcsICdERUJVRycpOwotICAgIHJ1blBsYXRmb3Jt
QW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IE1hYzEwLjYnLCAnU05PV0xFT1BBUkQnLCAnUkVMRUFT
RScpOwotICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IE1hYzEwLjYgKGRi
ZyknLCAnU05PV0xFT1BBUkQnLCAnREVCVUcnKTsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlw
ZVRlc3QoJ1hQIFRlc3RzJywgJ1hQJywgJ1JFTEVBU0UnKTsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1
aWxkVHlwZVRlc3QoJ0ludGVyYWN0aXZlIFRlc3RzIChkYmcpJywgJ1hQJywgJ0RFQlVHJyk7Cisg
ICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgV2luIChkZXBzKScsICdDSFJP
TUlVTV9YUCcsICdSRUxFQVNFJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdX
ZWJraXQgV2luIChkZXBzKShkYmcpKDEpJywgJ0NIUk9NSVVNX1hQJywgJ0RFQlVHJyk7CisgICAg
cnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgV2luIChkZXBzKShkYmcpKDIpJywg
J0NIUk9NSVVNX1hQJywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0
KCdXZWJraXQgTGludXggKGRlcHMpJywgJ0NIUk9NSVVNX0xVQ0lEJywgJ1JFTEVBU0UnKTsKKyAg
ICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBMaW51eCAoZGVwcykoZGJnKSgx
KScsICdDSFJPTUlVTV9MVUNJRCcsICdERUJVRycpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRU
eXBlVGVzdCgnV2Via2l0IExpbnV4IChkZXBzKShkYmcpKDIpJywgJ0NIUk9NSVVNX0xVQ0lEJywg
J0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJraXQgTWFjMTAu
NiAoZGVwcyknLCAnQ0hST01JVU1fU05PV0xFT1BBUkQnLCAnUkVMRUFTRScpOworICAgIHJ1blBs
YXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IE1hYzEwLjYgKGRlcHMpKGRiZykoMSknLCAn
Q0hST01JVU1fU05PV0xFT1BBUkQnLCAnREVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxk
VHlwZVRlc3QoJ1dlYmtpdCBNYWMxMC42IChkZXBzKShkYmcpKDIpJywgJ0NIUk9NSVVNX1NOT1dM
RU9QQVJEJywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdXZWJr
aXQgV2luJywgJ0NIUk9NSVVNX1hQJywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1
aWxkVHlwZVRlc3QoJ1dlYmtpdCBXaW43JywgJ0NIUk9NSVVNX1dJTjcnLCAnUkVMRUFTRScpOwor
ICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IFdpbiAoZGJnKSgxKScsICdD
SFJPTUlVTV9YUCcsICdERUJVRycpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgn
V2Via2l0IFdpbiAoZGJnKSgyKScsICdDSFJPTUlVTV9YUCcsICdERUJVRycpOworICAgIHJ1blBs
YXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IExpbnV4JywgJ0NIUk9NSVVNX0xVQ0lEJywg
J1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBMaW51
eCAzMicsICdDSFJPTUlVTV9MVUNJRCcsICdSRUxFQVNFJyk7CisgICAgcnVuUGxhdGZvcm1BbmRC
dWlsZFR5cGVUZXN0KCdXZWJraXQgTGludXggKGRiZykoMSknLCAnQ0hST01JVU1fTFVDSUQnLCAn
REVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dlYmtpdCBMaW51eCAo
ZGJnKSgyKScsICdDSFJPTUlVTV9MVUNJRCcsICdERUJVRycpOworICAgIHJ1blBsYXRmb3JtQW5k
QnVpbGRUeXBlVGVzdCgnV2Via2l0IE1hYzEwLjYnLCAnQ0hST01JVU1fU05PV0xFT1BBUkQnLCAn
UkVMRUFTRScpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2Via2l0IE1hYzEw
LjYgKGRiZyknLCAnQ0hST01JVU1fU05PV0xFT1BBUkQnLCAnREVCVUcnKTsKKyAgICBydW5QbGF0
Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1hQIFRlc3RzJywgJ0NIUk9NSVVNX1hQJywgJ1JFTEVBU0Un
KTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0ludGVyYWN0aXZlIFRlc3RzIChk
YmcpJywgJ0NIUk9NSVVNX1hQJywgJ0RFQlVHJyk7CiAgICAgCiAgICAgZ19jcm9zc0Rhc2hib2Fy
ZFN0YXRlLmdyb3VwID0gJ0BUb1QgLSB3ZWJraXQub3JnJzsKICAgICBnX2Nyb3NzRGFzaGJvYXJk
U3RhdGUudGVzdFR5cGUgPSAnbGF5b3V0LXRlc3RzJzsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxk
VHlwZVRlc3QoJ0Nocm9taXVtIFdpbiBSZWxlYXNlIChUZXN0cyknLCAnWFAnLCAnUkVMRUFTRScp
OwotICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnQ2hyb21pdW0gTGludXggUmVsZWFz
ZSAoVGVzdHMpJywgJ0xVQ0lEJywgJ1JFTEVBU0UnKTsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxk
VHlwZVRlc3QoJ0Nocm9taXVtIE1hYyBSZWxlYXNlIChUZXN0cyknLCAnU05PV0xFT1BBUkQnLCAn
UkVMRUFTRScpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnQ2hyb21pdW0gV2lu
IFJlbGVhc2UgKFRlc3RzKScsICdDSFJPTUlVTV9YUCcsICdSRUxFQVNFJyk7CisgICAgcnVuUGxh
dGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdDaHJvbWl1bSBMaW51eCBSZWxlYXNlIChUZXN0cyknLCAn
Q0hST01JVU1fTFVDSUQnLCAnUkVMRUFTRScpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBl
VGVzdCgnQ2hyb21pdW0gTWFjIFJlbGVhc2UgKFRlc3RzKScsICdDSFJPTUlVTV9TTk9XTEVPUEFS
RCcsICdSRUxFQVNFJyk7CiAgICAgCiAgICAgLy8gRklYTUU6IFRoZXNlIHBsYXRmb3JtcyBzaG91
bGQgbWF0Y2ggd2hhdGV2ZXIgd2UgdXNlIGluIHRoZSBUZXN0RXhwZWN0YXRpb25zIGZvcm1hdC4K
LSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0xpb24gUmVsZWFzZSAoVGVzdHMpJywg
J0FQUExFX0xJT04nLCAnUkVMRUFTRScpOwotICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVz
dCgnTGlvbiBEZWJ1ZyAoVGVzdHMpJywgJ0FQUExFX0xJT04nLCAnREVCVUcnKTsKLSAgICBydW5Q
bGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1Nub3dMZW9wYXJkIEludGVsIFJlbGVhc2UgKFRlc3Rz
KScsICdBUFBMRV9TTk9XTEVPUEFSRCcsICdSRUxFQVNFJyk7Ci0gICAgcnVuUGxhdGZvcm1BbmRC
dWlsZFR5cGVUZXN0KCdTbm93TGVvcGFyZCBJbnRlbCBMZWFrcycsICdBUFBMRV9TTk9XTEVPUEFS
RCcsICdSRUxFQVNFJyk7Ci0gICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdTbm93TGVv
cGFyZCBJbnRlbCBEZWJ1ZyAoVGVzdHMpJywgJ0FQUExFX1NOT1dMRU9QQVJEJywgJ0RFQlVHJyk7
Ci0gICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdHVEsgTGludXggMzItYml0IFJlbGVh
c2UnLCAnR1RLX0xJTlVYJywgJ1JFTEVBU0UnKTsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlw
ZVRlc3QoJ0dUSyBMaW51eCAzMi1iaXQgRGVidWcnLCAnR1RLX0xJTlVYJywgJ0RFQlVHJyk7Ci0g
ICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdHVEsgTGludXggNjQtYml0IERlYnVnJywg
J0dUS19MSU5VWCcsICdERUJVRycpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgn
TGlvbiBSZWxlYXNlIChUZXN0cyknLCAnQVBQTEVfTUFDX0xJT05fV0sxJywgJ1JFTEVBU0UnKTsK
KyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0xpb24gRGVidWcgKFRlc3RzKScsICdB
UFBMRV9NQUNfTElPTl9XSzEnLCAnREVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlw
ZVRlc3QoJ1Nub3dMZW9wYXJkIEludGVsIFJlbGVhc2UgKFRlc3RzKScsICdBUFBMRV9NQUNfU05P
V0xFT1BBUkRfV0sxJywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRl
c3QoJ1Nub3dMZW9wYXJkIEludGVsIExlYWtzJywgJ0FQUExFX01BQ19TTk9XTEVPUEFSRF9XSzEn
LCAnUkVMRUFTRScpOworICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnU25vd0xlb3Bh
cmQgSW50ZWwgRGVidWcgKFRlc3RzKScsICdBUFBMRV9NQUNfU05PV0xFT1BBUkRfV0sxJywgJ0RF
QlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdHVEsgTGludXggMzItYml0
IFJlbGVhc2UnLCAnR1RLX0xJTlVYX1dLMScsICdSRUxFQVNFJyk7CisgICAgcnVuUGxhdGZvcm1B
bmRCdWlsZFR5cGVUZXN0KCdHVEsgTGludXggMzItYml0IERlYnVnJywgJ0dUS19MSU5VWF9XSzEn
LCAnREVCVUcnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ0dUSyBMaW51eCA2
NC1iaXQgRGVidWcnLCAnR1RLX0xJTlVYX1dLMScsICdERUJVRycpOworICAgIHJ1blBsYXRmb3Jt
QW5kQnVpbGRUeXBlVGVzdCgnR1RLIExpbnV4IDY0LWJpdCBEZWJ1ZyBXSzInLCAnR1RLX0xJTlVY
X1dLMicsICdERUJVRycpOwogICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnUXQgTGlu
dXggUmVsZWFzZScsICdRVF9MSU5VWCcsICdSRUxFQVNFJyk7Ci0gICAgcnVuUGxhdGZvcm1BbmRC
dWlsZFR5cGVUZXN0KCdXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpJywgJ0FQUExFX1dJTjcnLCAn
UkVMRUFTRScpOwotICAgIHJ1blBsYXRmb3JtQW5kQnVpbGRUeXBlVGVzdCgnV2luZG93cyBYUCBE
ZWJ1ZyAoVGVzdHMpJywgJ0FQUExFX1hQJywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRC
dWlsZFR5cGVUZXN0KCdXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpJywgJ0FQUExFX1dJTl9XSU43
JywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRlc3QoJ1dpbmRvd3Mg
WFAgRGVidWcgKFRlc3RzKScsICdBUFBMRV9XSU5fWFAnLCAnREVCVUcnKTsKICAgICAKICAgICAv
LyBGSVhNRTogU2hvdWxkIFdlYktpdDIgYmUgaXQncyBvd24gcGxhdGZvcm0/Ci0gICAgcnVuUGxh
dGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdTbm93TGVvcGFyZCBJbnRlbCBSZWxlYXNlIChXZWJLaXQy
IFRlc3RzKScsICdBUFBMRV9TTk9XTEVPUEFSRCcsICdSRUxFQVNFJyk7Ci0gICAgcnVuUGxhdGZv
cm1BbmRCdWlsZFR5cGVUZXN0KCdTbm93TGVvcGFyZCBJbnRlbCBEZWJ1ZyAoV2ViS2l0MiBUZXN0
cyknLCAnQVBQTEVfU05PV0xFT1BBUkQnLCAnREVCVUcnKTsKLSAgICBydW5QbGF0Zm9ybUFuZEJ1
aWxkVHlwZVRlc3QoJ1dpbmRvd3MgNyBSZWxlYXNlIChXZWJLaXQyIFRlc3RzKScsICdBUFBMRV9X
SU43JywgJ1JFTEVBU0UnKTsgICAgCisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVUZXN0KCdT
bm93TGVvcGFyZCBJbnRlbCBSZWxlYXNlIChXZWJLaXQyIFRlc3RzKScsICdBUFBMRV9NQUNfU05P
V0xFT1BBUkRfV0syJywgJ1JFTEVBU0UnKTsKKyAgICBydW5QbGF0Zm9ybUFuZEJ1aWxkVHlwZVRl
c3QoJ1Nub3dMZW9wYXJkIEludGVsIERlYnVnIChXZWJLaXQyIFRlc3RzKScsICdBUFBMRV9NQUNf
U05PV0xFT1BBUkRfV0syJywgJ0RFQlVHJyk7CisgICAgcnVuUGxhdGZvcm1BbmRCdWlsZFR5cGVU
ZXN0KCdXaW5kb3dzIDcgUmVsZWFzZSAoV2ViS2l0MiBUZXN0cyknLCAnQVBQTEVfV0lOX1dJTjcn
LCAnUkVMRUFTRScpOyAgICAKIH0pOwogCiB0ZXN0KCdyZWFsTW9kaWZpZXJzJywgMywgZnVuY3Rp
b24oKSB7CkBAIC0xOTAsMTAgKzE5MSwxMyBAQCB0ZXN0KCdyZWFsTW9kaWZpZXJzJywgMywgZnVu
Y3Rpb24oKSB7CiAgICAgZXF1YWwocmVhbE1vZGlmaWVycygnQlVHKEZvbyknKSwgJycpOwogfSk7
CiAKLXRlc3QoJ2FsbFRlc3RzV2l0aFNhbWVQbGF0Zm9ybUFuZEJ1aWxkVHlwZScsIDE0LCBmdW5j
dGlvbigpIHsKK3Rlc3QoJ2FsbFRlc3RzV2l0aFNhbWVQbGF0Zm9ybUFuZEJ1aWxkVHlwZScsIDEs
IGZ1bmN0aW9uKCkgewogICAgIC8vIEZJWE1FOiB0ZXN0IHRoYXQgYWxsVGVzdHNXaXRoU2FtZVBs
YXRmb3JtQW5kQnVpbGRUeXBlIGFjdHVhbGx5IHJldHVybnMgdGhlIHJpZ2h0IHNldCBvZiB0ZXN0
cy4KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IFBMQVRGT1JNUy5sZW5ndGg7IGkrKykKLSAgICAg
ICAgb2soZ19hbGxUZXN0c0J5UGxhdGZvcm1BbmRCdWlsZFR5cGVbUExBVEZPUk1TW2ldXSk7Cisg
ICAgdmFyIGV4cGVjdGVkUGxhdGZvcm1zTGlzdCA9IFsnQ0hST01JVU1fTElPTicsICdDSFJPTUlV
TV9TTk9XTEVPUEFSRCcsICdDSFJPTUlVTV9YUCcsICdDSFJPTUlVTV9WSVNUQScsICdDSFJPTUlV
TV9XSU43JywgJ0NIUk9NSVVNX0xVQ0lEJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdDSFJPTUlVTV9BTkRST0lEJywgJ0FQUExFX01BQ19MSU9OX1dLMScsICdBUFBMRV9NQUNf
TElPTl9XSzInLCAnQVBQTEVfTUFDX1NOT1dMRU9QQVJEX1dLMScsICdBUFBMRV9NQUNfU05PV0xF
T1BBUkRfV0syJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBUFBMRV9XSU5f
WFAnLCAnQVBQTEVfV0lOX1dJTjcnLCAgJ0dUS19MSU5VWF9XSzEnLCAnR1RLX0xJTlVYX1dLMics
ICdRVF9MSU5VWCcsICdFRkxfTElOVVhfV0sxJywgJ0VGTF9MSU5VWF9XSzInXTsKKyAgICB2YXIg
YWN0dWFsUGxhdGZvcm1zTGlzdCA9IE9iamVjdC5rZXlzKGdfYWxsVGVzdHNCeVBsYXRmb3JtQW5k
QnVpbGRUeXBlKTsKKyAgICBkZWVwRXF1YWwoZXhwZWN0ZWRQbGF0Zm9ybXNMaXN0LCBhY3R1YWxQ
bGF0Zm9ybXNMaXN0KTsKIH0pOwogCiB0ZXN0KCdmaWx0ZXJCdWdzJyw0LCBmdW5jdGlvbigpIHsK
QEAgLTIwNiw2MyArMjEwLDg0IEBAIHRlc3QoJ2ZpbHRlckJ1Z3MnLDQsIGZ1bmN0aW9uKCkgewog
ICAgIGVxdWFsKGZpbHRlcmVkLmJ1Z3MsICcnKTsKIH0pOwogCi10ZXN0KCdnZXRFeHBlY3RhdGlv
bnMnLCAxMSwgZnVuY3Rpb24oKSB7Cit0ZXN0KCdnZXRFeHBlY3RhdGlvbnMnLCAxNiwgZnVuY3Rp
b24oKSB7CiAgICAgcmVzZXRHbG9iYWxzKCk7CiAgICAgZ19idWlsZGVyc1snV2ViS2l0IFdpbidd
ID0gdHJ1ZTsKICAgICBnX3Jlc3VsdHNCeUJ1aWxkZXIgPSB7CiAgICAgICAgICdXZWJLaXQgV2lu
JzogewogICAgICAgICAgICAgJ3Rlc3RzJzogewogICAgICAgICAgICAgICAgICdmb28vdGVzdDEu
aHRtbCc6IHsncmVzdWx0cyc6IFtbMTAwLCAnRiddXSwgJ3RpbWVzJzogW1sxMDAsIDBdXX0sCisg
ICAgICAgICAgICAgICAgJ2Zvby90ZXN0Mi5odG1sJzogeydyZXN1bHRzJzogW1sxMDAsICdGJ11d
LCAndGltZXMnOiBbWzEwMCwgMF1dfSwKICAgICAgICAgICAgICAgICAnZm9vL3Rlc3QzLmh0bWwn
OiB7J3Jlc3VsdHMnOiBbWzEwMCwgJ0YnXV0sICd0aW1lcyc6IFtbMTAwLCAwXV19LAogICAgICAg
ICAgICAgICAgICd0ZXN0MS5odG1sJzogeydyZXN1bHRzJzogW1sxMDAsICdGJ11dLCAndGltZXMn
OiBbWzEwMCwgMF1dfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgZ19l
eHBlY3RhdGlvbnMgPSAnQnVnKDEyMykgZm9vIFsgRmFpbHVyZSBQYXNzIENyYXNoIF1cbicgKwor
ICAgIGdfZXhwZWN0YXRpb25zQnlQbGF0Zm9ybVsnQ0hST01JVU0nXSA9IGdldFBhcnNlZEV4cGVj
dGF0aW9ucygnQnVnKDEyMykgZm9vIFsgRmFpbHVyZSBQYXNzIENyYXNoIF1cbicgKwogICAgICAg
ICAnQnVnKEZvbykgWyBSZWxlYXNlIF0gZm9vL3Rlc3QxLmh0bWwgWyBGYWlsdXJlIF1cbicgKwog
ICAgICAgICAnWyBEZWJ1ZyBdIGZvby90ZXN0MS5odG1sIFsgQ3Jhc2ggXVxuJyArCiAgICAgICAg
ICdCdWcoNDU2KSBmb28vdGVzdDIuaHRtbCBbIEZhaWx1cmUgXVxuJyArCiAgICAgICAgICdbIExp
bnV4IERlYnVnIF0gZm9vL3Rlc3QyLmh0bWwgWyBDcmFzaCBdXG4nICsKICAgICAgICAgJ1sgUmVs
ZWFzZSBdIHRlc3QxLmh0bWwgWyBGYWlsdXJlIF1cbicgKwotICAgICAgICAnWyBEZWJ1ZyBdIHRl
c3QxLmh0bWwgWyBDcmFzaCBdXG4nICsKLSAgICAgICAgJ1sgV2luNyBdIGh0dHAvdGVzdHMvYXBw
Y2FjaGUvaW50ZXJydXB0ZWQtdXBkYXRlLmh0bWwgWyBUaW1lb3V0IF1cbicgKwotICAgICAgICAn
WyBNYWMgTGludXggWFAgXSBodHRwL3Rlc3RzL2FwcGNhY2hlL2ludGVycnVwdGVkLXVwZGF0ZS5o
dG1sIFsgRmFpbHVyZSBdXG4nOworICAgICAgICAnWyBEZWJ1ZyBdIHRlc3QxLmh0bWwgWyBDcmFz
aCBdXG4nKTsKKyAgICBnX2V4cGVjdGF0aW9uc0J5UGxhdGZvcm1bJ0NIUk9NSVVNX0FORFJPSUQn
XSA9IGdldFBhcnNlZEV4cGVjdGF0aW9ucygnQnVnKDY1NCkgZm9vL3Rlc3QyLmh0bWwgWyBDcmFz
aCBdXG4nKTsKKworICAgIGdfZXhwZWN0YXRpb25zQnlQbGF0Zm9ybVsnR1RLJ10gPSBnZXRQYXJz
ZWRFeHBlY3RhdGlvbnMoJ0J1Zyg0MikgZm9vL3Rlc3QyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF1cbicgKworICAgICAgICAnWyBEZWJ1ZyBdIHRlc3QxLmh0bWwgWyBDcmFzaCBdXG4nKTsKKyAg
ICBnX2V4cGVjdGF0aW9uc0J5UGxhdGZvcm1bJ0dUS19MSU5VWF9XSzEnXSA9IGdldFBhcnNlZEV4
cGVjdGF0aW9ucygnWyBSZWxlYXNlIF0gZm9vL3Rlc3QxLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF1cbicgKworICAgICAgICAnQnVnKDc4OSkgZm9vL3Rlc3QyLmh0bWwgWyBDcmFzaCBdXG4nKTsK
KyAgICBnX2V4cGVjdGF0aW9uc0J5UGxhdGZvcm1bJ0dUS19MSU5VWF9XSzInXSA9IGdldFBhcnNl
ZEV4cGVjdGF0aW9ucygnQnVnKDk4NykgZm9vL3Rlc3QyLmh0bWwgWyBGYWlsdXJlIF1cbicpOwog
CiAgICAgcHJvY2Vzc0V4cGVjdGF0aW9ucygpOwogICAgIAotICAgIHZhciBleHBlY3RhdGlvbnMg
PSBnZXRFeHBlY3RhdGlvbnMoJ2Zvby90ZXN0MS5odG1sJywgJ1hQJywgJ0RFQlVHJyk7CisgICAg
dmFyIGV4cGVjdGF0aW9ucyA9IGdldEV4cGVjdGF0aW9ucygnZm9vL3Rlc3QxLmh0bWwnLCAnQ0hS
T01JVU1fWFAnLCAnREVCVUcnKTsKICAgICBlcXVhbChKU09OLnN0cmluZ2lmeShleHBlY3RhdGlv
bnMpLCAneyJtb2RpZmllcnMiOiJERUJVRyIsImV4cGVjdGF0aW9ucyI6IkNSQVNIIn0nKTsKIAot
ICAgIHZhciBleHBlY3RhdGlvbnMgPSBnZXRFeHBlY3RhdGlvbnMoJ2Zvby90ZXN0MS5odG1sJywg
J0xVQ0lEJywgJ1JFTEVBU0UnKTsKKyAgICB2YXIgZXhwZWN0YXRpb25zID0gZ2V0RXhwZWN0YXRp
b25zKCdmb28vdGVzdDEuaHRtbCcsICdDSFJPTUlVTV9MVUNJRCcsICdSRUxFQVNFJyk7CiAgICAg
ZXF1YWwoSlNPTi5zdHJpbmdpZnkoZXhwZWN0YXRpb25zKSwgJ3sibW9kaWZpZXJzIjoiQnVnKEZv
bykgUkVMRUFTRSIsImV4cGVjdGF0aW9ucyI6IkZBSUwifScpOwogCi0gICAgdmFyIGV4cGVjdGF0
aW9ucyA9IGdldEV4cGVjdGF0aW9ucygnZm9vL3Rlc3QyLmh0bWwnLCAnTFVDSUQnLCAnUkVMRUFT
RScpOworICAgIHZhciBleHBlY3RhdGlvbnMgPSBnZXRFeHBlY3RhdGlvbnMoJ2Zvby90ZXN0Mi5o
dG1sJywgJ0NIUk9NSVVNX0xVQ0lEJywgJ1JFTEVBU0UnKTsKICAgICBlcXVhbChKU09OLnN0cmlu
Z2lmeShleHBlY3RhdGlvbnMpLCAneyJtb2RpZmllcnMiOiJCdWcoNDU2KSIsImV4cGVjdGF0aW9u
cyI6IkZBSUwifScpOwogCi0gICAgdmFyIGV4cGVjdGF0aW9ucyA9IGdldEV4cGVjdGF0aW9ucygn
Zm9vL3Rlc3QyLmh0bWwnLCAnTElPTicsICdERUJVRycpOworICAgIHZhciBleHBlY3RhdGlvbnMg
PSBnZXRFeHBlY3RhdGlvbnMoJ2Zvby90ZXN0Mi5odG1sJywgJ0NIUk9NSVVNX0xJT04nLCAnREVC
VUcnKTsKICAgICBlcXVhbChKU09OLnN0cmluZ2lmeShleHBlY3RhdGlvbnMpLCAneyJtb2RpZmll
cnMiOiJCdWcoNDU2KSIsImV4cGVjdGF0aW9ucyI6IkZBSUwifScpOwogCi0gICAgdmFyIGV4cGVj
dGF0aW9ucyA9IGdldEV4cGVjdGF0aW9ucygnZm9vL3Rlc3QyLmh0bWwnLCAnTFVDSUQnLCAnREVC
VUcnKTsKKyAgICB2YXIgZXhwZWN0YXRpb25zID0gZ2V0RXhwZWN0YXRpb25zKCdmb28vdGVzdDIu
aHRtbCcsICdDSFJPTUlVTV9MVUNJRCcsICdERUJVRycpOwogICAgIGVxdWFsKEpTT04uc3RyaW5n
aWZ5KGV4cGVjdGF0aW9ucyksICd7Im1vZGlmaWVycyI6IkxJTlVYIERFQlVHIiwiZXhwZWN0YXRp
b25zIjoiQ1JBU0gifScpOwogCi0gICAgdmFyIGV4cGVjdGF0aW9ucyA9IGdldEV4cGVjdGF0aW9u
cygnZm9vL3Rlc3QzLmh0bWwnLCAnTFVDSUQnLCAnREVCVUcnKTsKKyAgICB2YXIgZXhwZWN0YXRp
b25zID0gZ2V0RXhwZWN0YXRpb25zKCdmb28vdGVzdDIuaHRtbCcsICdDSFJPTUlVTV9BTkRST0lE
JywgJ1JFTEVBU0UnKTsKKyAgICBlcXVhbChKU09OLnN0cmluZ2lmeShleHBlY3RhdGlvbnMpLCAn
eyJtb2RpZmllcnMiOiJCdWcoNjU0KSIsImV4cGVjdGF0aW9ucyI6IkNSQVNIIn0nKTsKKworICAg
IHZhciBleHBlY3RhdGlvbnMgPSBnZXRFeHBlY3RhdGlvbnMoJ3Rlc3QxLmh0bWwnLCAnQ0hST01J
VU1fQU5EUk9JRCcsICdSRUxFQVNFJyk7CisgICAgZXF1YWwoSlNPTi5zdHJpbmdpZnkoZXhwZWN0
YXRpb25zKSwgJ3sibW9kaWZpZXJzIjoiUkVMRUFTRSIsImV4cGVjdGF0aW9ucyI6IkZBSUwifScp
OworCisgICAgdmFyIGV4cGVjdGF0aW9ucyA9IGdldEV4cGVjdGF0aW9ucygnZm9vL3Rlc3QzLmh0
bWwnLCAnQ0hST01JVU1fTFVDSUQnLCAnREVCVUcnKTsKICAgICBlcXVhbChKU09OLnN0cmluZ2lm
eShleHBlY3RhdGlvbnMpLCAneyJtb2RpZmllcnMiOiJCdWcoMTIzKSIsImV4cGVjdGF0aW9ucyI6
IkZBSUwgUEFTUyBDUkFTSCJ9Jyk7CiAKLSAgICB2YXIgZXhwZWN0YXRpb25zID0gZ2V0RXhwZWN0
YXRpb25zKCd0ZXN0MS5odG1sJywgJ1hQJywgJ0RFQlVHJyk7CisgICAgdmFyIGV4cGVjdGF0aW9u
cyA9IGdldEV4cGVjdGF0aW9ucygndGVzdDEuaHRtbCcsICdDSFJPTUlVTV9YUCcsICdERUJVRycp
OwogICAgIGVxdWFsKEpTT04uc3RyaW5naWZ5KGV4cGVjdGF0aW9ucyksICd7Im1vZGlmaWVycyI6
IkRFQlVHIiwiZXhwZWN0YXRpb25zIjoiQ1JBU0gifScpOwogCi0gICAgdmFyIGV4cGVjdGF0aW9u
cyA9IGdldEV4cGVjdGF0aW9ucygndGVzdDEuaHRtbCcsICdMVUNJRCcsICdSRUxFQVNFJyk7Cisg
ICAgdmFyIGV4cGVjdGF0aW9ucyA9IGdldEV4cGVjdGF0aW9ucygndGVzdDEuaHRtbCcsICdDSFJP
TUlVTV9MVUNJRCcsICdSRUxFQVNFJyk7CiAgICAgZXF1YWwoSlNPTi5zdHJpbmdpZnkoZXhwZWN0
YXRpb25zKSwgJ3sibW9kaWZpZXJzIjoiUkVMRUFTRSIsImV4cGVjdGF0aW9ucyI6IkZBSUwifScp
OwogCi0gICAgdmFyIGV4cGVjdGF0aW9ucyA9IGdldEV4cGVjdGF0aW9ucygnaHR0cC90ZXN0cy9h
cHBjYWNoZS9pbnRlcnJ1cHRlZC11cGRhdGUuaHRtbCcsICdXSU43JywgJ1JFTEVBU0UnKTsKLSAg
ICBlcXVhbChKU09OLnN0cmluZ2lmeShleHBlY3RhdGlvbnMpLCAneyJtb2RpZmllcnMiOiJXSU43
IiwiZXhwZWN0YXRpb25zIjoiVElNRU9VVCJ9Jyk7CisgICAgdmFyIGV4cGVjdGF0aW9ucyA9IGdl
dEV4cGVjdGF0aW9ucygnZm9vL3Rlc3QxLmh0bWwnLCAnR1RLX0xJTlVYX1dLMScsICdSRUxFQVNF
Jyk7CisgICAgZXF1YWwoSlNPTi5zdHJpbmdpZnkoZXhwZWN0YXRpb25zKSwgJ3sibW9kaWZpZXJz
IjoiUkVMRUFTRSIsImV4cGVjdGF0aW9ucyI6IklNQUdFIn0nKTsKKworICAgIHZhciBleHBlY3Rh
dGlvbnMgPSBnZXRFeHBlY3RhdGlvbnMoJ2Zvby90ZXN0Mi5odG1sJywgJ0dUS19MSU5VWF9XSzEn
LCAnREVCVUcnKTsKKyAgICBlcXVhbChKU09OLnN0cmluZ2lmeShleHBlY3RhdGlvbnMpLCAneyJt
b2RpZmllcnMiOiJCdWcoNzg5KSIsImV4cGVjdGF0aW9ucyI6IkNSQVNIIn0nKTsKIAotICAgIHZh
ciBleHBlY3RhdGlvbnMgPSBnZXRFeHBlY3RhdGlvbnMoJ2h0dHAvdGVzdHMvYXBwY2FjaGUvaW50
ZXJydXB0ZWQtdXBkYXRlLmh0bWwnLCAnTElPTicsICdSRUxFQVNFJyk7Ci0gICAgZXF1YWwoSlNP
Ti5zdHJpbmdpZnkoZXhwZWN0YXRpb25zKSwgJ3sibW9kaWZpZXJzIjoiTUFDIExJTlVYIFhQIiwi
ZXhwZWN0YXRpb25zIjoiRkFJTCJ9Jyk7CisgICAgdmFyIGV4cGVjdGF0aW9ucyA9IGdldEV4cGVj
dGF0aW9ucygndGVzdDEuaHRtbCcsICdHVEtfTElOVVhfV0sxJywgJ0RFQlVHJyk7CisgICAgZXF1
YWwoSlNPTi5zdHJpbmdpZnkoZXhwZWN0YXRpb25zKSwgJ3sibW9kaWZpZXJzIjoiREVCVUciLCJl
eHBlY3RhdGlvbnMiOiJDUkFTSCJ9Jyk7CisKKyAgICB2YXIgZXhwZWN0YXRpb25zID0gZ2V0RXhw
ZWN0YXRpb25zKCdmb28vdGVzdDIuaHRtbCcsICdHVEtfTElOVVhfV0syJywgJ0RFQlVHJyk7Cisg
ICAgZXF1YWwoSlNPTi5zdHJpbmdpZnkoZXhwZWN0YXRpb25zKSwgJ3sibW9kaWZpZXJzIjoiQnVn
KDk4NykiLCJleHBlY3RhdGlvbnMiOiJGQUlMIn0nKTsKKworICAgIHZhciBleHBlY3RhdGlvbnMg
PSBnZXRFeHBlY3RhdGlvbnMoJ2Zvby90ZXN0Mi5odG1sJywgJ0dUS19MSU5VWF9XSzInLCAnUkVM
RUFTRScpOworICAgIGVxdWFsKEpTT04uc3RyaW5naWZ5KGV4cGVjdGF0aW9ucyksICd7Im1vZGlm
aWVycyI6IkJ1Zyg5ODcpIiwiZXhwZWN0YXRpb25zIjoiRkFJTCJ9Jyk7CiAKLSAgICB2YXIgZXhw
ZWN0YXRpb25zID0gZ2V0RXhwZWN0YXRpb25zKCdodHRwL3Rlc3RzL2FwcGNhY2hlL2ludGVycnVw
dGVkLXVwZGF0ZS5odG1sJywgJ0xVQ0lEJywgJ1JFTEVBU0UnKTsKLSAgICBlcXVhbChKU09OLnN0
cmluZ2lmeShleHBlY3RhdGlvbnMpLCAneyJtb2RpZmllcnMiOiJNQUMgTElOVVggWFAiLCJleHBl
Y3RhdGlvbnMiOiJGQUlMIn0nKTsKKyAgICB2YXIgZXhwZWN0YXRpb25zID0gZ2V0RXhwZWN0YXRp
b25zKCd0ZXN0MS5odG1sJywgJ0dUS19MSU5VWF9XSzInLCAnREVCVUcnKTsKKyAgICBlcXVhbChK
U09OLnN0cmluZ2lmeShleHBlY3RhdGlvbnMpLCAneyJtb2RpZmllcnMiOiJERUJVRyIsImV4cGVj
dGF0aW9ucyI6IkNSQVNIIn0nKTsKIH0pOwogCiB0ZXN0KCdzdWJzdHJpbmdMaXN0JywgMiwgZnVu
Y3Rpb24oKSB7CkBAIC02OTcsMyArNzIyLDUzIEBAIHRlc3QoJ2dwdVJlc3VsdHNQYXRoJywgMywg
ZnVuY3Rpb24oKSB7CiAgIGVxdWFsKGdwdVJlc3VsdHNQYXRoKCcxMjMnLCAnR1BVIExpbnV4IChk
YmcpKE5WSURJQSknKSwgJzEyM19HUFVfTGludXhfZGJnX05WSURJQV8nKTsKICAgZXF1YWwoZ3B1
UmVzdWx0c1BhdGgoJzEyMzQ1JywgJ0dQVSBNYWMnKSwgJzEyMzQ1X0dQVV9NYWMnKTsKIH0pOwor
Cit0ZXN0KCdUZXN0VHJpZScsIDEsIGZ1bmN0aW9uKCkgeworICAgIHZhciBidWlsZGVycyA9IHsK
KyAgICAgICAgIkR1bW15IENocm9taXVtIFdpbmRvd3MgQnVpbGRlciI6IHRydWUsCisgICAgICAg
ICJEdW1teSBHVEsgTGludXggQnVpbGRlciI6IHRydWUsCisgICAgICAgICJEdW1teSBBcHBsZSBN
YWMgTGlvbiBCdWlsZGVyIjogdHJ1ZQorICAgIH07CisKKyAgICB2YXIgcmVzdWx0c0J5QnVpbGRl
ciA9IHsKKyAgICAgICAgIkR1bW15IENocm9taXVtIFdpbmRvd3MgQnVpbGRlciI6IHsKKyAgICAg
ICAgICAgIHRlc3RzOiB7CisgICAgICAgICAgICAgICAgImZvbyI6IHRydWUsCisgICAgICAgICAg
ICAgICAgImZvby9iYXIvMS5odG1sIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAiZm9vL2Jhci9i
YXoiOiB0cnVlCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJEdW1teSBHVEsg
TGludXggQnVpbGRlciI6IHsKKyAgICAgICAgICAgIHRlc3RzOiB7CisgICAgICAgICAgICAgICAg
ImJhciI6IHRydWUsCisgICAgICAgICAgICAgICAgImZvby8xLmh0bWwiOiB0cnVlLAorICAgICAg
ICAgICAgICAgICJmb28vYmFyLzIuaHRtbCI6IHRydWUsCisgICAgICAgICAgICAgICAgImZvby9i
YXIvYmF6LzEuaHRtbCI6IHRydWUsCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJEdW1teSBBcHBsZSBNYWMgTGlvbiBCdWlsZGVyIjogeworICAgICAgICAgICAgdGVzdHM6IHsK
KyAgICAgICAgICAgICAgICAiZm9vL2Jhci8zLmh0bWwiOiB0cnVlLAorICAgICAgICAgICAgICAg
ICJmb28vYmFyL2Jhei9mb28iOiB0cnVlLAorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fTsKKyAgICB2YXIgZXhwZWN0ZWRUcmllID0geworICAgICAgICAiZm9vIjogeworICAgICAgICAg
ICAgImJhciI6IHsKKyAgICAgICAgICAgICAgICAiMS5odG1sIjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgICAiMi5odG1sIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAiMy5odG1sIjogdHJ1ZSwKKyAg
ICAgICAgICAgICAgICAiYmF6IjogeworICAgICAgICAgICAgICAgICAgICAiMS5odG1sIjogdHJ1
ZSwKKyAgICAgICAgICAgICAgICAgICAgImZvbyI6IHRydWUKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgIjEuaHRtbCI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgImJhciI6IHRydWUKKyAgICB9CisKKyAgICB2YXIgdHJpZSA9IG5ldyBUZXN0VHJpZShi
dWlsZGVycywgcmVzdWx0c0J5QnVpbGRlcik7CisgICAgZGVlcEVxdWFsKHRyaWUuX3RyaWUsIGV4
cGVjdGVkVHJpZSk7Cit9KTsK
</data>
<flag name="review"
          id="181365"
          type_id="1"
          status="+"
          setter="ojan"
    />
          </attachment>
      

    </bug>

</bugzilla>