<?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>55585</bug_id>
          
          <creation_ts>2011-03-02 09:41:25 -0800</creation_ts>
          <short_desc>EWS builds patches that fail to build twice, which seems useless and slows down the bots</short_desc>
          <delta_ts>2011-05-28 15:26:24 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, ToolsHitList</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>lforschler</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>360853</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-02 09:41:25 -0800</bug_when>
    <thetext>EWS builds patches that fail to build twice. See this code in AbstractEarlyWarningSystem.review_patch: &lt;http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/tool/commands/earlywarningsystem.py?rev=76008#L91&gt;

91	        if not self._build(patch, first_run=True):
92	            if not self._can_build():
93	                return False
94	            self._build(patch)

It doesn&apos;t seem helpful to build failing patches twice. What would change between the first attempt to build and the second attempt to build?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360854</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-02 09:42:23 -0800</bug_when>
    <thetext>I noticed this because the Win EWS bots have gotten waaaaay behind due to a build  failure unrelated to the patches they&apos;re processing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360856</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-02 09:43:41 -0800</bug_when>
    <thetext>I guess we really end up doing *three* builds:

1) Try to build with the patch
2) Do a clean build without the patch
3) Try to build with the patch again

I guess this is trying to figure out when the build is broken due to the patch and when it&apos;s already broken due to something else. But I still don&apos;t see why (3) is useful. Even (2) seems dubious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360857</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-02 09:44:57 -0800</bug_when>
    <thetext>In the best case, all three of these builds could be quite quick (e.g., if only a single .cpp file is changed). But in the worst case they could be three full rebuilds (e.g., if Platform.h is touched).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360881</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-03-02 10:15:53 -0800</bug_when>
    <thetext>The Win EWS bots used to (and I believe still) do a clean build every 20 builds or so.

It was part of their startup script. It would delete the build directory before buildling.

Lucas admins all the EWS bots these days, so he would know exacxtly how they&apos;re set up.  All non-EWS bots use this script:
http://trac.webkit.org/browser/trunk/Tools/EWSTools/start-queue.sh

which does not to a force clean.  We could make all bots do a force clean if that&apos;s desired.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360897</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-03-02 10:29:37 -0800</bug_when>
    <thetext>OK, it could be that there&apos;s something wrong with the script that&apos;s causing the clean builds not to happen. We should look into that.

But I think this bug as filed is still valid. Eric, can you explain what benefit there is to building the patch twice?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361369</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-03-02 22:45:33 -0800</bug_when>
    <thetext>&gt; But I think this bug as filed is still valid. Eric, can you explain what benefit there is to building the patch twice?

We used to do this because we didn&apos;t have a way of capturing the build failure output for upload before.  We re-ran the build to generate the output again.  Now we have a way of keeping the output, so we can remove the final build (we just need to save the build error in case it&apos;s caused by the patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410653</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-05-26 11:46:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/9509336&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410685</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-26 11:52:29 -0700</bug_when>
    <thetext>I&apos;m curious how you plan to fix this bug.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410694</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-05-26 11:54:18 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I&apos;m curious how you plan to fix this bug.  :)

Didn&apos;t you already outline a fix in comment 6?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410777</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-26 13:26:21 -0700</bug_when>
    <thetext>&gt; Didn&apos;t you already outline a fix in comment 6?

Very true!  Currently there are two base classes for EWS bots:

* AbstractEarlyWarningSystem
* AbstractTestingEWS

It turns out that AbstractTestingEWS (the new hotness) does exactly that.  AbstractTestingEWS is probably stable enough that we can just switch all the bots to use it as a base class now.

AbstractTestingEWS also runs the tests, but we could switch off that functionality if you don&apos;t want to run tests on Windows (or we could leave it on if you do want to run the tests).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411742</commentid>
    <comment_count>11</comment_count>
      <attachid>95237</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-27 18:00:53 -0700</bug_when>
    <thetext>Created attachment 95237
shot in the dark</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411746</commentid>
    <comment_count>12</comment_count>
      <attachid>95238</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-27 18:09:21 -0700</bug_when>
    <thetext>Created attachment 95238
tests still need work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411750</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-27 18:23:48 -0700</bug_when>
    <thetext>I&apos;m running the mac-ews locally using this patch to see whether it explodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411807</commentid>
    <comment_count>14</comment_count>
      <attachid>95254</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-27 22:49:44 -0700</bug_when>
    <thetext>Created attachment 95254
Rocking and rolling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411875</commentid>
    <comment_count>15</comment_count>
      <attachid>95254</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-28 11:56:16 -0700</bug_when>
    <thetext>Comment on attachment 95254
Rocking and rolling

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

I don&apos;t think you meant to delete all those tests.  Otherwise this looks fine.

&gt; Tools/Scripts/webkitpy/tool/commands/earlywarningsystem.py:121
&gt; +    def build_style(self):
&gt; +        return self._build_style

I&apos;m not quite sure why we&apos;re doing so much to pipe this through.

&gt; Tools/Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:39
&gt;  class AbstractEarlyWarningSystemTest(QueuesTest):

Why are you deleting all these tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411876</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-28 11:58:43 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 95254 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=95254&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/earlywarningsystem.py:121
&gt; &gt; +    def build_style(self):
&gt; &gt; +        return self._build_style
&gt; 
&gt; I&apos;m not quite sure why we&apos;re doing so much to pipe this through.

Yeah, that was probably a bit of overkill.

&gt; &gt; Tools/Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:39
&gt; &gt;  class AbstractEarlyWarningSystemTest(QueuesTest):
&gt; 
&gt; Why are you deleting all these tests?

They test the code I deleted.  In any case, they&apos;re redundant with the other tests for PatchAnalysisTask.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411877</commentid>
    <comment_count>17</comment_count>
      <attachid>95254</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-28 12:00:37 -0700</bug_when>
    <thetext>Comment on attachment 95254
Rocking and rolling

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

&gt; Tools/Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:-50
&gt; -        OutputCapture().assert_outputs(self, queue._can_build, [], expected_stderr=expected_stderr)

queue._can_build doesn&apos;t exist anymore.

&gt; Tools/Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:-57
&gt; -        OutputCapture().assert_outputs(self, queue._can_build, [], expected_stderr=expected_stderr)

ditto

&gt; Tools/Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:-72
&gt; -    def test_post_reject_message_on_bug(self):

This one we might be able to keep...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411878</commentid>
    <comment_count>18</comment_count>
      <attachid>95254</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-28 12:01:17 -0700</bug_when>
    <thetext>Comment on attachment 95254
Rocking and rolling

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:39
&gt;&gt;&gt;  class AbstractEarlyWarningSystemTest(QueuesTest):
&gt;&gt; 
&gt;&gt; Why are you deleting all these tests?
&gt; 
&gt; They test the code I deleted.  In any case, they&apos;re redundant with the other tests for PatchAnalysisTask.

OK.  I&apos;m not sure I&apos;m 100% convinced they&apos;re dupes, but I trust you. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411905</commentid>
    <comment_count>19</comment_count>
      <attachid>95254</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-28 15:26:19 -0700</bug_when>
    <thetext>Comment on attachment 95254
Rocking and rolling

Clearing flags on attachment: 95254

Committed r87626: &lt;http://trac.webkit.org/changeset/87626&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411906</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-28 15:26:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95237</attachid>
            <date>2011-05-27 18:00:53 -0700</date>
            <delta_ts>2011-05-27 18:09:17 -0700</delta_ts>
            <desc>shot in the dark</desc>
            <filename>bug-55585-20110527180052.patch</filename>
            <type>text/plain</type>
            <size>9097</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZWFybHl3YXJuaW5nc3lzdGVt
