<?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>103839</bug_id>
          
          <creation_ts>2012-12-02 12:44:01 -0800</creation_ts>
          <short_desc>FlakyTestReporter should be re-enabled and taught how to post patches</short_desc>
          <delta_ts>2017-07-18 08:30:05 -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>REOPENED</bug_status>
          <resolution></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="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>780994</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-02 12:44:01 -0800</bug_when>
    <thetext>FlakyTestReporter should be re-enabled and taught how to post patches

The FlakyTestReporter used to file nag-bugs, documenting tests that we saw flake on the EWS/commit-queue bots.

We disabled it because the nag-bugs weren&apos;t really that helpful.

However, now we could re-enable it and have it file bugs with patches to fix test-expectations to document the flake!

http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/tool/bot/flakytestreporter.py

Flaky tests are a big problem for the EWS/CQ bots.  The bots are smart enough to recover from occasionally flaky tests (up to 10 at a time), but:
1.  can&apos;t handle lots of flaky tests at once (there is a hard-coded limit before the bot gives up and assumes the tree is too unstable to determined anything about the patch)
2.  can&apos;t handle tests which flake super-often (the bot re-runs the tests to try and get repeatable results, very-flaky tests can trick the bot into thinking they&apos;re caused by the patch under testing and cause false-rejections).

The FlakyTestReporter tried solved these problems by nagging humans, but it could solve it more directly by posting a patch for r?/cq? with the needed lines for TestExpectations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780995</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-02 12:46:56 -0800</bug_when>
    <thetext>Here are some examples of the bugs the FlakyTestReporter used to file:
bug 80012, bug 79894, bug 79845, bug 79842</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781001</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-02 12:52:01 -0800</bug_when>
    <thetext>For those who are curious how/why the bot has a hard-coded limit about the number of flakes/failures it can handle while still processing patches, see:
http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/tool/bot/expectedfailures.py#L40
http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/tool/bot/layouttestresultsreader.py#L68
http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/tool/steps/runtests.py#L38
http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/net/layouttestresults.py#L152

(I was wrong, the current limit is 30.)

The gist is that we don&apos;t want to run all the tests when a patch makes every test crash (that could take hours) so we stop after some number of failures.  If we ever hit that limit, we can no longer trust the results.

Thus if there are 30 failures/flakes then we can&apos;t process patches at all.  We just spin until someone fixes the tree.

The proposal in this bug would help keep the number of flakes down, by making it easy for a human (the current webkit sherriff?) to take action to fix the TestExpectations to recognize the flakes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786410</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-07 21:11:19 -0800</bug_when>
    <thetext>This may need to bump up in my priority queue.  The EWS is much less useful at current given how many false-rejections it&apos;s having due to flakes. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796153</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-20 23:00:39 -0800</bug_when>
    <thetext>I believe what&apos;s actually going on is that LayoutTestResultsReader doesn&apos;t know how to handle NRWT results directories. :)

Thus we&apos;re silently failing to parse the results.  Which may mean the whole flakiness avoidance system on the EWS is failing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799913</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-03 19:28:50 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; I believe what&apos;s actually going on is that LayoutTestResultsReader doesn&apos;t know how to handle NRWT results directories. :)
&gt; 
&gt; Thus we&apos;re silently failing to parse the results.  Which may mean the whole flakiness avoidance system on the EWS is failing!

Yes, it turns out this is caused by use of DeprecatedPort, which reports the result directory as /tmp/layout-test-results... which no longer exists.  So we silently fail to archive the results, thus we don&apos;t upload them, and we don&apos;t know how to check for flaky tests w/o them!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799942</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-03 21:18:18 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; I believe what&apos;s actually going on is that LayoutTestResultsReader doesn&apos;t know how to handle NRWT results directories. :)
&gt; &gt; 
&gt; &gt; Thus we&apos;re silently failing to parse the results.  Which may mean the whole flakiness avoidance system on the EWS is failing!
&gt; 
&gt; Yes, it turns out this is caused by use of DeprecatedPort, which reports the result directory as /tmp/layout-test-results... which no longer exists.  So we silently fail to archive the results, thus we don&apos;t upload them, and we don&apos;t know how to check for flaky tests w/o them!

I&apos;ve since learned that non-interactive mode causes webkitpy to pass --results-directory=/tmp/layout-test-results to NRWT when it runs it, so it&apos;s possible that this is a red herring.

I&apos;ve written a patch to fix this all the same. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799969</commentid>
    <comment_count>7</comment_count>
      <attachid>181278</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-04 00:12:34 -0800</bug_when>
    <thetext>Created attachment 181278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799971</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-04 00:17:44 -0800</bug_when>
    <thetext>I think the largest obstacle standing in the way of completely removing ports.py, is figuring out how Host is going to hold a Port object (if it should at all).  Right now Port holds a Host, so for Host to hold/create Port could be a circular dependency.

Cleaning up/moving the Port infrastructure into common and clarifying its relationship with Host should make it trivial to just fold the last pieces of ports.py into the modern infrastructure and get rid of other ORWT-dependent bugs like this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800300</commentid>
    <comment_count>9</comment_count>
      <attachid>181278</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-04 09:52:15 -0800</bug_when>
    <thetext>Comment on attachment 181278
Patch

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

This looks great!

&gt; Tools/ChangeLog:9
&gt; +        It also adds a real Port object to the EWS and CommitQueue objects

woah

&gt; Tools/Scripts/webkitpy/tool/commands/queues.py:250
&gt; +        return os.path.join(self._log_directory(), &quot;%s.log&quot; % patch.bug_id())

Not self._tool.filesystem.join ?

&gt; Tools/Scripts/webkitpy/tool/commands/queues.py:273
&gt; +        if not self.port_name:
&gt; +            return

Should this assert instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800403</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-04 11:09:25 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 181278 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=181278&amp;action=review
&gt; 
&gt; This looks great!
&gt; 
&gt; &gt; Tools/ChangeLog:9
&gt; &gt; +        It also adds a real Port object to the EWS and CommitQueue objects
&gt; 
&gt; woah