dGFzay5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2Vh
cmx5d2FybmluZ3N5c3RlbXRhc2sucHkJKHJldmlzaW9uIDg3NTg0KQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2JvdC9lYXJseXdhcm5pbmdzeXN0ZW10YXNrLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC00MCw2ICs0MCwxMCBAQCBjbGFzcyBFYXJseVdhcm5pbmdTeXN0ZW1UYXNrRGVsZWdh
dGUoUGF0CiAKIAogY2xhc3MgRWFybHlXYXJuaW5nU3lzdGVtVGFzayhQYXRjaEFuYWx5c2lzVGFz
ayk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRlbGVnYXRlLCBwYXRjaCwgcnVuX3Rlc3Q9VHJ1
ZSk6CisgICAgICAgIFBhdGNoQW5hbHlzaXNUYXNrLl9faW5pdF9fKHNlbGYsIGRlbGVnYXRlLCBw
YXRjaCkKKyAgICAgICAgc2VsZi5fcnVuX3Rlc3RzID0gcnVuX3Rlc3QKKwogICAgIGRlZiB2YWxp
ZGF0ZShzZWxmKToKICAgICAgICAgc2VsZi5fcGF0Y2ggPSBzZWxmLl9kZWxlZ2F0ZS5yZWZldGNo
X3BhdGNoKHNlbGYuX3BhdGNoKQogICAgICAgICBpZiBzZWxmLl9wYXRjaC5pc19vYnNvbGV0ZSgp
OgpAQCAtNjMsNCArNjcsNiBAQCBjbGFzcyBFYXJseVdhcm5pbmdTeXN0ZW1UYXNrKFBhdGNoQW5h
bHlzCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fYnVpbGRfd2l0aG91dF9wYXRjaCgpOgogICAg
ICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0
X2ZhaWx1cmUoKQorICAgICAgICBpZiBub3Qgc2VsZi5fcnVuX3Rlc3RzOgorICAgICAgICAgICAg
cmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3RfcGF0Y2goKQpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9wYXRjaGFuYWx5c2lzdGFzay5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3BhdGNoYW5hbHlzaXN0YXNr
LnB5CShyZXZpc2lvbiA4NzU4NCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qv
cGF0Y2hhbmFseXNpc3Rhc2sucHkJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDkgQEAgY2xh
c3MgUGF0Y2hBbmFseXNpc1Rhc2tEZWxlZ2F0ZShvYmplY3QpOgogICAgIGRlZiBhcmNoaXZlX2xh
c3RfbGF5b3V0X3Rlc3RfcmVzdWx0cyhzZWxmLCBwYXRjaCk6CiAgICAgICAgIHJhaXNlIE5vdElt
cGxlbWVudGVkRXJyb3IoInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiKQogCisgICAgZGVmIGJ1
aWxkX3N0eWxlKHNlbGYpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzdWJj
bGFzc2VzIG11c3QgaW1wbGVtZW50IikKKwogICAgICMgV2UgY291bGQgbWFrZSByZXN1bHRzX2Fy
Y2hpdmUgb3B0aW9uYWwsIGJ1dCBmb3Igbm93IGl0J3MgcmVxdWlyZWQuCiAgICAgZGVmIHJlcG9y
dF9mbGFreV90ZXN0cyhzZWxmLCBwYXRjaCwgZmxha3lfdGVzdHMsIHJlc3VsdHNfYXJjaGl2ZSk6
CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInN1YmNsYXNzZXMgbXVzdCBpbXBs
ZW1lbnQiKQpAQCAtMTEwLDcgKzExMyw3IEBAIGNsYXNzIFBhdGNoQW5hbHlzaXNUYXNrKG9iamVj
dCk6CiAgICAgICAgICAgICAiYnVpbGQiLAogICAgICAgICAgICAgIi0tbm8tY2xlYW4iLAogICAg
ICAgICAgICAgIi0tbm8tdXBkYXRlIiwKLSAgICAgICAgICAgICItLWJ1aWxkLXN0eWxlPWJvdGgi
LAorICAgICAgICAgICAgIi0tYnVpbGQtc3R5bGU9JXMiICUgc2VsZi5fZGVsZWdhdGUuYnVpbGRf
c3R5bGUoKSwKICAgICAgICAgXSwKICAgICAgICAgIkJ1aWx0IHBhdGNoIiwKICAgICAgICAgIlBh
dGNoIGRvZXMgbm90IGJ1aWxkIikKQEAgLTEyMCw3ICsxMjMsNyBAQCBjbGFzcyBQYXRjaEFuYWx5
c2lzVGFzayhvYmplY3QpOgogICAgICAgICAgICAgImJ1aWxkIiwKICAgICAgICAgICAgICItLWZv
cmNlLWNsZWFuIiwKICAgICAgICAgICAgICItLW5vLXVwZGF0ZSIsCi0gICAgICAgICAgICAiLS1i
dWlsZC1zdHlsZT1ib3RoIiwKKyAgICAgICAgICAgICItLWJ1aWxkLXN0eWxlPSVzIiAlIHNlbGYu
X2RlbGVnYXRlLmJ1aWxkX3N0eWxlKCksCiAgICAgICAgIF0sCiAgICAgICAgICJBYmxlIHRvIGJ1
aWxkIHdpdGhvdXQgcGF0Y2giLAogICAgICAgICAiVW5hYmxlIHRvIGJ1aWxkIHdpdGhvdXQgcGF0
Y2giKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2Fy
bmluZ3N5c3RlbS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtLnB5CShyZXZpc2lvbiA4NzU4NCkKKysrIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0ucHkJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDEwIEBAIGZyb20gd2Via2l0cHkudG9vbC5ib3QuZWFy
bHl3YXJuaW5nc3lzdGUKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5xdWV1ZXMgaW1wb3J0
IEFic3RyYWN0UmV2aWV3UXVldWUKIAogCi1jbGFzcyBBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3Rl
bShBYnN0cmFjdFJldmlld1F1ZXVlKToKK2NsYXNzIEFic3RyYWN0RWFybHlXYXJuaW5nU3lzdGVt
KEFic3RyYWN0UmV2aWV3UXVldWUsIEVhcmx5V2FybmluZ1N5c3RlbVRhc2tEZWxlZ2F0ZSk6CiAg
ICAgX2J1aWxkX3N0eWxlID0gInJlbGVhc2UiCisgICAgIyBGSVhNRTogU3dpdGNoIF9ydW5fdGVz
dHMgZnJvbSBvcHQtaW4gdG8gb3B0LW91dCBvbmNlIG1vcmUgYm90cyBhcmUgcmVhZHkgdG8gcnVu
IHRlc3RzLgorICAgIF9ydW5fdGVzdHMgPSBGYWxzZQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYp
OgogICAgICAgICBBYnN0cmFjdFJldmlld1F1ZXVlLl9faW5pdF9fKHNlbGYpCkBAIC00Nyw4MCAr
NDksNiBAQCBjbGFzcyBBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbShBYnN0cmFjCiAgICAgZGVm
IHNob3VsZF9wcm9jZWVkX3dpdGhfd29ya19pdGVtKHNlbGYsIHBhdGNoKToKICAgICAgICAgcmV0
dXJuIFRydWUKIAotICAgIGRlZiBfY2FuX2J1aWxkKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBzZWxmLnJ1bl93ZWJraXRfcGF0Y2goWwotICAgICAgICAgICAgICAgICJidWlsZCIs
Ci0gICAgICAgICAgICAgICAgc2VsZi5wb3J0LmZsYWcoKSwKLSAgICAgICAgICAgICAgICAiLS1i
dWlsZC1zdHlsZT0lcyIgJSBzZWxmLl9idWlsZF9zdHlsZSwKLSAgICAgICAgICAgICAgICAiLS1m
b3JjZS1jbGVhbiIsCi0gICAgICAgICAgICAgICAgIi0tbm8tdXBkYXRlIl0pCi0gICAgICAgICAg
ICByZXR1cm4gVHJ1ZQotICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6Ci0gICAgICAgICAg
ICBmYWlsdXJlX2xvZyA9IHNlbGYuX2xvZ19mcm9tX3NjcmlwdF9lcnJvcl9mb3JfdXBsb2FkKGUp
Ci0gICAgICAgICAgICBzZWxmLl91cGRhdGVfc3RhdHVzKCJVbmFibGUgdG8gcGVyZm9ybSBhIGJ1
aWxkIiwgcmVzdWx0c19maWxlPWZhaWx1cmVfbG9nKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNl
Ci0KLSAgICBkZWYgX2J1aWxkKHNlbGYsIHBhdGNoLCBmaXJzdF9ydW49RmFsc2UpOgotICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICBhcmdzID0gWwotICAgICAgICAgICAgICAgICJidWlsZC1hdHRh
Y2htZW50IiwKLSAgICAgICAgICAgICAgICBzZWxmLnBvcnQuZmxhZygpLAotICAgICAgICAgICAg
ICAgICItLWJ1aWxkIiwKLSAgICAgICAgICAgICAgICAiLS1idWlsZC1zdHlsZT0lcyIgJSBzZWxm
Ll9idWlsZF9zdHlsZSwKLSAgICAgICAgICAgICAgICAiLS1mb3JjZS1jbGVhbiIsCi0gICAgICAg
ICAgICAgICAgIi0tcXVpZXQiLAotICAgICAgICAgICAgICAgICItLW5vbi1pbnRlcmFjdGl2ZSIs
Ci0gICAgICAgICAgICAgICAgcGF0Y2guaWQoKV0KLSAgICAgICAgICAgIGlmIG5vdCBmaXJzdF9y
dW46Ci0gICAgICAgICAgICAgICAgIyBTZWUgY29tbWl0LXF1ZXVlIGZvciBhbiBleHBsYW5hdGlv
biBvZiB3aGF0IHdlJ3JlIGRvaW5nIGhlcmUuCi0gICAgICAgICAgICAgICAgYXJncy5hcHBlbmQo
Ii0tbm8tdXBkYXRlIikKLSAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1wYXJlbnQtY29t
bWFuZD0lcyIgJSBzZWxmLm5hbWUpCi0gICAgICAgICAgICBzZWxmLnJ1bl93ZWJraXRfcGF0Y2go
YXJncykKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJv
ciwgZToKLSAgICAgICAgICAgIGlmIGZpcnN0X3J1bjoKLSAgICAgICAgICAgICAgICByZXR1cm4g
RmFsc2UKLSAgICAgICAgICAgIHJhaXNlCi0KLSAgICBkZWYgcmV2aWV3X3BhdGNoKHNlbGYsIHBh
dGNoKToKLSAgICAgICAgaWYgcGF0Y2guaXNfb2Jzb2xldGUoKToKLSAgICAgICAgICAgIHNlbGYu
X2RpZF9lcnJvcihwYXRjaCwgIiVzIGRvZXMgbm90IHByb2Nlc3Mgb2Jzb2xldGUgcGF0Y2hlcy4i
ICUgc2VsZi5uYW1lKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgaWYgcGF0
Y2guYnVnKCkuaXNfY2xvc2VkKCk6Ci0gICAgICAgICAgICBzZWxmLl9kaWRfZXJyb3IocGF0Y2gs
ICIlcyBkb2VzIG5vdCBwcm9jZXNzIHBhdGNoZXMgb24gY2xvc2VkIGJ1Z3MuIiAlIHNlbGYubmFt
ZSkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIGlmIG5vdCBzZWxmLl9idWls
ZChwYXRjaCwgZmlyc3RfcnVuPVRydWUpOgotICAgICAgICAgICAgaWYgbm90IHNlbGYuX2Nhbl9i
dWlsZCgpOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgc2VsZi5f
YnVpbGQocGF0Y2gpCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBAY2xhc3NtZXRob2QKLSAg
ICBkZWYgX3Bvc3RfcmVqZWN0X21lc3NhZ2Vfb25fYnVnKGNscywgdG9vbCwgcGF0Y2gsIHN0YXR1
c19pZCwgZXh0cmFfbWVzc2FnZV90ZXh0PU5vbmUpOgotICAgICAgICByZXN1bHRzX2xpbmsgPSB0
b29sLnN0YXR1c19zZXJ2ZXIucmVzdWx0c191cmxfZm9yX3N0YXR1cyhzdGF0dXNfaWQpCi0gICAg
ICAgIG1lc3NhZ2UgPSAiQXR0YWNobWVudCAlcyBkaWQgbm90IHBhc3MgJXMgKCVzKTpcbk91dHB1
dDogJXMiICUgKHBhdGNoLmlkKCksIGNscy5uYW1lLCBjbHMucG9ydF9uYW1lLCByZXN1bHRzX2xp
bmspCi0gICAgICAgICMgRklYTUU6IFdlIG1pZ2h0IHdhbnQgdG8gYWRkIHNvbWUgdGV4dCBhYm91
dCByZWplY3RpbmcgZnJvbSB0aGUgY29tbWl0LXF1ZXVlIGluCi0gICAgICAgICMgdGhlIGNhc2Ug
d2hlcmUgcGF0Y2guY29tbWl0X3F1ZXVlKCkgaXNuJ3QgYWxyZWFkeSBzZXQgdG8gJy0nLgotICAg
ICAgICBpZiBjbHMud2F0Y2hlcnM6Ci0gICAgICAgICAgICB0b29sLmJ1Z3MuYWRkX2NjX3RvX2J1
ZyhwYXRjaC5idWdfaWQoKSwgY2xzLndhdGNoZXJzKQotICAgICAgICB0b29sLmJ1Z3Muc2V0X2Zs
YWdfb25fYXR0YWNobWVudChwYXRjaC5pZCgpLCAiY29tbWl0LXF1ZXVlIiwgIi0iLCBtZXNzYWdl
LCBleHRyYV9tZXNzYWdlX3RleHQpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgaGFuZGxl
X3NjcmlwdF9lcnJvcihjbHMsIHRvb2wsIHN0YXRlLCBzY3JpcHRfZXJyb3IpOgotICAgICAgICBp
c19zdm5fYXBwbHkgPSBzY3JpcHRfZXJyb3IuY29tbWFuZF9uYW1lKCkgPT0gInN2bi1hcHBseSIK
LSAgICAgICAgc3RhdHVzX2lkID0gY2xzLl91cGRhdGVfc3RhdHVzX2Zvcl9zY3JpcHRfZXJyb3Io
dG9vbCwgc3RhdGUsIHNjcmlwdF9lcnJvciwgaXNfZXJyb3I9aXNfc3ZuX2FwcGx5KQotICAgICAg
ICBpZiBpc19zdm5fYXBwbHk6Ci0gICAgICAgICAgICBRdWV1ZUVuZ2luZS5leGl0X2FmdGVyX2hh
bmRsZWRfZXJyb3Ioc2NyaXB0X2Vycm9yKQotICAgICAgICBjbHMuX3Bvc3RfcmVqZWN0X21lc3Nh
Z2Vfb25fYnVnKHRvb2wsIHN0YXRlWydwYXRjaCddLCBzdGF0dXNfaWQpCi0gICAgICAgIGV4aXQo
MSkKLQotCi0jIEZJWE1FOiBUaGlzIHNob3VsZCBtZXJnZSB3aXRoIEFic3RyYWN0RWFybHlXYXJu
aW5nU3lzdGVtIG9uY2UgYWxsIHRoZSBFV1MKLSMgYm90cyBydW4gdGVzdHMuCi1jbGFzcyBBYnN0
cmFjdFRlc3RpbmdFV1MoQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0sIEVhcmx5V2FybmluZ1N5
c3RlbVRhc2tEZWxlZ2F0ZSk6CiAgICAgZGVmIGJlZ2luX3dvcmtfcXVldWUoc2VsZik6CiAgICAg
ICAgICMgRklYTUU6IFRoaXMgdmlvbGF0ZXMgYWJzdHJhY3Rpb24KICAgICAgICAgc2VsZi5fdG9v
bC5fcG9ydCA9IHNlbGYucG9ydApAQCAtMTM1LDggKzYzLDE3IEBAIGNsYXNzIEFic3RyYWN0VGVz
dGluZ0VXUyhBYnN0cmFjdEVhcmx5V2EKICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAg
IHJldHVybiAiTmV3IGZhaWxpbmcgdGVzdHM6XG4lcyIgJSAiXG4iLmpvaW4odW5leHBlY3RlZF9m
YWlsdXJlcykKIAorICAgIGRlZiBfcG9zdF9yZWplY3RfbWVzc2FnZV9vbl9idWcoc2VsZiwgdG9v
bCwgcGF0Y2gsIHN0YXR1c19pZCwgZXh0cmFfbWVzc2FnZV90ZXh0PU5vbmUpOgorICAgICAgICBy
ZXN1bHRzX2xpbmsgPSB0b29sLnN0YXR1c19zZXJ2ZXIucmVzdWx0c191cmxfZm9yX3N0YXR1cyhz
dGF0dXNfaWQpCisgICAgICAgIG1lc3NhZ2UgPSAiQXR0YWNobWVudCAlcyBkaWQgbm90IHBhc3Mg
JXMgKCVzKTpcbk91dHB1dDogJXMiICUgKHBhdGNoLmlkKCksIHNlbGYubmFtZSwgc2VsZi5wb3J0
X25hbWUsIHJlc3VsdHNfbGluaykKKyAgICAgICAgIyBGSVhNRTogV2UgbWlnaHQgd2FudCB0byBh
ZGQgc29tZSB0ZXh0IGFib3V0IHJlamVjdGluZyBmcm9tIHRoZSBjb21taXQtcXVldWUgaW4KKyAg
ICAgICAgIyB0aGUgY2FzZSB3aGVyZSBwYXRjaC5jb21taXRfcXVldWUoKSBpc24ndCBhbHJlYWR5
IHNldCB0byAnLScuCisgICAgICAgIGlmIHNlbGYud2F0Y2hlcnM6CisgICAgICAgICAgICB0b29s
LmJ1Z3MuYWRkX2NjX3RvX2J1ZyhwYXRjaC5idWdfaWQoKSwgc2VsZi53YXRjaGVycykKKyAgICAg
ICAgdG9vbC5idWdzLnNldF9mbGFnX29uX2F0dGFjaG1lbnQocGF0Y2guaWQoKSwgImNvbW1pdC1x
dWV1ZSIsICItIiwgbWVzc2FnZSwgZXh0cmFfbWVzc2FnZV90ZXh0KQorCiAgICAgZGVmIHJldmll
d19wYXRjaChzZWxmLCBwYXRjaCk6Ci0gICAgICAgIHRhc2sgPSBFYXJseVdhcm5pbmdTeXN0ZW1U
YXNrKHNlbGYsIHBhdGNoKQorICAgICAgICB0YXNrID0gRWFybHlXYXJuaW5nU3lzdGVtVGFzayhz
ZWxmLCBwYXRjaCwgc2VsZi5fcnVuX3Rlc3RzKQogICAgICAgICBpZiBub3QgdGFzay52YWxpZGF0
ZSgpOgogICAgICAgICAgICAgc2VsZi5fZGlkX2Vycm9yKHBhdGNoLCAiJXMgZGlkIG5vdCBwcm9j
ZXNzIHBhdGNoLiIgJSBzZWxmLm5hbWUpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTE4
MCw2ICsxMTcsOSBAQCBjbGFzcyBBYnN0cmFjdFRlc3RpbmdFV1MoQWJzdHJhY3RFYXJseVdhCiAg
ICAgZGVmIGFyY2hpdmVfbGFzdF9sYXlvdXRfdGVzdF9yZXN1bHRzKHNlbGYsIHBhdGNoKToKICAg
ICAgICAgcmV0dXJuIHNlbGYuX2xheW91dF90ZXN0X3Jlc3VsdHNfcmVhZGVyLmFyY2hpdmUocGF0
Y2gpCiAKKyAgICBkZWYgYnVpbGRfc3R5bGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9i
dWlsZF9zdHlsZQorCiAgICAgZGVmIHJlZmV0Y2hfcGF0Y2goc2VsZiwgcGF0Y2gpOgogICAgICAg
ICByZXR1cm4gc2VsZi5fdG9vbC5idWdzLmZldGNoX2F0dGFjaG1lbnQocGF0Y2guaWQoKSkKIApA
QCAtMjM0LDE1ICsxNzQsMTIgQEAgY2xhc3MgQWJzdHJhY3RDaHJvbWl1bUVXUyhBYnN0cmFjdEVh
cmx5VwogICAgIF0KIAogCi1jbGFzcyBDaHJvbWl1bUxpbnV4RVdTKEFic3RyYWN0VGVzdGluZ0VX
Uyk6CitjbGFzcyBDaHJvbWl1bUxpbnV4RVdTKEFic3RyYWN0Q2hyb21pdW1FV1MpOgogICAgICMg
RklYTUU6IFdlIHNob3VsZCByZW5hbWUgdGhpcyBjb21tYW5kIHRvIGNyLWxpbnV4LWV3cywgYnV0
IHRoYXQgcmVxdWlyZXMKICAgICAjICAgICAgICBhIGRhdGFiYXNlIG1pZ3JhdGlvbi4gOigKICAg
ICBuYW1lID0gImNocm9taXVtLWV3cyIKICAgICBwb3J0X25hbWUgPSAiY2hyb21pdW0teHZmYiIK
LQotICAgICMgRklYTUU6IENocm9taXVtTGludXhFV1Mgc2hvdWxkIGluaGVyaXQgZnJvbSBBYnN0
cmFjdENocm9taXVtRVdTIG9uY2UKLSAgICAjIGFsbCB0aGUgQ2hyb21pdW0gRVdTIGJvdHMgcnVu
IHRlc3RzCi0gICAgd2F0Y2hlcnMgPSBBYnN0cmFjdENocm9taXVtRVdTLndhdGNoZXJzCisgICAg
cnVuX3Rlc3RzID0gVHJ1ZQogCiAKIGNsYXNzIENocm9taXVtV2luZG93c0VXUyhBYnN0cmFjdENo
cm9taXVtRVdTKToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9x
dWV1ZXMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL3F1ZXVlcy5weQkocmV2aXNpb24gODc1ODQpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDkg
QEAgY2xhc3MgQ29tbWl0UXVldWUoQWJzdHJhY3RQYXRjaFF1ZXVlLCBTdAogICAgIGRlZiBhcmNo
aXZlX2xhc3RfbGF5b3V0X3Rlc3RfcmVzdWx0cyhzZWxmLCBwYXRjaCk6CiAgICAgICAgIHJldHVy
biBzZWxmLl9sYXlvdXRfdGVzdF9yZXN1bHRzX3JlYWRlci5hcmNoaXZlKHBhdGNoKQogCisgICAg
ZGVmIGJ1aWxkX3N0eWxlKHNlbGYpOgorICAgICAgICByZXR1cm4gImJvdGgiCisKICAgICBkZWYg
cmVmZXRjaF9wYXRjaChzZWxmLCBwYXRjaCk6CiAgICAgICAgIHJldHVybiBzZWxmLl90b29sLmJ1
Z3MuZmV0Y2hfYXR0YWNobWVudChwYXRjaC5pZCgpKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95238</attachid>
            <date>2011-05-27 18:09:21 -0700</date>
            <delta_ts>2011-05-27 22:49:39 -0700</delta_ts>
            <desc>tests still need work</desc>
            <filename>bug-55585-20110527180920.patch</filename>
            <type>text/plain</type>
            <size>13075</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3Vu
aXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qv
Y29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiA4NzU4NCkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC04MSw2ICs4MSw5IEBAIGNsYXNzIE1vY2tDb21taXRRdWV1ZShDb21taXRR
dWV1ZVRhc2tEZWwKICAgICAgICAgYXJjaGl2ZS5maWxlbmFtZSA9ICJtb2NrLWFyY2hpdmUtJXMu
emlwIiAlIHBhdGNoLmlkKCkKICAgICAgICAgcmV0dXJuIGFyY2hpdmUKIAorICAgIGRlZiBidWls
ZF9zdHlsZShzZWxmKToKKyAgICAgICAgcmV0dXJuICJib3RoIgorCiAKIGNsYXNzIEZhaWxpbmdU
ZXN0Q29tbWl0UXVldWUoTW9ja0NvbW1pdFF1ZXVlKToKICAgICBkZWYgX19pbml0X18oc2VsZiwg
ZXJyb3JfcGxhbiwgdGVzdF9mYWlsdXJlX3BsYW4pOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL2JvdC9lYXJseXdhcm5pbmdzeXN0ZW10YXNrLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZWFybHl3YXJuaW5nc3lzdGVtdGFzay5weQko
cmV2aXNpb24gODc1ODQpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2Vhcmx5
d2FybmluZ3N5c3RlbXRhc2sucHkJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDEwIEBAIGNs
YXNzIEVhcmx5V2FybmluZ1N5c3RlbVRhc2tEZWxlZ2F0ZShQYXQKIAogCiBjbGFzcyBFYXJseVdh
cm5pbmdTeXN0ZW1UYXNrKFBhdGNoQW5hbHlzaXNUYXNrKToKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgZGVsZWdhdGUsIHBhdGNoLCBydW5fdGVzdHM9VHJ1ZSk6CisgICAgICAgIFBhdGNoQW5hbHlz
aXNUYXNrLl9faW5pdF9fKHNlbGYsIGRlbGVnYXRlLCBwYXRjaCkKKyAgICAgICAgc2VsZi5fcnVu
X3Rlc3RzID0gcnVuX3Rlc3RzCisKICAgICBkZWYgdmFsaWRhdGUoc2VsZik6CiAgICAgICAgIHNl
bGYuX3BhdGNoID0gc2VsZi5fZGVsZWdhdGUucmVmZXRjaF9wYXRjaChzZWxmLl9wYXRjaCkKICAg
ICAgICAgaWYgc2VsZi5fcGF0Y2guaXNfb2Jzb2xldGUoKToKQEAgLTYzLDQgKzY3LDYgQEAgY2xh
c3MgRWFybHlXYXJuaW5nU3lzdGVtVGFzayhQYXRjaEFuYWx5cwogICAgICAgICAgICAgaWYgbm90
IHNlbGYuX2J1aWxkX3dpdGhvdXRfcGF0Y2goKToKICAgICAgICAgICAgICAgICByZXR1cm4gRmFs
c2UKICAgICAgICAgICAgIHJldHVybiBzZWxmLnJlcG9ydF9mYWlsdXJlKCkKKyAgICAgICAgaWYg
bm90IHNlbGYuX3J1bl90ZXN0czoKKyAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJl
dHVybiBzZWxmLl90ZXN0X3BhdGNoKCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9ib3QvcGF0Y2hhbmFseXNpc3Rhc2sucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2JvdC9wYXRjaGFuYWx5c2lzdGFzay5weQkocmV2aXNpb24gODc1ODQpCisr
KyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3BhdGNoYW5hbHlzaXN0YXNrLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw5IEBAIGNsYXNzIFBhdGNoQW5hbHlzaXNUYXNrRGVs
ZWdhdGUob2JqZWN0KToKICAgICBkZWYgYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHMo
c2VsZiwgcGF0Y2gpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzdWJjbGFz
c2VzIG11c3QgaW1wbGVtZW50IikKIAorICAgIGRlZiBidWlsZF9zdHlsZShzZWxmKToKKyAgICAg
ICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIp
CisKICAgICAjIFdlIGNvdWxkIG1ha2UgcmVzdWx0c19hcmNoaXZlIG9wdGlvbmFsLCBidXQgZm9y
IG5vdyBpdCdzIHJlcXVpcmVkLgogICAgIGRlZiByZXBvcnRfZmxha3lfdGVzdHMoc2VsZiwgcGF0
Y2gsIGZsYWt5X3Rlc3RzLCByZXN1bHRzX2FyY2hpdmUpOgogICAgICAgICByYWlzZSBOb3RJbXBs
ZW1lbnRlZEVycm9yKCJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IikKQEAgLTExMCw3ICsxMTMs
NyBAQCBjbGFzcyBQYXRjaEFuYWx5c2lzVGFzayhvYmplY3QpOgogICAgICAgICAgICAgImJ1aWxk
IiwKICAgICAgICAgICAgICItLW5vLWNsZWFuIiwKICAgICAgICAgICAgICItLW5vLXVwZGF0ZSIs
Ci0gICAgICAgICAgICAiLS1idWlsZC1zdHlsZT1ib3RoIiwKKyAgICAgICAgICAgICItLWJ1aWxk
LXN0eWxlPSVzIiAlIHNlbGYuX2RlbGVnYXRlLmJ1aWxkX3N0eWxlKCksCiAgICAgICAgIF0sCiAg
ICAgICAgICJCdWlsdCBwYXRjaCIsCiAgICAgICAgICJQYXRjaCBkb2VzIG5vdCBidWlsZCIpCkBA
IC0xMjAsNyArMTIzLDcgQEAgY2xhc3MgUGF0Y2hBbmFseXNpc1Rhc2sob2JqZWN0KToKICAgICAg
ICAgICAgICJidWlsZCIsCiAgICAgICAgICAgICAiLS1mb3JjZS1jbGVhbiIsCiAgICAgICAgICAg
ICAiLS1uby11cGRhdGUiLAotICAgICAgICAgICAgIi0tYnVpbGQtc3R5bGU9Ym90aCIsCisgICAg
ICAgICAgICAiLS1idWlsZC1zdHlsZT0lcyIgJSBzZWxmLl9kZWxlZ2F0ZS5idWlsZF9zdHlsZSgp
LAogICAgICAgICBdLAogICAgICAgICAiQWJsZSB0byBidWlsZCB3aXRob3V0IHBhdGNoIiwKICAg
ICAgICAgIlVuYWJsZSB0byBidWlsZCB3aXRob3V0IHBhdGNoIikKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0ucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5
c3RlbS5weQkocmV2aXNpb24gODc1ODQpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICsz
NywxMCBAQCBmcm9tIHdlYmtpdHB5LnRvb2wuYm90LmVhcmx5d2FybmluZ3N5c3RlCiBmcm9tIHdl
YmtpdHB5LnRvb2wuY29tbWFuZHMucXVldWVzIGltcG9ydCBBYnN0cmFjdFJldmlld1F1ZXVlCiAK
IAotY2xhc3MgQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0oQWJzdHJhY3RSZXZpZXdRdWV1ZSk6
CitjbGFzcyBBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbShBYnN0cmFjdFJldmlld1F1ZXVlLCBF
YXJseVdhcm5pbmdTeXN0ZW1UYXNrRGVsZWdhdGUpOgogICAgIF9idWlsZF9zdHlsZSA9ICJyZWxl
YXNlIgorICAgICMgRklYTUU6IFN3aXRjaCBfcnVuX3Rlc3RzIGZyb20gb3B0LWluIHRvIG9wdC1v
dXQgb25jZSBtb3JlIGJvdHMgYXJlIHJlYWR5IHRvIHJ1biB0ZXN0cy4KKyAgICBfcnVuX3Rlc3Rz
ID0gRmFsc2UKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgQWJzdHJhY3RSZXZp
ZXdRdWV1ZS5fX2luaXRfXyhzZWxmKQpAQCAtNDcsODQgKzQ5LDEwIEBAIGNsYXNzIEFic3RyYWN0
RWFybHlXYXJuaW5nU3lzdGVtKEFic3RyYWMKICAgICBkZWYgc2hvdWxkX3Byb2NlZWRfd2l0aF93
b3JrX2l0ZW0oc2VsZiwgcGF0Y2gpOgogICAgICAgICByZXR1cm4gVHJ1ZQogCi0gICAgZGVmIF9j
YW5fYnVpbGQoc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYucnVuX3dlYmtp
dF9wYXRjaChbCi0gICAgICAgICAgICAgICAgImJ1aWxkIiwKLSAgICAgICAgICAgICAgICBzZWxm
LnBvcnQuZmxhZygpLAotICAgICAgICAgICAgICAgICItLWJ1aWxkLXN0eWxlPSVzIiAlIHNlbGYu
X2J1aWxkX3N0eWxlLAotICAgICAgICAgICAgICAgICItLWZvcmNlLWNsZWFuIiwKLSAgICAgICAg
ICAgICAgICAiLS1uby11cGRhdGUiXSkKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAg
IGV4Y2VwdCBTY3JpcHRFcnJvciwgZToKLSAgICAgICAgICAgIGZhaWx1cmVfbG9nID0gc2VsZi5f
bG9nX2Zyb21fc2NyaXB0X2Vycm9yX2Zvcl91cGxvYWQoZSkKLSAgICAgICAgICAgIHNlbGYuX3Vw
ZGF0ZV9zdGF0dXMoIlVuYWJsZSB0byBwZXJmb3JtIGEgYnVpbGQiLCByZXN1bHRzX2ZpbGU9ZmFp
bHVyZV9sb2cpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBfYnVpbGQoc2Vs
ZiwgcGF0Y2gsIGZpcnN0X3J1bj1GYWxzZSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGFy
Z3MgPSBbCi0gICAgICAgICAgICAgICAgImJ1aWxkLWF0dGFjaG1lbnQiLAotICAgICAgICAgICAg
ICAgIHNlbGYucG9ydC5mbGFnKCksCi0gICAgICAgICAgICAgICAgIi0tYnVpbGQiLAotICAgICAg
ICAgICAgICAgICItLWJ1aWxkLXN0eWxlPSVzIiAlIHNlbGYuX2J1aWxkX3N0eWxlLAotICAgICAg
ICAgICAgICAgICItLWZvcmNlLWNsZWFuIiwKLSAgICAgICAgICAgICAgICAiLS1xdWlldCIsCi0g
ICAgICAgICAgICAgICAgIi0tbm9uLWludGVyYWN0aXZlIiwKLSAgICAgICAgICAgICAgICBwYXRj
aC5pZCgpXQotICAgICAgICAgICAgaWYgbm90IGZpcnN0X3J1bjoKLSAgICAgICAgICAgICAgICAj
IFNlZSBjb21taXQtcXVldWUgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHdoYXQgd2UncmUgZG9pbmcg
aGVyZS4KLSAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1uby11cGRhdGUiKQotICAgICAg
ICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLXBhcmVudC1jb21tYW5kPSVzIiAlIHNlbGYubmFtZSkK
LSAgICAgICAgICAgIHNlbGYucnVuX3dlYmtpdF9wYXRjaChhcmdzKQotICAgICAgICAgICAgcmV0
dXJuIFRydWUKLSAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgotICAgICAgICAgICAgaWYg
Zmlyc3RfcnVuOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgcmFp
c2UKLQotICAgIGRlZiByZXZpZXdfcGF0Y2goc2VsZiwgcGF0Y2gpOgotICAgICAgICBpZiBwYXRj
aC5pc19vYnNvbGV0ZSgpOgotICAgICAgICAgICAgc2VsZi5fZGlkX2Vycm9yKHBhdGNoLCAiJXMg
ZG9lcyBub3QgcHJvY2VzcyBvYnNvbGV0ZSBwYXRjaGVzLiIgJSBzZWxmLm5hbWUpCi0gICAgICAg
ICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBpZiBwYXRjaC5idWcoKS5pc19jbG9zZWQoKToK
LSAgICAgICAgICAgIHNlbGYuX2RpZF9lcnJvcihwYXRjaCwgIiVzIGRvZXMgbm90IHByb2Nlc3Mg
cGF0Y2hlcyBvbiBjbG9zZWQgYnVncy4iICUgc2VsZi5uYW1lKQotICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCi0KLSAgICAgICAgaWYgbm90IHNlbGYuX2J1aWxkKHBhdGNoLCBmaXJzdF9ydW49VHJ1
ZSk6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fY2FuX2J1aWxkKCk6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBzZWxmLl9idWlsZChwYXRjaCkKLSAgICAgICAg
cmV0dXJuIFRydWUKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfcG9zdF9yZWplY3RfbWVz
c2FnZV9vbl9idWcoY2xzLCB0b29sLCBwYXRjaCwgc3RhdHVzX2lkLCBleHRyYV9tZXNzYWdlX3Rl
eHQ9Tm9uZSk6Ci0gICAgICAgIHJlc3VsdHNfbGluayA9IHRvb2wuc3RhdHVzX3NlcnZlci5yZXN1
bHRzX3VybF9mb3Jfc3RhdHVzKHN0YXR1c19pZCkKLSAgICAgICAgbWVzc2FnZSA9ICJBdHRhY2ht
ZW50ICVzIGRpZCBub3QgcGFzcyAlcyAoJXMpOlxuT3V0cHV0OiAlcyIgJSAocGF0Y2guaWQoKSwg
Y2xzLm5hbWUsIGNscy5wb3J0X25hbWUsIHJlc3VsdHNfbGluaykKLSAgICAgICAgIyBGSVhNRTog
V2UgbWlnaHQgd2FudCB0byBhZGQgc29tZSB0ZXh0IGFib3V0IHJlamVjdGluZyBmcm9tIHRoZSBj
b21taXQtcXVldWUgaW4KLSAgICAgICAgIyB0aGUgY2FzZSB3aGVyZSBwYXRjaC5jb21taXRfcXVl
dWUoKSBpc24ndCBhbHJlYWR5IHNldCB0byAnLScuCi0gICAgICAgIGlmIGNscy53YXRjaGVyczoK
LSAgICAgICAgICAgIHRvb2wuYnVncy5hZGRfY2NfdG9fYnVnKHBhdGNoLmJ1Z19pZCgpLCBjbHMu
d2F0Y2hlcnMpCi0gICAgICAgIHRvb2wuYnVncy5zZXRfZmxhZ19vbl9hdHRhY2htZW50KHBhdGNo
LmlkKCksICJjb21taXQtcXVldWUiLCAiLSIsIG1lc3NhZ2UsIGV4dHJhX21lc3NhZ2VfdGV4dCkK
LQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBoYW5kbGVfc2NyaXB0X2Vycm9yKGNscywgdG9v
bCwgc3RhdGUsIHNjcmlwdF9lcnJvcik6Ci0gICAgICAgIGlzX3N2bl9hcHBseSA9IHNjcmlwdF9l
cnJvci5jb21tYW5kX25hbWUoKSA9PSAic3ZuLWFwcGx5IgotICAgICAgICBzdGF0dXNfaWQgPSBj
bHMuX3VwZGF0ZV9zdGF0dXNfZm9yX3NjcmlwdF9lcnJvcih0b29sLCBzdGF0ZSwgc2NyaXB0X2Vy
cm9yLCBpc19lcnJvcj1pc19zdm5fYXBwbHkpCi0gICAgICAgIGlmIGlzX3N2bl9hcHBseToKLSAg
ICAgICAgICAgIFF1ZXVlRW5naW5lLmV4aXRfYWZ0ZXJfaGFuZGxlZF9lcnJvcihzY3JpcHRfZXJy
b3IpCi0gICAgICAgIGNscy5fcG9zdF9yZWplY3RfbWVzc2FnZV9vbl9idWcodG9vbCwgc3RhdGVb
J3BhdGNoJ10sIHN0YXR1c19pZCkKLSAgICAgICAgZXhpdCgxKQotCi0KLSMgRklYTUU6IFRoaXMg
c2hvdWxkIG1lcmdlIHdpdGggQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0gb25jZSBhbGwgdGhl
IEVXUwotIyBib3RzIHJ1biB0ZXN0cy4KLWNsYXNzIEFic3RyYWN0VGVzdGluZ0VXUyhBYnN0cmFj
dEVhcmx5V2FybmluZ1N5c3RlbSwgRWFybHlXYXJuaW5nU3lzdGVtVGFza0RlbGVnYXRlKToKICAg
ICBkZWYgYmVnaW5fd29ya19xdWV1ZShzZWxmKToKICAgICAgICAgIyBGSVhNRTogVGhpcyB2aW9s
YXRlcyBhYnN0cmFjdGlvbgogICAgICAgICBzZWxmLl90b29sLl9wb3J0ID0gc2VsZi5wb3J0Ci0g
ICAgICAgIEFic3RyYWN0RWFybHlXYXJuaW5nU3lzdGVtLmJlZ2luX3dvcmtfcXVldWUoc2VsZikK
KyAgICAgICAgQWJzdHJhY3RSZXZpZXdRdWV1ZS5iZWdpbl93b3JrX3F1ZXVlKHNlbGYpCiAgICAg
ICAgIHNlbGYuX2V4cGVjdGVkX2ZhaWx1cmVzID0gRXhwZWN0ZWRGYWlsdXJlcygpCiAgICAgICAg
IHNlbGYuX2xheW91dF90ZXN0X3Jlc3VsdHNfcmVhZGVyID0gTGF5b3V0VGVzdFJlc3VsdHNSZWFk
ZXIoc2VsZi5fdG9vbCwgc2VsZi5fbG9nX2RpcmVjdG9yeSgpKQogCkBAIC0xMzUsOCArNjMsMTcg
QEAgY2xhc3MgQWJzdHJhY3RUZXN0aW5nRVdTKEFic3RyYWN0RWFybHlXYQogICAgICAgICAgICAg
cmV0dXJuIE5vbmUKICAgICAgICAgcmV0dXJuICJOZXcgZmFpbGluZyB0ZXN0czpcbiVzIiAlICJc
biIuam9pbih1bmV4cGVjdGVkX2ZhaWx1cmVzKQogCisgICAgZGVmIF9wb3N0X3JlamVjdF9tZXNz
YWdlX29uX2J1ZyhzZWxmLCB0b29sLCBwYXRjaCwgc3RhdHVzX2lkLCBleHRyYV9tZXNzYWdlX3Rl
eHQ9Tm9uZSk6CisgICAgICAgIHJlc3VsdHNfbGluayA9IHRvb2wuc3RhdHVzX3NlcnZlci5yZXN1
bHRzX3VybF9mb3Jfc3RhdHVzKHN0YXR1c19pZCkKKyAgICAgICAgbWVzc2FnZSA9ICJBdHRhY2ht
ZW50ICVzIGRpZCBub3QgcGFzcyAlcyAoJXMpOlxuT3V0cHV0OiAlcyIgJSAocGF0Y2guaWQoKSwg
c2VsZi5uYW1lLCBzZWxmLnBvcnRfbmFtZSwgcmVzdWx0c19saW5rKQorICAgICAgICAjIEZJWE1F
OiBXZSBtaWdodCB3YW50IHRvIGFkZCBzb21lIHRleHQgYWJvdXQgcmVqZWN0aW5nIGZyb20gdGhl
IGNvbW1pdC1xdWV1ZSBpbgorICAgICAgICAjIHRoZSBjYXNlIHdoZXJlIHBhdGNoLmNvbW1pdF9x
dWV1ZSgpIGlzbid0IGFscmVhZHkgc2V0IHRvICctJy4KKyAgICAgICAgaWYgc2VsZi53YXRjaGVy
czoKKyAgICAgICAgICAgIHRvb2wuYnVncy5hZGRfY2NfdG9fYnVnKHBhdGNoLmJ1Z19pZCgpLCBz
ZWxmLndhdGNoZXJzKQorICAgICAgICB0b29sLmJ1Z3Muc2V0X2ZsYWdfb25fYXR0YWNobWVudChw
YXRjaC5pZCgpLCAiY29tbWl0LXF1ZXVlIiwgIi0iLCBtZXNzYWdlLCBleHRyYV9tZXNzYWdlX3Rl
eHQpCisKICAgICBkZWYgcmV2aWV3X3BhdGNoKHNlbGYsIHBhdGNoKToKLSAgICAgICAgdGFzayA9
IEVhcmx5V2FybmluZ1N5c3RlbVRhc2soc2VsZiwgcGF0Y2gpCisgICAgICAgIHRhc2sgPSBFYXJs
eVdhcm5pbmdTeXN0ZW1UYXNrKHNlbGYsIHBhdGNoLCBzZWxmLl9ydW5fdGVzdHMpCiAgICAgICAg
IGlmIG5vdCB0YXNrLnZhbGlkYXRlKCk6CiAgICAgICAgICAgICBzZWxmLl9kaWRfZXJyb3IocGF0
Y2gsICIlcyBkaWQgbm90IHByb2Nlc3MgcGF0Y2guIiAlIHNlbGYubmFtZSkKICAgICAgICAgICAg
IHJldHVybiBGYWxzZQpAQCAtMTgwLDYgKzExNyw5IEBAIGNsYXNzIEFic3RyYWN0VGVzdGluZ0VX
UyhBYnN0cmFjdEVhcmx5V2EKICAgICBkZWYgYXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3Vs
dHMoc2VsZiwgcGF0Y2gpOgogICAgICAgICByZXR1cm4gc2VsZi5fbGF5b3V0X3Rlc3RfcmVzdWx0
c19yZWFkZXIuYXJjaGl2ZShwYXRjaCkKIAorICAgIGRlZiBidWlsZF9zdHlsZShzZWxmKToKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3N0eWxlCisKICAgICBkZWYgcmVmZXRjaF9wYXRjaChz
ZWxmLCBwYXRjaCk6CiAgICAgICAgIHJldHVybiBzZWxmLl90b29sLmJ1Z3MuZmV0Y2hfYXR0YWNo
bWVudChwYXRjaC5pZCgpKQogCkBAIC0yMzQsMTUgKzE3NCwxMiBAQCBjbGFzcyBBYnN0cmFjdENo
cm9taXVtRVdTKEFic3RyYWN0RWFybHlXCiAgICAgXQogCiAKLWNsYXNzIENocm9taXVtTGludXhF
V1MoQWJzdHJhY3RUZXN0aW5nRVdTKToKK2NsYXNzIENocm9taXVtTGludXhFV1MoQWJzdHJhY3RD
aHJvbWl1bUVXUyk6CiAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHJlbmFtZSB0aGlzIGNvbW1hbmQg
dG8gY3ItbGludXgtZXdzLCBidXQgdGhhdCByZXF1aXJlcwogICAgICMgICAgICAgIGEgZGF0YWJh
c2UgbWlncmF0aW9uLiA6KAogICAgIG5hbWUgPSAiY2hyb21pdW0tZXdzIgogICAgIHBvcnRfbmFt
ZSA9ICJjaHJvbWl1bS14dmZiIgotCi0gICAgIyBGSVhNRTogQ2hyb21pdW1MaW51eEVXUyBzaG91
bGQgaW5oZXJpdCBmcm9tIEFic3RyYWN0Q2hyb21pdW1FV1Mgb25jZQotICAgICMgYWxsIHRoZSBD
aHJvbWl1bSBFV1MgYm90cyBydW4gdGVzdHMKLSAgICB3YXRjaGVycyA9IEFic3RyYWN0Q2hyb21p
dW1FV1Mud2F0Y2hlcnMKKyAgICBydW5fdGVzdHMgPSBUcnVlCiAKIAogY2xhc3MgQ2hyb21pdW1X
aW5kb3dzRVdTKEFic3RyYWN0Q2hyb21pdW1FV1MpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbV91bml0dGVzdC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5n
c3lzdGVtX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiA4NzU4NCkKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW1fdW5pdHRlc3QucHkJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDU0ICszNyw5IEBAIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBp
bXBvcnQgTW9ja1QKIAogCiBjbGFzcyBBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbVRlc3QoUXVl
dWVzVGVzdCk6Ci0gICAgIyBOZWVkZWQgdG8gZGVmaW5lIHBvcnRfbmFtZSwgdXNlZCBpbiBBYnN0
cmFjdEVhcmx5V2FybmluZ1N5c3RlbS5fX2luaXRfXwotICAgIGNsYXNzIFRlc3RFV1MoQWJzdHJh
Y3RFYXJseVdhcm5pbmdTeXN0ZW0pOgotICAgICAgICBuYW1lID0gIm1vY2stZXdzIgotICAgICAg
ICBwb3J0X25hbWUgPSAid2luIiAgIyBOZWVkcyB0byBiZSBhIHBvcnQgd2hpY2ggcG9ydC9mYWN0
b3J5IHVuZGVyc3RhbmRzLgotCi0gICAgZGVmIHRlc3RfY2FuX2J1aWxkKHNlbGYpOgotICAgICAg
ICBxdWV1ZSA9IHNlbGYuVGVzdEVXUygpCi0gICAgICAgIHF1ZXVlLmJpbmRfdG9fdG9vbChNb2Nr
VG9vbChsb2dfZXhlY3V0aXZlPVRydWUpKQotICAgICAgICBxdWV1ZS5fb3B0aW9ucyA9IE1vY2tP
cHRpb25zKHBvcnQ9Tm9uZSkKLSAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIk1PQ0sgcnVuX2Fu
ZF90aHJvd19pZl9mYWlsOiBbJ2VjaG8nLCAnLS1zdGF0dXMtaG9zdD1leGFtcGxlLmNvbScsICdi
dWlsZCcsICctLXBvcnQ9d2luJywgJy0tYnVpbGQtc3R5bGU9cmVsZWFzZScsICctLWZvcmNlLWNs
ZWFuJywgJy0tbm8tdXBkYXRlJ11cbiIKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9v
dXRwdXRzKHNlbGYsIHF1ZXVlLl9jYW5fYnVpbGQsIFtdLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0
ZWRfc3RkZXJyKQotCi0gICAgICAgIGRlZiBtb2NrX3J1bl93ZWJraXRfcGF0Y2goYXJncyk6Ci0g
ICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcigiTU9DSyBzY3JpcHQgZXJyb3IiKQotCi0gICAg
ICAgIHF1ZXVlLnJ1bl93ZWJraXRfcGF0Y2ggPSBtb2NrX3J1bl93ZWJraXRfcGF0Y2gKLSAgICAg
ICAgZXhwZWN0ZWRfc3RkZXJyID0gIk1PQ0s6IHVwZGF0ZV9zdGF0dXM6IG1vY2stZXdzIFVuYWJs
ZSB0byBwZXJmb3JtIGEgYnVpbGRcbiIKLSAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9v
dXRwdXRzKHNlbGYsIHF1ZXVlLl9jYW5fYnVpbGQsIFtdLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0
ZWRfc3RkZXJyKQotCi0gICAgIyBGSVhNRTogVGhpcyBiZWxvbmdzIG9uIGFuIEFic3RyYWN0UmV2
aWV3UXVldWVUZXN0IG9iamVjdCBpbiBxdWV1ZXNfdW5pdHRlc3QucHkKLSAgICBkZWYgdGVzdF9z
dWJwcm9jZXNzX2hhbmRsZWRfZXJyb3Ioc2VsZik6Ci0gICAgICAgIHF1ZXVlID0gQWJzdHJhY3RS
ZXZpZXdRdWV1ZSgpCi0gICAgICAgIHF1ZXVlLmJpbmRfdG9fdG9vbChNb2NrVG9vbCgpKQotCi0g
ICAgICAgIGRlZiBtb2NrX3Jldmlld19wYXRjaChwYXRjaCk6Ci0gICAgICAgICAgICByYWlzZSBT
Y3JpcHRFcnJvcignTU9DSyBzY3JpcHQgZXJyb3InLCBleGl0X2NvZGU9UXVldWVFbmdpbmUuaGFu
ZGxlZF9lcnJvcl9jb2RlKQotCi0gICAgICAgIHF1ZXVlLnJldmlld19wYXRjaCA9IG1vY2tfcmV2
aWV3X3BhdGNoCi0gICAgICAgIG1vY2tfcGF0Y2ggPSBxdWV1ZS5fdG9vbC5idWdzLmZldGNoX2F0
dGFjaG1lbnQoMTk3KQotICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiTU9DSzogcmVsZWFzZV93
b3JrX2l0ZW06IE5vbmUgMTk3XG4iCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0
cHV0cyhzZWxmLCBxdWV1ZS5wcm9jZXNzX3dvcmtfaXRlbSwgW21vY2tfcGF0Y2hdLCBleHBlY3Rl
ZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyLCBleHBlY3RlZF9leGNlcHRpb249U2NyaXB0RXJyb3Ip
Ci0KLSAgICBkZWYgdGVzdF9wb3N0X3JlamVjdF9tZXNzYWdlX29uX2J1ZyhzZWxmKToKLSAgICAg
ICAgdG9vbCA9IE1vY2tUb29sKCkKLSAgICAgICAgcGF0Y2ggPSB0b29sLmJ1Z3MuZmV0Y2hfYXR0
YWNobWVudCgxOTcpCi0gICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICIiIk1PQ0sgc2V0dGluZyBm
bGFnICdjb21taXQtcXVldWUnIHRvICctJyBvbiBhdHRhY2htZW50ICcxOTcnIHdpdGggY29tbWVu
dCAnQXR0YWNobWVudCAxOTcgZGlkIG5vdCBwYXNzIG1vY2stZXdzICh3aW4pOgotT3V0cHV0OiBo
dHRwOi8vZHVtbXlfdXJsJyBhbmQgYWRkaXRpb25hbCBjb21tZW50ICdFWFRSQScKLSIiIgotICAg
ICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwKLSAgICAgICAgICAgIHNl
bGYuVGVzdEVXUy5fcG9zdF9yZWplY3RfbWVzc2FnZV9vbl9idWcsCi0gICAgICAgICAgICBrd2Fy
Z3M9eyd0b29sJzogdG9vbCwgJ3BhdGNoJzogcGF0Y2gsICdzdGF0dXNfaWQnOiAxLCAnZXh0cmFf
bWVzc2FnZV90ZXh0JzogIkVYVFJBIn0sCi0gICAgICAgICAgICBleHBlY3RlZF9zdGRlcnI9ZXhw
ZWN0ZWRfc3RkZXJyKQotCi0KLWNsYXNzIEFic3RyYWN0VGVzdGluZ0VXU1Rlc3QoUXVldWVzVGVz
dCk6CiAgICAgZGVmIHRlc3RfZmFpbGluZ190ZXN0c19tZXNzYWdlKHNlbGYpOgogICAgICAgICAj
IE5lZWRlZCB0byBkZWZpbmUgcG9ydF9uYW1lLCB1c2VkIGluIEFic3RyYWN0RWFybHlXYXJuaW5n
U3lzdGVtLl9faW5pdF9fCi0gICAgICAgIGNsYXNzIFRlc3RFV1MoQWJzdHJhY3RUZXN0aW5nRVdT
KToKKyAgICAgICAgY2xhc3MgVGVzdEVXUyhBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbVRlc3Qp
OgogICAgICAgICAgICAgcG9ydF9uYW1lID0gIndpbiIgICMgTmVlZHMgdG8gYmUgYSBwb3J0IHdo
aWNoIHBvcnQvZmFjdG9yeSB1bmRlcnN0YW5kcy4KIAogICAgICAgICBld3MgPSBUZXN0RVdTKCkK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5w
eQkocmV2aXNpb24gODc1ODQpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvcXVldWVzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDkgQEAgY2xhc3MgQ29t
bWl0UXVldWUoQWJzdHJhY3RQYXRjaFF1ZXVlLCBTdAogICAgIGRlZiBhcmNoaXZlX2xhc3RfbGF5
b3V0X3Rlc3RfcmVzdWx0cyhzZWxmLCBwYXRjaCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9sYXlv
dXRfdGVzdF9yZXN1bHRzX3JlYWRlci5hcmNoaXZlKHBhdGNoKQogCisgICAgZGVmIGJ1aWxkX3N0
eWxlKHNlbGYpOgorICAgICAgICByZXR1cm4gImJvdGgiCisKICAgICBkZWYgcmVmZXRjaF9wYXRj
aChzZWxmLCBwYXRjaCk6CiAgICAgICAgIHJldHVybiBzZWxmLl90b29sLmJ1Z3MuZmV0Y2hfYXR0
YWNobWVudChwYXRjaC5pZCgpKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95254</attachid>
            <date>2011-05-27 22:49:44 -0700</date>
            <delta_ts>2011-05-28 15:26:19 -0700</delta_ts>
            <desc>Rocking and rolling</desc>
            <filename>bug-55585-20110527224943.patch</filename>
            <type>text/plain</type>
            <size>16777</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg3NjAzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjIgQEAKKzIwMTEtMDUtMjcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFV1MgYnVpbGRz