Yeah.  It&apos;s a layering violation until we move Port down into common, sadly. :(

&gt; &gt; Tools/Scripts/webkitpy/tool/commands/queues.py:250
&gt; &gt; +        return os.path.join(self._log_directory(), &quot;%s.log&quot; % patch.bug_id())
&gt; 
&gt; Not self._tool.filesystem.join ?

Old code.  Will fix.

&gt; &gt; Tools/Scripts/webkitpy/tool/commands/queues.py:273
&gt; &gt; +        if not self.port_name:
&gt; &gt; +            return
&gt; 
&gt; Should this assert instead?

This is part of why PatchProcessingQueue is kinda lame.  It was intended for only the EWS and CQ, but its also used by the StyleQueue... the StyleQueue (currently) has no port_name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800418</commentid>
    <comment_count>11</comment_count>
      <attachid>181278</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-04 11:20:25 -0800</bug_when>
    <thetext>Comment on attachment 181278
Patch

Eh.  Decided it was not worth fixing the old os.path usage (it&apos;s possible it&apos;s called before _tool is set!).  Will get that in another round.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800488</commentid>
    <comment_count>12</comment_count>
      <attachid>181278</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-04 12:06:43 -0800</bug_when>
    <thetext>Comment on attachment 181278
Patch

Clearing flags on attachment: 181278

Committed r138826: &lt;http://trac.webkit.org/changeset/138826&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800489</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-04 12:06:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800855</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-04 21:53:31 -0800</bug_when>
    <thetext>It appears this neither fix nor broke things.  I guess I&apos;ll have to take a second crack at it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803972</commentid>
    <comment_count>15</comment_count>
      <attachid>181278</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-01-09 19:37:38 -0800</bug_when>
    <thetext>Comment on attachment 181278
Patch

Just some semi-random drive-by comments as I get caught up on my bug backlog ...

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

&gt;&gt;&gt; Tools/ChangeLog:9
&gt;&gt;&gt; +        It also adds a real Port object to the EWS and CommitQueue objects
&gt;&gt; 
&gt;&gt; woah
&gt; 
&gt; Yeah.  It&apos;s a layering violation until we move Port down into common, sadly. :(

Why do you think this is a layering violation? Do you think any code shared by multiple packages should be in webkitpy.common? 

(That seems unnecessary to me; I wouldn&apos;t have a &quot;common&quot; directory at all, since such things tend to grow arbitrarily, as ours has, and just push things down a level, e.g. we should really have webkitpy.scm and webkitpy.checkout).

&gt; Tools/Scripts/webkitpy/tool/commands/queues.py:259
&gt; +    def _new_port_name_from_old(self, port_name):

feels like this should be in PortFactory() instead, maybe? it doesn&apos;t seem like it&apos;s specific to EWS or the PatchProcessingQueue.

&gt; Tools/Scripts/webkitpy/tool/commands/queues.py:263
&gt; +        # ApplePort.determine_full_port_name asserts if the name doesn&apos;t include version.

Not exactly - &apos;mac&apos; asserts if you&apos;re not running on a mac, since we can&apos;t determine which version to use by default. on a mac, it picks the host machine&apos;s version.

&gt;&gt;&gt; Tools/Scripts/webkitpy/tool/commands/queues.py:273
&gt;&gt;&gt; +            return
&gt;&gt; 
&gt;&gt; Should this assert instead?
&gt; 
&gt; This is part of why PatchProcessingQueue is kinda lame.  It was intended for only the EWS and CQ, but its also used by the StyleQueue... the StyleQueue (currently) has no port_name.

This seems a bit confusing ... the style queue is probably happy using the &quot;default&quot; port for the platform it is running on (since any port should do). So maybe you should always instantiate a self._port from the port factory?

&gt; Tools/Scripts/webkitpy/tool/commands/queues.py:275
&gt; +        self._deprecated_port = DeprecatedPort.port(self.port_name)

maybe you should just store the flag here, and not keep the deprecated port around, in order to prevent others from using it?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181278</attachid>
            <date>2013-01-04 00:12:34 -0800</date>
            <delta_ts>2013-01-09 19:37:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103839-20130104000945.patch</filename>
            <type>text/plain</type>
            <size>28219</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NzQwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTIxYjliMzQxZDEyNmUxYzZmZGFmNTk0OGE1ODEyMTZm
N2Q3NzQxNS4uNTEzMzg2OTAzZGVlYTJhYzgzYTlmZjc5ZjY0M2MyMTJkODM2YTdmZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3
IEBACisyMDEzLTAxLTA0ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAg
ICBGbGFreVRlc3RSZXBvcnRlciBzaG91bGQgYmUgcmUtZW5hYmxlZCBhbmQgdGF1Z2h0IGhvdyB0
byBwb3N0IHBhdGNoZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMzgzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgbW92ZXMgTGF5b3V0VGVzdFJlc3VsdHNSZWFkZXIgb2ZmIG9mIHRoZSBEZXBy
ZWNhdGVkUG9ydCBvYmplY3QuCisgICAgICAgIEl0IGFsc28gYWRkcyBhIHJlYWwgUG9ydCBvYmpl
Y3QgdG8gdGhlIEVXUyBhbmQgQ29tbWl0UXVldWUgb2JqZWN0cworICAgICAgICB1c2luZyBhIG5l
dyBQYXRjaFByb2Nlc3NpbmdRdWV1ZSBzdXBlcmNsYXNzLgorICAgICAgICBQYXRjaFByb2Nlc3Np
bmdRdWV1ZSBkb2Vzbid0IHNlZW0gdG8gYmUgdGhlIGNsZWFuZXN0IGluc2VydGlvbiBwb2ludAor
ICAgICAgICBidXQgd29ya3MgZm9yIHRoaXMgcHVycG9zZS4KKyAgICAgICAgSSBhbHNvIG1vdmVk
IF91cGxvYWRfcmVzdWx0c19hcmNoaXZlX2Zvcl9wYXRjaCBpbnRvIFBhdGNoUHJvY2Vzc2luZ1F1
ZXVlCisgICAgICAgIHRvIHJlc29sdmUgYSBGSVhNRS4KKworICAgICAgICBUaGlzIHJlcXVpcmVk
IHNvbWUgaGFja3Mvc2hpbWluZyBiZXR3ZWVuIHRoZSBub24tc3BlY2lmaWMgIm9sZCIKKyAgICAg
ICAgcG9ydCBuYW1lcyB3aGljaCB0aGUgRVdTIHN5c3RlbSBpcyBjdXJyZW50bHkgdXNpbmcsIGFu
ZCB0aGUgbmV3CisgICAgICAgIHBvcnQgb2JqZWN0cy4gIFRoaXMgc2hpbW1pbmcgaXMgZG9uZSBp
biBQYXRjaFByb2Nlc3NpbmdRdWV1ZS5fbmV3X3BvcnRfbmFtZV9mcm9tX29sZC4KKworICAgICAg
ICBIb3BlZnVsbHkgdGhpcyB3aWxsIGZpeCB0aGUgZmxha3kgdGVzdCByZXBvcnRlciBhbmQgcmVz
dWx0cyB1cGxvYWRpbmcuCisgICAgICAgIENlcnRhaW5seSBpdCdzIGFub3RoZXIgc21hbGwgc3Rl
cCB0b3dhcmRzIGdldHRpbmcgcmlkIG9mIHRoZSBvbGQgcG9ydHMucHkKKyAgICAgICAgaW5mcmFz
dHJ1Y3R1cmUgYW5kIG1ha2luZyB0aGUgTlJXVCBQb3J0IGNsYXNzIGNvbW1vbiB3ZWJraXRweSBp
bmZyYXN0cnVjdHVyZS4KKworICAgICAgICBOb3cgdGhhdCBEZXByZWNhdGVkUG9ydCBpcyBubyBs
b25nZXIgdXNlZCBmb3IgdGhlIHJlc3VsdHMgZGlyZWN0b3J5CisgICAgICAgIEkgcmVtb3ZlZCBh
bGwgdGhlIGV4cGxpY2l0IHJlc3VsdHMtZGlyIGNvZGUgd2hpY2ggd2Via2l0LXBhdGNoIHdhcyB1
c2luZworICAgICAgICBpbiAtLW5vbi1pbnRlcmFjdGl2ZSBtb2RlIHRvIHRlbGwgTlJXVCB0byB1
c2UgYSByZXN1bHRzLWRpciBpdCB1bmRlcnN0b29kLiA6KQorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY29uZmlnL3BvcnRzLnB5OgorICAgICAgICAoRGVwcmVjYXRlZFBvcnQu
cnVuX3BlcmxfdW5pdHRlc3RzX2NvbW1hbmQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NvbmZpZy9wb3J0c19tb2NrLnB5OgorICAgICAgICAoTW9ja1BvcnQubmFtZSk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL291dHB1dGNhcHR1cmUucHk6
CisgICAgICAgIChPdXRwdXRDYXB0dXJlLmFzc2VydF9vdXRwdXRzKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2FwcGxlLnB5OgorICAgICAgICAoQXBwbGVQ
b3J0LmRldGVybWluZV9mdWxsX3BvcnRfbmFtZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS90b29sL2JvdC9sYXlvdXR0ZXN0cmVzdWx0c3JlYWRlci5weToKKyAgICAgICAgKExheW91dFRl
c3RSZXN1bHRzUmVhZGVyLl9faW5pdF9fKToKKyAgICAgICAgKExheW91dFRlc3RSZXN1bHRzUmVh
ZGVyKToKKyAgICAgICAgKExheW91dFRlc3RSZXN1bHRzUmVhZGVyLl9yZWFkX2ZpbGVfY29udGVu
dHMpOgorICAgICAgICAoTGF5b3V0VGVzdFJlc3VsdHNSZWFkZXIuX2NyZWF0ZV9sYXlvdXRfdGVz
dF9yZXN1bHRzKToKKyAgICAgICAgKExheW91dFRlc3RSZXN1bHRzUmVhZGVyLl9jcmVhdGVfdW5p
dF90ZXN0X3Jlc3VsdHMpOgorICAgICAgICAoTGF5b3V0VGVzdFJlc3VsdHNSZWFkZXIucmVzdWx0
cyk6CisgICAgICAgIChMYXlvdXRUZXN0UmVzdWx0c1JlYWRlci5hcmNoaXZlKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2xheW91dHRlc3RyZXN1bHRzcmVhZGVyX3VuaXR0
ZXN0LnB5OgorICAgICAgICAoTGF5b3V0VGVzdFJlc3VsdHNSZWFkZXJUZXN0LnRlc3RfbWlzc2lu
Z19sYXlvdXRfdGVzdF9yZXN1bHRzKToKKyAgICAgICAgKExheW91dFRlc3RSZXN1bHRzUmVhZGVy
VGVzdC50ZXN0X2NyZWF0ZV91bml0X3Rlc3RfcmVzdWx0cyk6CisgICAgICAgICh0ZXN0X21pc3Np
bmdfdW5pdF90ZXN0X3Jlc3VsdHNfcGF0aCk6CisgICAgICAgICh0ZXN0X2xheW91dF90ZXN0X3Jl
c3VsdHMpOgorICAgICAgICAodGVzdF9hcmNoaXZlX2xhc3RfbGF5b3V0X3Rlc3RfcmVzdWx0cyk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5
c3RlbS5weToKKyAgICAgICAgKEFic3RyYWN0RWFybHlXYXJuaW5nU3lzdGVtKToKKyAgICAgICAg
KEFic3RyYWN0RWFybHlXYXJuaW5nU3lzdGVtLl9faW5pdF9fKToKKyAgICAgICAgKEFic3RyYWN0
RWFybHlXYXJuaW5nU3lzdGVtLmJlZ2luX3dvcmtfcXVldWUpOgorICAgICAgICAoQWJzdHJhY3RF
YXJseVdhcm5pbmdTeXN0ZW0ucnVuX2NvbW1hbmQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHk6CisgICAgICAgIChBYnN0cmFjdFBhdGNoUXVldWUu
d29ya19pdGVtX2xvZ19wYXRoKToKKyAgICAgICAgKFBhdGNoUHJvY2Vzc2luZ1F1ZXVlKToKKyAg
ICAgICAgKFBhdGNoUHJvY2Vzc2luZ1F1ZXVlLl9uZXdfcG9ydF9uYW1lX2Zyb21fb2xkKToKKyAg
ICAgICAgKFBhdGNoUHJvY2Vzc2luZ1F1ZXVlLmJlZ2luX3dvcmtfcXVldWUpOgorICAgICAgICAo
UGF0Y2hQcm9jZXNzaW5nUXVldWUuX3VwbG9hZF9yZXN1bHRzX2FyY2hpdmVfZm9yX3BhdGNoKToK
KyAgICAgICAgKENvbW1pdFF1ZXVlKToKKyAgICAgICAgKENvbW1pdFF1ZXVlLmJlZ2luX3dvcmtf
cXVldWUpOgorICAgICAgICAoQ29tbWl0UXVldWUucnVuX2NvbW1hbmQpOgorICAgICAgICAoQWJz
dHJhY3RSZXZpZXdRdWV1ZSk6CisgICAgICAgIChBYnN0cmFjdFJldmlld1F1ZXVlLl9faW5pdF9f
KToKKyAgICAgICAgKEFic3RyYWN0UmV2aWV3UXVldWUuYmVnaW5fd29ya19xdWV1ZSk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weToK
KyAgICAgICAgKEFic3RyYWN0UGF0Y2hRdWV1ZVRlc3QudGVzdF9uZXh0X3BhdGNoKToKKyAgICAg
ICAgKFBhdGNoUHJvY2Vzc2luZ1F1ZXVlVGVzdCk6CisgICAgICAgIChQYXRjaFByb2Nlc3NpbmdR
dWV1ZVRlc3QudGVzdF91cGxvYWRfcmVzdWx0c19hcmNoaXZlX2Zvcl9wYXRjaCk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3J1bnRlc3RzLnB5OgorICAgICAgICAoUnVu
VGVzdHMucnVuKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVudGVz
dHNfdW5pdHRlc3QucHk6CisKIDIwMTMtMDEtMDMgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJlbmFtZSBUb29sLnBvcnQgdG8gZGVwcmVjYXRlZF9wb3J0IGluIHBy
ZXBhcmF0aW9uIGZvciByZW1vdmluZyBtb3JlIGNhbGxlcnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NvbmZpZy9wb3J0cy5weQppbmRleCBmNmYzZGIwYzhjZTEwYjMyYTQzMDg0
OGQ5NDFlNTI2NmQzZmI2YWVkLi5iYjQ5MjRhNzVjOTk1MDQwNmYyYjlmOTcwZjYzZWE1YTZlZWIw
NzhkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvcG9y
dHMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3BvcnRzLnB5
CkBAIC0xMTYsMTIgKzExNiw2IEBAIGNsYXNzIERlcHJlY2F0ZWRQb3J0KG9iamVjdCk6CiAgICAg
ZGVmIHJ1bl9wZXJsX3VuaXR0ZXN0c19jb21tYW5kKHNlbGYpOgogICAgICAgICByZXR1cm4gc2Vs
Zi5zY3JpcHRfc2hlbGxfY29tbWFuZCgidGVzdC13ZWJraXRwZXJsIikKIAotICAgIGRlZiBsYXlv
dXRfdGVzdHNfcmVzdWx0c19wYXRoKHNlbGYpOgotICAgICAgICByZXR1cm4gb3MucGF0aC5qb2lu
KHNlbGYucmVzdWx0c19kaXJlY3RvcnksICJmdWxsX3Jlc3VsdHMuanNvbiIpCi0KLSAgICBkZWYg
dW5pdF90ZXN0c19yZXN1bHRzX3BhdGgoc2VsZik6Ci0gICAgICAgIHJldHVybiBvcy5wYXRoLmpv
aW4oc2VsZi5yZXN1bHRzX2RpcmVjdG9yeSwgIndlYmtpdF91bml0X3Rlc3RzX291dHB1dC54bWwi
KQotCiAKIGNsYXNzIE1hY1BvcnQoRGVwcmVjYXRlZFBvcnQpOgogICAgIHBvcnRfZmxhZ19uYW1l
ID0gIm1hYyIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZp
Zy9wb3J0c19tb2NrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3Bv
cnRzX21vY2sucHkKaW5kZXggMWQxNDMxMTE1NTkxZjAxOGVhNGRkMDQwMGUxYTFjZmI2M2QxNGUw
NS4uMWI5MjY5YjEyNjg5OGUyNzc1NmI0OGI1MDUwZDE4OGZhZGRlYTFjZCAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3BvcnRzX21vY2sucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3BvcnRzX21vY2sucHkKQEAgLTI4
LDE3ICsyOCw5IEBACiAKIAogY2xhc3MgTW9ja1BvcnQob2JqZWN0KToKLSAgICByZXN1bHRzX2Rp
cmVjdG9yeSA9ICIvbW9jay1yZXN1bHRzIgotCiAgICAgZGVmIG5hbWUoc2VsZik6CiAgICAgICAg
IHJldHVybiAiTW9ja1BvcnQiCiAKLSAgICBkZWYgbGF5b3V0X3Rlc3RzX3Jlc3VsdHNfcGF0aChz
ZWxmKToKLSAgICAgICAgcmV0dXJuICIvbW9jay1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uIgot
Ci0gICAgZGVmIHVuaXRfdGVzdHNfcmVzdWx0c19wYXRoKHNlbGYpOgotICAgICAgICByZXR1cm4g
Ii9tb2NrLXJlc3VsdHMvd2Via2l0X3VuaXRfdGVzdHNfb3V0cHV0LnhtbCIKLQogICAgIGRlZiBj
aGVja193ZWJraXRfc3R5bGVfY29tbWFuZChzZWxmKToKICAgICAgICAgcmV0dXJuIFsibW9jay1j
aGVjay13ZWJraXQtc3R5bGUiXQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2FwcGxlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9hcHBsZS5weQppbmRleCAwN2YyOTEyYmQ0Nzg3N2Y1OGY5ZjI4MmY3NDJm
OWQxMjg0OGE2ZTBkLi45MjkwYmNhOTEwN2I5YzZjNDAxOGIzOWY1MTgxNGUwMzNmNzI5MjIwIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2FwcGxl
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYXBwbGUu
cHkKQEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgQXBwbGVQb3J0KFBvcnQpOgogICAgICAgICAgICAg
IyBUaGF0IGNvbnZlbnRpb24gbWVhbnMgdGhhdCB3ZSdyZSBzdXBwb3NlZCB0byB1c2UgdGhlIHZl
cnNpb24gY3VycmVudGx5CiAgICAgICAgICAgICAjIGJlaW5nIHJ1biwgc28gdGhpcyB3b24ndCB3
b3JrIGlmIHlvdSdyZSBub3Qgb24gbWFjIG9yIHdpbiAocmVzcGVjdGl2ZWx5KS4KICAgICAgICAg
ICAgICMgSWYgeW91J3JlIG5vdCBvbiB0aGUgby9zIGluIHF1ZXN0aW9uLCB5b3UgbXVzdCBzcGVj
aWZ5IGEgZnVsbCB2ZXJzaW9uIG9yIC1mdXR1cmUgKGNmLiBhYm92ZSkuCi0gICAgICAgICAgICBh
c3NlcnQgaG9zdC5wbGF0Zm9ybS5vc19uYW1lIGluIHBvcnRfbmFtZQorICAgICAgICAgICAgYXNz
ZXJ0IGhvc3QucGxhdGZvcm0ub3NfbmFtZSBpbiBwb3J0X25hbWUsICIlcyBpcyBub3QgaW4gJXMh
IiAlIChob3N0LnBsYXRmb3JtLm9zX25hbWUsIHBvcnRfbmFtZSkKICAgICAgICAgICAgIGlmIHBv
cnRfbmFtZSA9PSBjbHMucG9ydF9uYW1lIGFuZCBub3QgZ2V0YXR0cihvcHRpb25zLCAnd2Via2l0
X3Rlc3RfcnVubmVyJywgRmFsc2UpOgogICAgICAgICAgICAgICAgIHBvcnRfbmFtZSA9IGNscy5w
b3J0X25hbWUgKyAnLScgKyBob3N0LnBsYXRmb3JtLm9zX3ZlcnNpb24KICAgICAgICAgICAgIGVs
c2U6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2xheW91dHRl
c3RyZXN1bHRzcmVhZGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9sYXlv
dXR0ZXN0cmVzdWx0c3JlYWRlci5weQppbmRleCBhNmQyZWMwNDc0ZTAwOGEzYTcwNDBhMDUyYTll
YzU4MTc5NDc0OTEwLi44MjJhZTk2M2FjOTY0YTNjNzdlZGNjNGFmM2FlNTg4ZmI3YjQ3OWIyIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2xheW91dHRlc3RyZXN1
bHRzcmVhZGVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvbGF5b3V0
dGVzdHJlc3VsdHNyZWFkZXIucHkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoYykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKQEAgLTM1LDMxICszNSwzMiBAQCBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMucnVu
dGVzdHMgaW1wb3J0IFJ1blRlc3RzCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18p
CiAKIAorIyBGSVhNRTogVGhpcyBjbGFzcyBubyBsb25nZXIgaGFzIGEgY2xlYXIgcHVycG9zZSwg
YW5kIHNob3VsZCBwcm9iYWJseQorIyBiZSBtYWRlIHBhcnQgb2YgUG9ydCwgb3IgcmVuYW1lZCB0
byBMYXlvdXRUZXN0UmVzdWx0c0FyY2hpdmVyIG9yIHNvbWV0aGluZyBtb3JlIGZpdHRpbmc/CiBj
bGFzcyBMYXlvdXRUZXN0UmVzdWx0c1JlYWRlcihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCB0b29sLCBhcmNoaXZlX2RpcmVjdG9yeSk6Ci0gICAgICAgIHNlbGYuX3Rvb2wgPSB0b29s
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHJlc3VsdHNfZGlyZWN0b3J5LCBhcmNoaXZl
X2RpcmVjdG9yeSk6CisgICAgICAgIHNlbGYuX2hvc3QgPSBob3N0CisgICAgICAgIHNlbGYuX3Jl
c3VsdHNfZGlyZWN0b3J5ID0gcmVzdWx0c19kaXJlY3RvcnkKICAgICAgICAgc2VsZi5fYXJjaGl2
ZV9kaXJlY3RvcnkgPSBhcmNoaXZlX2RpcmVjdG9yeQogCiAgICAgIyBGSVhNRTogVGhpcyBleGlz
dHMgZm9yIG1vY2tpbmcsIGJ1dCBzaG91bGQgaW5zdGVhZCBiZSBtb2NrZWQgdmlhCi0gICAgIyB0
b29sLmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUuICBUaGV5IGhhdmUgZGlmZmVyZW50IGVycm9y
IGhhbmRsaW5nIGF0IHRoZSBtb21lbnQuCisgICAgIyBob3N0LmZpbGVzeXN0ZW0ucmVhZF90ZXh0
X2ZpbGUuICBUaGV5IGhhdmUgZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIGF0IHRoZSBtb21lbnQu
CiAgICAgZGVmIF9yZWFkX2ZpbGVfY29udGVudHMoc2VsZiwgcGF0aCk6CiAgICAgICAgIHRyeToK
LSAgICAgICAgICAgIHJldHVybiBzZWxmLl90b29sLmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUo
cGF0aCkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9ob3N0LmZpbGVzeXN0ZW0ucmVhZF90ZXh0
X2ZpbGUocGF0aCkKICAgICAgICAgZXhjZXB0IElPRXJyb3IsIGU6ICAjIEZpbGUgZG9lcyBub3Qg
ZXhpc3Qgb3IgY2FuJ3QgYmUgcmVhZC4KICAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAj
IEZJWE1FOiBUaGlzIGxvZ2ljIHNob3VsZCBtb3ZlIHRvIHRoZSBwb3J0IG9iamVjdC4KICAgICBk
ZWYgX2NyZWF0ZV9sYXlvdXRfdGVzdF9yZXN1bHRzKHNlbGYpOgotICAgICAgICByZXN1bHRzX3Bh
dGggPSBzZWxmLl90b29sLmRlcHJlY2F0ZWRfcG9ydCgpLmxheW91dF90ZXN0c19yZXN1bHRzX3Bh
dGgoKQorICAgICAgICByZXN1bHRzX3BhdGggPSBzZWxmLl9ob3N0LmZpbGVzeXN0ZW0uam9pbihz
ZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSwgImZ1bGxfcmVzdWx0cy5qc29uIikKICAgICAgICAgcmVz
dWx0c19odG1sID0gc2VsZi5fcmVhZF9maWxlX2NvbnRlbnRzKHJlc3VsdHNfcGF0aCkKICAgICAg
ICAgaWYgbm90IHJlc3VsdHNfaHRtbDoKICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAg
IHJldHVybiBMYXlvdXRUZXN0UmVzdWx0cy5yZXN1bHRzX2Zyb21fc3RyaW5nKHJlc3VsdHNfaHRt
bCkKIAogICAgIGRlZiBfY3JlYXRlX3VuaXRfdGVzdF9yZXN1bHRzKHNlbGYpOgotICAgICAgICBy
ZXN1bHRzX3BhdGggPSBzZWxmLl90b29sLmRlcHJlY2F0ZWRfcG9ydCgpLnVuaXRfdGVzdHNfcmVz
dWx0c19wYXRoKCkKLSAgICAgICAgaWYgbm90IHJlc3VsdHNfcGF0aDoKLSAgICAgICAgICAgIHJl
dHVybiBOb25lCisgICAgICAgIHJlc3VsdHNfcGF0aCA9IHNlbGYuX2hvc3QuZmlsZXN5c3RlbS5q
b2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LCAid2Via2l0X3VuaXRfdGVzdHNfb3V0cHV0Lnht
bCIpCiAgICAgICAgIHJlc3VsdHNfeG1sID0gc2VsZi5fcmVhZF9maWxlX2NvbnRlbnRzKHJlc3Vs
dHNfcGF0aCkKICAgICAgICAgaWYgbm90IHJlc3VsdHNfeG1sOgogICAgICAgICAgICAgcmV0dXJu
IE5vbmUKQEAgLTY5LDM2ICs3MCwyOCBAQCBjbGFzcyBMYXlvdXRUZXN0UmVzdWx0c1JlYWRlcihv
YmplY3QpOgogICAgICAgICBsYXlvdXRfdGVzdF9yZXN1bHRzID0gc2VsZi5fY3JlYXRlX2xheW91
dF90ZXN0X3Jlc3VsdHMoKQogICAgICAgICB1bml0X3Rlc3RfcmVzdWx0cyA9IHNlbGYuX2NyZWF0
ZV91bml0X3Rlc3RfcmVzdWx0cygpCiAgICAgICAgIGlmIGxheW91dF90ZXN0X3Jlc3VsdHM6Ci0g
ICAgICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgbm90IGhhdmUgdG8gc2V0IGZhaWx1cmVfbGlt
aXRfY291bnQsIGJ1dCB3ZQotICAgICAgICAgICAgIyBkbyB1bnRpbCBydW4td2Via2l0LXRlc3Rz
IGNhbiBiZSB1cGRhdGVkIHNhdmUgb2ZmIHRoZSB2YWx1ZQotICAgICAgICAgICAgIyBvZiAtLWV4
aXQtYWZ0ZXItTi1mYWlsdXJlcyBpbiByZXN1bHRzLmh0bWwvcmVzdWx0cy5qc29uLgotICAgICAg
ICAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg0ODEKKyAg
ICAgICAgICAgICMgRklYTUU6IFRoaXMgaXMgdXNlZCB0byBkZXRlY3QgaWYgd2UgaGFkIE4gZmFp
bHVyZXMgZHVlIHRvCisgICAgICAgICAgICAjIE4gdGVzdHMgZmFpbGluZywgb3IgaWYgd2UgaGl0
IHRoZSAiZXhpdC1hZnRlci1uLWZhaWx1cmVzIiBsaW1pdC4KKyAgICAgICAgICAgICMgVGhlc2Ug
ZGF5cyB3ZSBjb3VsZCBqdXN0IGNoZWNrIGZvciB0aGUgImludGVycnVwdGVkIiBrZXkgaW4gcmVz
dWx0cy5qc29uIGluc3RlYWQhCiAgICAgICAgICAgICBsYXlvdXRfdGVzdF9yZXN1bHRzLnNldF9m
YWlsdXJlX2xpbWl0X2NvdW50KFJ1blRlc3RzLk5PTl9JTlRFUkFDVElWRV9GQUlMVVJFX0xJTUlU
X0NPVU5UKQogICAgICAgICAgICAgaWYgdW5pdF90ZXN0X3Jlc3VsdHM6CiAgICAgICAgICAgICAg
ICAgbGF5b3V0X3Rlc3RfcmVzdWx0cy5hZGRfdW5pdF90ZXN0X2ZhaWx1cmVzKHVuaXRfdGVzdF9y
ZXN1bHRzKQogICAgICAgICByZXR1cm4gbGF5b3V0X3Rlc3RfcmVzdWx0cwogCi0gICAgZGVmIF9y
ZXN1bHRzX2RpcmVjdG9yeShzZWxmKToKLSAgICAgICAgcmVzdWx0c19wYXRoID0gc2VsZi5fdG9v
bC5kZXByZWNhdGVkX3BvcnQoKS5sYXlvdXRfdGVzdHNfcmVzdWx0c19wYXRoKCkKLSAgICAgICAg
IyBGSVhNRTogVGhpcyBpcyB3cm9uZyBpbiB0d28gd2F5czoKLSAgICAgICAgIyAxLiBJdCBhc3N1
bWVzIHRoYXQgcmVzdWx0cy5odG1sIGlzIGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlIHJlc3VsdHMg
dHJlZS4KLSAgICAgICAgIyAyLiBUaGlzIHVzZXMgdGhlICJvbGQiIHBvcnRzLnB5IGluZnJhc3Ry
dWN0dXJlIGluc3RlYWQgb2YgdGhlIG5ldyBsYXlvdXRfdGVzdHMvcG9ydAotICAgICAgICAjIHdo
aWNoIHdpbGwgbm90IHN1cHBvcnQgQ2hyb21pdW0uICBIb3dldmVyIHRoZSBuZXcgYXJjaCBkb2Vz
bid0IHdvcmsgd2l0aCBvbGQtcnVuLXdlYmtpdC10ZXN0cwotICAgICAgICAjIHNvIHdlIGhhdmUg
dG8gdXNlIHRoaXMgZm9yIG5vdy4KLSAgICAgICAgcmV0dXJuIHNlbGYuX3Rvb2wuZmlsZXN5c3Rl
bS5kaXJuYW1lKHJlc3VsdHNfcGF0aCkKLQogICAgIGRlZiBhcmNoaXZlKHNlbGYsIHBhdGNoKToK
LSAgICAgICAgcmVzdWx0c19kaXJlY3RvcnkgPSBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSgpCi0g
ICAgICAgIHJlc3VsdHNfbmFtZSwgXyA9IHNlbGYuX3Rvb2wuZmlsZXN5c3RlbS5zcGxpdGV4dChz
ZWxmLl90b29sLmZpbGVzeXN0ZW0uYmFzZW5hbWUocmVzdWx0c19kaXJlY3RvcnkpKQorICAgICAg
ICBmaWxlc3lzdGVtID0gc2VsZi5faG9zdC5maWxlc3lzdGVtCisgICAgICAgIHdvcmtzcGFjZSA9
IHNlbGYuX2hvc3Qud29ya3NwYWNlCisgICAgICAgIHJlc3VsdHNfZGlyZWN0b3J5ID0gc2VsZi5f
cmVzdWx0c19kaXJlY3RvcnkKKyAgICAgICAgcmVzdWx0c19uYW1lLCBfID0gZmlsZXN5c3RlbS5z
cGxpdGV4dChmaWxlc3lzdGVtLmJhc2VuYW1lKHJlc3VsdHNfZGlyZWN0b3J5KSkKICAgICAgICAg
IyBOb3RlOiBXZSBuYW1lIHRoZSB6aXAgd2l0aCB0aGUgYnVnX2lkIGluc3RlYWQgb2YgcGF0Y2hf
aWQgdG8gbWF0Y2ggd29ya19pdGVtX2xvZ19wYXRoKCkuCi0gICAgICAgIHppcF9wYXRoID0gc2Vs
Zi5fdG9vbC53b3Jrc3BhY2UuZmluZF91bnVzZWRfZmlsZW5hbWUoc2VsZi5fYXJjaGl2ZV9kaXJl
Y3RvcnksICIlcy0lcyIgJSAocGF0Y2guYnVnX2lkKCksIHJlc3VsdHNfbmFtZSksICJ6aXAiKQor
ICAgICAgICB6aXBfcGF0aCA9IHdvcmtzcGFjZS5maW5kX3VudXNlZF9maWxlbmFtZShzZWxmLl9h
cmNoaXZlX2RpcmVjdG9yeSwgIiVzLSVzIiAlIChwYXRjaC5idWdfaWQoKSwgcmVzdWx0c19uYW1l
KSwgInppcCIpCiAgICAgICAgIGlmIG5vdCB6aXBfcGF0aDoKICAgICAgICAgICAgIHJldHVybiBO
b25lCi0gICAgICAgIGlmIG5vdCBzZWxmLl90b29sLmZpbGVzeXN0ZW0uaXNkaXIocmVzdWx0c19k
aXJlY3RvcnkpOgorICAgICAgICBpZiBub3QgZmlsZXN5c3RlbS5pc2RpcihyZXN1bHRzX2RpcmVj
dG9yeSk6CiAgICAgICAgICAgICBfbG9nLmluZm8oIiVzIGRvZXMgbm90IGV4aXN0LCBub3QgYXJj
aGl2aW5nLiIgJSByZXN1bHRzX2RpcmVjdG9yeSkKICAgICAgICAgICAgIHJldHVybiBOb25lCi0g
ICAgICAgIGFyY2hpdmUgPSBzZWxmLl90b29sLndvcmtzcGFjZS5jcmVhdGVfemlwKHppcF9wYXRo
LCByZXN1bHRzX2RpcmVjdG9yeSkKKyAgICAgICAgYXJjaGl2ZSA9IHdvcmtzcGFjZS5jcmVhdGVf
emlwKHppcF9wYXRoLCByZXN1bHRzX2RpcmVjdG9yeSkKICAgICAgICAgIyBSZW1vdmUgdGhlIHJl
c3VsdHMgZGlyZWN0b3J5IHRvIHByZXZlbnQgaHR0cCBsb2dzLCBldGMuIGZyb20gZ2V0dGluZyBo
dWdlIGJldHdlZW4gcnVucy4KICAgICAgICAgIyBXZSBjb3VsZCBoYXZlIGNyZWF0ZV96aXAgcmVt
b3ZlIHRoZSBvcmlnaW5hbCwgYnV0IHRoaXMgaXMgbW9yZSBleHBsaWNpdC4KLSAgICAgICAgc2Vs
Zi5fdG9vbC5maWxlc3lzdGVtLnJtdHJlZShyZXN1bHRzX2RpcmVjdG9yeSkKKyAgICAgICAgZmls
ZXN5c3RlbS5ybXRyZWUocmVzdWx0c19kaXJlY3RvcnkpCiAgICAgICAgIHJldHVybiBhcmNoaXZl
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2xheW91dHRlc3Ry
ZXN1bHRzcmVhZGVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Jv
dC9sYXlvdXR0ZXN0cmVzdWx0c3JlYWRlcl91bml0dGVzdC5weQppbmRleCAxZTE3MWMxNDkwNGUx
OTZlZDFjYjg2YWU1NTA5OTg1MTQ3MWY3MzUxLi5iNmU4OWRmYzQ1MTQxY2Y2MGYxYmRmYzhjZjk4
ZGQ2ZjAzMTcyNDUwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90
L2xheW91dHRlc3RyZXN1bHRzcmVhZGVyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9ib3QvbGF5b3V0dGVzdHJlc3VsdHNyZWFkZXJfdW5pdHRlc3QucHkKQEAg
LTMxLDI3ICszMSwyOCBAQCBpbXBvcnQgdW5pdHRlc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3
ZWJraXRweS5jb21tb24ubmV0LmxheW91dHRlc3RyZXN1bHRzIGltcG9ydCBMYXlvdXRUZXN0UmVz
dWx0cwotZnJvbSB3ZWJraXRweS50b29sLmJvdC5sYXlvdXR0ZXN0cmVzdWx0c3JlYWRlciBpbXBv
cnQgKgotZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrVG9vbAorZnJvbSB3
ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAorCitmcm9tIC5sYXlvdXR0
ZXN0cmVzdWx0c3JlYWRlciBpbXBvcnQgTGF5b3V0VGVzdFJlc3VsdHNSZWFkZXIKIAogCiBjbGFz
cyBMYXlvdXRUZXN0UmVzdWx0c1JlYWRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRl
ZiB0ZXN0X21pc3NpbmdfbGF5b3V0X3Rlc3RfcmVzdWx0cyhzZWxmKToKLSAgICAgICAgdG9vbCA9
IE1vY2tUb29sKCkKLSAgICAgICAgcmVhZGVyID0gTGF5b3V0VGVzdFJlc3VsdHNSZWFkZXIodG9v
bCwgIi92YXIvbG9ncyIpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIHJlYWRl
ciA9IExheW91dFRlc3RSZXN1bHRzUmVhZGVyKGhvc3QsICIvbW9jay1yZXN1bHRzIiwgIi92YXIv
bG9ncyIpCiAgICAgICAgIGxheW91dF90ZXN0c19yZXN1bHRzX3BhdGggPSAnL21vY2stcmVzdWx0
cy9mdWxsX3Jlc3VsdHMuanNvbicKICAgICAgICAgdW5pdF90ZXN0c19yZXN1bHRzX3BhdGggPSAn
L21vY2stcmVzdWx0cy93ZWJraXRfdW5pdF90ZXN0c19vdXRwdXQueG1sJwotICAgICAgICB0b29s
LmZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSh7bGF5b3V0X3Rlc3RzX3Jlc3VsdHNfcGF0aDog
Tm9uZSwKKyAgICAgICAgaG9zdC5maWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oe2xheW91dF90
ZXN0c19yZXN1bHRzX3BhdGg6IE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bml0X3Rlc3RzX3Jlc3VsdHNfcGF0aDogTm9uZX0pCiAgICAgICAgICMgTWFr
ZSBzdXJlIHRoYXQgb3VyIGZpbGVzeXN0ZW0gbW9jayBmdW5jdGlvbnMgYXMgd2UgZXhwZWN0Lgot
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCB0b29sLmZpbGVzeXN0ZW0ucmVhZF90
ZXh0X2ZpbGUsIGxheW91dF90ZXN0c19yZXN1bHRzX3BhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKElPRXJyb3IsIHRvb2wuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSwgdW5pdF90ZXN0
c19yZXN1bHRzX3BhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGhvc3Qu
ZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZSwgbGF5b3V0X3Rlc3RzX3Jlc3VsdHNfcGF0aCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgaG9zdC5maWxlc3lzdGVtLnJlYWRfdGV4
dF9maWxlLCB1bml0X3Rlc3RzX3Jlc3VsdHNfcGF0aCkKICAgICAgICAgIyBsYXlvdXRfdGVzdF9y
ZXN1bHRzIHNob3VsZG4ndCByYWlzZSBldmVuIGlmIHRoZSByZXN1bHRzLmpzb24gZmlsZSBpcyBt
aXNzaW5nLgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlYWRlci5yZXN1bHRzKCksIE5vbmUp
CiAKICAgICBkZWYgdGVzdF9jcmVhdGVfdW5pdF90ZXN0X3Jlc3VsdHMoc2VsZik6Ci0gICAgICAg
IHRvb2wgPSBNb2NrVG9vbCgpCi0gICAgICAgIHJlYWRlciA9IExheW91dFRlc3RSZXN1bHRzUmVh
ZGVyKHRvb2wsICIvdmFyL2xvZ3MiKQorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAg
ICByZWFkZXIgPSBMYXlvdXRUZXN0UmVzdWx0c1JlYWRlcihob3N0LCAiL21vY2stcmVzdWx0cyIs
ICIvdmFyL2xvZ3MiKQogICAgICAgICB1bml0X3Rlc3RzX3Jlc3VsdHNfcGF0aCA9ICcvbW9jay1y
ZXN1bHRzL3dlYmtpdF91bml0X3Rlc3RzX291dHB1dC54bWwnCiAgICAgICAgIG5vX2ZhaWx1cmVz
X3htbCA9ICIiIjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CiA8dGVzdHN1
aXRlcyB0ZXN0cz0iMyIgZmFpbHVyZXM9IjAiIGRpc2FibGVkPSIwIiBlcnJvcnM9IjAiIHRpbWU9
IjExLjM1IiBuYW1lPSJBbGxUZXN0cyI+CkBAIC02MSwyMSArNjIsMjEgQEAgY2xhc3MgTGF5b3V0
VGVzdFJlc3VsdHNSZWFkZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICA8dGVzdGNhc2Ug
bmFtZT0iQ3Jhc2hJZlNldHRpbmdVbnNldFJvd0luZGV4IiBzdGF0dXM9InJ1biIgdGltZT0iMC4x
MjMiIGNsYXNzbmFtZT0iUmVuZGVyVGFibGVDZWxsRGVhdGhUZXN0IiAvPgogICA8L3Rlc3RzdWl0
ZT4KIDwvdGVzdHN1aXRlcz4iIiIKLSAgICAgICAgdG9vbC5maWxlc3lzdGVtID0gTW9ja0ZpbGVT
eXN0ZW0oe3VuaXRfdGVzdHNfcmVzdWx0c19wYXRoOiBub19mYWlsdXJlc194bWx9KQorICAgICAg
ICBob3N0LmZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSh7dW5pdF90ZXN0c19yZXN1bHRzX3Bh
dGg6IG5vX2ZhaWx1cmVzX3htbH0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZGVyLl9j
cmVhdGVfdW5pdF90ZXN0X3Jlc3VsdHMoKSwgW10pCiAKICAgICBkZWYgdGVzdF9taXNzaW5nX3Vu
aXRfdGVzdF9yZXN1bHRzX3BhdGgoc2VsZik6Ci0gICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCi0g
ICAgICAgIHRvb2wuZGVwcmVjYXRlZF9wb3J0KCkudW5pdF90ZXN0c19yZXN1bHRzX3BhdGggPSBs
YW1iZGE6IE5vbmUKLSAgICAgICAgcmVhZGVyID0gTGF5b3V0VGVzdFJlc3VsdHNSZWFkZXIodG9v
bCwgIi92YXIvbG9ncyIpCisgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCisgICAgICAgIHJlYWRl
ciA9IExheW91dFRlc3RSZXN1bHRzUmVhZGVyKGhvc3QsICIvbW9jay1yZXN1bHRzIiwgIi92YXIv
bG9ncyIpCiAgICAgICAgIHJlYWRlci5fY3JlYXRlX2xheW91dF90ZXN0X3Jlc3VsdHMgPSBsYW1i
ZGE6IExheW91dFRlc3RSZXN1bHRzKFtdKQorICAgICAgICByZWFkZXIuX2NyZWF0ZV91bml0X3Rl
c3RfcmVzdWx0cyA9IGxhbWJkYTogTm9uZQogICAgICAgICAjIGxheW91dF90ZXN0X3Jlc3VsdHMg
c2hvdWxkbid0IHJhaXNlIGV2ZW4gaWYgdGhlIHVuaXQgdGVzdHMgeG1sIGZpbGUgaXMgbWlzc2lu
Zy4KICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbHMocmVhZGVyLnJlc3VsdHMoKSwgTm9uZSkK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkZXIucmVzdWx0cygpLmZhaWxpbmdfdGVzdHMo
KSwgW10pCiAKIAogICAgIGRlZiB0ZXN0X2xheW91dF90ZXN0X3Jlc3VsdHMoc2VsZik6Ci0gICAg
ICAgIHJlYWRlciA9IExheW91dFRlc3RSZXN1bHRzUmVhZGVyKE1vY2tUb29sKCksICIvdmFyL2xv
Z3MiKQorICAgICAgICByZWFkZXIgPSBMYXlvdXRUZXN0UmVzdWx0c1JlYWRlcihNb2NrSG9zdCgp
LCAiL21vY2stcmVzdWx0cyIsICIvdmFyL2xvZ3MiKQogICAgICAgICByZWFkZXIuX3JlYWRfZmls
ZV9jb250ZW50cyA9IGxhbWJkYSBwYXRoOiBOb25lCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cmVhZGVyLnJlc3VsdHMoKSwgTm9uZSkKICAgICAgICAgcmVhZGVyLl9yZWFkX2ZpbGVfY29udGVu
dHMgPSBsYW1iZGEgcGF0aDogIiIKQEAgLTg2LDIwICs4NywxOCBAQCBjbGFzcyBMYXlvdXRUZXN0
UmVzdWx0c1JlYWRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlc3VsdHMuZmFpbHVyZV9saW1pdF9jb3VudCgpLCAzMCkgICMgVGhpcyB2YWx1ZSBt
YXRjaGVzIFJ1blRlc3RzLk5PTl9JTlRFUkFDVElWRV9GQUlMVVJFX0xJTUlUX0NPVU5UCiAKICAg
ICBkZWYgdGVzdF9hcmNoaXZlX2xhc3RfbGF5b3V0X3Rlc3RfcmVzdWx0cyhzZWxmKToKLSAgICAg
ICAgdG9vbCA9IE1vY2tUb29sKCkKLSAgICAgICAgcmVhZGVyID0gTGF5b3V0VGVzdFJlc3VsdHNS
ZWFkZXIodG9vbCwgIi92YXIvbG9ncyIpCi0gICAgICAgIHBhdGNoID0gdG9vbC5idWdzLmZldGNo
X2F0dGFjaG1lbnQoMTAwMDEpCi0gICAgICAgIHRvb2wuZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lz
dGVtKCkKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgcmVzdWx0c19kaXJlY3Rv
cnkgPSAiL21vY2stcmVzdWx0cyIKKyAgICAgICAgcmVhZGVyID0gTGF5b3V0VGVzdFJlc3VsdHNS
ZWFkZXIoaG9zdCwgcmVzdWx0c19kaXJlY3RvcnksICIvdmFyL2xvZ3MiKQorICAgICAgICBwYXRj
aCA9IGhvc3QuYnVncy5mZXRjaF9hdHRhY2htZW50KDEwMDAxKQorICAgICAgICBob3N0LmZpbGVz
eXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSgpCiAgICAgICAgICMgU2hvdWxkIGZhaWwgYmVjYXVzZSB0
aGUgcmVzdWx0c19kaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QuCiAgICAgICAgIGV4cGVjdGVkX2xv
Z3MgPSAiL21vY2stcmVzdWx0cyBkb2VzIG5vdCBleGlzdCwgbm90IGFyY2hpdmluZy5cbiIKICAg
ICAgICAgYXJjaGl2ZSA9IE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCByZWFk
ZXIuYXJjaGl2ZSwgW3BhdGNoXSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGFyY2hpdmUsIE5vbmUpCiAKLSAgICAgICAgcmVzdWx0c19kaXJl
Y3RvcnkgPSAiL21vY2stcmVzdWx0cyIKLSAgICAgICAgIyBTYW5pdHkgY2hlY2sgd2hhdCB3ZSBh
c3N1bWUgb3VyIG1vY2sgcmVzdWx0cyBkaXJlY3RvcnkgaXMuCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocmVhZGVyLl9yZXN1bHRzX2RpcmVjdG9yeSgpLCByZXN1bHRzX2RpcmVjdG9yeSkKLSAg
ICAgICAgdG9vbC5maWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0b3J5KHJlc3VsdHNfZGlyZWN0
b3J5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUodG9vbC5maWxlc3lzdGVtLmV4aXN0cyhyZXN1
bHRzX2RpcmVjdG9yeSkpCisgICAgICAgIGhvc3QuZmlsZXN5c3RlbS5tYXliZV9tYWtlX2RpcmVj
dG9yeShyZXN1bHRzX2RpcmVjdG9yeSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhvc3QuZmls
ZXN5c3RlbS5leGlzdHMocmVzdWx0c19kaXJlY3RvcnkpKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0
Tm90RXF1YWwocmVhZGVyLmFyY2hpdmUocGF0Y2gpLCBOb25lKQotICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKHRvb2wuZmlsZXN5c3RlbS5leGlzdHMocmVzdWx0c19kaXJlY3RvcnkpKQorICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKGhvc3QuZmlsZXN5c3RlbS5leGlzdHMocmVzdWx0c19kaXJlY3Rv
cnkpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vh
cmx5d2FybmluZ3N5c3RlbS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9lYXJseXdhcm5pbmdzeXN0ZW0ucHkKaW5kZXggOThhOWEzNmVkNzNlMzUxY2M2NTYwNDFlZjUy
ZDlkZGVjYWFhMDVkZi4uYTdkNzk0YzFhMDA1YzZhOTM5MWVjNDY0OWZlOGMzNTUwMTM4YWRkYSAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2Fy
bmluZ3N5c3RlbS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
ZWFybHl3YXJuaW5nc3lzdGVtLnB5CkBAIC00NywyMCArNDcsMTQgQEAgY2xhc3MgQWJzdHJhY3RF
YXJseVdhcm5pbmdTeXN0ZW0oQWJzdHJhY3RSZXZpZXdRdWV1ZSwgRWFybHlXYXJuaW5nU3lzdGVt
VGFza0RlbGUKICAgICAjIEZJWE1FOiBTd2l0Y2ggX2RlZmF1bHRfcnVuX3Rlc3RzIGZyb20gb3B0
LWluIHRvIG9wdC1vdXQgb25jZSBtb3JlIGJvdHMgYXJlIHJlYWR5IHRvIHJ1biB0ZXN0cy4KICAg
ICBfZGVmYXVsdF9ydW5fdGVzdHMgPSBGYWxzZQogCi0gICAgIyBTdWJjbGFzc2VzIG11c3Qgb3Zl
cnJpZGUuCi0gICAgcG9ydF9uYW1lID0gTm9uZQotCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgog
ICAgICAgICBvcHRpb25zID0gW21ha2Vfb3B0aW9uKCItLXJ1bi10ZXN0cyIsIGFjdGlvbj0ic3Rv
cmVfdHJ1ZSIsIGRlc3Q9InJ1bl90ZXN0cyIsIGRlZmF1bHQ9c2VsZi5fZGVmYXVsdF9ydW5fdGVz
dHMsIGhlbHA9IlJ1biB0aGUgTGF5b3V0IHRlc3RzIGZvciBlYWNoIHBhdGNoIildCiAgICAgICAg
IEFic3RyYWN0UmV2aWV3UXVldWUuX19pbml0X18oc2VsZiwgb3B0aW9ucz1vcHRpb25zKQotICAg
ICAgICBzZWxmLnBvcnQgPSBEZXByZWNhdGVkUG9ydC5wb3J0KHNlbGYucG9ydF9uYW1lKQogCiAg
ICAgZGVmIGJlZ2luX3dvcmtfcXVldWUoc2VsZik6Ci0gICAgICAgICMgRklYTUU6IFRoaXMgdmlv
bGF0ZXMgYWJzdHJhY3Rpb24KLSAgICAgICAgc2VsZi5fdG9vbC5fZGVwcmVjYXRlZF9wb3J0ID0g
c2VsZi5wb3J0CiAgICAgICAgIEFic3RyYWN0UmV2aWV3UXVldWUuYmVnaW5fd29ya19xdWV1ZShz
ZWxmKQogICAgICAgICBzZWxmLl9leHBlY3RlZF9mYWlsdXJlcyA9IEV4cGVjdGVkRmFpbHVyZXMo
KQotICAgICAgICBzZWxmLl9sYXlvdXRfdGVzdF9yZXN1bHRzX3JlYWRlciA9IExheW91dFRlc3RS
ZXN1bHRzUmVhZGVyKHNlbGYuX3Rvb2wsIHNlbGYuX2xvZ19kaXJlY3RvcnkoKSkKKyAgICAgICAg
c2VsZi5fbGF5b3V0X3Rlc3RfcmVzdWx0c19yZWFkZXIgPSBMYXlvdXRUZXN0UmVzdWx0c1JlYWRl
cihzZWxmLl90b29sLCBzZWxmLl9wb3J0LnJlc3VsdHNfZGlyZWN0b3J5KCksIHNlbGYuX2xvZ19k
aXJlY3RvcnkoKSkKIAogICAgIGRlZiBfZmFpbGluZ190ZXN0c19tZXNzYWdlKHNlbGYsIHRhc2ss
IHBhdGNoKToKICAgICAgICAgcmVzdWx0cyA9IHRhc2sucmVzdWx0c19mcm9tX3BhdGNoX3Rlc3Rf
cnVuKHBhdGNoKQpAQCAtMTA1LDcgKzk5LDcgQEAgY2xhc3MgQWJzdHJhY3RFYXJseVdhcm5pbmdT
eXN0ZW0oQWJzdHJhY3RSZXZpZXdRdWV1ZSwgRWFybHlXYXJuaW5nU3lzdGVtVGFza0RlbGUKICAg
ICAgICAgcmV0dXJuIHNlbGYubmFtZQogCiAgICAgZGVmIHJ1bl9jb21tYW5kKHNlbGYsIGNvbW1h
bmQpOgotICAgICAgICBzZWxmLnJ1bl93ZWJraXRfcGF0Y2goY29tbWFuZCArIFtzZWxmLnBvcnQu
ZmxhZygpXSkKKyAgICAgICAgc2VsZi5ydW5fd2Via2l0X3BhdGNoKGNvbW1hbmQgKyBbc2VsZi5f
ZGVwcmVjYXRlZF9wb3J0LmZsYWcoKV0pCiAKICAgICBkZWYgY29tbWFuZF9wYXNzZWQoc2VsZiwg
bWVzc2FnZSwgcGF0Y2gpOgogICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weQppbmRleCA1NjFiMTczZGZiYTk4NzNkZDNlMGYxODI4
YjdhZWZhNzc5MTFlZTQxLi44ODY1MmM1MmVmZmUxMWQ4NmE4NjRiNjY3ZWY2N2RmMjMxM2Q2ZWFh
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVz
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkK
QEAgLTI0Niw3ICsyNDYsMzcgQEAgY2xhc3MgQWJzdHJhY3RQYXRjaFF1ZXVlKEFic3RyYWN0UXVl
dWUpOgogICAgICAgICBzZWxmLl91cGRhdGVfc3RhdHVzKG1lc3NhZ2UsIHBhdGNoKQogICAgICAg
ICBzZWxmLl9yZWxlYXNlX3dvcmtfaXRlbShwYXRjaCkKIAotICAgICMgRklYTUU6IFRoaXMgcHJv
YmFibHkgYmVsb25ncyBhdCBhIGxheWVyIGJlbG93IEFic3RyYWN0UGF0Y2hRdWV1ZSwgYnV0IHNo
YXJlZCBieSBDb21taXRRdWV1ZSBhbmQgdGhlIEVhcmx5V2FybmluZ1N5c3RlbS4KKyAgICBkZWYg
d29ya19pdGVtX2xvZ19wYXRoKHNlbGYsIHBhdGNoKToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGgu
am9pbihzZWxmLl9sb2dfZGlyZWN0b3J5KCksICIlcy5sb2ciICUgcGF0Y2guYnVnX2lkKCkpCisK
KworIyBVc2VkIHRvIHNoYXJlIGNvZGUgYmV0d2VlbiB0aGUgRVdTIGFuZCBjb21taXQtcXVldWUu
CitjbGFzcyBQYXRjaFByb2Nlc3NpbmdRdWV1ZShBYnN0cmFjdFBhdGNoUXVldWUpOgorICAgICMg
U3ViY2xhc3NlcyBtdXN0IG92ZXJyaWRlLgorICAgIHBvcnRfbmFtZSA9IE5vbmUKKworICAgICMg
RklYTUU6IFRoaXMgaXMgYSBoYWNrIHRvIG1hcCBiZXR3ZWVuIHRoZSBvbGQgcG9ydCBuYW1lcyBh
bmQgdGhlIG5ldyBwb3J0IG5hbWVzLgorICAgIGRlZiBfbmV3X3BvcnRfbmFtZV9mcm9tX29sZChz
ZWxmLCBwb3J0X25hbWUpOgorICAgICAgICAjIFRoZSBuZXcgcG9ydCBzeXN0ZW0gaGFzIG5vIGNv
bmNlcHQgb2YgeHZmYiB5ZXQuCisgICAgICAgIGlmIHBvcnRfbmFtZSA9PSAnY2hyb21pdW0teHZm
Yic6CisgICAgICAgICAgICByZXR1cm4gJ2Nocm9taXVtJworICAgICAgICAjIEFwcGxlUG9ydC5k
ZXRlcm1pbmVfZnVsbF9wb3J0X25hbWUgYXNzZXJ0cyBpZiB0aGUgbmFtZSBkb2Vzbid0IGluY2x1
ZGUgdmVyc2lvbi4KKyAgICAgICAgaWYgcG9ydF9uYW1lID09ICdtYWMnOgorICAgICAgICAgICAg
cmV0dXJuICdtYWMtZnV0dXJlJworICAgICAgICBpZiBwb3J0X25hbWUgPT0gJ3dpbic6CisgICAg
ICAgICAgICByZXR1cm4gJ3dpbi1mdXR1cmUnCisgICAgICAgIHJldHVybiBwb3J0X25hbWUKKwor
ICAgIGRlZiBiZWdpbl93b3JrX3F1ZXVlKHNlbGYpOgorICAgICAgICBBYnN0cmFjdFBhdGNoUXVl
dWUuYmVnaW5fd29ya19xdWV1ZShzZWxmKQorICAgICAgICBpZiBub3Qgc2VsZi5wb3J0X25hbWU6
CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgIyBGSVhNRTogVGhpcyBpcyBvbmx5IHVzZWQg
Zm9yIHNlbGYuX2RlcHJlY2F0ZWRfcG9ydC5mbGFnKCkKKyAgICAgICAgc2VsZi5fZGVwcmVjYXRl
ZF9wb3J0ID0gRGVwcmVjYXRlZFBvcnQucG9ydChzZWxmLnBvcnRfbmFtZSkKKyAgICAgICAgIyBG
SVhNRTogVGhpcyB2aW9sYXRlcyBhYnN0cmFjdGlvbgorICAgICAgICBzZWxmLl90b29sLl9kZXBy
ZWNhdGVkX3BvcnQgPSBzZWxmLl9kZXByZWNhdGVkX3BvcnQKKyAgICAgICAgc2VsZi5fcG9ydCA9
IHNlbGYuX3Rvb2wucG9ydF9mYWN0b3J5LmdldChzZWxmLl9uZXdfcG9ydF9uYW1lX2Zyb21fb2xk
KHNlbGYucG9ydF9uYW1lKSkKKwogICAgIGRlZiBfdXBsb2FkX3Jlc3VsdHNfYXJjaGl2ZV9mb3Jf
cGF0Y2goc2VsZiwgcGF0Y2gsIHJlc3VsdHNfYXJjaGl2ZV96aXApOgogICAgICAgICBib3RfaWQg
PSBzZWxmLl90b29sLnN0YXR1c19zZXJ2ZXIuYm90X2lkIG9yICJib3QiCiAgICAgICAgIGRlc2Ny
aXB0aW9uID0gIkFyY2hpdmUgb2YgbGF5b3V0LXRlc3QtcmVzdWx0cyBmcm9tICVzIiAlIGJvdF9p
ZApAQCAtMjYzLDI3ICsyOTMsMTggQEAgY2xhc3MgQWJzdHJhY3RQYXRjaFF1ZXVlKEFic3RyYWN0
UXVldWUpOgogICAgICAgICBjb21tZW50X3RleHQgKz0gQm90SW5mbyhzZWxmLl90b29sKS5zdW1t
YXJ5X3RleHQoKQogICAgICAgICBzZWxmLl90b29sLmJ1Z3MuYWRkX2F0dGFjaG1lbnRfdG9fYnVn
KHBhdGNoLmJ1Z19pZCgpLCByZXN1bHRzX2FyY2hpdmVfZmlsZSwgZGVzY3JpcHRpb24sIGZpbGVu
YW1lPSJsYXlvdXQtdGVzdC1yZXN1bHRzLnppcCIsIGNvbW1lbnRfdGV4dD1jb21tZW50X3RleHQp
CiAKLSAgICBkZWYgd29ya19pdGVtX2xvZ19wYXRoKHNlbGYsIHBhdGNoKToKLSAgICAgICAgcmV0
dXJuIG9zLnBhdGguam9pbihzZWxmLl9sb2dfZGlyZWN0b3J5KCksICIlcy5sb2ciICUgcGF0Y2gu
YnVnX2lkKCkpCiAKLQotY2xhc3MgQ29tbWl0UXVldWUoQWJzdHJhY3RQYXRjaFF1ZXVlLCBTdGVw
U2VxdWVuY2VFcnJvckhhbmRsZXIsIENvbW1pdFF1ZXVlVGFza0RlbGVnYXRlKToKK2NsYXNzIENv
bW1pdFF1ZXVlKFBhdGNoUHJvY2Vzc2luZ1F1ZXVlLCBTdGVwU2VxdWVuY2VFcnJvckhhbmRsZXIs
IENvbW1pdFF1ZXVlVGFza0RlbGVnYXRlKToKICAgICBuYW1lID0gImNvbW1pdC1xdWV1ZSIKICAg
ICBwb3J0X25hbWUgPSAiY2hyb21pdW0teHZmYiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmKToK
LSAgICAgICAgQWJzdHJhY3RQYXRjaFF1ZXVlLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYu
cG9ydCA9IERlcHJlY2F0ZWRQb3J0LnBvcnQoc2VsZi5wb3J0X25hbWUpCi0KICAgICAjIEFic3Ry
YWN0UGF0Y2hRdWV1ZSBtZXRob2RzCiAKICAgICBkZWYgYmVnaW5fd29ya19xdWV1ZShzZWxmKToK
LSAgICAgICAgIyBGSVhNRTogVGhpcyB2aW9sYXRlcyBhYnN0cmFjdGlvbgotICAgICAgICBzZWxm
Ll90b29sLl9kZXByZWNhdGVkX3BvcnQgPSBzZWxmLnBvcnQKLSAgICAgICAgQWJzdHJhY3RQYXRj
aFF1ZXVlLmJlZ2luX3dvcmtfcXVldWUoc2VsZikKKyAgICAgICAgUGF0Y2hQcm9jZXNzaW5nUXVl
dWUuYmVnaW5fd29ya19xdWV1ZShzZWxmKQogICAgICAgICBzZWxmLmNvbW1pdHRlcl92YWxpZGF0
b3IgPSBDb21taXR0ZXJWYWxpZGF0b3Ioc2VsZi5fdG9vbCkKICAgICAgICAgc2VsZi5fZXhwZWN0
ZWRfZmFpbHVyZXMgPSBFeHBlY3RlZEZhaWx1cmVzKCkKLSAgICAgICAgc2VsZi5fbGF5b3V0X3Rl
c3RfcmVzdWx0c19yZWFkZXIgPSBMYXlvdXRUZXN0UmVzdWx0c1JlYWRlcihzZWxmLl90b29sLCBz
ZWxmLl9sb2dfZGlyZWN0b3J5KCkpCisgICAgICAgIHNlbGYuX2xheW91dF90ZXN0X3Jlc3VsdHNf
cmVhZGVyID0gTGF5b3V0VGVzdFJlc3VsdHNSZWFkZXIoc2VsZi5fdG9vbCwgc2VsZi5fcG9ydC5y
ZXN1bHRzX2RpcmVjdG9yeSgpLCBzZWxmLl9sb2dfZGlyZWN0b3J5KCkpCiAKICAgICBkZWYgbmV4
dF93b3JrX2l0ZW0oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9uZXh0X3BhdGNoKCkKQEAg
LTMyNCw3ICszNDUsNyBAQCBjbGFzcyBDb21taXRRdWV1ZShBYnN0cmFjdFBhdGNoUXVldWUsIFN0
ZXBTZXF1ZW5jZUVycm9ySGFuZGxlciwgQ29tbWl0UXVldWVUYXNrRAogICAgICMgQ29tbWl0UXVl
dWVUYXNrRGVsZWdhdGUgbWV0aG9kcwogCiAgICAgZGVmIHJ1bl9jb21tYW5kKHNlbGYsIGNvbW1h
bmQpOgotICAgICAgICBzZWxmLnJ1bl93ZWJraXRfcGF0Y2goY29tbWFuZCArIFtzZWxmLnBvcnQu
ZmxhZygpXSkKKyAgICAgICAgc2VsZi5ydW5fd2Via2l0X3BhdGNoKGNvbW1hbmQgKyBbc2VsZi5f
ZGVwcmVjYXRlZF9wb3J0LmZsYWcoKV0pCiAKICAgICBkZWYgY29tbWFuZF9wYXNzZWQoc2VsZiwg
bWVzc2FnZSwgcGF0Y2gpOgogICAgICAgICBzZWxmLl91cGRhdGVfc3RhdHVzKG1lc3NhZ2UsIHBh
dGNoPXBhdGNoKQpAQCAtMzgxLDEwICs0MDIsMTAgQEAgY2xhc3MgQ29tbWl0UXVldWUoQWJzdHJh
Y3RQYXRjaFF1ZXVlLCBTdGVwU2VxdWVuY2VFcnJvckhhbmRsZXIsIENvbW1pdFF1ZXVlVGFza0QK
ICAgICAgICAgcmFpc2UgVHJ5QWdhaW4oKQogCiAKLWNsYXNzIEFic3RyYWN0UmV2aWV3UXVldWUo
QWJzdHJhY3RQYXRjaFF1ZXVlLCBTdGVwU2VxdWVuY2VFcnJvckhhbmRsZXIpOgorY2xhc3MgQWJz
dHJhY3RSZXZpZXdRdWV1ZShQYXRjaFByb2Nlc3NpbmdRdWV1ZSwgU3RlcFNlcXVlbmNlRXJyb3JI
YW5kbGVyKToKICAgICAiIiJUaGlzIGlzIHRoZSBiYXNlLWNsYXNzIGZvciB0aGUgRVdTIHF1ZXVl
cyBhbmQgdGhlIHN0eWxlLXF1ZXVlLiIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25z
PU5vbmUpOgotICAgICAgICBBYnN0cmFjdFBhdGNoUXVldWUuX19pbml0X18oc2VsZiwgb3B0aW9u
cykKKyAgICAgICAgUGF0Y2hQcm9jZXNzaW5nUXVldWUuX19pbml0X18oc2VsZiwgb3B0aW9ucykK
IAogICAgIGRlZiByZXZpZXdfcGF0Y2goc2VsZiwgcGF0Y2gpOgogICAgICAgICByYWlzZSBOb3RJ
bXBsZW1lbnRlZEVycm9yKCJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IikKQEAgLTM5Miw3ICs0
MTMsNyBAQCBjbGFzcyBBYnN0cmFjdFJldmlld1F1ZXVlKEFic3RyYWN0UGF0Y2hRdWV1ZSwgU3Rl
cFNlcXVlbmNlRXJyb3JIYW5kbGVyKToKICAgICAjIEFic3RyYWN0UGF0Y2hRdWV1ZSBtZXRob2Rz
CiAKICAgICBkZWYgYmVnaW5fd29ya19xdWV1ZShzZWxmKToKLSAgICAgICAgQWJzdHJhY3RQYXRj
aFF1ZXVlLmJlZ2luX3dvcmtfcXVldWUoc2VsZikKKyAgICAgICAgUGF0Y2hQcm9jZXNzaW5nUXVl
dWUuYmVnaW5fd29ya19xdWV1ZShzZWxmKQogCiAgICAgZGVmIG5leHRfd29ya19pdGVtKHNlbGYp
OgogICAgICAgICByZXR1cm4gc2VsZi5fbmV4dF9wYXRjaCgpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weQppbmRleCA3
YWYxZWRlZjQxYjMwYzVkOWFmMzE4ZmE0NzRhN2E3OThhYzNlN2E1Li45YmM4OWE1MjlhMzM1MWNi
ZTdjMTAwODY3NzgyODkyMjcwNWM2YjNhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkKQEAgLTE2Niw4ICsxNjYs
MTAgQEAgY2xhc3MgQWJzdHJhY3RQYXRjaFF1ZXVlVGVzdChDb21tYW5kc1Rlc3QpOgogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHF1ZXVlLl9uZXh0X3BhdGNoKCkuaWQoKSwgMTAwMDEpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocXVldWUuX25leHRfcGF0Y2goKSwgTm9uZSkgICAgIyBXaGVu
IHRoZSBxdWV1ZSBpcyBlbXB0eQogCisKK2NsYXNzIFBhdGNoUHJvY2Vzc2luZ1F1ZXVlVGVzdChD
b21tYW5kc1Rlc3QpOgogICAgIGRlZiB0ZXN0X3VwbG9hZF9yZXN1bHRzX2FyY2hpdmVfZm9yX3Bh
dGNoKHNlbGYpOgotICAgICAgICBxdWV1ZSA9IEFic3RyYWN0UGF0Y2hRdWV1ZSgpCisgICAgICAg
IHF1ZXVlID0gUGF0Y2hQcm9jZXNzaW5nUXVldWUoKQogICAgICAgICBxdWV1ZS5uYW1lID0gIm1v
Y2stcXVldWUiCiAgICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCiAgICAgICAgIHF1ZXVlLmJpbmRf
dG9fdG9vbCh0b29sKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL3J1bnRlc3RzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3J1bnRl
c3RzLnB5CmluZGV4IDM1MGIyZWRmNThmMjg5NDBhMGM4ZTQ3OTc0MWE3MzI5NDY1Mzc0MzAuLjFl
YWJlMjVjZjcwOTY0ODc5MjNmYTVhOTA1OTQ2MjYwYzYwYjlkNjMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9ydW50ZXN0cy5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVudGVzdHMucHkKQEAgLTcyLDggKzcyLDYgQEAgY2xh
c3MgUnVuVGVzdHMoQWJzdHJhY3RTdGVwKToKICAgICAgICAgaWYgd2Via2l0X3VuaXRfdGVzdHNf
Y29tbWFuZDoKICAgICAgICAgICAgIF9sb2cuaW5mbygiUnVubmluZyBXZWJLaXQgdW5pdCB0ZXN0
cyIpCiAgICAgICAgICAgICBhcmdzID0gd2Via2l0X3VuaXRfdGVzdHNfY29tbWFuZAotICAgICAg
ICAgICAgaWYgc2VsZi5fb3B0aW9ucy5ub25faW50ZXJhY3RpdmU6Ci0gICAgICAgICAgICAgICAg
YXJncy5hcHBlbmQoIi0tZ3Rlc3Rfb3V0cHV0PXhtbDolcy93ZWJraXRfdW5pdF90ZXN0c19vdXRw
dXQueG1sIiAlIHNlbGYuX3Rvb2wuZGVwcmVjYXRlZF9wb3J0KCkucmVzdWx0c19kaXJlY3Rvcnkp
CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUu
cnVuX2FuZF90aHJvd19pZl9mYWlsKGFyZ3MsIGN3ZD1zZWxmLl90b29sLnNjbSgpLmNoZWNrb3V0
X3Jvb3QpCiAgICAgICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6CkBAIC04Nyw3ICs4NSw2
IEBAIGNsYXNzIFJ1blRlc3RzKEFic3RyYWN0U3RlcCk6CiAgICAgICAgICAgICAgICAgIi0tbm8t
c2hvdy1yZXN1bHRzIiwKICAgICAgICAgICAgICAgICAiLS1za2lwLWZhaWxpbmctdGVzdHMiLAog
ICAgICAgICAgICAgICAgICItLWV4aXQtYWZ0ZXItbi1mYWlsdXJlcz0lcyIgJSBzZWxmLk5PTl9J
TlRFUkFDVElWRV9GQUlMVVJFX0xJTUlUX0NPVU5ULAotICAgICAgICAgICAgICAgICItLXJlc3Vs
dHMtZGlyZWN0b3J5PSVzIiAlIHNlbGYuX3Rvb2wuZGVwcmVjYXRlZF9wb3J0KCkucmVzdWx0c19k
aXJlY3RvcnksCiAgICAgICAgICAgICAgICAgIi0tcXVpZXQiLAogICAgICAgICAgICAgXSkKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3J1bnRlc3RzX3Vu
aXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3J1bnRlc3RzX3Vu
aXR0ZXN0LnB5CmluZGV4IDI1MDZjNjFhNDQ1Y2Y5YzZmMzE3ZDE1YTc4YzhhYmRhZGFmMWJhODQu
Ljk2NzU4NWMwNTJhMjhmYzlkNWNjZmFhNTUwMDI5NjFlNjQxY2IxNWUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9ydW50ZXN0c191bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcnVudGVzdHNfdW5pdHRlc3QucHkK
QEAgLTM5LDggKzM5LDggQEAgY2xhc3MgUnVuVGVzdHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAgICAgdG9vbC5fZGVwcmVjYXRlZF9wb3J0LnJ1bl9wZXJsX3VuaXR0ZXN0c19jb21tYW5k
ID0gbGFtYmRhOiBOb25lCiAgICAgICAgIHN0ZXAgPSBSdW5UZXN0cyh0b29sLCBNb2NrT3B0aW9u
cyh0ZXN0PVRydWUsIG5vbl9pbnRlcmFjdGl2ZT1UcnVlLCBxdWlldD1GYWxzZSkpCiAgICAgICAg
IGV4cGVjdGVkX2xvZ3MgPSAiIiJSdW5uaW5nIFdlYktpdCB1bml0IHRlc3RzCi1NT0NLIHJ1bl9h
bmRfdGhyb3dfaWZfZmFpbDogWydtb2NrLXJ1bi13ZWJraXQtdW5pdC10ZXN0cycsICctLWd0ZXN0
X291dHB1dD14bWw6L21vY2stcmVzdWx0cy93ZWJraXRfdW5pdF90ZXN0c19vdXRwdXQueG1sJ10s
IGN3ZD0vbW9jay1jaGVja291dAorTU9DSyBydW5fYW5kX3Rocm93X2lmX2ZhaWw6IFsnbW9jay1y
dW4td2Via2l0LXVuaXQtdGVzdHMnXSwgY3dkPS9tb2NrLWNoZWNrb3V0CiBSdW5uaW5nIHJ1bi13
ZWJraXQtdGVzdHMKLU1PQ0sgcnVuX2FuZF90aHJvd19pZl9mYWlsOiBbJ21vY2stcnVuLXdlYmtp
dC10ZXN0cycsICctLW5vLW5ldy10ZXN0LXJlc3VsdHMnLCAnLS1uby1zaG93LXJlc3VsdHMnLCAn
LS1za2lwLWZhaWxpbmctdGVzdHMnLCAnLS1leGl0LWFmdGVyLW4tZmFpbHVyZXM9MzAnLCAnLS1y
ZXN1bHRzLWRpcmVjdG9yeT0vbW9jay1yZXN1bHRzJywgJy0tcXVpZXQnXSwgY3dkPS9tb2NrLWNo
ZWNrb3V0CitNT0NLIHJ1bl9hbmRfdGhyb3dfaWZfZmFpbDogWydtb2NrLXJ1bi13ZWJraXQtdGVz
dHMnLCAnLS1uby1uZXctdGVzdC1yZXN1bHRzJywgJy0tbm8tc2hvdy1yZXN1bHRzJywgJy0tc2tp
cC1mYWlsaW5nLXRlc3RzJywgJy0tZXhpdC1hZnRlci1uLWZhaWx1cmVzPTMwJywgJy0tcXVpZXQn
XSwgY3dkPS9tb2NrLWNoZWNrb3V0CiAiIiIKICAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2Vy
dF9vdXRwdXRzKHNlbGYsIHN0ZXAucnVuLCBbe31dLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xv
Z3MpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>