IHBhdGNoZXMgdGhhdCBmYWlsIHRvIGJ1aWxkIHR3aWNlLCB3aGljaCBzZWVtcyB1c2VsZXNzIGFu
ZCBzbG93cyBkb3duIHRoZSBib3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NTU4NQorCisgICAgICAgIFRoaXMgcGF0Y2ggc3dpdGNoZXMgYWxsIHRo
ZSBlYXJseSB3YXJuaW5nIHN5c3RlbSBib3RzIG92ZXIgdG8gdGhlIG5ldworICAgICAgICBQYXRj
aEFuYWx5c2lzVGFzay1iYXNlZCBpbmZyYXN0cnVjdHVyZS4gIFRoaXMgcGF0Y2ggbWFrZXMgdGhl
c2UgYm90cworICAgICAgICBtb3JlIGVmZmljaWVudCAoaW4gdGhlIGNhc2Ugd2hlcmUgcGF0Y2hl
cyBmYWlsIHRvIGJ1aWxkKSBhbmQgcGF2ZXMgdGhlCisgICAgICAgIHdheSBmb3IgcnVubmluZyB0
ZXN0cyBvbiB0aGVzZSBib3RzIQorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2Jv
dC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS90b29sL2JvdC9lYXJseXdhcm5pbmdzeXN0ZW10YXNrLnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hhbmFseXNpc3Rhc2sucHk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbS5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtX3VuaXR0
ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMu
cHk6CisKIDIwMTEtMDUtMjcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5
CShyZXZpc2lvbiA4NzU4NCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29t
bWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw5IEBA
IGNsYXNzIE1vY2tDb21taXRRdWV1ZShDb21taXRRdWV1ZVRhc2tEZWwKICAgICAgICAgYXJjaGl2
ZS5maWxlbmFtZSA9ICJtb2NrLWFyY2hpdmUtJXMuemlwIiAlIHBhdGNoLmlkKCkKICAgICAgICAg
cmV0dXJuIGFyY2hpdmUKIAorICAgIGRlZiBidWlsZF9zdHlsZShzZWxmKToKKyAgICAgICAgcmV0
dXJuICJib3RoIgorCiAKIGNsYXNzIEZhaWxpbmdUZXN0Q29tbWl0UXVldWUoTW9ja0NvbW1pdFF1
ZXVlKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZXJyb3JfcGxhbiwgdGVzdF9mYWlsdXJlX3Bs
YW4pOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9lYXJseXdhcm5pbmdz
eXN0ZW10YXNrLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9i
b3QvZWFybHl3YXJuaW5nc3lzdGVtdGFzay5weQkocmV2aXNpb24gODc1ODQpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2Vhcmx5d2FybmluZ3N5c3RlbXRhc2sucHkJKHdvcmtp
bmcgY29weSkKQEAgLTQwLDYgKzQwLDEwIEBAIGNsYXNzIEVhcmx5V2FybmluZ1N5c3RlbVRhc2tE
ZWxlZ2F0ZShQYXQKIAogCiBjbGFzcyBFYXJseVdhcm5pbmdTeXN0ZW1UYXNrKFBhdGNoQW5hbHlz
aXNUYXNrKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGVsZWdhdGUsIHBhdGNoLCBydW5fdGVz
dHM9VHJ1ZSk6CisgICAgICAgIFBhdGNoQW5hbHlzaXNUYXNrLl9faW5pdF9fKHNlbGYsIGRlbGVn
YXRlLCBwYXRjaCkKKyAgICAgICAgc2VsZi5fcnVuX3Rlc3RzID0gcnVuX3Rlc3RzCisKICAgICBk
ZWYgdmFsaWRhdGUoc2VsZik6CiAgICAgICAgIHNlbGYuX3BhdGNoID0gc2VsZi5fZGVsZWdhdGUu
cmVmZXRjaF9wYXRjaChzZWxmLl9wYXRjaCkKICAgICAgICAgaWYgc2VsZi5fcGF0Y2guaXNfb2Jz
b2xldGUoKToKQEAgLTYzLDQgKzY3LDYgQEAgY2xhc3MgRWFybHlXYXJuaW5nU3lzdGVtVGFzayhQ
YXRjaEFuYWx5cwogICAgICAgICAgICAgaWYgbm90IHNlbGYuX2J1aWxkX3dpdGhvdXRfcGF0Y2go
KToKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgIHJldHVybiBzZWxm
LnJlcG9ydF9mYWlsdXJlKCkKKyAgICAgICAgaWYgbm90IHNlbGYuX3J1bl90ZXN0czoKKyAgICAg
ICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBzZWxmLl90ZXN0X3BhdGNoKCkKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hhbmFseXNpc3Rhc2sucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9wYXRjaGFuYWx5
c2lzdGFzay5weQkocmV2aXNpb24gODc1ODQpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvYm90L3BhdGNoYW5hbHlzaXN0YXNrLnB5CSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw5
IEBAIGNsYXNzIFBhdGNoQW5hbHlzaXNUYXNrRGVsZWdhdGUob2JqZWN0KToKICAgICBkZWYgYXJj
aGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHMoc2VsZiwgcGF0Y2gpOgogICAgICAgICByYWlz
ZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IikKIAorICAg
IGRlZiBidWlsZF9zdHlsZShzZWxmKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJv
cigic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIpCisKICAgICAjIFdlIGNvdWxkIG1ha2UgcmVz
dWx0c19hcmNoaXZlIG9wdGlvbmFsLCBidXQgZm9yIG5vdyBpdCdzIHJlcXVpcmVkLgogICAgIGRl
ZiByZXBvcnRfZmxha3lfdGVzdHMoc2VsZiwgcGF0Y2gsIGZsYWt5X3Rlc3RzLCByZXN1bHRzX2Fy
Y2hpdmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzdWJjbGFzc2VzIG11
c3QgaW1wbGVtZW50IikKQEAgLTExMCw3ICsxMTMsNyBAQCBjbGFzcyBQYXRjaEFuYWx5c2lzVGFz
ayhvYmplY3QpOgogICAgICAgICAgICAgImJ1aWxkIiwKICAgICAgICAgICAgICItLW5vLWNsZWFu
IiwKICAgICAgICAgICAgICItLW5vLXVwZGF0ZSIsCi0gICAgICAgICAgICAiLS1idWlsZC1zdHls
ZT1ib3RoIiwKKyAgICAgICAgICAgICItLWJ1aWxkLXN0eWxlPSVzIiAlIHNlbGYuX2RlbGVnYXRl
LmJ1aWxkX3N0eWxlKCksCiAgICAgICAgIF0sCiAgICAgICAgICJCdWlsdCBwYXRjaCIsCiAgICAg
ICAgICJQYXRjaCBkb2VzIG5vdCBidWlsZCIpCkBAIC0xMjAsNyArMTIzLDcgQEAgY2xhc3MgUGF0
Y2hBbmFseXNpc1Rhc2sob2JqZWN0KToKICAgICAgICAgICAgICJidWlsZCIsCiAgICAgICAgICAg
ICAiLS1mb3JjZS1jbGVhbiIsCiAgICAgICAgICAgICAiLS1uby11cGRhdGUiLAotICAgICAgICAg
ICAgIi0tYnVpbGQtc3R5bGU9Ym90aCIsCisgICAgICAgICAgICAiLS1idWlsZC1zdHlsZT0lcyIg
JSBzZWxmLl9kZWxlZ2F0ZS5idWlsZF9zdHlsZSgpLAogICAgICAgICBdLAogICAgICAgICAiQWJs
ZSB0byBidWlsZCB3aXRob3V0IHBhdGNoIiwKICAgICAgICAgIlVuYWJsZSB0byBidWlsZCB3aXRo
b3V0IHBhdGNoIikKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9l
YXJseXdhcm5pbmdzeXN0ZW0ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbS5weQkocmV2aXNpb24gODc1ODQpCisr
KyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVt
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNywxMCBAQCBmcm9tIHdlYmtpdHB5LnRvb2wu
Ym90LmVhcmx5d2FybmluZ3N5c3RlCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMucXVldWVz
IGltcG9ydCBBYnN0cmFjdFJldmlld1F1ZXVlCiAKIAotY2xhc3MgQWJzdHJhY3RFYXJseVdhcm5p
bmdTeXN0ZW0oQWJzdHJhY3RSZXZpZXdRdWV1ZSk6CitjbGFzcyBBYnN0cmFjdEVhcmx5V2Fybmlu
Z1N5c3RlbShBYnN0cmFjdFJldmlld1F1ZXVlLCBFYXJseVdhcm5pbmdTeXN0ZW1UYXNrRGVsZWdh
dGUpOgogICAgIF9idWlsZF9zdHlsZSA9ICJyZWxlYXNlIgorICAgICMgRklYTUU6IFN3aXRjaCBf
cnVuX3Rlc3RzIGZyb20gb3B0LWluIHRvIG9wdC1vdXQgb25jZSBtb3JlIGJvdHMgYXJlIHJlYWR5
IHRvIHJ1biB0ZXN0cy4KKyAgICBfcnVuX3Rlc3RzID0gRmFsc2UKIAogICAgIGRlZiBfX2luaXRf
XyhzZWxmKToKICAgICAgICAgQWJzdHJhY3RSZXZpZXdRdWV1ZS5fX2luaXRfXyhzZWxmKQpAQCAt
NDcsODQgKzQ5LDEwIEBAIGNsYXNzIEFic3RyYWN0RWFybHlXYXJuaW5nU3lzdGVtKEFic3RyYWMK
ICAgICBkZWYgc2hvdWxkX3Byb2NlZWRfd2l0aF93b3JrX2l0ZW0oc2VsZiwgcGF0Y2gpOgogICAg
ICAgICByZXR1cm4gVHJ1ZQogCi0gICAgZGVmIF9jYW5fYnVpbGQoc2VsZik6Ci0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIHNlbGYucnVuX3dlYmtpdF9wYXRjaChbCi0gICAgICAgICAgICAgICAg
ImJ1aWxkIiwKLSAgICAgICAgICAgICAgICBzZWxmLnBvcnQuZmxhZygpLAotICAgICAgICAgICAg
ICAgICItLWJ1aWxkLXN0eWxlPSVzIiAlIHNlbGYuX2J1aWxkX3N0eWxlLAotICAgICAgICAgICAg
ICAgICItLWZvcmNlLWNsZWFuIiwKLSAgICAgICAgICAgICAgICAiLS1uby11cGRhdGUiXSkKLSAg
ICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToKLSAg
ICAgICAgICAgIGZhaWx1cmVfbG9nID0gc2VsZi5fbG9nX2Zyb21fc2NyaXB0X2Vycm9yX2Zvcl91
cGxvYWQoZSkKLSAgICAgICAgICAgIHNlbGYuX3VwZGF0ZV9zdGF0dXMoIlVuYWJsZSB0byBwZXJm
b3JtIGEgYnVpbGQiLCByZXN1bHRzX2ZpbGU9ZmFpbHVyZV9sb2cpCi0gICAgICAgICAgICByZXR1
cm4gRmFsc2UKLQotICAgIGRlZiBfYnVpbGQoc2VsZiwgcGF0Y2gsIGZpcnN0X3J1bj1GYWxzZSk6
Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGFyZ3MgPSBbCi0gICAgICAgICAgICAgICAgImJ1
aWxkLWF0dGFjaG1lbnQiLAotICAgICAgICAgICAgICAgIHNlbGYucG9ydC5mbGFnKCksCi0gICAg
ICAgICAgICAgICAgIi0tYnVpbGQiLAotICAgICAgICAgICAgICAgICItLWJ1aWxkLXN0eWxlPSVz
IiAlIHNlbGYuX2J1aWxkX3N0eWxlLAotICAgICAgICAgICAgICAgICItLWZvcmNlLWNsZWFuIiwK
LSAgICAgICAgICAgICAgICAiLS1xdWlldCIsCi0gICAgICAgICAgICAgICAgIi0tbm9uLWludGVy
YWN0aXZlIiwKLSAgICAgICAgICAgICAgICBwYXRjaC5pZCgpXQotICAgICAgICAgICAgaWYgbm90
IGZpcnN0X3J1bjoKLSAgICAgICAgICAgICAgICAjIFNlZSBjb21taXQtcXVldWUgZm9yIGFuIGV4
cGxhbmF0aW9uIG9mIHdoYXQgd2UncmUgZG9pbmcgaGVyZS4KLSAgICAgICAgICAgICAgICBhcmdz
LmFwcGVuZCgiLS1uby11cGRhdGUiKQotICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLXBh
cmVudC1jb21tYW5kPSVzIiAlIHNlbGYubmFtZSkKLSAgICAgICAgICAgIHNlbGYucnVuX3dlYmtp
dF9wYXRjaChhcmdzKQotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgZXhjZXB0IFNj
cmlwdEVycm9yLCBlOgotICAgICAgICAgICAgaWYgZmlyc3RfcnVuOgotICAgICAgICAgICAgICAg
IHJldHVybiBGYWxzZQotICAgICAgICAgICAgcmFpc2UKLQotICAgIGRlZiByZXZpZXdfcGF0Y2go
c2VsZiwgcGF0Y2gpOgotICAgICAgICBpZiBwYXRjaC5pc19vYnNvbGV0ZSgpOgotICAgICAgICAg
ICAgc2VsZi5fZGlkX2Vycm9yKHBhdGNoLCAiJXMgZG9lcyBub3QgcHJvY2VzcyBvYnNvbGV0ZSBw
YXRjaGVzLiIgJSBzZWxmLm5hbWUpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAg
ICBpZiBwYXRjaC5idWcoKS5pc19jbG9zZWQoKToKLSAgICAgICAgICAgIHNlbGYuX2RpZF9lcnJv
cihwYXRjaCwgIiVzIGRvZXMgbm90IHByb2Nlc3MgcGF0Y2hlcyBvbiBjbG9zZWQgYnVncy4iICUg
c2VsZi5uYW1lKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgaWYgbm90IHNl
bGYuX2J1aWxkKHBhdGNoLCBmaXJzdF9ydW49VHJ1ZSk6Ci0gICAgICAgICAgICBpZiBub3Qgc2Vs
Zi5fY2FuX2J1aWxkKCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAg
ICBzZWxmLl9idWlsZChwYXRjaCkKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIEBjbGFzc21l
dGhvZAotICAgIGRlZiBfcG9zdF9yZWplY3RfbWVzc2FnZV9vbl9idWcoY2xzLCB0b29sLCBwYXRj
aCwgc3RhdHVzX2lkLCBleHRyYV9tZXNzYWdlX3RleHQ9Tm9uZSk6Ci0gICAgICAgIHJlc3VsdHNf
bGluayA9IHRvb2wuc3RhdHVzX3NlcnZlci5yZXN1bHRzX3VybF9mb3Jfc3RhdHVzKHN0YXR1c19p
ZCkKLSAgICAgICAgbWVzc2FnZSA9ICJBdHRhY2htZW50ICVzIGRpZCBub3QgcGFzcyAlcyAoJXMp
OlxuT3V0cHV0OiAlcyIgJSAocGF0Y2guaWQoKSwgY2xzLm5hbWUsIGNscy5wb3J0X25hbWUsIHJl
c3VsdHNfbGluaykKLSAgICAgICAgIyBGSVhNRTogV2UgbWlnaHQgd2FudCB0byBhZGQgc29tZSB0
ZXh0IGFib3V0IHJlamVjdGluZyBmcm9tIHRoZSBjb21taXQtcXVldWUgaW4KLSAgICAgICAgIyB0
aGUgY2FzZSB3aGVyZSBwYXRjaC5jb21taXRfcXVldWUoKSBpc24ndCBhbHJlYWR5IHNldCB0byAn
LScuCi0gICAgICAgIGlmIGNscy53YXRjaGVyczoKLSAgICAgICAgICAgIHRvb2wuYnVncy5hZGRf
Y2NfdG9fYnVnKHBhdGNoLmJ1Z19pZCgpLCBjbHMud2F0Y2hlcnMpCi0gICAgICAgIHRvb2wuYnVn
cy5zZXRfZmxhZ19vbl9hdHRhY2htZW50KHBhdGNoLmlkKCksICJjb21taXQtcXVldWUiLCAiLSIs
IG1lc3NhZ2UsIGV4dHJhX21lc3NhZ2VfdGV4dCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRl
ZiBoYW5kbGVfc2NyaXB0X2Vycm9yKGNscywgdG9vbCwgc3RhdGUsIHNjcmlwdF9lcnJvcik6Ci0g
ICAgICAgIGlzX3N2bl9hcHBseSA9IHNjcmlwdF9lcnJvci5jb21tYW5kX25hbWUoKSA9PSAic3Zu
LWFwcGx5IgotICAgICAgICBzdGF0dXNfaWQgPSBjbHMuX3VwZGF0ZV9zdGF0dXNfZm9yX3Njcmlw
dF9lcnJvcih0b29sLCBzdGF0ZSwgc2NyaXB0X2Vycm9yLCBpc19lcnJvcj1pc19zdm5fYXBwbHkp
Ci0gICAgICAgIGlmIGlzX3N2bl9hcHBseToKLSAgICAgICAgICAgIFF1ZXVlRW5naW5lLmV4aXRf
YWZ0ZXJfaGFuZGxlZF9lcnJvcihzY3JpcHRfZXJyb3IpCi0gICAgICAgIGNscy5fcG9zdF9yZWpl
Y3RfbWVzc2FnZV9vbl9idWcodG9vbCwgc3RhdGVbJ3BhdGNoJ10sIHN0YXR1c19pZCkKLSAgICAg
ICAgZXhpdCgxKQotCi0KLSMgRklYTUU6IFRoaXMgc2hvdWxkIG1lcmdlIHdpdGggQWJzdHJhY3RF
YXJseVdhcm5pbmdTeXN0ZW0gb25jZSBhbGwgdGhlIEVXUwotIyBib3RzIHJ1biB0ZXN0cy4KLWNs
YXNzIEFic3RyYWN0VGVzdGluZ0VXUyhBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbSwgRWFybHlX
YXJuaW5nU3lzdGVtVGFza0RlbGVnYXRlKToKICAgICBkZWYgYmVnaW5fd29ya19xdWV1ZShzZWxm
KToKICAgICAgICAgIyBGSVhNRTogVGhpcyB2aW9sYXRlcyBhYnN0cmFjdGlvbgogICAgICAgICBz
ZWxmLl90b29sLl9wb3J0ID0gc2VsZi5wb3J0Ci0gICAgICAgIEFic3RyYWN0RWFybHlXYXJuaW5n
U3lzdGVtLmJlZ2luX3dvcmtfcXVldWUoc2VsZikKKyAgICAgICAgQWJzdHJhY3RSZXZpZXdRdWV1
ZS5iZWdpbl93b3JrX3F1ZXVlKHNlbGYpCiAgICAgICAgIHNlbGYuX2V4cGVjdGVkX2ZhaWx1cmVz
ID0gRXhwZWN0ZWRGYWlsdXJlcygpCiAgICAgICAgIHNlbGYuX2xheW91dF90ZXN0X3Jlc3VsdHNf
cmVhZGVyID0gTGF5b3V0VGVzdFJlc3VsdHNSZWFkZXIoc2VsZi5fdG9vbCwgc2VsZi5fbG9nX2Rp
cmVjdG9yeSgpKQogCkBAIC0xMzUsOCArNjMsMTcgQEAgY2xhc3MgQWJzdHJhY3RUZXN0aW5nRVdT
KEFic3RyYWN0RWFybHlXYQogICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgcmV0dXJu
ICJOZXcgZmFpbGluZyB0ZXN0czpcbiVzIiAlICJcbiIuam9pbih1bmV4cGVjdGVkX2ZhaWx1cmVz
KQogCisgICAgZGVmIF9wb3N0X3JlamVjdF9tZXNzYWdlX29uX2J1ZyhzZWxmLCB0b29sLCBwYXRj
aCwgc3RhdHVzX2lkLCBleHRyYV9tZXNzYWdlX3RleHQ9Tm9uZSk6CisgICAgICAgIHJlc3VsdHNf
bGluayA9IHRvb2wuc3RhdHVzX3NlcnZlci5yZXN1bHRzX3VybF9mb3Jfc3RhdHVzKHN0YXR1c19p
ZCkKKyAgICAgICAgbWVzc2FnZSA9ICJBdHRhY2htZW50ICVzIGRpZCBub3QgcGFzcyAlcyAoJXMp
OlxuT3V0cHV0OiAlcyIgJSAocGF0Y2guaWQoKSwgc2VsZi5uYW1lLCBzZWxmLnBvcnRfbmFtZSwg
cmVzdWx0c19saW5rKQorICAgICAgICAjIEZJWE1FOiBXZSBtaWdodCB3YW50IHRvIGFkZCBzb21l
IHRleHQgYWJvdXQgcmVqZWN0aW5nIGZyb20gdGhlIGNvbW1pdC1xdWV1ZSBpbgorICAgICAgICAj
IHRoZSBjYXNlIHdoZXJlIHBhdGNoLmNvbW1pdF9xdWV1ZSgpIGlzbid0IGFscmVhZHkgc2V0IHRv
ICctJy4KKyAgICAgICAgaWYgc2VsZi53YXRjaGVyczoKKyAgICAgICAgICAgIHRvb2wuYnVncy5h
ZGRfY2NfdG9fYnVnKHBhdGNoLmJ1Z19pZCgpLCBzZWxmLndhdGNoZXJzKQorICAgICAgICB0b29s
LmJ1Z3Muc2V0X2ZsYWdfb25fYXR0YWNobWVudChwYXRjaC5pZCgpLCAiY29tbWl0LXF1ZXVlIiwg
Ii0iLCBtZXNzYWdlLCBleHRyYV9tZXNzYWdlX3RleHQpCisKICAgICBkZWYgcmV2aWV3X3BhdGNo
KHNlbGYsIHBhdGNoKToKLSAgICAgICAgdGFzayA9IEVhcmx5V2FybmluZ1N5c3RlbVRhc2soc2Vs
ZiwgcGF0Y2gpCisgICAgICAgIHRhc2sgPSBFYXJseVdhcm5pbmdTeXN0ZW1UYXNrKHNlbGYsIHBh
dGNoLCBzZWxmLl9ydW5fdGVzdHMpCiAgICAgICAgIGlmIG5vdCB0YXNrLnZhbGlkYXRlKCk6CiAg
ICAgICAgICAgICBzZWxmLl9kaWRfZXJyb3IocGF0Y2gsICIlcyBkaWQgbm90IHByb2Nlc3MgcGF0
Y2guIiAlIHNlbGYubmFtZSkKICAgICAgICAgICAgIHJldHVybiBGYWxzZQpAQCAtMTgwLDYgKzEx
Nyw5IEBAIGNsYXNzIEFic3RyYWN0VGVzdGluZ0VXUyhBYnN0cmFjdEVhcmx5V2EKICAgICBkZWYg
YXJjaGl2ZV9sYXN0X2xheW91dF90ZXN0X3Jlc3VsdHMoc2VsZiwgcGF0Y2gpOgogICAgICAgICBy
ZXR1cm4gc2VsZi5fbGF5b3V0X3Rlc3RfcmVzdWx0c19yZWFkZXIuYXJjaGl2ZShwYXRjaCkKIAor
ICAgIGRlZiBidWlsZF9zdHlsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3N0
eWxlCisKICAgICBkZWYgcmVmZXRjaF9wYXRjaChzZWxmLCBwYXRjaCk6CiAgICAgICAgIHJldHVy
biBzZWxmLl90b29sLmJ1Z3MuZmV0Y2hfYXR0YWNobWVudChwYXRjaC5pZCgpKQogCkBAIC0yMzQs
MTUgKzE3NCwxMiBAQCBjbGFzcyBBYnN0cmFjdENocm9taXVtRVdTKEFic3RyYWN0RWFybHlXCiAg
ICAgXQogCiAKLWNsYXNzIENocm9taXVtTGludXhFV1MoQWJzdHJhY3RUZXN0aW5nRVdTKToKK2Ns
YXNzIENocm9taXVtTGludXhFV1MoQWJzdHJhY3RDaHJvbWl1bUVXUyk6CiAgICAgIyBGSVhNRTog
V2Ugc2hvdWxkIHJlbmFtZSB0aGlzIGNvbW1hbmQgdG8gY3ItbGludXgtZXdzLCBidXQgdGhhdCBy
ZXF1aXJlcwogICAgICMgICAgICAgIGEgZGF0YWJhc2UgbWlncmF0aW9uLiA6KAogICAgIG5hbWUg
PSAiY2hyb21pdW0tZXdzIgogICAgIHBvcnRfbmFtZSA9ICJjaHJvbWl1bS14dmZiIgotCi0gICAg
IyBGSVhNRTogQ2hyb21pdW1MaW51eEVXUyBzaG91bGQgaW5oZXJpdCBmcm9tIEFic3RyYWN0Q2hy
b21pdW1FV1Mgb25jZQotICAgICMgYWxsIHRoZSBDaHJvbWl1bSBFV1MgYm90cyBydW4gdGVzdHMK
LSAgICB3YXRjaGVycyA9IEFic3RyYWN0Q2hyb21pdW1FV1Mud2F0Y2hlcnMKKyAgICBydW5fdGVz
dHMgPSBUcnVlCiAKIAogY2xhc3MgQ2hyb21pdW1XaW5kb3dzRVdTKEFic3RyYWN0Q2hyb21pdW1F
V1MpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2Fy
bmluZ3N5c3RlbV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtX3VuaXR0ZXN0LnB5CShyZXZpc2lv
biA4NzU4NCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdh
cm5pbmdzeXN0ZW1fdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTM3LDU0ICszNyw5IEBA
IGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja1QKIAogCiBjbGFzcyBBYnN0
cmFjdEVhcmx5V2FybmluZ1N5c3RlbVRlc3QoUXVldWVzVGVzdCk6Ci0gICAgIyBOZWVkZWQgdG8g
ZGVmaW5lIHBvcnRfbmFtZSwgdXNlZCBpbiBBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbS5fX2lu
aXRfXwotICAgIGNsYXNzIFRlc3RFV1MoQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0pOgotICAg
ICAgICBuYW1lID0gIm1vY2stZXdzIgotICAgICAgICBwb3J0X25hbWUgPSAid2luIiAgIyBOZWVk
cyB0byBiZSBhIHBvcnQgd2hpY2ggcG9ydC9mYWN0b3J5IHVuZGVyc3RhbmRzLgotCi0gICAgZGVm
IHRlc3RfY2FuX2J1aWxkKHNlbGYpOgotICAgICAgICBxdWV1ZSA9IHNlbGYuVGVzdEVXUygpCi0g
ICAgICAgIHF1ZXVlLmJpbmRfdG9fdG9vbChNb2NrVG9vbChsb2dfZXhlY3V0aXZlPVRydWUpKQot
ICAgICAgICBxdWV1ZS5fb3B0aW9ucyA9IE1vY2tPcHRpb25zKHBvcnQ9Tm9uZSkKLSAgICAgICAg
ZXhwZWN0ZWRfc3RkZXJyID0gIk1PQ0sgcnVuX2FuZF90aHJvd19pZl9mYWlsOiBbJ2VjaG8nLCAn
LS1zdGF0dXMtaG9zdD1leGFtcGxlLmNvbScsICdidWlsZCcsICctLXBvcnQ9d2luJywgJy0tYnVp
bGQtc3R5bGU9cmVsZWFzZScsICctLWZvcmNlLWNsZWFuJywgJy0tbm8tdXBkYXRlJ11cbiIKLSAg
ICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHF1ZXVlLl9jYW5fYnVp
bGQsIFtdLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQotCi0gICAgICAgIGRlZiBt
b2NrX3J1bl93ZWJraXRfcGF0Y2goYXJncyk6Ci0gICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJv
cigiTU9DSyBzY3JpcHQgZXJyb3IiKQotCi0gICAgICAgIHF1ZXVlLnJ1bl93ZWJraXRfcGF0Y2gg
PSBtb2NrX3J1bl93ZWJraXRfcGF0Y2gKLSAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIk1PQ0s6
IHVwZGF0ZV9zdGF0dXM6IG1vY2stZXdzIFVuYWJsZSB0byBwZXJmb3JtIGEgYnVpbGRcbiIKLSAg
ICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHF1ZXVlLl9jYW5fYnVp
bGQsIFtdLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQotCi0gICAgIyBGSVhNRTog
VGhpcyBiZWxvbmdzIG9uIGFuIEFic3RyYWN0UmV2aWV3UXVldWVUZXN0IG9iamVjdCBpbiBxdWV1
ZXNfdW5pdHRlc3QucHkKLSAgICBkZWYgdGVzdF9zdWJwcm9jZXNzX2hhbmRsZWRfZXJyb3Ioc2Vs
Zik6Ci0gICAgICAgIHF1ZXVlID0gQWJzdHJhY3RSZXZpZXdRdWV1ZSgpCi0gICAgICAgIHF1ZXVl
LmJpbmRfdG9fdG9vbChNb2NrVG9vbCgpKQotCi0gICAgICAgIGRlZiBtb2NrX3Jldmlld19wYXRj
aChwYXRjaCk6Ci0gICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcignTU9DSyBzY3JpcHQgZXJy
b3InLCBleGl0X2NvZGU9UXVldWVFbmdpbmUuaGFuZGxlZF9lcnJvcl9jb2RlKQotCi0gICAgICAg
IHF1ZXVlLnJldmlld19wYXRjaCA9IG1vY2tfcmV2aWV3X3BhdGNoCi0gICAgICAgIG1vY2tfcGF0
Y2ggPSBxdWV1ZS5fdG9vbC5idWdzLmZldGNoX2F0dGFjaG1lbnQoMTk3KQotICAgICAgICBleHBl
Y3RlZF9zdGRlcnIgPSAiTU9DSzogcmVsZWFzZV93b3JrX2l0ZW06IE5vbmUgMTk3XG4iCi0gICAg
ICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBxdWV1ZS5wcm9jZXNzX3dv
cmtfaXRlbSwgW21vY2tfcGF0Y2hdLCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyLCBl
eHBlY3RlZF9leGNlcHRpb249U2NyaXB0RXJyb3IpCi0KLSAgICBkZWYgdGVzdF9wb3N0X3JlamVj
dF9tZXNzYWdlX29uX2J1ZyhzZWxmKToKLSAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKLSAgICAg
ICAgcGF0Y2ggPSB0b29sLmJ1Z3MuZmV0Y2hfYXR0YWNobWVudCgxOTcpCi0gICAgICAgIGV4cGVj
dGVkX3N0ZGVyciA9ICIiIk1PQ0sgc2V0dGluZyBmbGFnICdjb21taXQtcXVldWUnIHRvICctJyBv
biBhdHRhY2htZW50ICcxOTcnIHdpdGggY29tbWVudCAnQXR0YWNobWVudCAxOTcgZGlkIG5vdCBw
YXNzIG1vY2stZXdzICh3aW4pOgotT3V0cHV0OiBodHRwOi8vZHVtbXlfdXJsJyBhbmQgYWRkaXRp
b25hbCBjb21tZW50ICdFWFRSQScKLSIiIgotICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0
X291dHB1dHMoc2VsZiwKLSAgICAgICAgICAgIHNlbGYuVGVzdEVXUy5fcG9zdF9yZWplY3RfbWVz
c2FnZV9vbl9idWcsCi0gICAgICAgICAgICBrd2FyZ3M9eyd0b29sJzogdG9vbCwgJ3BhdGNoJzog
cGF0Y2gsICdzdGF0dXNfaWQnOiAxLCAnZXh0cmFfbWVzc2FnZV90ZXh0JzogIkVYVFJBIn0sCi0g
ICAgICAgICAgICBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQotCi0KLWNsYXNzIEFi
c3RyYWN0VGVzdGluZ0VXU1Rlc3QoUXVldWVzVGVzdCk6CiAgICAgZGVmIHRlc3RfZmFpbGluZ190
ZXN0c19tZXNzYWdlKHNlbGYpOgogICAgICAgICAjIE5lZWRlZCB0byBkZWZpbmUgcG9ydF9uYW1l
LCB1c2VkIGluIEFic3RyYWN0RWFybHlXYXJuaW5nU3lzdGVtLl9faW5pdF9fCi0gICAgICAgIGNs
YXNzIFRlc3RFV1MoQWJzdHJhY3RUZXN0aW5nRVdTKToKKyAgICAgICAgY2xhc3MgVGVzdEVXUyhB
YnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbSk6CiAgICAgICAgICAgICBwb3J0X25hbWUgPSAid2lu
IiAgIyBOZWVkcyB0byBiZSBhIHBvcnQgd2hpY2ggcG9ydC9mYWN0b3J5IHVuZGVyc3RhbmRzLgog
CiAgICAgICAgIGV3cyA9IFRlc3RFV1MoKQpAQCAtOTgsNDYgKzUzLDMwIEBAIGNsYXNzIEFic3Ry
YWN0VGVzdGluZ0VXU1Rlc3QoUXVldWVzVGVzdCkKIAogCiBjbGFzcyBFYXJseVdhcm5pbmdTeXRl
bVRlc3QoUXVldWVzVGVzdCk6Ci0gICAgZGVmIHRlc3RfZmFpbGVkX2J1aWxkcyhzZWxmKToKLSAg
ICAgICAgZXdzID0gQ2hyb21pdW1XaW5kb3dzRVdTKCkKLSAgICAgICAgZXdzLmJpbmRfdG9fdG9v
bChNb2NrVG9vbCgpKQotICAgICAgICBld3MuX2J1aWxkID0gbGFtYmRhIHBhdGNoLCBmaXJzdF9y
dW49RmFsc2U6IEZhbHNlCi0gICAgICAgIGV3cy5fY2FuX2J1aWxkID0gbGFtYmRhOiBUcnVlCi0g
ICAgICAgIG1vY2tfcGF0Y2ggPSBld3MuX3Rvb2wuYnVncy5mZXRjaF9hdHRhY2htZW50KDE5NykK
LSAgICAgICAgZXdzLnJldmlld19wYXRjaChtb2NrX3BhdGNoKQotCiAgICAgZGVmIF9kZWZhdWx0
X2V4cGVjdGVkX3N0ZGVycihzZWxmLCBld3MpOgogICAgICAgICBzdHJpbmdfcmVwbGFjZW1udHMg
PSB7CiAgICAgICAgICAgICAibmFtZSI6IGV3cy5uYW1lLAogICAgICAgICAgICAgInBvcnQiOiBl
d3MucG9ydF9uYW1lLAotICAgICAgICAgICAgIndhdGNoZXJzIjogZXdzLndhdGNoZXJzLAogICAg
ICAgICB9CiAgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9IHsKICAgICAgICAgICAgICJiZWdpbl93
b3JrX3F1ZXVlIjogc2VsZi5fZGVmYXVsdF9iZWdpbl93b3JrX3F1ZXVlX3N0ZGVycihld3MubmFt
ZSwgZXdzLl90b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QpLAogICAgICAgICAgICAgImhhbmRsZV91
bmV4cGVjdGVkX2Vycm9yIjogIk1vY2sgZXJyb3IgbWVzc2FnZVxuIiwKICAgICAgICAgICAgICJu
ZXh0X3dvcmtfaXRlbSI6ICIiLAogICAgICAgICAgICAgInByb2Nlc3Nfd29ya19pdGVtIjogIk1P
Q0s6IHVwZGF0ZV9zdGF0dXM6ICUobmFtZSlzIFBhc3Ncbk1PQ0s6IHJlbGVhc2Vfd29ya19pdGVt
OiAlKG5hbWUpcyAxOTdcbiIgJSBzdHJpbmdfcmVwbGFjZW1udHMsCi0gICAgICAgICAgICAiaGFu
ZGxlX3NjcmlwdF9lcnJvciI6ICIiIk1PQ0s6IHVwZGF0ZV9zdGF0dXM6ICUobmFtZSlzIFNjcmlw
dEVycm9yIGVycm9yIG1lc3NhZ2UKLU1PQ0sgc2V0dGluZyBmbGFnICdjb21taXQtcXVldWUnIHRv
ICctJyBvbiBhdHRhY2htZW50ICcxOTcnIHdpdGggY29tbWVudCAnQXR0YWNobWVudCAxOTcgZGlk
IG5vdCBwYXNzICUobmFtZSlzICglKHBvcnQpcyk6Ci1PdXRwdXQ6IGh0dHA6Ly9kdW1teV91cmwn
IGFuZCBhZGRpdGlvbmFsIGNvbW1lbnQgJ05vbmUnCi0iIiIgJSBzdHJpbmdfcmVwbGFjZW1udHMs
CisgICAgICAgICAgICAiaGFuZGxlX3NjcmlwdF9lcnJvciI6ICJTY3JpcHRFcnJvciBlcnJvciBt
ZXNzYWdlXG4iLAogICAgICAgICB9CiAgICAgICAgIHJldHVybiBleHBlY3RlZF9zdGRlcnIKIAog
ICAgIGRlZiBfdGVzdF9idWlsZGVyX2V3cyhzZWxmLCBld3MpOgogICAgICAgICBld3MuYmluZF90
b190b29sKE1vY2tUb29sKCkpCi0gICAgICAgIGV4cGVjdGVkX2V4Y2VwdGlvbnMgPSB7Ci0gICAg
ICAgICAgICAiaGFuZGxlX3NjcmlwdF9lcnJvciI6IFN5c3RlbUV4aXQsCi0gICAgICAgIH0KLSAg
ICAgICAgc2VsZi5hc3NlcnRfcXVldWVfb3V0cHV0cyhld3MsIGV4cGVjdGVkX3N0ZGVycj1zZWxm
Ll9kZWZhdWx0X2V4cGVjdGVkX3N0ZGVycihld3MpLCBleHBlY3RlZF9leGNlcHRpb25zPWV4cGVj
dGVkX2V4Y2VwdGlvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0X3F1ZXVlX291dHB1dHMoZXdzLCBl
eHBlY3RlZF9zdGRlcnI9c2VsZi5fZGVmYXVsdF9leHBlY3RlZF9zdGRlcnIoZXdzKSkKIAogICAg
IGRlZiBfdGVzdF9jb21taXR0ZXJfb25seV9ld3Moc2VsZiwgZXdzKToKICAgICAgICAgZXdzLmJp
bmRfdG9fdG9vbChNb2NrVG9vbCgpKQogICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSBzZWxmLl9k
ZWZhdWx0X2V4cGVjdGVkX3N0ZGVycihld3MpCiAgICAgICAgIHN0cmluZ19yZXBsYWNlbW50cyA9
IHsibmFtZSI6IGV3cy5uYW1lfQogICAgICAgICBleHBlY3RlZF9zdGRlcnJbInByb2Nlc3Nfd29y
a19pdGVtIl0gPSAiTU9DSzogdXBkYXRlX3N0YXR1czogJShuYW1lKXMgRXJyb3I6ICUobmFtZSlz
IGNhbm5vdCBwcm9jZXNzIHBhdGNoZXMgZnJvbSBub24tY29tbWl0dGVycyA6KFxuTU9DSzogcmVs
ZWFzZV93b3JrX2l0ZW06ICUobmFtZSlzIDE5N1xuIiAlIHN0cmluZ19yZXBsYWNlbW50cwotICAg
ICAgICBleHBlY3RlZF9leGNlcHRpb25zID0geyJoYW5kbGVfc2NyaXB0X2Vycm9yIjogU3lzdGVt
RXhpdH0KLSAgICAgICAgc2VsZi5hc3NlcnRfcXVldWVfb3V0cHV0cyhld3MsIGV4cGVjdGVkX3N0
ZGVycj1leHBlY3RlZF9zdGRlcnIsIGV4cGVjdGVkX2V4Y2VwdGlvbnM9ZXhwZWN0ZWRfZXhjZXB0
aW9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRfcXVldWVfb3V0cHV0cyhld3MsIGV4cGVjdGVkX3N0
ZGVycj1leHBlY3RlZF9zdGRlcnIpCiAKICAgICBkZWYgX3Rlc3RfdGVzdGluZ19ld3Moc2VsZiwg
ZXdzKToKICAgICAgICAgZXdzLmxheW91dF90ZXN0X3Jlc3VsdHMgPSBsYW1iZGE6IE5vbmUKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weQko
cmV2aXNpb24gODc1ODQpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
cXVldWVzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDkgQEAgY2xhc3MgQ29tbWl0
UXVldWUoQWJzdHJhY3RQYXRjaFF1ZXVlLCBTdAogICAgIGRlZiBhcmNoaXZlX2xhc3RfbGF5b3V0
X3Rlc3RfcmVzdWx0cyhzZWxmLCBwYXRjaCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9sYXlvdXRf
dGVzdF9yZXN1bHRzX3JlYWRlci5hcmNoaXZlKHBhdGNoKQogCisgICAgZGVmIGJ1aWxkX3N0eWxl
KHNlbGYpOgorICAgICAgICByZXR1cm4gImJvdGgiCisKICAgICBkZWYgcmVmZXRjaF9wYXRjaChz
ZWxmLCBwYXRjaCk6CiAgICAgICAgIHJldHVybiBzZWxmLl90b29sLmJ1Z3MuZmV0Y2hfYXR0YWNo
bWVudChwYXRjaC5pZCgpKQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>