<?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>138229</bug_id>
          
          <creation_ts>2014-10-30 14:16:27 -0700</creation_ts>
          <short_desc>Remove duplicate code from PatchAnalysisTask._test_patch and fix bug regarding incorrect call to PatchAnalysisTask.report_failure</short_desc>
          <delta_ts>2014-11-06 18:27:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jake Nielsen">jake.nielsen.webkit</reporter>
          <assigned_to name="Jake Nielsen">jake.nielsen.webkit</assigned_to>
          <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>glenn</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1045112</commentid>
    <comment_count>0</comment_count>
    <who name="Jake Nielsen">jake.nielsen.webkit</who>
    <bug_when>2014-10-30 14:16:27 -0700</bug_when>
    <thetext>Both inside and after this line:
if self._results_failed_different_tests(first_results, second_results):

there is fairly similar logic to determine whether the failing tests are present without the patch applied. They should be condensed into one code path somehow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045114</commentid>
    <comment_count>1</comment_count>
      <attachid>240695</attachid>
    <who name="Jake Nielsen">jake.nielsen.webkit</who>
    <bug_when>2014-10-30 14:19:24 -0700</bug_when>
    <thetext>Created attachment 240695
Adds a function to condense the code paths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045117</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-30 14:22:40 -0700</bug_when>
    <thetext>Attachment 240695 did not pass style-queue:


ERROR: Tools/Scripts/webkitpy/tool/bot/patchanalysistask.py:261:  trailing whitespace  [pep8/W291] [5]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045170</commentid>
    <comment_count>3</comment_count>
      <attachid>240713</attachid>
    <who name="Jake Nielsen">jake.nielsen.webkit</who>
    <bug_when>2014-10-30 16:24:03 -0700</bug_when>
    <thetext>Created attachment 240713
Makes code more readable (hopefully?) as discussed in person</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045331</commentid>
    <comment_count>4</comment_count>
    <who name="Jake Nielsen">jake.nielsen.webkit</who>
    <bug_when>2014-10-31 11:43:10 -0700</bug_when>
    <thetext>bump</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045884</commentid>
    <comment_count>5</comment_count>
      <attachid>240713</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-11-03 16:00:25 -0800</bug_when>
    <thetext>Comment on attachment 240713
Makes code more readable (hopefully?) as discussed in person

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

&gt; Tools/ChangeLog:4
&gt; +        Remove wetness from PatchAnalysisTask, in particular the calls to
&gt; +        _build_and_test_without_patch() and the logic that follows

I take you meant to write WETness instead of wetness. Maybe a better title would be:

Extract code to build and test without patch from PatchAnalysisTask._test_patch into a common function

Or

Remove duplicate code from PatchAnalysisTask._test_patch

?

&gt; Tools/Scripts/webkitpy/tool/bot/patchanalysistask.py:199
&gt; +    def _should_defer_patch_or_throw(self, failures, results_archive, script_error, failure_id):

The name of this function, in particular, the suffix &quot;or throw&quot; seems ambiguous. Maybe a more descriptive name would be _should_defer_patch_or_report_failure?

Maybe failures_with_patch would be a more descriptive name for the parameter failures?
Maybe results_archive_for_failures_with_patch would be a more descriptive name for the parameter results_archive.

&gt; Tools/Scripts/webkitpy/tool/bot/patchanalysistask.py:204
&gt; +        # If the clean tree exceeded the failure limit, then we can&apos;t know
&gt; +        # whether the failures we saw are expected, so we must defer.

This sentence doesn&apos;t read well. In particular, the first clause, &quot;If the clean tree&quot;, does not read well and I inferred it to be a restatement of the code. For your consideration, I suggest we omit the first clause and move the comment to be inside the body of the if-statement such that it reads:

if self._clean_tree_results.did_exceed_test_failure_limit():
    # We cannot know whether the failures we saw in the test runs with the patch are expected.
    return True

&gt; Tools/Scripts/webkitpy/tool/bot/patchanalysistask.py:209
&gt; +        # If there were failures that appeared consistently without the patch, but
&gt; +        # they were not present without the patch, then we must report the failure, and

This sentence does not read well.

&gt; Tools/Scripts/webkitpy/tool/bot/patchanalysistask.py:261
&gt; +                    # Returning false causes the patch to be defered.
&gt; +                    return False

This is OK as-is. By the way, is defer the right terminology here? I would have used an inline comment and written this as:

return False # Defer patch

We may want to consider adding an analogous inline comment to each return True and return False statement in this function. We don&apos;t need to do this in this patch.

&gt; Tools/Scripts/webkitpy/tool/bot/patchanalysistask.py:268
&gt;              return False

For consistency, I suggest adding a similar comment as on line 260.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045952</commentid>
    <comment_count>6</comment_count>
    <who name="Jake Nielsen">jake.nielsen.webkit</who>
    <bug_when>2014-11-03 18:52:01 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 240713 [details]
&gt; Makes code more readable (hopefully?) as discussed in person
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=240713&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:4
&gt; &gt; +        Remove wetness from PatchAnalysisTask, in particular the calls to
&gt; &gt; +        _build_and_test_without_patch() and the logic that follows
&gt; 
&gt; I take you meant to write WETness instead of wetness. Maybe a better title
&gt; would be:
&gt; 
&gt; Extract code to build and test without patch from
&gt; PatchAnalysisTask._test_patch into a common function
&gt; 
&gt; Or
&gt; 
&gt; Remove duplicate code from PatchAnalysisTask._test_patch
&gt; 
&gt; ?
I&apos;m liking your second suggestion.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/bot/patchanalysistask.py:199
&gt; &gt; +    def _should_defer_patch_or_throw(self, failures, results_archive, script_error, failure_id):
&gt; 
&gt; The name of this function, in particular, the suffix &quot;or throw&quot; seems
&gt; ambiguous. Maybe a more descriptive name would be
&gt; _should_defer_patch_or_report_failure?
I like that the suffix &quot;or_throw&quot; speaks to the direct result. the &quot;report_failure&quot; suffix doesn&apos;t necessarily imply that the function might throw until the reader looks up the report_failure function. 
&gt; 
&gt; Maybe failures_with_patch would be a more descriptive name for the parameter
&gt; failures?
&gt; Maybe results_archive_for_failures_with_patch would be a more descriptive
&gt; name for the parameter results_archive.
Agreed.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/bot/patchanalysistask.py:204
&gt; &gt; +        # If the clean tree exceeded the failure limit, then we can&apos;t know
&gt; &gt; +        # whether the failures we saw are expected, so we must defer.
&gt; 
&gt; This sentence doesn&apos;t read well. In particular, the first clause, &quot;If the
&gt; clean tree&quot;, does not read well and I inferred it to be a restatement of the
&gt; code. For your consideration, I suggest we omit the first clause and move
&gt; the comment to be inside the body of the if-statement such that it reads:
&gt; 
&gt; if self._clean_tree_results.did_exceed_test_failure_limit():
&gt;     # We cannot know whether the failures we saw in the test runs with the
&gt; patch are expected.
&gt;     return True
Agreed.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/bot/patchanalysistask.py:209
&gt; &gt; +        # If there were failures that appeared consistently without the patch, but
&gt; &gt; +        # they were not present without the patch, then we must report the failure, and
&gt; 
&gt; This sentence does not read well.
Yeah, I think that&apos;s actually a mistype on my part.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/bot/patchanalysistask.py:261
&gt; &gt; +                    # Returning false causes the patch to be defered.
&gt; &gt; +                    return False
&gt; 
&gt; This is OK as-is. By the way, is defer the right terminology here? I would
&gt; have used an inline comment and written this as:
I think defer is the right way to put it. In this case the patch will be re-evaluated at a later time, AKA deferred.
&gt; 
&gt; return False # Defer patch
&gt; 
&gt; We may want to consider adding an analogous inline comment to each return
&gt; True and return False statement in this function. We don&apos;t need to do this
&gt; in this patch.
That would definitely help the readability.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/bot/patchanalysistask.py:268
&gt; &gt;              return False
&gt; 
&gt; For consistency, I suggest adding a similar comment as on line 260.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045955</commentid>
    <comment_count>7</comment_count>
      <attachid>240900</attachid>
    <who name="Jake Nielsen">jake.nielsen.webkit</who>
    <bug_when>2014-11-03 19:13:59 -0800</bug_when>
    <thetext>Created attachment 240900
Addresses comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046172</commentid>
    <comment_count>8</comment_count>
      <attachid>240900</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-11-04 14:11:23 -0800</bug_when>
    <thetext>Comment on attachment 240900
Addresses comments

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

&gt; Tools/Scripts/webkitpy/tool/bot/patchanalysistask.py:211
&gt; +        failures_introduced_by_patch = frozenset(failures_with_patch) - frozenset(self._clean_tree_results.failing_test_results())
&gt; +        if failures_introduced_by_patch:
&gt; +            self.failure_status_id = failure_id
&gt; +            # report_failure will either throw or return false.
&gt; +            return not self.report_failure(results_archive_for_failures_with_patch, failures_introduced_by_patch, script_error)

As far as I can tell, PatchAnalysisTask.report_failure() expects to be passed a LayoutTestResults object as its second argument (*).

(*) Notice that PatchAnalysisTask.report_failure() assigns failures_introduced_by_patch to PatchAnalysisTask._results_from_patch_test_run (whose public getter is PatchAnalysisTask.results_from_patch_test_run()), EarlyWarningSystemTask is a derived class of PatchAnalysisTask and EarlyWarningSystemTask does not override PatchAnalysisTask.results_from_patch_test_run(). From looking at the implementation of AbstractEarlyWarningSystem._failing_tests_message(), AbstractEarlyWarningSystem expects that PatchAnalysisTask.results_from_patch_test_run() returns a LayoutTestResults object or at least an object that implements a function of the form LayoutTestResults.failing_tests() by &lt;http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/tool/commands/earlywarningsystem.py?rev=175063#L65&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046386</commentid>
    <comment_count>9</comment_count>
    <who name="Jake Nielsen">jake.nielsen.webkit</who>
    <bug_when>2014-11-04 21:59:06 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 240900 [details]
&gt; Addresses comments
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=240900&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/bot/patchanalysistask.py:211
&gt; &gt; +        failures_introduced_by_patch = frozenset(failures_with_patch) - frozenset(self._clean_tree_results.failing_test_results())
&gt; &gt; +        if failures_introduced_by_patch:
&gt; &gt; +            self.failure_status_id = failure_id
&gt; &gt; +            # report_failure will either throw or return false.
&gt; &gt; +            return not self.report_failure(results_archive_for_failures_with_patch, failures_introduced_by_patch, script_error)
&gt; 
&gt; As far as I can tell, PatchAnalysisTask.report_failure() expects to be
&gt; passed a LayoutTestResults object as its second argument (*).
&gt; 
&gt; (*) Notice that PatchAnalysisTask.report_failure() assigns
&gt; failures_introduced_by_patch to
&gt; PatchAnalysisTask._results_from_patch_test_run (whose public getter is
&gt; PatchAnalysisTask.results_from_patch_test_run()), EarlyWarningSystemTask is
&gt; a derived class of PatchAnalysisTask and EarlyWarningSystemTask does not
&gt; override PatchAnalysisTask.results_from_patch_test_run(). From looking at
&gt; the implementation of AbstractEarlyWarningSystem._failing_tests_message(),
&gt; AbstractEarlyWarningSystem expects that
&gt; PatchAnalysisTask.results_from_patch_test_run() returns a LayoutTestResults
&gt; object or at least an object that implements a function of the form
&gt; LayoutTestResults.failing_tests() by
&gt; &lt;http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/tool/commands/
&gt; earlywarningsystem.py?rev=175063#L65&gt;.
Wow, good catch. I&apos;ll take a look at this tomorrow morning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046548</commentid>
    <comment_count>10</comment_count>
      <attachid>241045</attachid>
    <who name="Jake Nielsen">jake.nielsen.webkit</who>
    <bug_when>2014-11-05 11:44:14 -0800</bug_when>
    <thetext>Created attachment 241045
Bug fix, and unit test addition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046614</commentid>
    <comment_count>11</comment_count>
      <attachid>241045</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-11-05 15:04:43 -0800</bug_when>
    <thetext>Comment on attachment 241045
Bug fix, and unit test addition.

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

&gt; Tools/Scripts/webkitpy/tool/bot/patchanalysistask.py:211
&gt; +            return not self.report_failure(results_archive_for_failures_with_patch, LayoutTestResults(failures_introduced_by_patch, did_exceed_test_failure_limit=False), script_error)

Are you planning to remove the logic in {AbstractEarlyWarningSystem, CommitQueue}._failing_tests_message() for computing the equivalent of failures_introduced_by_patch? As far as I can tell the logic in the aforementioned functions makes it unnecessary to compute failures_introduced_by_patch in this function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046667</commentid>
    <comment_count>12</comment_count>
    <who name="Jake Nielsen">jake.nielsen.webkit</who>
    <bug_when>2014-11-05 17:35:22 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Comment on attachment 241045 [details]
&gt; Bug fix, and unit test addition.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=241045&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/bot/patchanalysistask.py:211
&gt; &gt; +            return not self.report_failure(results_archive_for_failures_with_patch, LayoutTestResults(failures_introduced_by_patch, did_exceed_test_failure_limit=False), script_error)
&gt; 
&gt; Are you planning to remove the logic in {AbstractEarlyWarningSystem,
&gt; CommitQueue}._failing_tests_message() for computing the equivalent of
&gt; failures_introduced_by_patch? As far as I can tell the logic in the
&gt; aforementioned functions makes it unnecessary to compute
&gt; failures_introduced_by_patch in this function.

That&apos;s a good point. I&apos;ll remove it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046681</commentid>
    <comment_count>13</comment_count>
      <attachid>241078</attachid>
    <who name="Jake Nielsen">jake.nielsen.webkit</who>
    <bug_when>2014-11-05 18:07:10 -0800</bug_when>
    <thetext>Created attachment 241078
Removes results_from_test_run_without_patch altogether.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046885</commentid>
    <comment_count>14</comment_count>
      <attachid>241078</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-11-06 12:59:02 -0800</bug_when>
    <thetext>Comment on attachment 241078
Removes results_from_test_run_without_patch altogether.

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

&gt; Tools/Scripts/webkitpy/tool/bot/patchanalysistask.py:209
&gt; +            return not self.report_failure(results_archive_for_failures_with_patch, LayoutTestResults(failures_introduced_by_patch, did_exceed_test_failure_limit=False), script_error)

Is it acceptable to pass a frozenset (failures_introduced_by_patch) to LayoutTestResults? Better question, is it acceptable that LayoutTestResults.test_results() returns an arbitrary data type? Notice that LayoutTestResults() assigns its first argument to LayoutTestResults._test_results (whose public getter is LayoutTestResults.test_results()). From briefly searching the code, every caller that instantiates a LayoutTestResults passes a list data type. Although I could not find a caller that depends on LayoutTestResults.test_results() returning a Python list or list-like data type, it seems weird that LayoutTestResults.test_results() may return an arbitrary data type. With respect to this bug, it seems weird that some callers of LayoutTestResults.test_results() may get a frozenset and some callers may get a list depending on the data type of the first argument passed to the LayoutTestResults constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046900</commentid>
    <comment_count>15</comment_count>
      <attachid>241131</attachid>
    <who name="Jake Nielsen">jake.nielsen.webkit</who>
    <bug_when>2014-11-06 13:56:09 -0800</bug_when>
    <thetext>Created attachment 241131
Makes LayoutTestResults.test_results always return a list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046958</commentid>
    <comment_count>16</comment_count>
      <attachid>241131</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-11-06 16:31:58 -0800</bug_when>
    <thetext>Comment on attachment 241131
Makes LayoutTestResults.test_results always return a list.

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

&gt; Tools/ChangeLog:7
&gt; +        Remove duplicate code from PatchAnalysisTask._test_patch.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=138229
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +

This patch doesn&apos;t just remove duplicate code. It also fixes a correctness issue where the EWS and CommitQueue were being passed a non LayoutTestResults object as implied by my remark in comment #8. I suggest that we add a remark to the change log entry and/or update the bug title to make it clear to a reader that this patch both fixes a correctness issue (which we added a unit test in file Tools/Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py) and removes duplicate/unnecessary code.

&gt; Tools/ChangeLog:37
&gt; +        (MockCommitQueueTask.results_from_patch_test_run):

Nit: You didn&apos;t change this function. I take it that prepareChangeLog inadvertently thought you changed this method?

&gt; Tools/Scripts/webkitpy/common/net/layouttestresults.py:65
&gt; -        return self._test_results
&gt; +        return [result for result in self._test_results]

This is OK as-is. We could be smarter and only convert self._test_results to a list if necessary (overwriting self._test_results with the conversion to make subsequent calls to test_results() return the cached result). Alternatively, we could have added a assert in the constructor ensure self._test_results is a list-like data structure and modified _should_defer_patch_or_throw() to pass a list. Even better, remove this need for this getter entirely (since it exposes the implementation details of this class) by exposing a function(s) similar to the other member functions (e.g. failing_tests()) that filters self._test_results for the passing tests/results and other non-failing tests/results (if there are other test/result types other than passing and failing tests).

&gt; Tools/Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:55
&gt; +        self.assertMultiLineEqual(ews._failing_tests_message(task, patch), &quot;New failing tests:\nfoo.html\nbar.html&quot;)

Nit: You may want to consider sorting the failing tests for aesthetics. It&apos;s not necessary for landing this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046963</commentid>
    <comment_count>17</comment_count>
    <who name="Jake Nielsen">jake.nielsen.webkit</who>
    <bug_when>2014-11-06 16:49:25 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Comment on attachment 241131 [details]
&gt; Makes LayoutTestResults.test_results always return a list.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=241131&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:7
&gt; &gt; +        Remove duplicate code from PatchAnalysisTask._test_patch.
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=138229
&gt; &gt; +
&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; &gt; +
&gt; 
&gt; This patch doesn&apos;t just remove duplicate code. It also fixes a correctness
&gt; issue where the EWS and CommitQueue were being passed a non
&gt; LayoutTestResults object as implied by my remark in comment #8. I suggest
&gt; that we add a remark to the change log entry and/or update the bug title to
&gt; make it clear to a reader that this patch both fixes a correctness issue
&gt; (which we added a unit test in file
&gt; Tools/Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py) and removes
&gt; duplicate/unnecessary code.
I&apos;ll make the appropriate changes.
&gt; 
&gt; &gt; Tools/ChangeLog:37
&gt; &gt; +        (MockCommitQueueTask.results_from_patch_test_run):
&gt; 
&gt; Nit: You didn&apos;t change this function. I take it that prepareChangeLog
&gt; inadvertently thought you changed this method?
yeah, prepareChangeLog decided that I did. I&apos;ll just remove it manually.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/net/layouttestresults.py:65
&gt; &gt; -        return self._test_results
&gt; &gt; +        return [result for result in self._test_results]
&gt; 
&gt; This is OK as-is. We could be smarter and only convert self._test_results to
&gt; a list if necessary (overwriting self._test_results with the conversion to
&gt; make subsequent calls to test_results() return the cached result).
&gt; Alternatively, we could have added a assert in the constructor ensure
&gt; self._test_results is a list-like data structure and modified
&gt; _should_defer_patch_or_throw() to pass a list. Even better, remove this need
&gt; for this getter entirely (since it exposes the implementation details of
&gt; this class) by exposing a function(s) similar to the other member functions
&gt; (e.g. failing_tests()) that filters self._test_results for the passing
&gt; tests/results and other non-failing tests/results (if there are other
&gt; test/result types other than passing and failing tests).
Let&apos;s get this patch submitted. It&apos;s been flapping in the wind for way too long.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:55
&gt; &gt; +        self.assertMultiLineEqual(ews._failing_tests_message(task, patch), &quot;New failing tests:\nfoo.html\nbar.html&quot;)
&gt; 
&gt; Nit: You may want to consider sorting the failing tests for aesthetics. It&apos;s
&gt; not necessary for landing this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046965</commentid>
    <comment_count>18</comment_count>
      <attachid>241145</attachid>
    <who name="Jake Nielsen">jake.nielsen.webkit</who>
    <bug_when>2014-11-06 16:51:22 -0800</bug_when>
    <thetext>Created attachment 241145
Changelog fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046977</commentid>
    <comment_count>19</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-11-06 17:25:34 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; &gt; &gt; Tools/ChangeLog:37
&gt; &gt; &gt; +        (MockCommitQueueTask.results_from_patch_test_run):
&gt; &gt; 
&gt; &gt; Nit: You didn&apos;t change this function. I take it that prepareChangeLog
&gt; &gt; inadvertently thought you changed this method?
&gt; yeah, prepareChangeLog decided that I did. I&apos;ll just remove it manually.
&gt; &gt; 

We should file a bug about this issue (if there isn&apos;t one already).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046982</commentid>
    <comment_count>20</comment_count>
      <attachid>241145</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-11-06 17:47:50 -0800</bug_when>
    <thetext>Comment on attachment 241145
Changelog fix

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

&gt; Tools/Scripts/webkitpy/tool/bot/patchanalysistask.py:192
&gt; -        if (len(results.failing_tests()) - len(self._clean_tree_results.failing_tests())) &lt;= 5:
&gt; +        if (len(results.failing_tests()) - len(self._delegate.test_results().failing_tests())) &lt;= 5:

Does it ever make sense to call this function when results.did_exceed_test_failure_limit() is false? If not then I suggest that we assert this condition. We can make such a change in a separate bug/patch..

&gt; Tools/Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:55
&gt; +        self.assertMultiLineEqual(ews._failing_tests_message(task, patch), &quot;New failing tests:\nfoo.html\nbar.html&quot;)

I take it you disagreed with my remark (comment #16) about sorting the results since you didn&apos;t update this portion of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046988</commentid>
    <comment_count>21</comment_count>
    <who name="Jake Nielsen">jake.nielsen.webkit</who>
    <bug_when>2014-11-06 18:12:11 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Comment on attachment 241145 [details]
&gt; Changelog fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=241145&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/bot/patchanalysistask.py:192
&gt; &gt; -        if (len(results.failing_tests()) - len(self._clean_tree_results.failing_tests())) &lt;= 5:
&gt; &gt; +        if (len(results.failing_tests()) - len(self._delegate.test_results().failing_tests())) &lt;= 5:
&gt; 
&gt; Does it ever make sense to call this function when
&gt; results.did_exceed_test_failure_limit() is false? If not then I suggest that
&gt; we assert this condition. We can make such a change in a separate bug/patch..
As the name suggests, results must have exceeded the failure limit.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:55
&gt; &gt; +        self.assertMultiLineEqual(ews._failing_tests_message(task, patch), &quot;New failing tests:\nfoo.html\nbar.html&quot;)
&gt; 
&gt; I take it you disagreed with my remark (comment #16) about sorting the
&gt; results since you didn&apos;t update this portion of the patch.
I tend to agree with you. I just thought you wanted it in another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047000</commentid>
    <comment_count>22</comment_count>
      <attachid>241145</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-06 18:27:43 -0800</bug_when>
    <thetext>Comment on attachment 241145
Changelog fix

Clearing flags on attachment: 241145

Committed r175735: &lt;http://trac.webkit.org/changeset/175735&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047001</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-06 18:27:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240695</attachid>
            <date>2014-10-30 14:19:24 -0700</date>
            <delta_ts>2014-10-30 16:24:03 -0700</delta_ts>
            <desc>Adds a function to condense the code paths.</desc>
            <filename>0001-Remove-wetness-from-PatchAnalysisTask-in-particular-.patch</filename>
            <type>text/plain</type>
            <size>5271</size>
            <attacher name="Jake Nielsen">jake.nielsen.webkit</attacher>
            
              <data encoding="base64">RnJvbSA2MTlmMmM2MTA0NWQ3OWM1Y2Y2MjUxMDIzZjQyMDdmNmYzMTYwOGFkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWtlIE5pZWxzZW4gPGphY29iX25pZWxzZW5AYXBwbGUuY29t
PgpEYXRlOiBUaHUsIDMwIE9jdCAyMDE0IDE0OjE4OjQ1IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
UmVtb3ZlIHdldG5lc3MgZnJvbSBQYXRjaEFuYWx5c2lzVGFzaywgaW4gcGFydGljdWxhciB0aGUK
IGNhbGxzIHRvIF9idWlsZF9hbmRfdGVzdF93aXRob3V0X3BhdGNoKCkgYW5kIHRoZSBsb2dpYyB0
aGF0IGZvbGxvd3MKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgy
MjkKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Ym90L3BhdGNoYW5hbHlzaXN0YXNrLnB5OgpBZGRzIHRoZSBfY29udGludWVfdGVzdGluZ19wYXRj
aF93aXRoX2NvbnNpc3RlbnRfZmFpbHVyZXMgZnVuY3Rpb24gYW5kCnVzZXMgaXQgdG8gZHJ5IHRo
ZSBjb2RlLgooUGF0Y2hBbmFseXNpc1Rhc2suX2NvbnRpbnVlX3Rlc3RpbmdfcGF0Y2hfd2l0aF9j
b25zaXN0ZW50X2ZhaWx1cmVzKToKKFBhdGNoQW5hbHlzaXNUYXNrLl90ZXN0X3BhdGNoKToKLS0t
CiBUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE0
ICsrKysrKysrCiAuLi4vU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9wYXRjaGFuYWx5c2lzdGFz
ay5weSB8IDQwICsrKysrKysrKystLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMzIgaW5z
ZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGViMWE4MDkuLmI2NzhjNDAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
NC0xMC0zMCAgSmFrZSBOaWVsc2VuICA8amFjb2JfbmllbHNlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVtb3ZlIHdldG5lc3MgZnJvbSBQYXRjaEFuYWx5c2lzVGFzaywgaW4gcGFydGljdWxhciB0
aGUgY2FsbHMgdG8KKyAgICAgICAgX2J1aWxkX2FuZF90ZXN0X3dpdGhvdXRfcGF0Y2goKSBhbmQg
dGhlIGxvZ2ljIHRoYXQgZm9sbG93cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM4MjI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3BhdGNoYW5hbHlzaXN0
YXNrLnB5OgorICAgICAgICBBZGRzIHRoZSBfY29udGludWVfdGVzdGluZ19wYXRjaF93aXRoX2Nv
bnNpc3RlbnRfZmFpbHVyZXMgZnVuY3Rpb24gYW5kCisgICAgICAgIHVzZXMgaXQgdG8gZHJ5IHRo
ZSBjb2RlLgorICAgICAgICAoUGF0Y2hBbmFseXNpc1Rhc2suX2NvbnRpbnVlX3Rlc3RpbmdfcGF0
Y2hfd2l0aF9jb25zaXN0ZW50X2ZhaWx1cmVzKToKKyAgICAgICAgKFBhdGNoQW5hbHlzaXNUYXNr
Ll90ZXN0X3BhdGNoKToKKwogMjAxNC0xMC0zMCAgUm9oaXQgS3VtYXIgIDxrdW1hci5yb2hpdEBz
YW1zdW5nLmNvbT4KIAogICAgICAgICBbR1RLXSBNaW5pYnJvd3NlciA6IEFkZCB3aW5kb3cgZnVs
bHNjcmVlbiBzdXBwb3J0IGZvciBNaW5pYnJvd3NlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2JvdC9wYXRjaGFuYWx5c2lzdGFzay5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hhbmFseXNpc3Rhc2sucHkKaW5kZXggZjVlYWQ0Yy4uZDQw
ZDNiNCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9wYXRjaGFu
YWx5c2lzdGFzay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3BhdGNo
YW5hbHlzaXN0YXNrLnB5CkBAIC0xOTYsNiArMTk2LDE3IEBAIGNsYXNzIFBhdGNoQW5hbHlzaXNU
YXNrKG9iamVjdCk6CiAKICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUocmVzdWx0
c19hcmNoaXZlLCByZXN1bHRzLCBzY3JpcHRfZXJyb3IpCiAKKyAgICBkZWYgX2NvbnRpbnVlX3Rl
c3RpbmdfcGF0Y2hfd2l0aF9jb25zaXN0ZW50X2ZhaWx1cmVzKHNlbGYsIGZhaWx1cmVzLCByZXN1
bHRzX2FyY2hpdmUsIHNjcmlwdF9lcnJvciwgZmFpbHVyZV9pZCk6CisgICAgICAgIHNlbGYuX2J1
aWxkX2FuZF90ZXN0X3dpdGhvdXRfcGF0Y2goKQorICAgICAgICBzZWxmLl9jbGVhbl90cmVlX3Jl
c3VsdHMgPSBzZWxmLl9kZWxlZ2F0ZS50ZXN0X3Jlc3VsdHMoKQorCisgICAgICAgIGlmIHNlbGYu
X2NsZWFuX3RyZWVfcmVzdWx0cy5kaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdCgpOgorICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgaWYgZnJvemVuc2V0KGZhaWx1cmVzKSAt
IGZyb3plbnNldChzZWxmLl9jbGVhbl90cmVlX3Jlc3VsdHMuZmFpbGluZ190ZXN0X3Jlc3VsdHMo
KSk6CisgICAgICAgICAgICBzZWxmLmZhaWx1cmVfc3RhdHVzX2lkID0gZmFpbHVyZV9pZAorICAg
ICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUocmVzdWx0c19hcmNoaXZlLCBmYWls
dXJlcywgc2NyaXB0X2Vycm9yKQorCiAgICAgZGVmIF90ZXN0X3BhdGNoKHNlbGYpOgogICAgICAg
ICBpZiBzZWxmLl90ZXN0KCk6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQpAQCAtMjM2LDMzICsy
NDcsMTggQEAgY2xhc3MgUGF0Y2hBbmFseXNpc1Rhc2sob2JqZWN0KToKIAogICAgICAgICAgICAg
dGVzdHNfdGhhdF9jb25zaXN0ZW50bHlfZmFpbGVkID0gZmlyc3RfZmFpbGluZ19yZXN1bHRzX3Nl
dC5pbnRlcnNlY3Rpb24oc2Vjb25kX2ZhaWxpbmdfcmVzdWx0c19zZXQpCiAgICAgICAgICAgICBp
ZiB0ZXN0c190aGF0X2NvbnNpc3RlbnRseV9mYWlsZWQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5f
YnVpbGRfYW5kX3Rlc3Rfd2l0aG91dF9wYXRjaCgpCi0gICAgICAgICAgICAgICAgc2VsZi5fY2xl
YW5fdHJlZV9yZXN1bHRzID0gc2VsZi5fZGVsZWdhdGUudGVzdF9yZXN1bHRzKCkKLSAgICAgICAg
ICAgICAgICB0ZXN0c190aGF0X2ZhaWxlZF9vbl90cmVlID0gc2VsZi5fY2xlYW5fdHJlZV9yZXN1
bHRzLmZhaWxpbmdfdGVzdF9yZXN1bHRzKCkKLQotICAgICAgICAgICAgICAgIG5ld19mYWlsdXJl
c19pbnRyb2R1Y2VkX2J5X3BhdGNoID0gdGVzdHNfdGhhdF9jb25zaXN0ZW50bHlfZmFpbGVkLmRp
ZmZlcmVuY2Uoc2V0KHRlc3RzX3RoYXRfZmFpbGVkX29uX3RyZWUpKQotICAgICAgICAgICAgICAg
IGlmIG5ld19mYWlsdXJlc19pbnRyb2R1Y2VkX2J5X3BhdGNoOgotICAgICAgICAgICAgICAgICAg
ICBzZWxmLmZhaWx1cmVfc3RhdHVzX2lkID0gZmlyc3RfZmFpbHVyZV9zdGF0dXNfaWQKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUoZmlyc3RfcmVzdWx0c19h
cmNoaXZlLCBuZXdfZmFpbHVyZXNfaW50cm9kdWNlZF9ieV9wYXRjaCwgZmlyc3Rfc2NyaXB0X2Vy
cm9yKQorICAgICAgICAgICAgICAgIHBvdGVudGlhbF9yZXN1bHQgPSBzZWxmLl9jb250aW51ZV90
ZXN0aW5nX3BhdGNoX3dpdGhfY29uc2lzdGVudF9mYWlsdXJlcyh0ZXN0c190aGF0X2NvbnNpc3Rl
bnRseV9mYWlsZWQsIGZpcnN0X3Jlc3VsdHNfYXJjaGl2ZSwgZmlyc3Rfc2NyaXB0X2Vycm9yLCBm
aXJzdF9mYWlsdXJlX3N0YXR1c19pZCkKKyAgICAgICAgICAgICAgICBpZiAocG90ZW50aWFsX3Jl
c3VsdCAhPSBOb25lKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvdGVudGlhbF9yZXN1
bHQKIAogICAgICAgICAgICAgIyBBdCB0aGlzIHBvaW50IHdlIGtub3cgdGhhdCB0aGVyZSBpcyBm
bGFreW5lc3Mgd2l0aCB0aGUgcGF0Y2ggYXBwbGllZCwgYnV0IG5vIGNvbnNpc3RlbnQgZmFpbHVy
ZXMKICAgICAgICAgICAgICMgd2VyZSBpbnRyb2R1Y2VkLiBUaGlzIGlzIGEgYml0IG9mIGEgZ3Jl
eS16b25lLgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICAgICAgaWYgc2VsZi5fYnVp
bGRfYW5kX3Rlc3Rfd2l0aG91dF9wYXRjaCgpOgotICAgICAgICAgICAgIyBUaGUgZXJyb3IgZnJv
bSB0aGUgcHJldmlvdXMgLl90ZXN0KCkgcnVuIGlzIHJlYWwsIHJlcG9ydCBpdC4KLSAgICAgICAg
ICAgIHNlbGYuZmFpbHVyZV9zdGF0dXNfaWQgPSBmaXJzdF9mYWlsdXJlX3N0YXR1c19pZAotICAg
ICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUoZmlyc3RfcmVzdWx0c19hcmNoaXZl
LCBmaXJzdF9yZXN1bHRzLCBmaXJzdF9zY3JpcHRfZXJyb3IpCi0KLSAgICAgICAgc2VsZi5fY2xl
YW5fdHJlZV9yZXN1bHRzID0gc2VsZi5fZGVsZWdhdGUudGVzdF9yZXN1bHRzKCkKLQotICAgICAg
ICBpZiBzZWxmLl9jbGVhbl90cmVlX3Jlc3VsdHMuZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGlt
aXQoKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIGlmIHNldChmaXJzdF9y
ZXN1bHRzLmZhaWxpbmdfdGVzdHMoKSkgLSBzZXQoc2VsZi5fY2xlYW5fdHJlZV9yZXN1bHRzLmZh
aWxpbmdfdGVzdHMoKSk6Ci0gICAgICAgICAgICBzZWxmLmZhaWx1cmVfc3RhdHVzX2lkID0gZmly
c3RfZmFpbHVyZV9zdGF0dXNfaWQKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnJlcG9ydF9mYWls
dXJlKGZpcnN0X3Jlc3VsdHNfYXJjaGl2ZSwgZmlyc3RfcmVzdWx0cywgZmlyc3Rfc2NyaXB0X2Vy
cm9yKQotCisgICAgICAgIHBvdGVudGlhbF9yZXN1bHQgPSBzZWxmLl9jb250aW51ZV90ZXN0aW5n
X3BhdGNoX3dpdGhfY29uc2lzdGVudF9mYWlsdXJlcyhmaXJzdF9yZXN1bHRzLmZhaWxpbmdfdGVz
dF9yZXN1bHRzKCksIGZpcnN0X3Jlc3VsdHNfYXJjaGl2ZSwgZmlyc3Rfc2NyaXB0X2Vycm9yLCBm
aXJzdF9mYWlsdXJlX3N0YXR1c19pZCkKKyAgICAgICAgaWYgKHBvdGVudGlhbF9yZXN1bHQgIT0g
Tm9uZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHBvdGVudGlhbF9yZXN1bHQKKyAgICAgICAg
CiAgICAgICAgICMgQXQgdGhpcyBwb2ludCwgd2Uga25vdyB0aGF0IHRoZSBmaXJzdCBhbmQgc2Vj
b25kIHJ1bnMgaGFkIHRoZSBleGFjdCBzYW1lIGZhaWx1cmVzLAogICAgICAgICAjIGFuZCB0aGF0
IHRob3NlIGZhaWx1cmVzIGFyZSBhbGwgcHJlc2VudCBvbiB0aGUgY2xlYW4gdHJlZSwgc28gd2Ug
Y2FuIHNheSB3aXRoIGNlcnRhaW50eQogICAgICAgICAjIHRoYXQgdGhlIHBhdGNoIGlzIGdvb2Qu
Ci0tIAoxLjkuMyAoQXBwbGUgR2l0LTUwKQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240713</attachid>
            <date>2014-10-30 16:24:03 -0700</date>
            <delta_ts>2014-11-03 19:13:59 -0800</delta_ts>
            <desc>Makes code more readable (hopefully?) as discussed in person</desc>
            <filename>0001-Remove-wetness-from-PatchAnalysisTask-in-particular-.patch</filename>
            <type>text/plain</type>
            <size>5709</size>
            <attacher name="Jake Nielsen">jake.nielsen.webkit</attacher>
            
              <data encoding="base64">RnJvbSBmYWJlM2I1ZDE5NTU1N2ZkYmYxYjk1YmQ0ODVmYTZlYjY3ODBiMGMyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWtlIE5pZWxzZW4gPGphY29iX25pZWxzZW5AYXBwbGUuY29t
PgpEYXRlOiBUaHUsIDMwIE9jdCAyMDE0IDE2OjIzOjM5IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
UmVtb3ZlIHdldG5lc3MgZnJvbSBQYXRjaEFuYWx5c2lzVGFzaywgaW4gcGFydGljdWxhciB0aGUK
IGNhbGxzIHRvIF9idWlsZF9hbmRfdGVzdF93aXRob3V0X3BhdGNoKCkgYW5kIHRoZSBsb2dpYyB0
aGF0IGZvbGxvd3MKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgy
MjkKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Ym90L3BhdGNoYW5hbHlzaXN0YXNrLnB5OgpBZGRzIHRoZSBfc2hvdWxkX2RlZmVyX3BhdGNoX29y
X3Rocm93IG1ldGhvZCB0byBhbGxvdyBzb21lIHdldG5lc3MgdG8KYmUgcmVtb3ZlZC4KKFBhdGNo
QW5hbHlzaXNUYXNrLl9zaG91bGRfZGVmZXJfcGF0Y2hfb3JfdGhyb3cpOgooUGF0Y2hBbmFseXNp
c1Rhc2suX3Rlc3RfcGF0Y2gpOgotLS0KIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgMTQgKysrKysrKwogLi4uL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9ib3QvcGF0Y2hhbmFseXNpc3Rhc2sucHkgfCA0NiArKysrKysrKysrKystLS0tLS0tLS0tCiAy
IGZpbGVzIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQoKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlYjFhODA5Li44
NGQ0Zjk0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMTAtMzAgIEpha2UgTmllbHNlbiAgPGphY29iX25pZWxz
ZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSB3ZXRuZXNzIGZyb20gUGF0Y2hBbmFseXNp
c1Rhc2ssIGluIHBhcnRpY3VsYXIgdGhlIGNhbGxzIHRvCisgICAgICAgIF9idWlsZF9hbmRfdGVz
dF93aXRob3V0X3BhdGNoKCkgYW5kIHRoZSBsb2dpYyB0aGF0IGZvbGxvd3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODIyOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90
b29sL2JvdC9wYXRjaGFuYWx5c2lzdGFzay5weToKKyAgICAgICAgQWRkcyB0aGUgX3Nob3VsZF9k
ZWZlcl9wYXRjaF9vcl90aHJvdyBtZXRob2QgdG8gYWxsb3cgc29tZSB3ZXRuZXNzIHRvCisgICAg
ICAgIGJlIHJlbW92ZWQuCisgICAgICAgIChQYXRjaEFuYWx5c2lzVGFzay5fc2hvdWxkX2RlZmVy
X3BhdGNoX29yX3Rocm93KToKKyAgICAgICAgKFBhdGNoQW5hbHlzaXNUYXNrLl90ZXN0X3BhdGNo
KToKKwogMjAxNC0xMC0zMCAgUm9oaXQgS3VtYXIgIDxrdW1hci5yb2hpdEBzYW1zdW5nLmNvbT4K
IAogICAgICAgICBbR1RLXSBNaW5pYnJvd3NlciA6IEFkZCB3aW5kb3cgZnVsbHNjcmVlbiBzdXBw
b3J0IGZvciBNaW5pYnJvd3NlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2JvdC9wYXRjaGFuYWx5c2lzdGFzay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9ib3QvcGF0Y2hhbmFseXNpc3Rhc2sucHkKaW5kZXggZjVlYWQ0Yy4uNzljM2IzMiAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9wYXRjaGFuYWx5c2lzdGFzay5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3BhdGNoYW5hbHlzaXN0YXNr
LnB5CkBAIC0xOTYsNiArMTk2LDI2IEBAIGNsYXNzIFBhdGNoQW5hbHlzaXNUYXNrKG9iamVjdCk6
CiAKICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUocmVzdWx0c19hcmNoaXZlLCBy
ZXN1bHRzLCBzY3JpcHRfZXJyb3IpCiAKKyAgICBkZWYgX3Nob3VsZF9kZWZlcl9wYXRjaF9vcl90
aHJvdyhzZWxmLCBmYWlsdXJlcywgcmVzdWx0c19hcmNoaXZlLCBzY3JpcHRfZXJyb3IsIGZhaWx1
cmVfaWQpOgorICAgICAgICBzZWxmLl9idWlsZF9hbmRfdGVzdF93aXRob3V0X3BhdGNoKCkKKyAg
ICAgICAgc2VsZi5fY2xlYW5fdHJlZV9yZXN1bHRzID0gc2VsZi5fZGVsZWdhdGUudGVzdF9yZXN1
bHRzKCkKKworICAgICAgICAjIElmIHRoZSBjbGVhbiB0cmVlIGV4Y2VlZGVkIHRoZSBmYWlsdXJl
IGxpbWl0LCB0aGVuIHdlIGNhbid0IGtub3cKKyAgICAgICAgIyB3aGV0aGVyIHRoZSBmYWlsdXJl
cyB3ZSBzYXcgYXJlIGV4cGVjdGVkLCBzbyB3ZSBtdXN0IGRlZmVyLgorICAgICAgICBpZiBzZWxm
Ll9jbGVhbl90cmVlX3Jlc3VsdHMuZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQoKToKKyAg
ICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgIyBJZiB0aGVyZSB3ZXJlIGZhaWx1cmVz
IHRoYXQgYXBwZWFyZWQgY29uc2lzdGVudGx5IHdpdGhvdXQgdGhlIHBhdGNoLCBidXQKKyAgICAg
ICAgIyB0aGV5IHdlcmUgbm90IHByZXNlbnQgd2l0aG91dCB0aGUgcGF0Y2gsIHRoZW4gd2UgbXVz
dCByZXBvcnQgdGhlIGZhaWx1cmUsIGFuZAorICAgICAgICAjIGlmIHJlcG9ydF9mYWlsdXJlIGVu
ZHMgdXAgcmV0dXJuaW5nIGZhbHNlLCB0aGVuIHdlIG11c3QgZGVmZXIuCisgICAgICAgIGlmIGZy
b3plbnNldChmYWlsdXJlcykgLSBmcm96ZW5zZXQoc2VsZi5fY2xlYW5fdHJlZV9yZXN1bHRzLmZh
aWxpbmdfdGVzdF9yZXN1bHRzKCkpOgorICAgICAgICAgICAgc2VsZi5mYWlsdXJlX3N0YXR1c19p
ZCA9IGZhaWx1cmVfaWQKKyAgICAgICAgICAgIHJldHVybiBub3Qgc2VsZi5yZXBvcnRfZmFpbHVy
ZShyZXN1bHRzX2FyY2hpdmUsIGZhaWx1cmVzLCBzY3JpcHRfZXJyb3IpCisKKyAgICAgICAgIyBJ
biB0aGlzIGNhc2UsIHdlIGtub3cgdGhhdCBhbGwgb2YgdGhlIGZhaWx1cmVzIHRoYXQgd2Ugc2F3
IHdpdGggdGhlIHBhdGNoIHdlcmUKKyAgICAgICAgIyBhbHNvIHByZXNlbnQgd2l0aG91dCB0aGUg
cGF0Y2gsIHNvIHdlIGRvbid0IG5lZWQgdG8gZGVmZXIuCisgICAgICAgIHJldHVybiBGYWxzZQor
CiAgICAgZGVmIF90ZXN0X3BhdGNoKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl90ZXN0KCk6CiAg
ICAgICAgICAgICByZXR1cm4gVHJ1ZQpAQCAtMjM2LDMzICsyNTYsMTcgQEAgY2xhc3MgUGF0Y2hB
bmFseXNpc1Rhc2sob2JqZWN0KToKIAogICAgICAgICAgICAgdGVzdHNfdGhhdF9jb25zaXN0ZW50
bHlfZmFpbGVkID0gZmlyc3RfZmFpbGluZ19yZXN1bHRzX3NldC5pbnRlcnNlY3Rpb24oc2Vjb25k
X2ZhaWxpbmdfcmVzdWx0c19zZXQpCiAgICAgICAgICAgICBpZiB0ZXN0c190aGF0X2NvbnNpc3Rl
bnRseV9mYWlsZWQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5fYnVpbGRfYW5kX3Rlc3Rfd2l0aG91
dF9wYXRjaCgpCi0gICAgICAgICAgICAgICAgc2VsZi5fY2xlYW5fdHJlZV9yZXN1bHRzID0gc2Vs
Zi5fZGVsZWdhdGUudGVzdF9yZXN1bHRzKCkKLSAgICAgICAgICAgICAgICB0ZXN0c190aGF0X2Zh
aWxlZF9vbl90cmVlID0gc2VsZi5fY2xlYW5fdHJlZV9yZXN1bHRzLmZhaWxpbmdfdGVzdF9yZXN1
bHRzKCkKLQotICAgICAgICAgICAgICAgIG5ld19mYWlsdXJlc19pbnRyb2R1Y2VkX2J5X3BhdGNo
ID0gdGVzdHNfdGhhdF9jb25zaXN0ZW50bHlfZmFpbGVkLmRpZmZlcmVuY2Uoc2V0KHRlc3RzX3Ro
YXRfZmFpbGVkX29uX3RyZWUpKQotICAgICAgICAgICAgICAgIGlmIG5ld19mYWlsdXJlc19pbnRy
b2R1Y2VkX2J5X3BhdGNoOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWx1cmVfc3RhdHVz
X2lkID0gZmlyc3RfZmFpbHVyZV9zdGF0dXNfaWQKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHNlbGYucmVwb3J0X2ZhaWx1cmUoZmlyc3RfcmVzdWx0c19hcmNoaXZlLCBuZXdfZmFpbHVyZXNf
aW50cm9kdWNlZF9ieV9wYXRjaCwgZmlyc3Rfc2NyaXB0X2Vycm9yKQorICAgICAgICAgICAgICAg
IGlmIHNlbGYuX3Nob3VsZF9kZWZlcl9wYXRjaF9vcl90aHJvdyh0ZXN0c190aGF0X2NvbnNpc3Rl
bnRseV9mYWlsZWQsIGZpcnN0X3Jlc3VsdHNfYXJjaGl2ZSwgZmlyc3Rfc2NyaXB0X2Vycm9yLCBm
aXJzdF9mYWlsdXJlX3N0YXR1c19pZCk6CisgICAgICAgICAgICAgICAgICAgICMgUmV0dXJuaW5n
IGZhbHNlIGNhdXNlcyB0aGUgcGF0Y2ggdG8gYmUgZGVmZXJlZC4KKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCiAKLSAgICAgICAgICAgICMgQXQgdGhpcyBwb2ludCB3ZSBrbm93IHRo
YXQgdGhlcmUgaXMgZmxha3luZXNzIHdpdGggdGhlIHBhdGNoIGFwcGxpZWQsIGJ1dCBubyBjb25z
aXN0ZW50IGZhaWx1cmVzCisgICAgICAgICAgICAjIEF0IHRoaXMgcG9pbnQgd2Uga25vdyB0aGF0
IGF0IGxlYXN0IG9uZSB0ZXN0IGZsYWtlZCwgYnV0IG5vIGNvbnNpc3RlbnQgZmFpbHVyZXMKICAg
ICAgICAgICAgICMgd2VyZSBpbnRyb2R1Y2VkLiBUaGlzIGlzIGEgYml0IG9mIGEgZ3JleS16b25l
LgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICAgICAgaWYgc2VsZi5fYnVpbGRfYW5k
X3Rlc3Rfd2l0aG91dF9wYXRjaCgpOgotICAgICAgICAgICAgIyBUaGUgZXJyb3IgZnJvbSB0aGUg
cHJldmlvdXMgLl90ZXN0KCkgcnVuIGlzIHJlYWwsIHJlcG9ydCBpdC4KLSAgICAgICAgICAgIHNl
bGYuZmFpbHVyZV9zdGF0dXNfaWQgPSBmaXJzdF9mYWlsdXJlX3N0YXR1c19pZAotICAgICAgICAg
ICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUoZmlyc3RfcmVzdWx0c19hcmNoaXZlLCBmaXJz
dF9yZXN1bHRzLCBmaXJzdF9zY3JpcHRfZXJyb3IpCi0KLSAgICAgICAgc2VsZi5fY2xlYW5fdHJl
ZV9yZXN1bHRzID0gc2VsZi5fZGVsZWdhdGUudGVzdF9yZXN1bHRzKCkKLQotICAgICAgICBpZiBz
ZWxmLl9jbGVhbl90cmVlX3Jlc3VsdHMuZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQoKToK
KyAgICAgICAgaWYgc2VsZi5fc2hvdWxkX2RlZmVyX3BhdGNoX29yX3Rocm93KGZpcnN0X3Jlc3Vs
dHMuZmFpbGluZ190ZXN0X3Jlc3VsdHMoKSwgZmlyc3RfcmVzdWx0c19hcmNoaXZlLCBmaXJzdF9z
Y3JpcHRfZXJyb3IsIGZpcnN0X2ZhaWx1cmVfc3RhdHVzX2lkKToKICAgICAgICAgICAgIHJldHVy
biBGYWxzZQogCi0gICAgICAgIGlmIHNldChmaXJzdF9yZXN1bHRzLmZhaWxpbmdfdGVzdHMoKSkg
LSBzZXQoc2VsZi5fY2xlYW5fdHJlZV9yZXN1bHRzLmZhaWxpbmdfdGVzdHMoKSk6Ci0gICAgICAg
ICAgICBzZWxmLmZhaWx1cmVfc3RhdHVzX2lkID0gZmlyc3RfZmFpbHVyZV9zdGF0dXNfaWQKLSAg
ICAgICAgICAgIHJldHVybiBzZWxmLnJlcG9ydF9mYWlsdXJlKGZpcnN0X3Jlc3VsdHNfYXJjaGl2
ZSwgZmlyc3RfcmVzdWx0cywgZmlyc3Rfc2NyaXB0X2Vycm9yKQotCiAgICAgICAgICMgQXQgdGhp
cyBwb2ludCwgd2Uga25vdyB0aGF0IHRoZSBmaXJzdCBhbmQgc2Vjb25kIHJ1bnMgaGFkIHRoZSBl
eGFjdCBzYW1lIGZhaWx1cmVzLAogICAgICAgICAjIGFuZCB0aGF0IHRob3NlIGZhaWx1cmVzIGFy
ZSBhbGwgcHJlc2VudCBvbiB0aGUgY2xlYW4gdHJlZSwgc28gd2UgY2FuIHNheSB3aXRoIGNlcnRh
aW50eQogICAgICAgICAjIHRoYXQgdGhlIHBhdGNoIGlzIGdvb2QuCi0tIAoxLjkuMyAoQXBwbGUg
R2l0LTUwKQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240900</attachid>
            <date>2014-11-03 19:13:59 -0800</date>
            <delta_ts>2014-11-05 11:44:14 -0800</delta_ts>
            <desc>Addresses comments</desc>
            <filename>0001-Remove-duplicate-code-from-PatchAnalysisTask._test_p.patch</filename>
            <type>text/plain</type>
            <size>5433</size>
            <attacher name="Jake Nielsen">jake.nielsen.webkit</attacher>
            
              <data encoding="base64">RnJvbSBjZTdkMWJiOWUxYTc4ZmEzMTExNWQwNTFlZThlM2Q3NmQ1ZTEwODQ0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWtlIE5pZWxzZW4gPGphY29iX25pZWxzZW5AYXBwbGUuY29t
PgpEYXRlOiBNb24sIDMgTm92IDIwMTQgMTk6MTM6MzggLTA4MDAKU3ViamVjdDogW1BBVENIXSBS
ZW1vdmUgZHVwbGljYXRlIGNvZGUgZnJvbSBQYXRjaEFuYWx5c2lzVGFzay5fdGVzdF9wYXRjaC4K
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgyMjkKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3BhdGNoYW5h
bHlzaXN0YXNrLnB5OgooUGF0Y2hBbmFseXNpc1Rhc2suX3Nob3VsZF9kZWZlcl9wYXRjaF9vcl90
aHJvdyk6CkNvbmRlbnNlcyBkdXBsaWNhdGUgY29kZSBpbnRvIF9zaG91bGRfZGVmZXJfcGF0Y2hf
b3JfdGhyb3cKKFBhdGNoQW5hbHlzaXNUYXNrLl90ZXN0X3BhdGNoKToKLS0tCiBUb29scy9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyICsrKysrKwogLi4u
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hhbmFseXNpc3Rhc2sucHkgfCA0NyArKysr
KysrKysrKy0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKyksIDIz
IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBlYjFhODA5Li40MzMwNGRkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTQtMTEtMDMgIEpha2Ug
TmllbHNlbiAgPGphY29iX25pZWxzZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBkdXBs
aWNhdGUgY29kZSBmcm9tIFBhdGNoQW5hbHlzaXNUYXNrLl90ZXN0X3BhdGNoLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4MjI5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvYm90L3BhdGNoYW5hbHlzaXN0YXNrLnB5OgorICAgICAgICAoUGF0Y2hBbmFseXNpc1Rh
c2suX3Nob3VsZF9kZWZlcl9wYXRjaF9vcl90aHJvdyk6CisgICAgICAgIENvbmRlbnNlcyBkdXBs
aWNhdGUgY29kZSBpbnRvIF9zaG91bGRfZGVmZXJfcGF0Y2hfb3JfdGhyb3cKKyAgICAgICAgKFBh
dGNoQW5hbHlzaXNUYXNrLl90ZXN0X3BhdGNoKToKKwogMjAxNC0xMC0zMCAgUm9oaXQgS3VtYXIg
IDxrdW1hci5yb2hpdEBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbR1RLXSBNaW5pYnJvd3NlciA6
IEFkZCB3aW5kb3cgZnVsbHNjcmVlbiBzdXBwb3J0IGZvciBNaW5pYnJvd3NlcgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9wYXRjaGFuYWx5c2lzdGFzay5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hhbmFseXNpc3Rhc2sucHkKaW5k
ZXggZjVlYWQ0Yy4uYjUwMGM5NSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2JvdC9wYXRjaGFuYWx5c2lzdGFzay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvYm90L3BhdGNoYW5hbHlzaXN0YXNrLnB5CkBAIC0xOTYsNiArMTk2LDI0IEBAIGNsYXNz
IFBhdGNoQW5hbHlzaXNUYXNrKG9iamVjdCk6CiAKICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0
X2ZhaWx1cmUocmVzdWx0c19hcmNoaXZlLCByZXN1bHRzLCBzY3JpcHRfZXJyb3IpCiAKKyAgICBk
ZWYgX3Nob3VsZF9kZWZlcl9wYXRjaF9vcl90aHJvdyhzZWxmLCBmYWlsdXJlc193aXRoX3BhdGNo
LCByZXN1bHRzX2FyY2hpdmVfZm9yX2ZhaWx1cmVzX3dpdGhfcGF0Y2gsIHNjcmlwdF9lcnJvciwg
ZmFpbHVyZV9pZCk6CisgICAgICAgIHNlbGYuX2J1aWxkX2FuZF90ZXN0X3dpdGhvdXRfcGF0Y2go
KQorICAgICAgICBzZWxmLl9jbGVhbl90cmVlX3Jlc3VsdHMgPSBzZWxmLl9kZWxlZ2F0ZS50ZXN0
X3Jlc3VsdHMoKQorCisgICAgICAgIGlmIHNlbGYuX2NsZWFuX3RyZWVfcmVzdWx0cy5kaWRfZXhj
ZWVkX3Rlc3RfZmFpbHVyZV9saW1pdCgpOgorICAgICAgICAgICAgIyBXZSBjYW5ub3Qga25vdyB3
aGV0aGVyIHRoZSBmYWlsdXJlcyB3ZSBzYXcgaW4gdGhlIHRlc3QgcnVucyB3aXRoIHRoZSBwYXRj
aCBhcmUgZXhwZWN0ZWQuCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIGZhaWx1
cmVzX2ludHJvZHVjZWRfYnlfcGF0Y2ggPSBmcm96ZW5zZXQoZmFpbHVyZXNfd2l0aF9wYXRjaCkg
LSBmcm96ZW5zZXQoc2VsZi5fY2xlYW5fdHJlZV9yZXN1bHRzLmZhaWxpbmdfdGVzdF9yZXN1bHRz
KCkpCisgICAgICAgIGlmIGZhaWx1cmVzX2ludHJvZHVjZWRfYnlfcGF0Y2g6CisgICAgICAgICAg
ICBzZWxmLmZhaWx1cmVfc3RhdHVzX2lkID0gZmFpbHVyZV9pZAorICAgICAgICAgICAgIyByZXBv
cnRfZmFpbHVyZSB3aWxsIGVpdGhlciB0aHJvdyBvciByZXR1cm4gZmFsc2UuCisgICAgICAgICAg
ICByZXR1cm4gbm90IHNlbGYucmVwb3J0X2ZhaWx1cmUocmVzdWx0c19hcmNoaXZlX2Zvcl9mYWls
dXJlc193aXRoX3BhdGNoLCBmYWlsdXJlc19pbnRyb2R1Y2VkX2J5X3BhdGNoLCBzY3JpcHRfZXJy
b3IpCisKKyAgICAgICAgIyBJbiB0aGlzIGNhc2UsIHdlIGtub3cgdGhhdCBhbGwgb2YgdGhlIGZh
aWx1cmVzIHRoYXQgd2Ugc2F3IHdpdGggdGhlIHBhdGNoIHdlcmUKKyAgICAgICAgIyBhbHNvIHBy
ZXNlbnQgd2l0aG91dCB0aGUgcGF0Y2gsIHNvIHdlIGRvbid0IG5lZWQgdG8gZGVmZXIuCisgICAg
ICAgIHJldHVybiBGYWxzZQorCiAgICAgZGVmIF90ZXN0X3BhdGNoKHNlbGYpOgogICAgICAgICBp
ZiBzZWxmLl90ZXN0KCk6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQpAQCAtMjM2LDMyICsyNTQs
MTUgQEAgY2xhc3MgUGF0Y2hBbmFseXNpc1Rhc2sob2JqZWN0KToKIAogICAgICAgICAgICAgdGVz
dHNfdGhhdF9jb25zaXN0ZW50bHlfZmFpbGVkID0gZmlyc3RfZmFpbGluZ19yZXN1bHRzX3NldC5p
bnRlcnNlY3Rpb24oc2Vjb25kX2ZhaWxpbmdfcmVzdWx0c19zZXQpCiAgICAgICAgICAgICBpZiB0
ZXN0c190aGF0X2NvbnNpc3RlbnRseV9mYWlsZWQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5fYnVp
bGRfYW5kX3Rlc3Rfd2l0aG91dF9wYXRjaCgpCi0gICAgICAgICAgICAgICAgc2VsZi5fY2xlYW5f
dHJlZV9yZXN1bHRzID0gc2VsZi5fZGVsZWdhdGUudGVzdF9yZXN1bHRzKCkKLSAgICAgICAgICAg
ICAgICB0ZXN0c190aGF0X2ZhaWxlZF9vbl90cmVlID0gc2VsZi5fY2xlYW5fdHJlZV9yZXN1bHRz
LmZhaWxpbmdfdGVzdF9yZXN1bHRzKCkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9zaG91bGRf
ZGVmZXJfcGF0Y2hfb3JfdGhyb3codGVzdHNfdGhhdF9jb25zaXN0ZW50bHlfZmFpbGVkLCBmaXJz
dF9yZXN1bHRzX2FyY2hpdmUsIGZpcnN0X3NjcmlwdF9lcnJvciwgZmlyc3RfZmFpbHVyZV9zdGF0
dXNfaWQpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UgICMgRGVmZXIgcGF0Y2gK
IAotICAgICAgICAgICAgICAgIG5ld19mYWlsdXJlc19pbnRyb2R1Y2VkX2J5X3BhdGNoID0gdGVz
dHNfdGhhdF9jb25zaXN0ZW50bHlfZmFpbGVkLmRpZmZlcmVuY2Uoc2V0KHRlc3RzX3RoYXRfZmFp
bGVkX29uX3RyZWUpKQotICAgICAgICAgICAgICAgIGlmIG5ld19mYWlsdXJlc19pbnRyb2R1Y2Vk
X2J5X3BhdGNoOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWx1cmVfc3RhdHVzX2lkID0g
Zmlyc3RfZmFpbHVyZV9zdGF0dXNfaWQKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu
cmVwb3J0X2ZhaWx1cmUoZmlyc3RfcmVzdWx0c19hcmNoaXZlLCBuZXdfZmFpbHVyZXNfaW50cm9k
dWNlZF9ieV9wYXRjaCwgZmlyc3Rfc2NyaXB0X2Vycm9yKQotCi0gICAgICAgICAgICAjIEF0IHRo
aXMgcG9pbnQgd2Uga25vdyB0aGF0IHRoZXJlIGlzIGZsYWt5bmVzcyB3aXRoIHRoZSBwYXRjaCBh
cHBsaWVkLCBidXQgbm8gY29uc2lzdGVudCBmYWlsdXJlcworICAgICAgICAgICAgIyBBdCB0aGlz
IHBvaW50IHdlIGtub3cgdGhhdCBhdCBsZWFzdCBvbmUgdGVzdCBmbGFrZWQsIGJ1dCBubyBjb25z
aXN0ZW50IGZhaWx1cmVzCiAgICAgICAgICAgICAjIHdlcmUgaW50cm9kdWNlZC4gVGhpcyBpcyBh
IGJpdCBvZiBhIGdyZXktem9uZS4KLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAg
IGlmIHNlbGYuX2J1aWxkX2FuZF90ZXN0X3dpdGhvdXRfcGF0Y2goKToKLSAgICAgICAgICAgICMg
VGhlIGVycm9yIGZyb20gdGhlIHByZXZpb3VzIC5fdGVzdCgpIHJ1biBpcyByZWFsLCByZXBvcnQg
aXQuCi0gICAgICAgICAgICBzZWxmLmZhaWx1cmVfc3RhdHVzX2lkID0gZmlyc3RfZmFpbHVyZV9z
dGF0dXNfaWQKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnJlcG9ydF9mYWlsdXJlKGZpcnN0X3Jl
c3VsdHNfYXJjaGl2ZSwgZmlyc3RfcmVzdWx0cywgZmlyc3Rfc2NyaXB0X2Vycm9yKQotCi0gICAg
ICAgIHNlbGYuX2NsZWFuX3RyZWVfcmVzdWx0cyA9IHNlbGYuX2RlbGVnYXRlLnRlc3RfcmVzdWx0
cygpCi0KLSAgICAgICAgaWYgc2VsZi5fY2xlYW5fdHJlZV9yZXN1bHRzLmRpZF9leGNlZWRfdGVz
dF9mYWlsdXJlX2xpbWl0KCk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAg
IHJldHVybiBGYWxzZSAgIyBEZWZlciBwYXRjaAogCi0gICAgICAgIGlmIHNldChmaXJzdF9yZXN1
bHRzLmZhaWxpbmdfdGVzdHMoKSkgLSBzZXQoc2VsZi5fY2xlYW5fdHJlZV9yZXN1bHRzLmZhaWxp
bmdfdGVzdHMoKSk6Ci0gICAgICAgICAgICBzZWxmLmZhaWx1cmVfc3RhdHVzX2lkID0gZmlyc3Rf
ZmFpbHVyZV9zdGF0dXNfaWQKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnJlcG9ydF9mYWlsdXJl
KGZpcnN0X3Jlc3VsdHNfYXJjaGl2ZSwgZmlyc3RfcmVzdWx0cywgZmlyc3Rfc2NyaXB0X2Vycm9y
KQorICAgICAgICBpZiBzZWxmLl9zaG91bGRfZGVmZXJfcGF0Y2hfb3JfdGhyb3coZmlyc3RfcmVz
dWx0cy5mYWlsaW5nX3Rlc3RfcmVzdWx0cygpLCBmaXJzdF9yZXN1bHRzX2FyY2hpdmUsIGZpcnN0
X3NjcmlwdF9lcnJvciwgZmlyc3RfZmFpbHVyZV9zdGF0dXNfaWQpOgorICAgICAgICAgICAgcmV0
dXJuIEZhbHNlICAjIERlZmVyIHBhdGNoCiAKICAgICAgICAgIyBBdCB0aGlzIHBvaW50LCB3ZSBr
bm93IHRoYXQgdGhlIGZpcnN0IGFuZCBzZWNvbmQgcnVucyBoYWQgdGhlIGV4YWN0IHNhbWUgZmFp
bHVyZXMsCiAgICAgICAgICMgYW5kIHRoYXQgdGhvc2UgZmFpbHVyZXMgYXJlIGFsbCBwcmVzZW50
IG9uIHRoZSBjbGVhbiB0cmVlLCBzbyB3ZSBjYW4gc2F5IHdpdGggY2VydGFpbnR5Ci0tIAoxLjku
MyAoQXBwbGUgR2l0LTUwKQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241045</attachid>
            <date>2014-11-05 11:44:14 -0800</date>
            <delta_ts>2014-11-05 18:07:10 -0800</delta_ts>
            <desc>Bug fix, and unit test addition.</desc>
            <filename>0001-Remove-duplicate-code-from-PatchAnalysisTask._test_p.patch</filename>
            <type>text/plain</type>
            <size>7107</size>
            <attacher name="Jake Nielsen">jake.nielsen.webkit</attacher>
            
              <data encoding="base64">RnJvbSBmYTljMTU3NThkZDEyMjIyODhmY2Q4OTIyNzUxN2NkNGYxNzMxOWQ1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWtlIE5pZWxzZW4gPGphY29iX25pZWxzZW5AYXBwbGUuY29t
PgpEYXRlOiBXZWQsIDUgTm92IDIwMTQgMTE6NDM6MTYgLTA4MDAKU3ViamVjdDogW1BBVENIXSBS
ZW1vdmUgZHVwbGljYXRlIGNvZGUgZnJvbSBQYXRjaEFuYWx5c2lzVGFzay5fdGVzdF9wYXRjaC4K
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgyMjkKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1
ZXVldGFza191bml0dGVzdC5weToKTWFrZXMgdW5pdCB0ZXN0cyBhbHNvIGNoZWNrIHRvIG1ha2Ug
c3VyZQp0YXNrLnJlc3VsdHNfZnJvbV9wYXRjaF90ZXN0X3J1bigpIGFuZAp0YXNrLnJlc3VsdHNf
ZnJvbV90ZXN0X3J1bl93aXRob3V0X3BhdGNoIHJldHVybiBpbnN0YW5jZXMgb2YKTGF5b3V0VGVz
dFJlc3VsdHMuCihDb21taXRRdWV1ZVRhc2tUZXN0Ll9ydW5fYW5kX2V4cGVjdF9wYXRjaF9hbmFs
eXNpc19yZXN1bHQpOgoqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hhbmFseXNpc3Rh
c2sucHk6CkNvbmRlbnNlcyBkdXBsaWNhdGUgY29kZSBpbnRvIF9zaG91bGRfZGVmZXJfcGF0Y2hf
b3JfdGhyb3cuCihQYXRjaEFuYWx5c2lzVGFzay5fc2hvdWxkX2RlZmVyX3BhdGNoX29yX3Rocm93
KToKKFBhdGNoQW5hbHlzaXNUYXNrLl90ZXN0X3BhdGNoKToKLS0tCiBUb29scy9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE4ICsrKysrKysrKwogLi4uL3dl
YmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5weSAgfCAgNCArKwogLi4u
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hhbmFseXNpc3Rhc2sucHkgfCA0NyArKysr
KysrKysrKy0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDIz
IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBlYjFhODA5Li44NzlmMzQ1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTQtMTEtMDUgIEpha2Ug
TmllbHNlbiAgPGphY29iX25pZWxzZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBkdXBs
aWNhdGUgY29kZSBmcm9tIFBhdGNoQW5hbHlzaXNUYXNrLl90ZXN0X3BhdGNoLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4MjI5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5weToKKyAgICAgICAgTWFrZXMgdW5p
dCB0ZXN0cyBhbHNvIGNoZWNrIHRvIG1ha2Ugc3VyZQorICAgICAgICB0YXNrLnJlc3VsdHNfZnJv
bV9wYXRjaF90ZXN0X3J1bigpIGFuZAorICAgICAgICB0YXNrLnJlc3VsdHNfZnJvbV90ZXN0X3J1
bl93aXRob3V0X3BhdGNoIHJldHVybiBpbnN0YW5jZXMgb2YKKyAgICAgICAgTGF5b3V0VGVzdFJl
c3VsdHMuCisgICAgICAgIChDb21taXRRdWV1ZVRhc2tUZXN0Ll9ydW5fYW5kX2V4cGVjdF9wYXRj
aF9hbmFseXNpc19yZXN1bHQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qv
cGF0Y2hhbmFseXNpc3Rhc2sucHk6CisgICAgICAgIENvbmRlbnNlcyBkdXBsaWNhdGUgY29kZSBp
bnRvIF9zaG91bGRfZGVmZXJfcGF0Y2hfb3JfdGhyb3cuCisgICAgICAgIChQYXRjaEFuYWx5c2lz
VGFzay5fc2hvdWxkX2RlZmVyX3BhdGNoX29yX3Rocm93KToKKyAgICAgICAgKFBhdGNoQW5hbHlz
aXNUYXNrLl90ZXN0X3BhdGNoKToKKwogMjAxNC0xMC0zMCAgUm9oaXQgS3VtYXIgIDxrdW1hci5y
b2hpdEBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbR1RLXSBNaW5pYnJvd3NlciA6IEFkZCB3aW5k
b3cgZnVsbHNjcmVlbiBzdXBwb3J0IGZvciBNaW5pYnJvd3NlcgpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5w
eQppbmRleCBkYzEzOWM4Li5kYjMzY2NkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5weQpAQCAtMTgy
LDYgKzE4MiwxMCBAQCBjbGFzcyBDb21taXRRdWV1ZVRhc2tUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgaWYgZXhwZWN0ZWRfYW5hbHlzaXNfcmVzdWx0ID09IFBhdGNoQW5hbHlzaXNS
ZXN1bHQuRkFJTDoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFzay5mYWlsdXJlX3N0
YXR1c19pZCwgZXhwZWN0ZWRfZmFpbHVyZV9zdGF0dXNfaWQpCiAKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0SXNJbnN0YW5jZSh0YXNrLnJlc3VsdHNfZnJvbV9wYXRjaF90ZXN0X3J1bihwYXRjaCks
IExheW91dFRlc3RSZXN1bHRzKQorICAgICAgICAgICAgaWYgZXhwZWN0X2NsZWFuX3Rlc3RzX3Rv
X3J1bjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodGFzay5yZXN1bHRz
X2Zyb21fdGVzdF9ydW5fd2l0aG91dF9wYXRjaChwYXRjaCksIExheW91dFRlc3RSZXN1bHRzKQor
CiAgICAgZGVmIF9ydW5fdGhyb3VnaF90YXNrKHNlbGYsIGNvbW1pdF9xdWV1ZSwgZXhwZWN0ZWRf
bG9ncywgZXhwZWN0ZWRfZXhjZXB0aW9uPU5vbmUsIGV4cGVjdF9yZXRyeT1GYWxzZSk6CiAgICAg
ICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKICAgICAgICAgdG9vbCA9IE1vY2tUb29sKGxvZ19leGVj
dXRpdmU9VHJ1ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qv
cGF0Y2hhbmFseXNpc3Rhc2sucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3Bh
dGNoYW5hbHlzaXN0YXNrLnB5CmluZGV4IGY1ZWFkNGMuLmY0MzhjZmEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hhbmFseXNpc3Rhc2sucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9wYXRjaGFuYWx5c2lzdGFzay5weQpAQCAt
MTk2LDYgKzE5NiwyNCBAQCBjbGFzcyBQYXRjaEFuYWx5c2lzVGFzayhvYmplY3QpOgogCiAgICAg
ICAgIHJldHVybiBzZWxmLnJlcG9ydF9mYWlsdXJlKHJlc3VsdHNfYXJjaGl2ZSwgcmVzdWx0cywg
c2NyaXB0X2Vycm9yKQogCisgICAgZGVmIF9zaG91bGRfZGVmZXJfcGF0Y2hfb3JfdGhyb3coc2Vs
ZiwgZmFpbHVyZXNfd2l0aF9wYXRjaCwgcmVzdWx0c19hcmNoaXZlX2Zvcl9mYWlsdXJlc193aXRo
X3BhdGNoLCBzY3JpcHRfZXJyb3IsIGZhaWx1cmVfaWQpOgorICAgICAgICBzZWxmLl9idWlsZF9h
bmRfdGVzdF93aXRob3V0X3BhdGNoKCkKKyAgICAgICAgc2VsZi5fY2xlYW5fdHJlZV9yZXN1bHRz
ID0gc2VsZi5fZGVsZWdhdGUudGVzdF9yZXN1bHRzKCkKKworICAgICAgICBpZiBzZWxmLl9jbGVh
bl90cmVlX3Jlc3VsdHMuZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQoKToKKyAgICAgICAg
ICAgICMgV2UgY2Fubm90IGtub3cgd2hldGhlciB0aGUgZmFpbHVyZXMgd2Ugc2F3IGluIHRoZSB0
ZXN0IHJ1bnMgd2l0aCB0aGUgcGF0Y2ggYXJlIGV4cGVjdGVkLgorICAgICAgICAgICAgcmV0dXJu
IFRydWUKKworICAgICAgICBmYWlsdXJlc19pbnRyb2R1Y2VkX2J5X3BhdGNoID0gZnJvemVuc2V0
KGZhaWx1cmVzX3dpdGhfcGF0Y2gpIC0gZnJvemVuc2V0KHNlbGYuX2NsZWFuX3RyZWVfcmVzdWx0
cy5mYWlsaW5nX3Rlc3RfcmVzdWx0cygpKQorICAgICAgICBpZiBmYWlsdXJlc19pbnRyb2R1Y2Vk
X2J5X3BhdGNoOgorICAgICAgICAgICAgc2VsZi5mYWlsdXJlX3N0YXR1c19pZCA9IGZhaWx1cmVf
aWQKKyAgICAgICAgICAgICMgcmVwb3J0X2ZhaWx1cmUgd2lsbCBlaXRoZXIgdGhyb3cgb3IgcmV0
dXJuIGZhbHNlLgorICAgICAgICAgICAgcmV0dXJuIG5vdCBzZWxmLnJlcG9ydF9mYWlsdXJlKHJl
c3VsdHNfYXJjaGl2ZV9mb3JfZmFpbHVyZXNfd2l0aF9wYXRjaCwgTGF5b3V0VGVzdFJlc3VsdHMo
ZmFpbHVyZXNfaW50cm9kdWNlZF9ieV9wYXRjaCwgZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGlt
aXQ9RmFsc2UpLCBzY3JpcHRfZXJyb3IpCisKKyAgICAgICAgIyBJbiB0aGlzIGNhc2UsIHdlIGtu
b3cgdGhhdCBhbGwgb2YgdGhlIGZhaWx1cmVzIHRoYXQgd2Ugc2F3IHdpdGggdGhlIHBhdGNoIHdl
cmUKKyAgICAgICAgIyBhbHNvIHByZXNlbnQgd2l0aG91dCB0aGUgcGF0Y2gsIHNvIHdlIGRvbid0
IG5lZWQgdG8gZGVmZXIuCisgICAgICAgIHJldHVybiBGYWxzZQorCiAgICAgZGVmIF90ZXN0X3Bh
dGNoKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl90ZXN0KCk6CiAgICAgICAgICAgICByZXR1cm4g
VHJ1ZQpAQCAtMjM2LDMyICsyNTQsMTUgQEAgY2xhc3MgUGF0Y2hBbmFseXNpc1Rhc2sob2JqZWN0
KToKIAogICAgICAgICAgICAgdGVzdHNfdGhhdF9jb25zaXN0ZW50bHlfZmFpbGVkID0gZmlyc3Rf
ZmFpbGluZ19yZXN1bHRzX3NldC5pbnRlcnNlY3Rpb24oc2Vjb25kX2ZhaWxpbmdfcmVzdWx0c19z
ZXQpCiAgICAgICAgICAgICBpZiB0ZXN0c190aGF0X2NvbnNpc3RlbnRseV9mYWlsZWQ6Ci0gICAg
ICAgICAgICAgICAgc2VsZi5fYnVpbGRfYW5kX3Rlc3Rfd2l0aG91dF9wYXRjaCgpCi0gICAgICAg
ICAgICAgICAgc2VsZi5fY2xlYW5fdHJlZV9yZXN1bHRzID0gc2VsZi5fZGVsZWdhdGUudGVzdF9y
ZXN1bHRzKCkKLSAgICAgICAgICAgICAgICB0ZXN0c190aGF0X2ZhaWxlZF9vbl90cmVlID0gc2Vs
Zi5fY2xlYW5fdHJlZV9yZXN1bHRzLmZhaWxpbmdfdGVzdF9yZXN1bHRzKCkKKyAgICAgICAgICAg
ICAgICBpZiBzZWxmLl9zaG91bGRfZGVmZXJfcGF0Y2hfb3JfdGhyb3codGVzdHNfdGhhdF9jb25z
aXN0ZW50bHlfZmFpbGVkLCBmaXJzdF9yZXN1bHRzX2FyY2hpdmUsIGZpcnN0X3NjcmlwdF9lcnJv
ciwgZmlyc3RfZmFpbHVyZV9zdGF0dXNfaWQpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
RmFsc2UgICMgRGVmZXIgcGF0Y2gKIAotICAgICAgICAgICAgICAgIG5ld19mYWlsdXJlc19pbnRy
b2R1Y2VkX2J5X3BhdGNoID0gdGVzdHNfdGhhdF9jb25zaXN0ZW50bHlfZmFpbGVkLmRpZmZlcmVu
Y2Uoc2V0KHRlc3RzX3RoYXRfZmFpbGVkX29uX3RyZWUpKQotICAgICAgICAgICAgICAgIGlmIG5l
d19mYWlsdXJlc19pbnRyb2R1Y2VkX2J5X3BhdGNoOgotICAgICAgICAgICAgICAgICAgICBzZWxm
LmZhaWx1cmVfc3RhdHVzX2lkID0gZmlyc3RfZmFpbHVyZV9zdGF0dXNfaWQKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUoZmlyc3RfcmVzdWx0c19hcmNoaXZl
LCBuZXdfZmFpbHVyZXNfaW50cm9kdWNlZF9ieV9wYXRjaCwgZmlyc3Rfc2NyaXB0X2Vycm9yKQot
Ci0gICAgICAgICAgICAjIEF0IHRoaXMgcG9pbnQgd2Uga25vdyB0aGF0IHRoZXJlIGlzIGZsYWt5
bmVzcyB3aXRoIHRoZSBwYXRjaCBhcHBsaWVkLCBidXQgbm8gY29uc2lzdGVudCBmYWlsdXJlcwor
ICAgICAgICAgICAgIyBBdCB0aGlzIHBvaW50IHdlIGtub3cgdGhhdCBhdCBsZWFzdCBvbmUgdGVz
dCBmbGFrZWQsIGJ1dCBubyBjb25zaXN0ZW50IGZhaWx1cmVzCiAgICAgICAgICAgICAjIHdlcmUg
aW50cm9kdWNlZC4gVGhpcyBpcyBhIGJpdCBvZiBhIGdyZXktem9uZS4KLSAgICAgICAgICAgIHJl
dHVybiBGYWxzZQotCi0gICAgICAgIGlmIHNlbGYuX2J1aWxkX2FuZF90ZXN0X3dpdGhvdXRfcGF0
Y2goKToKLSAgICAgICAgICAgICMgVGhlIGVycm9yIGZyb20gdGhlIHByZXZpb3VzIC5fdGVzdCgp
IHJ1biBpcyByZWFsLCByZXBvcnQgaXQuCi0gICAgICAgICAgICBzZWxmLmZhaWx1cmVfc3RhdHVz
X2lkID0gZmlyc3RfZmFpbHVyZV9zdGF0dXNfaWQKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnJl
cG9ydF9mYWlsdXJlKGZpcnN0X3Jlc3VsdHNfYXJjaGl2ZSwgZmlyc3RfcmVzdWx0cywgZmlyc3Rf
c2NyaXB0X2Vycm9yKQotCi0gICAgICAgIHNlbGYuX2NsZWFuX3RyZWVfcmVzdWx0cyA9IHNlbGYu
X2RlbGVnYXRlLnRlc3RfcmVzdWx0cygpCi0KLSAgICAgICAgaWYgc2VsZi5fY2xlYW5fdHJlZV9y
ZXN1bHRzLmRpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0KCk6Ci0gICAgICAgICAgICByZXR1
cm4gRmFsc2UKKyAgICAgICAgICAgIHJldHVybiBGYWxzZSAgIyBEZWZlciBwYXRjaAogCi0gICAg
ICAgIGlmIHNldChmaXJzdF9yZXN1bHRzLmZhaWxpbmdfdGVzdHMoKSkgLSBzZXQoc2VsZi5fY2xl
YW5fdHJlZV9yZXN1bHRzLmZhaWxpbmdfdGVzdHMoKSk6Ci0gICAgICAgICAgICBzZWxmLmZhaWx1
cmVfc3RhdHVzX2lkID0gZmlyc3RfZmFpbHVyZV9zdGF0dXNfaWQKLSAgICAgICAgICAgIHJldHVy
biBzZWxmLnJlcG9ydF9mYWlsdXJlKGZpcnN0X3Jlc3VsdHNfYXJjaGl2ZSwgZmlyc3RfcmVzdWx0
cywgZmlyc3Rfc2NyaXB0X2Vycm9yKQorICAgICAgICBpZiBzZWxmLl9zaG91bGRfZGVmZXJfcGF0
Y2hfb3JfdGhyb3coZmlyc3RfcmVzdWx0cy5mYWlsaW5nX3Rlc3RfcmVzdWx0cygpLCBmaXJzdF9y
ZXN1bHRzX2FyY2hpdmUsIGZpcnN0X3NjcmlwdF9lcnJvciwgZmlyc3RfZmFpbHVyZV9zdGF0dXNf
aWQpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlICAjIERlZmVyIHBhdGNoCiAKICAgICAgICAg
IyBBdCB0aGlzIHBvaW50LCB3ZSBrbm93IHRoYXQgdGhlIGZpcnN0IGFuZCBzZWNvbmQgcnVucyBo
YWQgdGhlIGV4YWN0IHNhbWUgZmFpbHVyZXMsCiAgICAgICAgICMgYW5kIHRoYXQgdGhvc2UgZmFp
bHVyZXMgYXJlIGFsbCBwcmVzZW50IG9uIHRoZSBjbGVhbiB0cmVlLCBzbyB3ZSBjYW4gc2F5IHdp
dGggY2VydGFpbnR5Ci0tIAoxLjkuMyAoQXBwbGUgR2l0LTUwKQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241078</attachid>
            <date>2014-11-05 18:07:10 -0800</date>
            <delta_ts>2014-11-06 13:56:09 -0800</delta_ts>
            <desc>Removes results_from_test_run_without_patch altogether.</desc>
            <filename>0001-Remove-duplicate-code-from-PatchAnalysisTask._test_p.patch</filename>
            <type>text/plain</type>
            <size>15772</size>
            <attacher name="Jake Nielsen">jake.nielsen.webkit</attacher>
            
              <data encoding="base64">RnJvbSAwYjkyYmIyNGQ2ZTY1ZjM1OGViNzI1ZjJlNjMyZjAyZGVhOTgxOGUzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWtlIE5pZWxzZW4gPGphY29iX25pZWxzZW5AYXBwbGUuY29t
PgpEYXRlOiBXZWQsIDUgTm92IDIwMTQgMTg6MDU6NDUgLTA4MDAKU3ViamVjdDogW1BBVENIXSBS
ZW1vdmUgZHVwbGljYXRlIGNvZGUgZnJvbSBQYXRjaEFuYWx5c2lzVGFzay5fdGVzdF9wYXRjaC4K
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgyMjkKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1
ZXVldGFza191bml0dGVzdC5weToKTWFrZXMgdW5pdCB0ZXN0cyBhbHNvIGNoZWNrIHRvIG1ha2Ug
c3VyZQp0YXNrLnJlc3VsdHNfZnJvbV9wYXRjaF90ZXN0X3J1bigpIGFuZAp0YXNrLnJlc3VsdHNf
ZnJvbV90ZXN0X3J1bl93aXRob3V0X3BhdGNoIHJldHVybiBpbnN0YW5jZXMgb2YKTGF5b3V0VGVz
dFJlc3VsdHMuCihDb21taXRRdWV1ZVRhc2tUZXN0Ll9ydW5fYW5kX2V4cGVjdF9wYXRjaF9hbmFs
eXNpc19yZXN1bHQpOgoqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hhbmFseXNpc3Rh
c2sucHk6CkNvbmRlbnNlcyBkdXBsaWNhdGUgY29kZSBpbnRvIF9zaG91bGRfZGVmZXJfcGF0Y2hf
b3JfdGhyb3csIGFuZApyZW1vdmVzIHRoZSBub3ctdW51c2VkIF9jbGVhbl90cmVlX3Jlc3VsdHMg
bWVtYmVyLgooUGF0Y2hBbmFseXNpc1Rhc2suX19pbml0X18pOgooUGF0Y2hBbmFseXNpc1Rhc2su
X2NvbnRpbnVlX3Rlc3RpbmdfcGF0Y2hfdGhhdF9leGNlZWRlZF9mYWlsdXJlX2xpbWl0X29uX2Zp
cnN0X29yX3NlY29uZF90cnkpOgooUGF0Y2hBbmFseXNpc1Rhc2suX3Nob3VsZF9kZWZlcl9wYXRj
aF9vcl90aHJvdyk6CihQYXRjaEFuYWx5c2lzVGFzay5fdGVzdF9wYXRjaCk6CihQYXRjaEFuYWx5
c2lzVGFzay5yZXN1bHRzX2Zyb21fcGF0Y2hfdGVzdF9ydW4pOgooUGF0Y2hBbmFseXNpc1Rhc2su
cmVzdWx0c19mcm9tX3Rlc3RfcnVuX3dpdGhvdXRfcGF0Y2gpOiBEZWxldGVkLgoqIFNjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0ucHk6ClJlbW92ZXMgbmVl
ZGxlc3MgY2FsbCB0byByZXN1bHRzX2Zyb21fdGVzdF9ydW5fd2l0aG91dF9wYXRjaAooQWJzdHJh
Y3RFYXJseVdhcm5pbmdTeXN0ZW0uX2ZhaWxpbmdfdGVzdHNfbWVzc2FnZSk6CiogU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbV91bml0dGVzdC5weToKQ2hh
bmdlcyBvcmRlciBvZiB0ZXN0IGZhaWx1cmUgbWVzc2FnZXMgdG8gYmUgaW4gdGhlIG9yZGVyIHRo
YXQgdGhleQphcHBlYXIuCihBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbVRlc3QudGVzdF9mYWls
aW5nX3Rlc3RzX21lc3NhZ2UpOgoqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1
ZXMucHk6ClJlbW92ZXMgbmVlZGxlc3MgY2FsbCB0byByZXN1bHRzX2Zyb21fdGVzdF9ydW5fd2l0
aG91dF9wYXRjaAooQ29tbWl0UXVldWUuX2ZhaWxpbmdfdGVzdHNfbWVzc2FnZSk6CiogU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weToKKE1vY2tDb21taXRR
dWV1ZVRhc2sucmVzdWx0c19mcm9tX3BhdGNoX3Rlc3RfcnVuKToKKE1vY2tDb21taXRRdWV1ZVRh
c2sucmVzdWx0c19mcm9tX3Rlc3RfcnVuX3dpdGhvdXRfcGF0Y2gpOiBEZWxldGVkLgotLS0KIFRv
b2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzYgKysr
KysrKysrKysrKysKIC4uLi93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRl
c3QucHkgIHwgIDEgKwogLi4uL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hhbmFseXNp
c3Rhc2sucHkgfCA1NSArKysrKysrKysrLS0tLS0tLS0tLS0tCiAuLi4vd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0ucHkgICB8IDExICsrLS0tCiAuLi4vdG9vbC9jb21t
YW5kcy9lYXJseXdhcm5pbmdzeXN0ZW1fdW5pdHRlc3QucHkgICB8ICAzICstCiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5ICAgICB8IDEyICsrLS0tCiAuLi4v
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkgICAgICB8ICAzIC0tCiA3
IGZpbGVzIGNoYW5nZWQsIDcxIGluc2VydGlvbnMoKyksIDUwIGRlbGV0aW9ucygtKQoKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlYjFhODA5Li4w
Y2I5ZDM1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzkgQEAKKzIwMTQtMTEtMDUgIEpha2UgTmllbHNlbiAgPGphY29iX25pZWxz
ZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBkdXBsaWNhdGUgY29kZSBmcm9tIFBhdGNo
QW5hbHlzaXNUYXNrLl90ZXN0X3BhdGNoLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM4MjI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVl
dGFza191bml0dGVzdC5weToKKyAgICAgICAgTWFrZXMgdW5pdCB0ZXN0cyBhbHNvIGNoZWNrIHRv
IG1ha2Ugc3VyZQorICAgICAgICB0YXNrLnJlc3VsdHNfZnJvbV9wYXRjaF90ZXN0X3J1bigpIGFu
ZAorICAgICAgICB0YXNrLnJlc3VsdHNfZnJvbV90ZXN0X3J1bl93aXRob3V0X3BhdGNoIHJldHVy
biBpbnN0YW5jZXMgb2YKKyAgICAgICAgTGF5b3V0VGVzdFJlc3VsdHMuCisgICAgICAgIChDb21t
aXRRdWV1ZVRhc2tUZXN0Ll9ydW5fYW5kX2V4cGVjdF9wYXRjaF9hbmFseXNpc19yZXN1bHQpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hhbmFseXNpc3Rhc2sucHk6
CisgICAgICAgIENvbmRlbnNlcyBkdXBsaWNhdGUgY29kZSBpbnRvIF9zaG91bGRfZGVmZXJfcGF0
Y2hfb3JfdGhyb3csIGFuZAorICAgICAgICByZW1vdmVzIHRoZSBub3ctdW51c2VkIF9jbGVhbl90
cmVlX3Jlc3VsdHMgbWVtYmVyLgorICAgICAgICAoUGF0Y2hBbmFseXNpc1Rhc2suX19pbml0X18p
OgorICAgICAgICAoUGF0Y2hBbmFseXNpc1Rhc2suX2NvbnRpbnVlX3Rlc3RpbmdfcGF0Y2hfdGhh
dF9leGNlZWRlZF9mYWlsdXJlX2xpbWl0X29uX2ZpcnN0X29yX3NlY29uZF90cnkpOgorICAgICAg
ICAoUGF0Y2hBbmFseXNpc1Rhc2suX3Nob3VsZF9kZWZlcl9wYXRjaF9vcl90aHJvdyk6CisgICAg
ICAgIChQYXRjaEFuYWx5c2lzVGFzay5fdGVzdF9wYXRjaCk6CisgICAgICAgIChQYXRjaEFuYWx5
c2lzVGFzay5yZXN1bHRzX2Zyb21fcGF0Y2hfdGVzdF9ydW4pOgorICAgICAgICAoUGF0Y2hBbmFs
eXNpc1Rhc2sucmVzdWx0c19mcm9tX3Rlc3RfcnVuX3dpdGhvdXRfcGF0Y2gpOiBEZWxldGVkLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0
ZW0ucHk6CisgICAgICAgIFJlbW92ZXMgbmVlZGxlc3MgY2FsbCB0byByZXN1bHRzX2Zyb21fdGVz
dF9ydW5fd2l0aG91dF9wYXRjaAorICAgICAgICAoQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0u
X2ZhaWxpbmdfdGVzdHNfbWVzc2FnZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbV91bml0dGVzdC5weToKKyAgICAgICAgQ2hhbmdl
cyBvcmRlciBvZiB0ZXN0IGZhaWx1cmUgbWVzc2FnZXMgdG8gYmUgaW4gdGhlIG9yZGVyIHRoYXQg
dGhleQorICAgICAgICBhcHBlYXIuCisgICAgICAgIChBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3Rl
bVRlc3QudGVzdF9mYWlsaW5nX3Rlc3RzX21lc3NhZ2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHk6CisgICAgICAgIFJlbW92ZXMgbmVlZGxlc3Mg
Y2FsbCB0byByZXN1bHRzX2Zyb21fdGVzdF9ydW5fd2l0aG91dF9wYXRjaAorICAgICAgICAoQ29t
bWl0UXVldWUuX2ZhaWxpbmdfdGVzdHNfbWVzc2FnZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weToKKyAgICAgICAgKE1vY2tDb21t
aXRRdWV1ZVRhc2sucmVzdWx0c19mcm9tX3BhdGNoX3Rlc3RfcnVuKToKKyAgICAgICAgKE1vY2tD
b21taXRRdWV1ZVRhc2sucmVzdWx0c19mcm9tX3Rlc3RfcnVuX3dpdGhvdXRfcGF0Y2gpOiBEZWxl
dGVkLgorCiAyMDE0LTEwLTMwICBSb2hpdCBLdW1hciAgPGt1bWFyLnJvaGl0QHNhbXN1bmcuY29t
PgogCiAgICAgICAgIFtHVEtdIE1pbmlicm93c2VyIDogQWRkIHdpbmRvdyBmdWxsc2NyZWVuIHN1
cHBvcnQgZm9yIE1pbmlicm93c2VyCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5CmluZGV4IGRjMTM5Yzgu
LjMwMmE1MzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29t
bWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9ib3QvY29tbWl0cXVldWV0YXNrX3VuaXR0ZXN0LnB5CkBAIC0xODEsNiArMTgxLDcgQEAgY2xh
c3MgQ29tbWl0UXVldWVUYXNrVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICMgVGhl
IGZhaWx1cmUgc3RhdHVzIG9ubHkgbWVhbnMgYW55dGhpbmcgaWYgd2UgYWN0dWFsbHkgZmFpbGVk
LgogICAgICAgICBpZiBleHBlY3RlZF9hbmFseXNpc19yZXN1bHQgPT0gUGF0Y2hBbmFseXNpc1Jl
c3VsdC5GQUlMOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YXNrLmZhaWx1cmVfc3Rh
dHVzX2lkLCBleHBlY3RlZF9mYWlsdXJlX3N0YXR1c19pZCkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0SXNJbnN0YW5jZSh0YXNrLnJlc3VsdHNfZnJvbV9wYXRjaF90ZXN0X3J1bihwYXRjaCksIExh
eW91dFRlc3RSZXN1bHRzKQogCiAgICAgZGVmIF9ydW5fdGhyb3VnaF90YXNrKHNlbGYsIGNvbW1p
dF9xdWV1ZSwgZXhwZWN0ZWRfbG9ncywgZXhwZWN0ZWRfZXhjZXB0aW9uPU5vbmUsIGV4cGVjdF9y
ZXRyeT1GYWxzZSk6CiAgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hhbmFseXNpc3Rhc2sucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3BhdGNoYW5hbHlzaXN0YXNrLnB5CmluZGV4IGY1
ZWFkNGMuLjZkYzA4M2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9i
b3QvcGF0Y2hhbmFseXNpc3Rhc2sucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2JvdC9wYXRjaGFuYWx5c2lzdGFzay5weQpAQCAtODIsNyArODIsNiBAQCBjbGFzcyBQYXRjaEFu
YWx5c2lzVGFzayhvYmplY3QpOgogICAgICAgICBzZWxmLl9zY3JpcHRfZXJyb3IgPSBOb25lCiAg
ICAgICAgIHNlbGYuX3Jlc3VsdHNfYXJjaGl2ZV9mcm9tX3BhdGNoX3Rlc3RfcnVuID0gTm9uZQog
ICAgICAgICBzZWxmLl9yZXN1bHRzX2Zyb21fcGF0Y2hfdGVzdF9ydW4gPSBOb25lCi0gICAgICAg
IHNlbGYuX2NsZWFuX3RyZWVfcmVzdWx0cyA9IE5vbmUKIAogICAgIGRlZiBfcnVuX2NvbW1hbmQo
c2VsZiwgY29tbWFuZCwgc3VjY2Vzc19tZXNzYWdlLCBmYWlsdXJlX21lc3NhZ2UpOgogICAgICAg
ICB0cnk6CkBAIC0xODUsMTcgKzE4NCwzNCBAQCBjbGFzcyBQYXRjaEFuYWx5c2lzVGFzayhvYmpl
Y3QpOgogCiAgICAgZGVmIF9jb250aW51ZV90ZXN0aW5nX3BhdGNoX3RoYXRfZXhjZWVkZWRfZmFp
bHVyZV9saW1pdF9vbl9maXJzdF9vcl9zZWNvbmRfdHJ5KHNlbGYsIHJlc3VsdHMsIHJlc3VsdHNf
YXJjaGl2ZSwgc2NyaXB0X2Vycm9yKToKICAgICAgICAgc2VsZi5fYnVpbGRfYW5kX3Rlc3Rfd2l0
aG91dF9wYXRjaCgpCi0gICAgICAgIHNlbGYuX2NsZWFuX3RyZWVfcmVzdWx0cyA9IHNlbGYuX2Rl
bGVnYXRlLnRlc3RfcmVzdWx0cygpCiAKICAgICAgICAgIyBJZiB3ZSd2ZSBtYWRlIGl0IGhlcmUs
IHRoZW4gbWFueSAoNTAwKSB0ZXN0cyBhcmUgZmFpbGluZyB3aXRoIHRoZSBwYXRjaCBhcHBsaWVk
LCBidXQKICAgICAgICAgIyBpZiB0aGUgY2xlYW4gdHJlZSBpcyBhbHNvIGZhaWxpbmcgbWFueSB0
ZXN0cywgZXZlbiBpZiBpdCdzIG5vdCBxdWl0ZSBhcyBtYW55ICg0OTUpLAogICAgICAgICAjIHRo
ZW4gd2UgY2FuJ3QgYmUgY2VydGFpbiB0aGF0IHRoZSBkaXNjcmVwYW5jeSBpc24ndCBkdWUgdG8g
Zmxha2luZXNzLCBhbmQgaGVuY2Ugd2UgbXVzdAogICAgICAgICAjIGRlZmVyIGp1ZGdlbWVudC4K
LSAgICAgICAgaWYgKGxlbihyZXN1bHRzLmZhaWxpbmdfdGVzdHMoKSkgLSBsZW4oc2VsZi5fY2xl
YW5fdHJlZV9yZXN1bHRzLmZhaWxpbmdfdGVzdHMoKSkpIDw9IDU6CisgICAgICAgIGlmIChsZW4o
cmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkpIC0gbGVuKHNlbGYuX2RlbGVnYXRlLnRlc3RfcmVzdWx0
cygpLmZhaWxpbmdfdGVzdHMoKSkpIDw9IDU6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAog
ICAgICAgICByZXR1cm4gc2VsZi5yZXBvcnRfZmFpbHVyZShyZXN1bHRzX2FyY2hpdmUsIHJlc3Vs
dHMsIHNjcmlwdF9lcnJvcikKIAorICAgIGRlZiBfc2hvdWxkX2RlZmVyX3BhdGNoX29yX3Rocm93
KHNlbGYsIGZhaWx1cmVzX3dpdGhfcGF0Y2gsIHJlc3VsdHNfYXJjaGl2ZV9mb3JfZmFpbHVyZXNf
d2l0aF9wYXRjaCwgc2NyaXB0X2Vycm9yLCBmYWlsdXJlX2lkKToKKyAgICAgICAgc2VsZi5fYnVp
bGRfYW5kX3Rlc3Rfd2l0aG91dF9wYXRjaCgpCisgICAgICAgIGNsZWFuX3RyZWVfcmVzdWx0cyA9
IHNlbGYuX2RlbGVnYXRlLnRlc3RfcmVzdWx0cygpCisKKyAgICAgICAgaWYgY2xlYW5fdHJlZV9y
ZXN1bHRzLmRpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0KCk6CisgICAgICAgICAgICAjIFdl
IGNhbm5vdCBrbm93IHdoZXRoZXIgdGhlIGZhaWx1cmVzIHdlIHNhdyBpbiB0aGUgdGVzdCBydW5z
IHdpdGggdGhlIHBhdGNoIGFyZSBleHBlY3RlZC4KKyAgICAgICAgICAgIHJldHVybiBUcnVlCisK
KyAgICAgICAgZmFpbHVyZXNfaW50cm9kdWNlZF9ieV9wYXRjaCA9IGZyb3plbnNldChmYWlsdXJl
c193aXRoX3BhdGNoKSAtIGZyb3plbnNldChjbGVhbl90cmVlX3Jlc3VsdHMuZmFpbGluZ190ZXN0
X3Jlc3VsdHMoKSkKKyAgICAgICAgaWYgZmFpbHVyZXNfaW50cm9kdWNlZF9ieV9wYXRjaDoKKyAg
ICAgICAgICAgIHNlbGYuZmFpbHVyZV9zdGF0dXNfaWQgPSBmYWlsdXJlX2lkCisgICAgICAgICAg
ICAjIHJlcG9ydF9mYWlsdXJlIHdpbGwgZWl0aGVyIHRocm93IG9yIHJldHVybiBmYWxzZS4KKyAg
ICAgICAgICAgIHJldHVybiBub3Qgc2VsZi5yZXBvcnRfZmFpbHVyZShyZXN1bHRzX2FyY2hpdmVf
Zm9yX2ZhaWx1cmVzX3dpdGhfcGF0Y2gsIExheW91dFRlc3RSZXN1bHRzKGZhaWx1cmVzX2ludHJv
ZHVjZWRfYnlfcGF0Y2gsIGRpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0PUZhbHNlKSwgc2Ny
aXB0X2Vycm9yKQorCisgICAgICAgICMgSW4gdGhpcyBjYXNlLCB3ZSBrbm93IHRoYXQgYWxsIG9m
IHRoZSBmYWlsdXJlcyB0aGF0IHdlIHNhdyB3aXRoIHRoZSBwYXRjaCB3ZXJlCisgICAgICAgICMg
YWxzbyBwcmVzZW50IHdpdGhvdXQgdGhlIHBhdGNoLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGRlZmVy
LgorICAgICAgICByZXR1cm4gRmFsc2UKKwogICAgIGRlZiBfdGVzdF9wYXRjaChzZWxmKToKICAg
ICAgICAgaWYgc2VsZi5fdGVzdCgpOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKQEAgLTIzNiwz
MiArMjUyLDE1IEBAIGNsYXNzIFBhdGNoQW5hbHlzaXNUYXNrKG9iamVjdCk6CiAKICAgICAgICAg
ICAgIHRlc3RzX3RoYXRfY29uc2lzdGVudGx5X2ZhaWxlZCA9IGZpcnN0X2ZhaWxpbmdfcmVzdWx0
c19zZXQuaW50ZXJzZWN0aW9uKHNlY29uZF9mYWlsaW5nX3Jlc3VsdHNfc2V0KQogICAgICAgICAg
ICAgaWYgdGVzdHNfdGhhdF9jb25zaXN0ZW50bHlfZmFpbGVkOgotICAgICAgICAgICAgICAgIHNl
bGYuX2J1aWxkX2FuZF90ZXN0X3dpdGhvdXRfcGF0Y2goKQotICAgICAgICAgICAgICAgIHNlbGYu
X2NsZWFuX3RyZWVfcmVzdWx0cyA9IHNlbGYuX2RlbGVnYXRlLnRlc3RfcmVzdWx0cygpCi0gICAg
ICAgICAgICAgICAgdGVzdHNfdGhhdF9mYWlsZWRfb25fdHJlZSA9IHNlbGYuX2NsZWFuX3RyZWVf
cmVzdWx0cy5mYWlsaW5nX3Rlc3RfcmVzdWx0cygpCi0KLSAgICAgICAgICAgICAgICBuZXdfZmFp
bHVyZXNfaW50cm9kdWNlZF9ieV9wYXRjaCA9IHRlc3RzX3RoYXRfY29uc2lzdGVudGx5X2ZhaWxl
ZC5kaWZmZXJlbmNlKHNldCh0ZXN0c190aGF0X2ZhaWxlZF9vbl90cmVlKSkKLSAgICAgICAgICAg
ICAgICBpZiBuZXdfZmFpbHVyZXNfaW50cm9kdWNlZF9ieV9wYXRjaDoKLSAgICAgICAgICAgICAg
ICAgICAgc2VsZi5mYWlsdXJlX3N0YXR1c19pZCA9IGZpcnN0X2ZhaWx1cmVfc3RhdHVzX2lkCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnJlcG9ydF9mYWlsdXJlKGZpcnN0X3Jlc3Vs
dHNfYXJjaGl2ZSwgbmV3X2ZhaWx1cmVzX2ludHJvZHVjZWRfYnlfcGF0Y2gsIGZpcnN0X3Njcmlw
dF9lcnJvcikKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9zaG91bGRfZGVmZXJfcGF0Y2hfb3Jf
dGhyb3codGVzdHNfdGhhdF9jb25zaXN0ZW50bHlfZmFpbGVkLCBmaXJzdF9yZXN1bHRzX2FyY2hp
dmUsIGZpcnN0X3NjcmlwdF9lcnJvciwgZmlyc3RfZmFpbHVyZV9zdGF0dXNfaWQpOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gRmFsc2UgICMgRGVmZXIgcGF0Y2gKIAotICAgICAgICAgICAg
IyBBdCB0aGlzIHBvaW50IHdlIGtub3cgdGhhdCB0aGVyZSBpcyBmbGFreW5lc3Mgd2l0aCB0aGUg
cGF0Y2ggYXBwbGllZCwgYnV0IG5vIGNvbnNpc3RlbnQgZmFpbHVyZXMKKyAgICAgICAgICAgICMg
QXQgdGhpcyBwb2ludCB3ZSBrbm93IHRoYXQgYXQgbGVhc3Qgb25lIHRlc3QgZmxha2VkLCBidXQg
bm8gY29uc2lzdGVudCBmYWlsdXJlcwogICAgICAgICAgICAgIyB3ZXJlIGludHJvZHVjZWQuIFRo
aXMgaXMgYSBiaXQgb2YgYSBncmV5LXpvbmUuCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQot
ICAgICAgICBpZiBzZWxmLl9idWlsZF9hbmRfdGVzdF93aXRob3V0X3BhdGNoKCk6Ci0gICAgICAg
ICAgICAjIFRoZSBlcnJvciBmcm9tIHRoZSBwcmV2aW91cyAuX3Rlc3QoKSBydW4gaXMgcmVhbCwg
cmVwb3J0IGl0LgotICAgICAgICAgICAgc2VsZi5mYWlsdXJlX3N0YXR1c19pZCA9IGZpcnN0X2Zh
aWx1cmVfc3RhdHVzX2lkCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5yZXBvcnRfZmFpbHVyZShm
aXJzdF9yZXN1bHRzX2FyY2hpdmUsIGZpcnN0X3Jlc3VsdHMsIGZpcnN0X3NjcmlwdF9lcnJvcikK
KyAgICAgICAgICAgIHJldHVybiBGYWxzZSAgIyBEZWZlciBwYXRjaAogCi0gICAgICAgIHNlbGYu
X2NsZWFuX3RyZWVfcmVzdWx0cyA9IHNlbGYuX2RlbGVnYXRlLnRlc3RfcmVzdWx0cygpCi0KLSAg
ICAgICAgaWYgc2VsZi5fY2xlYW5fdHJlZV9yZXN1bHRzLmRpZF9leGNlZWRfdGVzdF9mYWlsdXJl
X2xpbWl0KCk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBpZiBzZXQoZmly
c3RfcmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkpIC0gc2V0KHNlbGYuX2NsZWFuX3RyZWVfcmVzdWx0
cy5mYWlsaW5nX3Rlc3RzKCkpOgotICAgICAgICAgICAgc2VsZi5mYWlsdXJlX3N0YXR1c19pZCA9
IGZpcnN0X2ZhaWx1cmVfc3RhdHVzX2lkCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5yZXBvcnRf
ZmFpbHVyZShmaXJzdF9yZXN1bHRzX2FyY2hpdmUsIGZpcnN0X3Jlc3VsdHMsIGZpcnN0X3Njcmlw
dF9lcnJvcikKKyAgICAgICAgaWYgc2VsZi5fc2hvdWxkX2RlZmVyX3BhdGNoX29yX3Rocm93KGZp
cnN0X3Jlc3VsdHMuZmFpbGluZ190ZXN0X3Jlc3VsdHMoKSwgZmlyc3RfcmVzdWx0c19hcmNoaXZl
LCBmaXJzdF9zY3JpcHRfZXJyb3IsIGZpcnN0X2ZhaWx1cmVfc3RhdHVzX2lkKToKKyAgICAgICAg
ICAgIHJldHVybiBGYWxzZSAgIyBEZWZlciBwYXRjaAogCiAgICAgICAgICMgQXQgdGhpcyBwb2lu
dCwgd2Uga25vdyB0aGF0IHRoZSBmaXJzdCBhbmQgc2Vjb25kIHJ1bnMgaGFkIHRoZSBleGFjdCBz
YW1lIGZhaWx1cmVzLAogICAgICAgICAjIGFuZCB0aGF0IHRob3NlIGZhaWx1cmVzIGFyZSBhbGwg
cHJlc2VudCBvbiB0aGUgY2xlYW4gdHJlZSwgc28gd2UgY2FuIHNheSB3aXRoIGNlcnRhaW50eQpA
QCAtMjc2LDEwICsyNzUsNiBAQCBjbGFzcyBQYXRjaEFuYWx5c2lzVGFzayhvYmplY3QpOgogICAg
ICAgICBhc3NlcnQoc2VsZi5fcGF0Y2guaWQoKSA9PSBwYXRjaC5pZCgpKSAgIyBQYXRjaEFuYWx5
c2lzVGFzayBpcyBub3QgY3VycmVudGx5IHJlLXVzZWFibGUuCiAgICAgICAgIHJldHVybiBzZWxm
Ll9yZXN1bHRzX2Zyb21fcGF0Y2hfdGVzdF9ydW4KIAotICAgIGRlZiByZXN1bHRzX2Zyb21fdGVz
dF9ydW5fd2l0aG91dF9wYXRjaChzZWxmLCBwYXRjaCk6Ci0gICAgICAgIGFzc2VydChzZWxmLl9w
YXRjaC5pZCgpID09IHBhdGNoLmlkKCkpICAjIFBhdGNoQW5hbHlzaXNUYXNrIGlzIG5vdCBjdXJy
ZW50bHkgcmUtdXNlYWJsZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuX2NsZWFuX3RyZWVfcmVzdWx0
cwotCiAgICAgZGVmIHJlcG9ydF9mYWlsdXJlKHNlbGYsIHJlc3VsdHNfYXJjaGl2ZT1Ob25lLCBy
ZXN1bHRzPU5vbmUsIHNjcmlwdF9lcnJvcj1Ob25lKToKICAgICAgICAgaWYgbm90IHNlbGYudmFs
aWRhdGUoKToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbS5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0ucHkKaW5k
ZXggNmNmZGUzYi4uMzRiNjdjNyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtLnB5CkBAIC01OCwxNiArNTgs
MTMgQEAgY2xhc3MgQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0oQWJzdHJhY3RSZXZpZXdRdWV1
ZSwgRWFybHlXYXJuaW5nU3lzdGVtVGFza0RlbGUKIAogICAgIGRlZiBfZmFpbGluZ190ZXN0c19t
ZXNzYWdlKHNlbGYsIHRhc2ssIHBhdGNoKToKICAgICAgICAgcmVzdWx0cyA9IHRhc2sucmVzdWx0
c19mcm9tX3BhdGNoX3Rlc3RfcnVuKHBhdGNoKQotICAgICAgICBjbGVhbl9yZXN1bHRzID0gdGFz
ay5yZXN1bHRzX2Zyb21fdGVzdF9ydW5fd2l0aG91dF9wYXRjaChwYXRjaCkKIAotICAgICAgICB1
bmV4cGVjdGVkX2ZhaWx1cmVzID0gTm9uZQotICAgICAgICBpZiByZXN1bHRzIGFuZCBjbGVhbl9y
ZXN1bHRzOgotICAgICAgICAgICAgdW5leHBlY3RlZF9mYWlsdXJlcyA9IGxpc3Qoc2V0KHJlc3Vs
dHMuZmFpbGluZ190ZXN0cygpKSAtIHNldChjbGVhbl9yZXN1bHRzLmZhaWxpbmdfdGVzdHMoKSkp
Ci0gICAgICAgIGlmIG5vdCB1bmV4cGVjdGVkX2ZhaWx1cmVzOgorICAgICAgICBpZiBub3QgcmVz
dWx0czoKICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGlmIHJlc3VsdHMgYW5kIHJl
c3VsdHMuZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQoKToKKworICAgICAgICBpZiByZXN1
bHRzLmRpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0KCk6CiAgICAgICAgICAgICByZXR1cm4g
Ik51bWJlciBvZiB0ZXN0IGZhaWx1cmVzIGV4Y2VlZGVkIHRoZSBmYWlsdXJlIGxpbWl0LiIKLSAg
ICAgICAgcmV0dXJuICJOZXcgZmFpbGluZyB0ZXN0czpcbiVzIiAlICJcbiIuam9pbih1bmV4cGVj
dGVkX2ZhaWx1cmVzKQorICAgICAgICByZXR1cm4gIk5ldyBmYWlsaW5nIHRlc3RzOlxuJXMiICUg
IlxuIi5qb2luKHJlc3VsdHMuZmFpbGluZ190ZXN0cygpKQogCiAgICAgZGVmIF9wb3N0X3JlamVj
dF9tZXNzYWdlX29uX2J1ZyhzZWxmLCB0b29sLCBwYXRjaCwgc3RhdHVzX2lkLCBleHRyYV9tZXNz
YWdlX3RleHQ9Tm9uZSk6CiAgICAgICAgIGlmIG5vdCBleHRyYV9tZXNzYWdlX3RleHQ6CmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5n
c3lzdGVtX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L2Vhcmx5d2FybmluZ3N5c3RlbV91bml0dGVzdC5weQppbmRleCAwMWM5NjI4Li5jNmRlMTNhIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJu
aW5nc3lzdGVtX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW1fdW5pdHRlc3QucHkKQEAgLTUxLDkgKzUxLDggQEAg
Y2xhc3MgQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW1UZXN0KFF1ZXVlc1Rlc3QpOgogICAgICAg
ICB0YXNrLnJlc3VsdHNfZnJvbV9wYXRjaF90ZXN0X3J1biA9IGxhbWJkYSBhOiBMYXlvdXRUZXN0
UmVzdWx0cyhbdGVzdF9yZXN1bHRzLlRlc3RSZXN1bHQoImZvby5odG1sIiwgZmFpbHVyZXM9W3Rl
c3RfZmFpbHVyZXMuRmFpbHVyZVRleHRNaXNtYXRjaCgpXSksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RfcmVzdWx0cy5UZXN0UmVzdWx0KCJiYXIuaHRtbCIsIGZhaWx1cmVzPVt0ZXN0X2ZhaWx1cmVz
LkZhaWx1cmVUZXh0TWlzbWF0Y2goKV0pXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkX2V4Y2VlZF90
ZXN0X2ZhaWx1cmVfbGltaXQ9RmFsc2UpCi0gICAgICAgIHRhc2sucmVzdWx0c19mcm9tX3Rlc3Rf
cnVuX3dpdGhvdXRfcGF0Y2ggPSBsYW1iZGEgYTogTGF5b3V0VGVzdFJlc3VsdHMoW10sIGRpZF9l
eGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0PUZhbHNlKQogICAgICAgICBwYXRjaCA9IGV3cy5fdG9v
bC5idWdzLmZldGNoX2F0dGFjaG1lbnQoMTAwMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlM
aW5lRXF1YWwoZXdzLl9mYWlsaW5nX3Rlc3RzX21lc3NhZ2UodGFzaywgcGF0Y2gpLCAiTmV3IGZh
aWxpbmcgdGVzdHM6XG5iYXIuaHRtbFxuZm9vLmh0bWwiKQorICAgICAgICBzZWxmLmFzc2VydE11
bHRpTGluZUVxdWFsKGV3cy5fZmFpbGluZ190ZXN0c19tZXNzYWdlKHRhc2ssIHBhdGNoKSwgIk5l
dyBmYWlsaW5nIHRlc3RzOlxuZm9vLmh0bWxcbmJhci5odG1sIikKIAogCiBjbGFzcyBFYXJseVdh
cm5pbmdTeXN0ZW1UZXN0KFF1ZXVlc1Rlc3QpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9xdWV1ZXMucHkKaW5kZXggMjNiNzg1OS4uNmJlODUzZiAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5CkBAIC0zMzgsMTcg
KzMzOCwxMyBAQCBjbGFzcyBDb21taXRRdWV1ZShQYXRjaFByb2Nlc3NpbmdRdWV1ZSwgU3RlcFNl
cXVlbmNlRXJyb3JIYW5kbGVyLCBDb21taXRRdWV1ZVRhcwogCiAgICAgZGVmIF9mYWlsaW5nX3Rl
c3RzX21lc3NhZ2Uoc2VsZiwgdGFzaywgcGF0Y2gpOgogICAgICAgICByZXN1bHRzID0gdGFzay5y
ZXN1bHRzX2Zyb21fcGF0Y2hfdGVzdF9ydW4ocGF0Y2gpCi0gICAgICAgIGNsZWFuX3Jlc3VsdHMg
PSB0YXNrLnJlc3VsdHNfZnJvbV90ZXN0X3J1bl93aXRob3V0X3BhdGNoKHBhdGNoKQogCi0gICAg
ICAgIHVuZXhwZWN0ZWRfZmFpbHVyZXMgPSBOb25lCi0gICAgICAgIGlmIHJlc3VsdHMgYW5kIGNs
ZWFuX3Jlc3VsdHM6Ci0gICAgICAgICAgICB1bmV4cGVjdGVkX2ZhaWx1cmVzID0gbGlzdChzZXQo
cmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkpIC0gc2V0KGNsZWFuX3Jlc3VsdHMuZmFpbGluZ190ZXN0
cygpKSkKLSAgICAgICAgIyBGSVhNRTogQ2FuIHRoaXMgZXZlciBoYXBwZW4/Ci0gICAgICAgIGlm
IG5vdCB1bmV4cGVjdGVkX2ZhaWx1cmVzOgorICAgICAgICBpZiBub3QgcmVzdWx0czoKICAgICAg
ICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGlmIHJlc3VsdHMgYW5kIHJlc3VsdHMuZGlkX2V4
Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQoKToKKworICAgICAgICBpZiByZXN1bHRzLmRpZF9leGNl
ZWRfdGVzdF9mYWlsdXJlX2xpbWl0KCk6CiAgICAgICAgICAgICByZXR1cm4gIk51bWJlciBvZiB0
ZXN0IGZhaWx1cmVzIGV4Y2VlZGVkIHRoZSBmYWlsdXJlIGxpbWl0LiIKLSAgICAgICAgcmV0dXJu
ICJOZXcgZmFpbGluZyB0ZXN0czpcbiVzIiAlICJcbiIuam9pbih1bmV4cGVjdGVkX2ZhaWx1cmVz
KQorICAgICAgICByZXR1cm4gIk5ldyBmYWlsaW5nIHRlc3RzOlxuJXMiICUgIlxuIi5qb2luKHJl
c3VsdHMuZmFpbGluZ190ZXN0cygpKQogCiAgICAgZGVmIF9lcnJvcl9tZXNzYWdlX2Zvcl9idWco
c2VsZiwgdGFzaywgcGF0Y2gsIHNjcmlwdF9lcnJvcik6CiAgICAgICAgIG1lc3NhZ2UgPSBzZWxm
Ll9mYWlsaW5nX3Rlc3RzX21lc3NhZ2UodGFzaywgcGF0Y2gpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weQppbmRleCBl
MmE0ODgwLi5iOWY3MThkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkKQEAgLTMwOCw5ICszMDgsNiBAQCBNT0NL
OiByZWxlYXNlX3dvcmtfaXRlbTogY29tbWl0LXF1ZXVlIDEwMDAwCiAgICAgICAgICAgICBkZWYg
cmVzdWx0c19mcm9tX3BhdGNoX3Rlc3RfcnVuKHNlbGYsIHBhdGNoKToKICAgICAgICAgICAgICAg
ICByZXR1cm4gTGF5b3V0VGVzdFJlc3VsdHMoW3Rlc3RfcmVzdWx0cy5UZXN0UmVzdWx0KCJtb2Nr
X3Rlc3RfbmFtZS5odG1sIiwgZmFpbHVyZXM9W3Rlc3RfZmFpbHVyZXMuRmFpbHVyZVRleHRNaXNt
YXRjaCgpXSldLCBkaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdD1GYWxzZSkKIAotICAgICAg
ICAgICAgZGVmIHJlc3VsdHNfZnJvbV90ZXN0X3J1bl93aXRob3V0X3BhdGNoKHNlbGYsIHBhdGNo
KToKLSAgICAgICAgICAgICAgICByZXR1cm4gTGF5b3V0VGVzdFJlc3VsdHMoW10sIGRpZF9leGNl
ZWRfdGVzdF9mYWlsdXJlX2xpbWl0PUZhbHNlKQotCiAgICAgICAgIHF1ZXVlID0gQ29tbWl0UXVl
dWUoTW9ja0NvbW1pdFF1ZXVlVGFzaykKIAogICAgICAgICBkZWYgbW9ja19ydW5fd2Via2l0X3Bh
dGNoKGNvbW1hbmQpOgotLSAKMS45LjMgKEFwcGxlIEdpdC01MCkKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241131</attachid>
            <date>2014-11-06 13:56:09 -0800</date>
            <delta_ts>2014-11-06 16:51:22 -0800</delta_ts>
            <desc>Makes LayoutTestResults.test_results always return a list.</desc>
            <filename>0001-Remove-duplicate-code-from-PatchAnalysisTask._test_p.patch</filename>
            <type>text/plain</type>
            <size>16793</size>
            <attacher name="Jake Nielsen">jake.nielsen.webkit</attacher>
            
              <data encoding="base64">RnJvbSBjMzA5Y2FjZjQ2YmZlNTUyMTM2MDkzOGY3NDA4YjhiNjIxNjhkMzM2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWtlIE5pZWxzZW4gPGphY29iX25pZWxzZW5AYXBwbGUuY29t
PgpEYXRlOiBUaHUsIDYgTm92IDIwMTQgMTM6NTQ6MTAgLTA4MDAKU3ViamVjdDogW1BBVENIXSBS
ZW1vdmUgZHVwbGljYXRlIGNvZGUgZnJvbSBQYXRjaEFuYWx5c2lzVGFzay5fdGVzdF9wYXRjaC4K
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgyMjkKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0
dGVzdHJlc3VsdHMucHk6Ck1ha2VzIHN1cmUgdGVzdF9yZXN1bHRzIHJldHVybnMgYSBsaXN0Lgoo
TGF5b3V0VGVzdFJlc3VsdHMudGVzdF9yZXN1bHRzKToKKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Ym90L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5weToKTWFrZXMgdW5pdCB0ZXN0cyBhbHNvIGNo
ZWNrIHRvIG1ha2Ugc3VyZQp0YXNrLnJlc3VsdHNfZnJvbV9wYXRjaF90ZXN0X3J1bigpIGFuZAp0
YXNrLnJlc3VsdHNfZnJvbV90ZXN0X3J1bl93aXRob3V0X3BhdGNoIHJldHVybiBpbnN0YW5jZXMg
b2YKTGF5b3V0VGVzdFJlc3VsdHMuCihDb21taXRRdWV1ZVRhc2tUZXN0Ll9ydW5fYW5kX2V4cGVj
dF9wYXRjaF9hbmFseXNpc19yZXN1bHQpOgoqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0
Y2hhbmFseXNpc3Rhc2sucHk6CkNvbmRlbnNlcyBkdXBsaWNhdGUgY29kZSBpbnRvIF9zaG91bGRf
ZGVmZXJfcGF0Y2hfb3JfdGhyb3csIGFuZApyZW1vdmVzIHRoZSBub3ctdW51c2VkIF9jbGVhbl90
cmVlX3Jlc3VsdHMgbWVtYmVyLgooUGF0Y2hBbmFseXNpc1Rhc2suX19pbml0X18pOgooUGF0Y2hB
bmFseXNpc1Rhc2suX2NvbnRpbnVlX3Rlc3RpbmdfcGF0Y2hfdGhhdF9leGNlZWRlZF9mYWlsdXJl
X2xpbWl0X29uX2ZpcnN0X29yX3NlY29uZF90cnkpOgooUGF0Y2hBbmFseXNpc1Rhc2suX3Nob3Vs
ZF9kZWZlcl9wYXRjaF9vcl90aHJvdyk6CihQYXRjaEFuYWx5c2lzVGFzay5fdGVzdF9wYXRjaCk6
CihQYXRjaEFuYWx5c2lzVGFzay5yZXN1bHRzX2Zyb21fcGF0Y2hfdGVzdF9ydW4pOgooUGF0Y2hB
bmFseXNpc1Rhc2sucmVzdWx0c19mcm9tX3Rlc3RfcnVuX3dpdGhvdXRfcGF0Y2gpOiBEZWxldGVk
LgoqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0ucHk6
ClJlbW92ZXMgbmVlZGxlc3MgY2FsbCB0byByZXN1bHRzX2Zyb21fdGVzdF9ydW5fd2l0aG91dF9w
YXRjaAooQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0uX2ZhaWxpbmdfdGVzdHNfbWVzc2FnZSk6
CiogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbV91bml0
dGVzdC5weToKQ2hhbmdlcyBvcmRlciBvZiB0ZXN0IGZhaWx1cmUgbWVzc2FnZXMgdG8gYmUgaW4g
dGhlIG9yZGVyIHRoYXQgdGhleQphcHBlYXIuCihBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbVRl
c3QudGVzdF9mYWlsaW5nX3Rlc3RzX21lc3NhZ2UpOgoqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9xdWV1ZXMucHk6ClJlbW92ZXMgbmVlZGxlc3MgY2FsbCB0byByZXN1bHRzX2Zyb21f
dGVzdF9ydW5fd2l0aG91dF9wYXRjaC4KKENvbW1pdFF1ZXVlLl9mYWlsaW5nX3Rlc3RzX21lc3Nh
Z2UpOgoqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHk6
CihNb2NrQ29tbWl0UXVldWVUYXNrLnJlc3VsdHNfZnJvbV9wYXRjaF90ZXN0X3J1bik6CihNb2Nr
Q29tbWl0UXVldWVUYXNrLnJlc3VsdHNfZnJvbV90ZXN0X3J1bl93aXRob3V0X3BhdGNoKTogRGVs
ZXRlZC4KLS0tCiBUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IDM5ICsrKysrKysrKysrKysrKwogLi4uL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0
dGVzdHJlc3VsdHMucHkgICAgICAgfCAgMiArLQogLi4uL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1p
dHF1ZXVldGFza191bml0dGVzdC5weSAgfCAgMSArCiAuLi4vU2NyaXB0cy93ZWJraXRweS90b29s
L2JvdC9wYXRjaGFuYWx5c2lzdGFzay5weSB8IDU1ICsrKysrKysrKystLS0tLS0tLS0tLS0KIC4u
Li93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbS5weSAgIHwgMTEgKyst
LS0KIC4uLi90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbV91bml0dGVzdC5weSAgIHwg
IDMgKy0KIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkgICAg
IHwgMTIgKystLS0KIC4uLi93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5w
eSAgICAgIHwgIDMgLS0KIDggZmlsZXMgY2hhbmdlZCwgNzUgaW5zZXJ0aW9ucygrKSwgNTEgZGVs
ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGViMWE4MDkuLjQ3ZjhhZGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxNC0xMS0wNiAgSmFrZSBOaWVs
c2VuICA8amFjb2JfbmllbHNlbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGR1cGxpY2F0
ZSBjb2RlIGZyb20gUGF0Y2hBbmFseXNpc1Rhc2suX3Rlc3RfcGF0Y2guCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgyMjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weToKKyAgICAgICAgTWFrZXMgc3VyZSB0ZXN0X3Jl
c3VsdHMgcmV0dXJucyBhIGxpc3QuCisgICAgICAgIChMYXlvdXRUZXN0UmVzdWx0cy50ZXN0X3Jl
c3VsdHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVldWV0
YXNrX3VuaXR0ZXN0LnB5OgorICAgICAgICBNYWtlcyB1bml0IHRlc3RzIGFsc28gY2hlY2sgdG8g
bWFrZSBzdXJlCisgICAgICAgIHRhc2sucmVzdWx0c19mcm9tX3BhdGNoX3Rlc3RfcnVuKCkgYW5k
CisgICAgICAgIHRhc2sucmVzdWx0c19mcm9tX3Rlc3RfcnVuX3dpdGhvdXRfcGF0Y2ggcmV0dXJu
IGluc3RhbmNlcyBvZgorICAgICAgICBMYXlvdXRUZXN0UmVzdWx0cy4KKyAgICAgICAgKENvbW1p
dFF1ZXVlVGFza1Rlc3QuX3J1bl9hbmRfZXhwZWN0X3BhdGNoX2FuYWx5c2lzX3Jlc3VsdCk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9wYXRjaGFuYWx5c2lzdGFzay5weToK
KyAgICAgICAgQ29uZGVuc2VzIGR1cGxpY2F0ZSBjb2RlIGludG8gX3Nob3VsZF9kZWZlcl9wYXRj
aF9vcl90aHJvdywgYW5kCisgICAgICAgIHJlbW92ZXMgdGhlIG5vdy11bnVzZWQgX2NsZWFuX3Ry
ZWVfcmVzdWx0cyBtZW1iZXIuCisgICAgICAgIChQYXRjaEFuYWx5c2lzVGFzay5fX2luaXRfXyk6
CisgICAgICAgIChQYXRjaEFuYWx5c2lzVGFzay5fY29udGludWVfdGVzdGluZ19wYXRjaF90aGF0
X2V4Y2VlZGVkX2ZhaWx1cmVfbGltaXRfb25fZmlyc3Rfb3Jfc2Vjb25kX3RyeSk6CisgICAgICAg
IChQYXRjaEFuYWx5c2lzVGFzay5fc2hvdWxkX2RlZmVyX3BhdGNoX29yX3Rocm93KToKKyAgICAg
ICAgKFBhdGNoQW5hbHlzaXNUYXNrLl90ZXN0X3BhdGNoKToKKyAgICAgICAgKFBhdGNoQW5hbHlz
aXNUYXNrLnJlc3VsdHNfZnJvbV9wYXRjaF90ZXN0X3J1bik6CisgICAgICAgIChQYXRjaEFuYWx5
c2lzVGFzay5yZXN1bHRzX2Zyb21fdGVzdF9ydW5fd2l0aG91dF9wYXRjaCk6IERlbGV0ZWQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3Rl
bS5weToKKyAgICAgICAgUmVtb3ZlcyBuZWVkbGVzcyBjYWxsIHRvIHJlc3VsdHNfZnJvbV90ZXN0
X3J1bl93aXRob3V0X3BhdGNoCisgICAgICAgIChBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbS5f
ZmFpbGluZ190ZXN0c19tZXNzYWdlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtX3VuaXR0ZXN0LnB5OgorICAgICAgICBDaGFuZ2Vz
IG9yZGVyIG9mIHRlc3QgZmFpbHVyZSBtZXNzYWdlcyB0byBiZSBpbiB0aGUgb3JkZXIgdGhhdCB0
aGV5CisgICAgICAgIGFwcGVhci4KKyAgICAgICAgKEFic3RyYWN0RWFybHlXYXJuaW5nU3lzdGVt
VGVzdC50ZXN0X2ZhaWxpbmdfdGVzdHNfbWVzc2FnZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weToKKyAgICAgICAgUmVtb3ZlcyBuZWVkbGVzcyBj
YWxsIHRvIHJlc3VsdHNfZnJvbV90ZXN0X3J1bl93aXRob3V0X3BhdGNoLgorICAgICAgICAoQ29t
bWl0UXVldWUuX2ZhaWxpbmdfdGVzdHNfbWVzc2FnZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weToKKyAgICAgICAgKE1vY2tDb21t
aXRRdWV1ZVRhc2sucmVzdWx0c19mcm9tX3BhdGNoX3Rlc3RfcnVuKToKKyAgICAgICAgKE1vY2tD
b21taXRRdWV1ZVRhc2sucmVzdWx0c19mcm9tX3Rlc3RfcnVuX3dpdGhvdXRfcGF0Y2gpOiBEZWxl
dGVkLgorCiAyMDE0LTEwLTMwICBSb2hpdCBLdW1hciAgPGt1bWFyLnJvaGl0QHNhbXN1bmcuY29t
PgogCiAgICAgICAgIFtHVEtdIE1pbmlicm93c2VyIDogQWRkIHdpbmRvdyBmdWxsc2NyZWVuIHN1
cHBvcnQgZm9yIE1pbmlicm93c2VyCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkKaW5kZXggZTc0Y2E3OC4uN2ZiNjdjMSAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xheW91dHRlc3Ry
ZXN1bHRzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0
ZXN0cmVzdWx0cy5weQpAQCAtNjIsNyArNjIsNyBAQCBjbGFzcyBMYXlvdXRUZXN0UmVzdWx0cyhv
YmplY3QpOgogICAgICAgICByZXR1cm4gc2VsZi5fZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGlt
aXQKIAogICAgIGRlZiB0ZXN0X3Jlc3VsdHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl90
ZXN0X3Jlc3VsdHMKKyAgICAgICAgcmV0dXJuIFtyZXN1bHQgZm9yIHJlc3VsdCBpbiBzZWxmLl90
ZXN0X3Jlc3VsdHNdCiAKICAgICBkZWYgcmVzdWx0c19tYXRjaGluZ19mYWlsdXJlX3R5cGVzKHNl
bGYsIGZhaWx1cmVfdHlwZXMpOgogICAgICAgICByZXR1cm4gW3Jlc3VsdCBmb3IgcmVzdWx0IGlu
IHNlbGYuX3Rlc3RfcmVzdWx0cyBpZiByZXN1bHQuaGFzX2ZhaWx1cmVfbWF0Y2hpbmdfdHlwZXMo
KmZhaWx1cmVfdHlwZXMpXQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5weQppbmRleCBkYzEzOWM4Li4zMDJh
NTM2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1
ZXVldGFza191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90
L2NvbW1pdHF1ZXVldGFza191bml0dGVzdC5weQpAQCAtMTgxLDYgKzE4MSw3IEBAIGNsYXNzIENv
bW1pdFF1ZXVlVGFza1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAjIFRoZSBmYWls
dXJlIHN0YXR1cyBvbmx5IG1lYW5zIGFueXRoaW5nIGlmIHdlIGFjdHVhbGx5IGZhaWxlZC4KICAg
ICAgICAgaWYgZXhwZWN0ZWRfYW5hbHlzaXNfcmVzdWx0ID09IFBhdGNoQW5hbHlzaXNSZXN1bHQu
RkFJTDoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFzay5mYWlsdXJlX3N0YXR1c19p
ZCwgZXhwZWN0ZWRfZmFpbHVyZV9zdGF0dXNfaWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElz
SW5zdGFuY2UodGFzay5yZXN1bHRzX2Zyb21fcGF0Y2hfdGVzdF9ydW4ocGF0Y2gpLCBMYXlvdXRU
ZXN0UmVzdWx0cykKIAogICAgIGRlZiBfcnVuX3Rocm91Z2hfdGFzayhzZWxmLCBjb21taXRfcXVl
dWUsIGV4cGVjdGVkX2xvZ3MsIGV4cGVjdGVkX2V4Y2VwdGlvbj1Ob25lLCBleHBlY3RfcmV0cnk9
RmFsc2UpOgogICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3BhdGNoYW5hbHlzaXN0YXNrLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2JvdC9wYXRjaGFuYWx5c2lzdGFzay5weQppbmRleCBmNWVhZDRj
Li42ZGMwODNmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3Bh
dGNoYW5hbHlzaXN0YXNrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qv
cGF0Y2hhbmFseXNpc3Rhc2sucHkKQEAgLTgyLDcgKzgyLDYgQEAgY2xhc3MgUGF0Y2hBbmFseXNp
c1Rhc2sob2JqZWN0KToKICAgICAgICAgc2VsZi5fc2NyaXB0X2Vycm9yID0gTm9uZQogICAgICAg
ICBzZWxmLl9yZXN1bHRzX2FyY2hpdmVfZnJvbV9wYXRjaF90ZXN0X3J1biA9IE5vbmUKICAgICAg
ICAgc2VsZi5fcmVzdWx0c19mcm9tX3BhdGNoX3Rlc3RfcnVuID0gTm9uZQotICAgICAgICBzZWxm
Ll9jbGVhbl90cmVlX3Jlc3VsdHMgPSBOb25lCiAKICAgICBkZWYgX3J1bl9jb21tYW5kKHNlbGYs
IGNvbW1hbmQsIHN1Y2Nlc3NfbWVzc2FnZSwgZmFpbHVyZV9tZXNzYWdlKToKICAgICAgICAgdHJ5
OgpAQCAtMTg1LDE3ICsxODQsMzQgQEAgY2xhc3MgUGF0Y2hBbmFseXNpc1Rhc2sob2JqZWN0KToK
IAogICAgIGRlZiBfY29udGludWVfdGVzdGluZ19wYXRjaF90aGF0X2V4Y2VlZGVkX2ZhaWx1cmVf
bGltaXRfb25fZmlyc3Rfb3Jfc2Vjb25kX3RyeShzZWxmLCByZXN1bHRzLCByZXN1bHRzX2FyY2hp
dmUsIHNjcmlwdF9lcnJvcik6CiAgICAgICAgIHNlbGYuX2J1aWxkX2FuZF90ZXN0X3dpdGhvdXRf
cGF0Y2goKQotICAgICAgICBzZWxmLl9jbGVhbl90cmVlX3Jlc3VsdHMgPSBzZWxmLl9kZWxlZ2F0
ZS50ZXN0X3Jlc3VsdHMoKQogCiAgICAgICAgICMgSWYgd2UndmUgbWFkZSBpdCBoZXJlLCB0aGVu
IG1hbnkgKDUwMCkgdGVzdHMgYXJlIGZhaWxpbmcgd2l0aCB0aGUgcGF0Y2ggYXBwbGllZCwgYnV0
CiAgICAgICAgICMgaWYgdGhlIGNsZWFuIHRyZWUgaXMgYWxzbyBmYWlsaW5nIG1hbnkgdGVzdHMs
IGV2ZW4gaWYgaXQncyBub3QgcXVpdGUgYXMgbWFueSAoNDk1KSwKICAgICAgICAgIyB0aGVuIHdl
IGNhbid0IGJlIGNlcnRhaW4gdGhhdCB0aGUgZGlzY3JlcGFuY3kgaXNuJ3QgZHVlIHRvIGZsYWtp
bmVzcywgYW5kIGhlbmNlIHdlIG11c3QKICAgICAgICAgIyBkZWZlciBqdWRnZW1lbnQuCi0gICAg
ICAgIGlmIChsZW4ocmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkpIC0gbGVuKHNlbGYuX2NsZWFuX3Ry
ZWVfcmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkpKSA8PSA1OgorICAgICAgICBpZiAobGVuKHJlc3Vs
dHMuZmFpbGluZ190ZXN0cygpKSAtIGxlbihzZWxmLl9kZWxlZ2F0ZS50ZXN0X3Jlc3VsdHMoKS5m
YWlsaW5nX3Rlc3RzKCkpKSA8PSA1OgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICAg
ICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUocmVzdWx0c19hcmNoaXZlLCByZXN1bHRzLCBz
Y3JpcHRfZXJyb3IpCiAKKyAgICBkZWYgX3Nob3VsZF9kZWZlcl9wYXRjaF9vcl90aHJvdyhzZWxm
LCBmYWlsdXJlc193aXRoX3BhdGNoLCByZXN1bHRzX2FyY2hpdmVfZm9yX2ZhaWx1cmVzX3dpdGhf
cGF0Y2gsIHNjcmlwdF9lcnJvciwgZmFpbHVyZV9pZCk6CisgICAgICAgIHNlbGYuX2J1aWxkX2Fu
ZF90ZXN0X3dpdGhvdXRfcGF0Y2goKQorICAgICAgICBjbGVhbl90cmVlX3Jlc3VsdHMgPSBzZWxm
Ll9kZWxlZ2F0ZS50ZXN0X3Jlc3VsdHMoKQorCisgICAgICAgIGlmIGNsZWFuX3RyZWVfcmVzdWx0
cy5kaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdCgpOgorICAgICAgICAgICAgIyBXZSBjYW5u
b3Qga25vdyB3aGV0aGVyIHRoZSBmYWlsdXJlcyB3ZSBzYXcgaW4gdGhlIHRlc3QgcnVucyB3aXRo
IHRoZSBwYXRjaCBhcmUgZXhwZWN0ZWQuCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAg
ICAgIGZhaWx1cmVzX2ludHJvZHVjZWRfYnlfcGF0Y2ggPSBmcm96ZW5zZXQoZmFpbHVyZXNfd2l0
aF9wYXRjaCkgLSBmcm96ZW5zZXQoY2xlYW5fdHJlZV9yZXN1bHRzLmZhaWxpbmdfdGVzdF9yZXN1
bHRzKCkpCisgICAgICAgIGlmIGZhaWx1cmVzX2ludHJvZHVjZWRfYnlfcGF0Y2g6CisgICAgICAg
ICAgICBzZWxmLmZhaWx1cmVfc3RhdHVzX2lkID0gZmFpbHVyZV9pZAorICAgICAgICAgICAgIyBy
ZXBvcnRfZmFpbHVyZSB3aWxsIGVpdGhlciB0aHJvdyBvciByZXR1cm4gZmFsc2UuCisgICAgICAg
ICAgICByZXR1cm4gbm90IHNlbGYucmVwb3J0X2ZhaWx1cmUocmVzdWx0c19hcmNoaXZlX2Zvcl9m
YWlsdXJlc193aXRoX3BhdGNoLCBMYXlvdXRUZXN0UmVzdWx0cyhmYWlsdXJlc19pbnRyb2R1Y2Vk
X2J5X3BhdGNoLCBkaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdD1GYWxzZSksIHNjcmlwdF9l
cnJvcikKKworICAgICAgICAjIEluIHRoaXMgY2FzZSwgd2Uga25vdyB0aGF0IGFsbCBvZiB0aGUg
ZmFpbHVyZXMgdGhhdCB3ZSBzYXcgd2l0aCB0aGUgcGF0Y2ggd2VyZQorICAgICAgICAjIGFsc28g
cHJlc2VudCB3aXRob3V0IHRoZSBwYXRjaCwgc28gd2UgZG9uJ3QgbmVlZCB0byBkZWZlci4KKyAg
ICAgICAgcmV0dXJuIEZhbHNlCisKICAgICBkZWYgX3Rlc3RfcGF0Y2goc2VsZik6CiAgICAgICAg
IGlmIHNlbGYuX3Rlc3QoKToKICAgICAgICAgICAgIHJldHVybiBUcnVlCkBAIC0yMzYsMzIgKzI1
MiwxNSBAQCBjbGFzcyBQYXRjaEFuYWx5c2lzVGFzayhvYmplY3QpOgogCiAgICAgICAgICAgICB0
ZXN0c190aGF0X2NvbnNpc3RlbnRseV9mYWlsZWQgPSBmaXJzdF9mYWlsaW5nX3Jlc3VsdHNfc2V0
LmludGVyc2VjdGlvbihzZWNvbmRfZmFpbGluZ19yZXN1bHRzX3NldCkKICAgICAgICAgICAgIGlm
IHRlc3RzX3RoYXRfY29uc2lzdGVudGx5X2ZhaWxlZDoKLSAgICAgICAgICAgICAgICBzZWxmLl9i
dWlsZF9hbmRfdGVzdF93aXRob3V0X3BhdGNoKCkKLSAgICAgICAgICAgICAgICBzZWxmLl9jbGVh
bl90cmVlX3Jlc3VsdHMgPSBzZWxmLl9kZWxlZ2F0ZS50ZXN0X3Jlc3VsdHMoKQotICAgICAgICAg
ICAgICAgIHRlc3RzX3RoYXRfZmFpbGVkX29uX3RyZWUgPSBzZWxmLl9jbGVhbl90cmVlX3Jlc3Vs
dHMuZmFpbGluZ190ZXN0X3Jlc3VsdHMoKQotCi0gICAgICAgICAgICAgICAgbmV3X2ZhaWx1cmVz
X2ludHJvZHVjZWRfYnlfcGF0Y2ggPSB0ZXN0c190aGF0X2NvbnNpc3RlbnRseV9mYWlsZWQuZGlm
ZmVyZW5jZShzZXQodGVzdHNfdGhhdF9mYWlsZWRfb25fdHJlZSkpCi0gICAgICAgICAgICAgICAg
aWYgbmV3X2ZhaWx1cmVzX2ludHJvZHVjZWRfYnlfcGF0Y2g6Ci0gICAgICAgICAgICAgICAgICAg
IHNlbGYuZmFpbHVyZV9zdGF0dXNfaWQgPSBmaXJzdF9mYWlsdXJlX3N0YXR1c19pZAotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXBvcnRfZmFpbHVyZShmaXJzdF9yZXN1bHRzX2Fy
Y2hpdmUsIG5ld19mYWlsdXJlc19pbnRyb2R1Y2VkX2J5X3BhdGNoLCBmaXJzdF9zY3JpcHRfZXJy
b3IpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fc2hvdWxkX2RlZmVyX3BhdGNoX29yX3Rocm93
KHRlc3RzX3RoYXRfY29uc2lzdGVudGx5X2ZhaWxlZCwgZmlyc3RfcmVzdWx0c19hcmNoaXZlLCBm
aXJzdF9zY3JpcHRfZXJyb3IsIGZpcnN0X2ZhaWx1cmVfc3RhdHVzX2lkKToKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlICAjIERlZmVyIHBhdGNoCiAKLSAgICAgICAgICAgICMgQXQg
dGhpcyBwb2ludCB3ZSBrbm93IHRoYXQgdGhlcmUgaXMgZmxha3luZXNzIHdpdGggdGhlIHBhdGNo
IGFwcGxpZWQsIGJ1dCBubyBjb25zaXN0ZW50IGZhaWx1cmVzCisgICAgICAgICAgICAjIEF0IHRo
aXMgcG9pbnQgd2Uga25vdyB0aGF0IGF0IGxlYXN0IG9uZSB0ZXN0IGZsYWtlZCwgYnV0IG5vIGNv
bnNpc3RlbnQgZmFpbHVyZXMKICAgICAgICAgICAgICMgd2VyZSBpbnRyb2R1Y2VkLiBUaGlzIGlz
IGEgYml0IG9mIGEgZ3JleS16b25lLgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAg
ICAgaWYgc2VsZi5fYnVpbGRfYW5kX3Rlc3Rfd2l0aG91dF9wYXRjaCgpOgotICAgICAgICAgICAg
IyBUaGUgZXJyb3IgZnJvbSB0aGUgcHJldmlvdXMgLl90ZXN0KCkgcnVuIGlzIHJlYWwsIHJlcG9y
dCBpdC4KLSAgICAgICAgICAgIHNlbGYuZmFpbHVyZV9zdGF0dXNfaWQgPSBmaXJzdF9mYWlsdXJl
X3N0YXR1c19pZAotICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUoZmlyc3Rf
cmVzdWx0c19hcmNoaXZlLCBmaXJzdF9yZXN1bHRzLCBmaXJzdF9zY3JpcHRfZXJyb3IpCisgICAg
ICAgICAgICByZXR1cm4gRmFsc2UgICMgRGVmZXIgcGF0Y2gKIAotICAgICAgICBzZWxmLl9jbGVh
bl90cmVlX3Jlc3VsdHMgPSBzZWxmLl9kZWxlZ2F0ZS50ZXN0X3Jlc3VsdHMoKQotCi0gICAgICAg
IGlmIHNlbGYuX2NsZWFuX3RyZWVfcmVzdWx0cy5kaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1p
dCgpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgaWYgc2V0KGZpcnN0X3Jl
c3VsdHMuZmFpbGluZ190ZXN0cygpKSAtIHNldChzZWxmLl9jbGVhbl90cmVlX3Jlc3VsdHMuZmFp
bGluZ190ZXN0cygpKToKLSAgICAgICAgICAgIHNlbGYuZmFpbHVyZV9zdGF0dXNfaWQgPSBmaXJz
dF9mYWlsdXJlX3N0YXR1c19pZAotICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1
cmUoZmlyc3RfcmVzdWx0c19hcmNoaXZlLCBmaXJzdF9yZXN1bHRzLCBmaXJzdF9zY3JpcHRfZXJy
b3IpCisgICAgICAgIGlmIHNlbGYuX3Nob3VsZF9kZWZlcl9wYXRjaF9vcl90aHJvdyhmaXJzdF9y
ZXN1bHRzLmZhaWxpbmdfdGVzdF9yZXN1bHRzKCksIGZpcnN0X3Jlc3VsdHNfYXJjaGl2ZSwgZmly
c3Rfc2NyaXB0X2Vycm9yLCBmaXJzdF9mYWlsdXJlX3N0YXR1c19pZCk6CisgICAgICAgICAgICBy
ZXR1cm4gRmFsc2UgICMgRGVmZXIgcGF0Y2gKIAogICAgICAgICAjIEF0IHRoaXMgcG9pbnQsIHdl
IGtub3cgdGhhdCB0aGUgZmlyc3QgYW5kIHNlY29uZCBydW5zIGhhZCB0aGUgZXhhY3Qgc2FtZSBm
YWlsdXJlcywKICAgICAgICAgIyBhbmQgdGhhdCB0aG9zZSBmYWlsdXJlcyBhcmUgYWxsIHByZXNl
bnQgb24gdGhlIGNsZWFuIHRyZWUsIHNvIHdlIGNhbiBzYXkgd2l0aCBjZXJ0YWludHkKQEAgLTI3
NiwxMCArMjc1LDYgQEAgY2xhc3MgUGF0Y2hBbmFseXNpc1Rhc2sob2JqZWN0KToKICAgICAgICAg
YXNzZXJ0KHNlbGYuX3BhdGNoLmlkKCkgPT0gcGF0Y2guaWQoKSkgICMgUGF0Y2hBbmFseXNpc1Rh
c2sgaXMgbm90IGN1cnJlbnRseSByZS11c2VhYmxlLgogICAgICAgICByZXR1cm4gc2VsZi5fcmVz
dWx0c19mcm9tX3BhdGNoX3Rlc3RfcnVuCiAKLSAgICBkZWYgcmVzdWx0c19mcm9tX3Rlc3RfcnVu
X3dpdGhvdXRfcGF0Y2goc2VsZiwgcGF0Y2gpOgotICAgICAgICBhc3NlcnQoc2VsZi5fcGF0Y2gu
aWQoKSA9PSBwYXRjaC5pZCgpKSAgIyBQYXRjaEFuYWx5c2lzVGFzayBpcyBub3QgY3VycmVudGx5
IHJlLXVzZWFibGUuCi0gICAgICAgIHJldHVybiBzZWxmLl9jbGVhbl90cmVlX3Jlc3VsdHMKLQog
ICAgIGRlZiByZXBvcnRfZmFpbHVyZShzZWxmLCByZXN1bHRzX2FyY2hpdmU9Tm9uZSwgcmVzdWx0
cz1Ob25lLCBzY3JpcHRfZXJyb3I9Tm9uZSk6CiAgICAgICAgIGlmIG5vdCBzZWxmLnZhbGlkYXRl
KCk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0ucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtLnB5CmluZGV4IDZj
ZmRlM2IuLjM0YjY3YzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbS5weQpAQCAtNTgsMTYgKzU4LDEzIEBA
IGNsYXNzIEFic3RyYWN0RWFybHlXYXJuaW5nU3lzdGVtKEFic3RyYWN0UmV2aWV3UXVldWUsIEVh
cmx5V2FybmluZ1N5c3RlbVRhc2tEZWxlCiAKICAgICBkZWYgX2ZhaWxpbmdfdGVzdHNfbWVzc2Fn
ZShzZWxmLCB0YXNrLCBwYXRjaCk6CiAgICAgICAgIHJlc3VsdHMgPSB0YXNrLnJlc3VsdHNfZnJv
bV9wYXRjaF90ZXN0X3J1bihwYXRjaCkKLSAgICAgICAgY2xlYW5fcmVzdWx0cyA9IHRhc2sucmVz
dWx0c19mcm9tX3Rlc3RfcnVuX3dpdGhvdXRfcGF0Y2gocGF0Y2gpCiAKLSAgICAgICAgdW5leHBl
Y3RlZF9mYWlsdXJlcyA9IE5vbmUKLSAgICAgICAgaWYgcmVzdWx0cyBhbmQgY2xlYW5fcmVzdWx0
czoKLSAgICAgICAgICAgIHVuZXhwZWN0ZWRfZmFpbHVyZXMgPSBsaXN0KHNldChyZXN1bHRzLmZh
aWxpbmdfdGVzdHMoKSkgLSBzZXQoY2xlYW5fcmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkpKQotICAg
ICAgICBpZiBub3QgdW5leHBlY3RlZF9mYWlsdXJlczoKKyAgICAgICAgaWYgbm90IHJlc3VsdHM6
CiAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBpZiByZXN1bHRzIGFuZCByZXN1bHRz
LmRpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0KCk6CisKKyAgICAgICAgaWYgcmVzdWx0cy5k
aWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdCgpOgogICAgICAgICAgICAgcmV0dXJuICJOdW1i
ZXIgb2YgdGVzdCBmYWlsdXJlcyBleGNlZWRlZCB0aGUgZmFpbHVyZSBsaW1pdC4iCi0gICAgICAg
IHJldHVybiAiTmV3IGZhaWxpbmcgdGVzdHM6XG4lcyIgJSAiXG4iLmpvaW4odW5leHBlY3RlZF9m
YWlsdXJlcykKKyAgICAgICAgcmV0dXJuICJOZXcgZmFpbGluZyB0ZXN0czpcbiVzIiAlICJcbiIu
am9pbihyZXN1bHRzLmZhaWxpbmdfdGVzdHMoKSkKIAogICAgIGRlZiBfcG9zdF9yZWplY3RfbWVz
c2FnZV9vbl9idWcoc2VsZiwgdG9vbCwgcGF0Y2gsIHN0YXR1c19pZCwgZXh0cmFfbWVzc2FnZV90
ZXh0PU5vbmUpOgogICAgICAgICBpZiBub3QgZXh0cmFfbWVzc2FnZV90ZXh0OgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3Rl
bV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJs
eXdhcm5pbmdzeXN0ZW1fdW5pdHRlc3QucHkKaW5kZXggMDFjOTYyOC4uYzZkZTEzYSAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5
c3RlbV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvZWFybHl3YXJuaW5nc3lzdGVtX3VuaXR0ZXN0LnB5CkBAIC01MSw5ICs1MSw4IEBAIGNsYXNz
IEFic3RyYWN0RWFybHlXYXJuaW5nU3lzdGVtVGVzdChRdWV1ZXNUZXN0KToKICAgICAgICAgdGFz
ay5yZXN1bHRzX2Zyb21fcGF0Y2hfdGVzdF9ydW4gPSBsYW1iZGEgYTogTGF5b3V0VGVzdFJlc3Vs
dHMoW3Rlc3RfcmVzdWx0cy5UZXN0UmVzdWx0KCJmb28uaHRtbCIsIGZhaWx1cmVzPVt0ZXN0X2Zh
aWx1cmVzLkZhaWx1cmVUZXh0TWlzbWF0Y2goKV0pLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3Jl
c3VsdHMuVGVzdFJlc3VsdCgiYmFyLmh0bWwiLCBmYWlsdXJlcz1bdGVzdF9mYWlsdXJlcy5GYWls
dXJlVGV4dE1pc21hdGNoKCldKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZF9leGNlZWRfdGVzdF9m
YWlsdXJlX2xpbWl0PUZhbHNlKQotICAgICAgICB0YXNrLnJlc3VsdHNfZnJvbV90ZXN0X3J1bl93
aXRob3V0X3BhdGNoID0gbGFtYmRhIGE6IExheW91dFRlc3RSZXN1bHRzKFtdLCBkaWRfZXhjZWVk
X3Rlc3RfZmFpbHVyZV9saW1pdD1GYWxzZSkKICAgICAgICAgcGF0Y2ggPSBld3MuX3Rvb2wuYnVn
cy5mZXRjaF9hdHRhY2htZW50KDEwMDAwKQotICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVx
dWFsKGV3cy5fZmFpbGluZ190ZXN0c19tZXNzYWdlKHRhc2ssIHBhdGNoKSwgIk5ldyBmYWlsaW5n
IHRlc3RzOlxuYmFyLmh0bWxcbmZvby5odG1sIikKKyAgICAgICAgc2VsZi5hc3NlcnRNdWx0aUxp
bmVFcXVhbChld3MuX2ZhaWxpbmdfdGVzdHNfbWVzc2FnZSh0YXNrLCBwYXRjaCksICJOZXcgZmFp
bGluZyB0ZXN0czpcbmZvby5odG1sXG5iYXIuaHRtbCIpCiAKIAogY2xhc3MgRWFybHlXYXJuaW5n
U3lzdGVtVGVzdChRdWV1ZXNUZXN0KToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvcXVldWVzLnB5CmluZGV4IDIzYjc4NTkuLjZiZTg1M2YgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weQpAQCAtMzM4LDE3ICszMzgs
MTMgQEAgY2xhc3MgQ29tbWl0UXVldWUoUGF0Y2hQcm9jZXNzaW5nUXVldWUsIFN0ZXBTZXF1ZW5j
ZUVycm9ySGFuZGxlciwgQ29tbWl0UXVldWVUYXMKIAogICAgIGRlZiBfZmFpbGluZ190ZXN0c19t
ZXNzYWdlKHNlbGYsIHRhc2ssIHBhdGNoKToKICAgICAgICAgcmVzdWx0cyA9IHRhc2sucmVzdWx0
c19mcm9tX3BhdGNoX3Rlc3RfcnVuKHBhdGNoKQotICAgICAgICBjbGVhbl9yZXN1bHRzID0gdGFz
ay5yZXN1bHRzX2Zyb21fdGVzdF9ydW5fd2l0aG91dF9wYXRjaChwYXRjaCkKIAotICAgICAgICB1
bmV4cGVjdGVkX2ZhaWx1cmVzID0gTm9uZQotICAgICAgICBpZiByZXN1bHRzIGFuZCBjbGVhbl9y
ZXN1bHRzOgotICAgICAgICAgICAgdW5leHBlY3RlZF9mYWlsdXJlcyA9IGxpc3Qoc2V0KHJlc3Vs
dHMuZmFpbGluZ190ZXN0cygpKSAtIHNldChjbGVhbl9yZXN1bHRzLmZhaWxpbmdfdGVzdHMoKSkp
Ci0gICAgICAgICMgRklYTUU6IENhbiB0aGlzIGV2ZXIgaGFwcGVuPwotICAgICAgICBpZiBub3Qg
dW5leHBlY3RlZF9mYWlsdXJlczoKKyAgICAgICAgaWYgbm90IHJlc3VsdHM6CiAgICAgICAgICAg
ICByZXR1cm4gTm9uZQotICAgICAgICBpZiByZXN1bHRzIGFuZCByZXN1bHRzLmRpZF9leGNlZWRf
dGVzdF9mYWlsdXJlX2xpbWl0KCk6CisKKyAgICAgICAgaWYgcmVzdWx0cy5kaWRfZXhjZWVkX3Rl
c3RfZmFpbHVyZV9saW1pdCgpOgogICAgICAgICAgICAgcmV0dXJuICJOdW1iZXIgb2YgdGVzdCBm
YWlsdXJlcyBleGNlZWRlZCB0aGUgZmFpbHVyZSBsaW1pdC4iCi0gICAgICAgIHJldHVybiAiTmV3
IGZhaWxpbmcgdGVzdHM6XG4lcyIgJSAiXG4iLmpvaW4odW5leHBlY3RlZF9mYWlsdXJlcykKKyAg
ICAgICAgcmV0dXJuICJOZXcgZmFpbGluZyB0ZXN0czpcbiVzIiAlICJcbiIuam9pbihyZXN1bHRz
LmZhaWxpbmdfdGVzdHMoKSkKIAogICAgIGRlZiBfZXJyb3JfbWVzc2FnZV9mb3JfYnVnKHNlbGYs
IHRhc2ssIHBhdGNoLCBzY3JpcHRfZXJyb3IpOgogICAgICAgICBtZXNzYWdlID0gc2VsZi5fZmFp
bGluZ190ZXN0c19tZXNzYWdlKHRhc2ssIHBhdGNoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0dGVzdC5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkKaW5kZXggZTJhNDg4
MC4uYjlmNzE4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL3F1ZXVlc191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5CkBAIC0zMDgsOSArMzA4LDYgQEAgTU9DSzogcmVs
ZWFzZV93b3JrX2l0ZW06IGNvbW1pdC1xdWV1ZSAxMDAwMAogICAgICAgICAgICAgZGVmIHJlc3Vs
dHNfZnJvbV9wYXRjaF90ZXN0X3J1bihzZWxmLCBwYXRjaCk6CiAgICAgICAgICAgICAgICAgcmV0
dXJuIExheW91dFRlc3RSZXN1bHRzKFt0ZXN0X3Jlc3VsdHMuVGVzdFJlc3VsdCgibW9ja190ZXN0
X25hbWUuaHRtbCIsIGZhaWx1cmVzPVt0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVUZXh0TWlzbWF0Y2go
KV0pXSwgZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQ9RmFsc2UpCiAKLSAgICAgICAgICAg
IGRlZiByZXN1bHRzX2Zyb21fdGVzdF9ydW5fd2l0aG91dF9wYXRjaChzZWxmLCBwYXRjaCk6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIExheW91dFRlc3RSZXN1bHRzKFtdLCBkaWRfZXhjZWVkX3Rl
c3RfZmFpbHVyZV9saW1pdD1GYWxzZSkKLQogICAgICAgICBxdWV1ZSA9IENvbW1pdFF1ZXVlKE1v
Y2tDb21taXRRdWV1ZVRhc2spCiAKICAgICAgICAgZGVmIG1vY2tfcnVuX3dlYmtpdF9wYXRjaChj
b21tYW5kKToKLS0gCjEuOS4zIChBcHBsZSBHaXQtNTApCgo=
</data>
<flag name="review"
          id="265943"
          type_id="1"
          status="+"
          setter="dbates"
    />
    <flag name="commit-queue"
          id="265944"
          type_id="3"
          status="-"
          setter="dbates"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241145</attachid>
            <date>2014-11-06 16:51:22 -0800</date>
            <delta_ts>2014-11-06 18:27:43 -0800</delta_ts>
            <desc>Changelog fix</desc>
            <filename>0001-Remove-duplicate-code-from-PatchAnalysisTask._test_p.patch</filename>
            <type>text/plain</type>
            <size>16836</size>
            <attacher name="Jake Nielsen">jake.nielsen.webkit</attacher>
            
              <data encoding="base64">RnJvbSA0OWY3MWRiNTQxMjY5YTNlNDNmOTQ4YzI0YTM2ZTllZGI1ZDViOWMxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWtlIE5pZWxzZW4gPGphY29iX25pZWxzZW5AYXBwbGUuY29t
PgpEYXRlOiBUaHUsIDYgTm92IDIwMTQgMTY6NTA6NTAgLTA4MDAKU3ViamVjdDogW1BBVENIXSBS
ZW1vdmUgZHVwbGljYXRlIGNvZGUgZnJvbSBQYXRjaEFuYWx5c2lzVGFzay5fdGVzdF9wYXRjaCBh
bmQKIGZpeCBidWcgcmVnYXJkaW5nIGluY29ycmVjdCBjYWxsIHRvIFBhdGNoQW5hbHlzaXNUYXNr
LnJlcG9ydF9mYWlsdXJlCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTM4MjI5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiogU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzLnB5OgpNYWtlcyBzdXJlIHRlc3RfcmVzdWx0cyBy
ZXR1cm5zIGEgbGlzdC4KKExheW91dFRlc3RSZXN1bHRzLnRlc3RfcmVzdWx0cyk6CiogU2NyaXB0
cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHk6Ck1ha2VzIHVu
aXQgdGVzdHMgYWxzbyBjaGVjayB0byBtYWtlIHN1cmUKdGFzay5yZXN1bHRzX2Zyb21fcGF0Y2hf
dGVzdF9ydW4oKSBhbmQKdGFzay5yZXN1bHRzX2Zyb21fdGVzdF9ydW5fd2l0aG91dF9wYXRjaCBy
ZXR1cm4gaW5zdGFuY2VzIG9mCkxheW91dFRlc3RSZXN1bHRzLgooQ29tbWl0UXVldWVUYXNrVGVz
dC5fcnVuX2FuZF9leHBlY3RfcGF0Y2hfYW5hbHlzaXNfcmVzdWx0KToKKiBTY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvYm90L3BhdGNoYW5hbHlzaXN0YXNrLnB5OgpDb25kZW5zZXMgZHVwbGljYXRlIGNv
ZGUgaW50byBfc2hvdWxkX2RlZmVyX3BhdGNoX29yX3Rocm93LCBhbmQKcmVtb3ZlcyB0aGUgbm93
LXVudXNlZCBfY2xlYW5fdHJlZV9yZXN1bHRzIG1lbWJlci4KKFBhdGNoQW5hbHlzaXNUYXNrLl9f
aW5pdF9fKToKKFBhdGNoQW5hbHlzaXNUYXNrLl9jb250aW51ZV90ZXN0aW5nX3BhdGNoX3RoYXRf
ZXhjZWVkZWRfZmFpbHVyZV9saW1pdF9vbl9maXJzdF9vcl9zZWNvbmRfdHJ5KToKKFBhdGNoQW5h
bHlzaXNUYXNrLl9zaG91bGRfZGVmZXJfcGF0Y2hfb3JfdGhyb3cpOgooUGF0Y2hBbmFseXNpc1Rh
c2suX3Rlc3RfcGF0Y2gpOgooUGF0Y2hBbmFseXNpc1Rhc2sucmVzdWx0c19mcm9tX3BhdGNoX3Rl
c3RfcnVuKToKKFBhdGNoQW5hbHlzaXNUYXNrLnJlc3VsdHNfZnJvbV90ZXN0X3J1bl93aXRob3V0
X3BhdGNoKTogRGVsZXRlZC4KKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3
YXJuaW5nc3lzdGVtLnB5OgpSZW1vdmVzIG5lZWRsZXNzIGNhbGwgdG8gcmVzdWx0c19mcm9tX3Rl
c3RfcnVuX3dpdGhvdXRfcGF0Y2gKKEFic3RyYWN0RWFybHlXYXJuaW5nU3lzdGVtLl9mYWlsaW5n
X3Rlc3RzX21lc3NhZ2UpOgoqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdh
cm5pbmdzeXN0ZW1fdW5pdHRlc3QucHk6CkNoYW5nZXMgb3JkZXIgb2YgdGVzdCBmYWlsdXJlIG1l
c3NhZ2VzIHRvIGJlIGluIHRoZSBvcmRlciB0aGF0IHRoZXkKYXBwZWFyLgooQWJzdHJhY3RFYXJs
eVdhcm5pbmdTeXN0ZW1UZXN0LnRlc3RfZmFpbGluZ190ZXN0c19tZXNzYWdlKToKKiBTY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5OgpSZW1vdmVzIG5lZWRsZXNzIGNhbGwg
dG8gcmVzdWx0c19mcm9tX3Rlc3RfcnVuX3dpdGhvdXRfcGF0Y2guCihDb21taXRRdWV1ZS5fZmFp
bGluZ190ZXN0c19tZXNzYWdlKToKKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVl
dWVzX3VuaXR0ZXN0LnB5OgooTW9ja0NvbW1pdFF1ZXVlVGFzay5yZXN1bHRzX2Zyb21fdGVzdF9y
dW5fd2l0aG91dF9wYXRjaCk6IERlbGV0ZWQuCi0tLQogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzOSArKysrKysrKysrKysrKysKIC4uLi93ZWJr
aXRweS9jb21tb24vbmV0L2xheW91dHRlc3RyZXN1bHRzLnB5ICAgICAgIHwgIDIgKy0KIC4uLi93
ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkgIHwgIDEgKwogLi4u
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hhbmFseXNpc3Rhc2sucHkgfCA1NSArKysr
KysrKysrLS0tLS0tLS0tLS0tCiAuLi4vd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5p
bmdzeXN0ZW0ucHkgICB8IDExICsrLS0tCiAuLi4vdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdz
eXN0ZW1fdW5pdHRlc3QucHkgICB8ICAzICstCiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvcXVldWVzLnB5ICAgICB8IDEyICsrLS0tCiAuLi4vd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkgICAgICB8ICAzIC0tCiA4IGZpbGVzIGNoYW5nZWQsIDc1
IGluc2VydGlvbnMoKyksIDUxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlYjFhODA5Li5mMDkzMWQxIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAK
KzIwMTQtMTEtMDYgIEpha2UgTmllbHNlbiAgPGphY29iX25pZWxzZW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFJlbW92ZSBkdXBsaWNhdGUgY29kZSBmcm9tIFBhdGNoQW5hbHlzaXNUYXNrLl90ZXN0
X3BhdGNoIGFuZCBmaXggYnVnCisgICAgICAgIHJlZ2FyZGluZyBpbmNvcnJlY3QgY2FsbCB0byBQ
YXRjaEFuYWx5c2lzVGFzay5yZXBvcnRfZmFpbHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4MjI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5
b3V0dGVzdHJlc3VsdHMucHk6CisgICAgICAgIE1ha2VzIHN1cmUgdGVzdF9yZXN1bHRzIHJldHVy
bnMgYSBsaXN0LgorICAgICAgICAoTGF5b3V0VGVzdFJlc3VsdHMudGVzdF9yZXN1bHRzKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2NvbW1pdHF1ZXVldGFza191bml0dGVz
dC5weToKKyAgICAgICAgTWFrZXMgdW5pdCB0ZXN0cyBhbHNvIGNoZWNrIHRvIG1ha2Ugc3VyZQor
ICAgICAgICB0YXNrLnJlc3VsdHNfZnJvbV9wYXRjaF90ZXN0X3J1bigpIGFuZAorICAgICAgICB0
YXNrLnJlc3VsdHNfZnJvbV90ZXN0X3J1bl93aXRob3V0X3BhdGNoIHJldHVybiBpbnN0YW5jZXMg
b2YKKyAgICAgICAgTGF5b3V0VGVzdFJlc3VsdHMuCisgICAgICAgIChDb21taXRRdWV1ZVRhc2tU
ZXN0Ll9ydW5fYW5kX2V4cGVjdF9wYXRjaF9hbmFseXNpc19yZXN1bHQpOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hhbmFseXNpc3Rhc2sucHk6CisgICAgICAgIENv
bmRlbnNlcyBkdXBsaWNhdGUgY29kZSBpbnRvIF9zaG91bGRfZGVmZXJfcGF0Y2hfb3JfdGhyb3cs
IGFuZAorICAgICAgICByZW1vdmVzIHRoZSBub3ctdW51c2VkIF9jbGVhbl90cmVlX3Jlc3VsdHMg
bWVtYmVyLgorICAgICAgICAoUGF0Y2hBbmFseXNpc1Rhc2suX19pbml0X18pOgorICAgICAgICAo
UGF0Y2hBbmFseXNpc1Rhc2suX2NvbnRpbnVlX3Rlc3RpbmdfcGF0Y2hfdGhhdF9leGNlZWRlZF9m
YWlsdXJlX2xpbWl0X29uX2ZpcnN0X29yX3NlY29uZF90cnkpOgorICAgICAgICAoUGF0Y2hBbmFs
eXNpc1Rhc2suX3Nob3VsZF9kZWZlcl9wYXRjaF9vcl90aHJvdyk6CisgICAgICAgIChQYXRjaEFu
YWx5c2lzVGFzay5fdGVzdF9wYXRjaCk6CisgICAgICAgIChQYXRjaEFuYWx5c2lzVGFzay5yZXN1
bHRzX2Zyb21fcGF0Y2hfdGVzdF9ydW4pOgorICAgICAgICAoUGF0Y2hBbmFseXNpc1Rhc2sucmVz
dWx0c19mcm9tX3Rlc3RfcnVuX3dpdGhvdXRfcGF0Y2gpOiBEZWxldGVkLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0ucHk6CisgICAg
ICAgIFJlbW92ZXMgbmVlZGxlc3MgY2FsbCB0byByZXN1bHRzX2Zyb21fdGVzdF9ydW5fd2l0aG91
dF9wYXRjaAorICAgICAgICAoQWJzdHJhY3RFYXJseVdhcm5pbmdTeXN0ZW0uX2ZhaWxpbmdfdGVz
dHNfbWVzc2FnZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vh
cmx5d2FybmluZ3N5c3RlbV91bml0dGVzdC5weToKKyAgICAgICAgQ2hhbmdlcyBvcmRlciBvZiB0
ZXN0IGZhaWx1cmUgbWVzc2FnZXMgdG8gYmUgaW4gdGhlIG9yZGVyIHRoYXQgdGhleQorICAgICAg
ICBhcHBlYXIuCisgICAgICAgIChBYnN0cmFjdEVhcmx5V2FybmluZ1N5c3RlbVRlc3QudGVzdF9m
YWlsaW5nX3Rlc3RzX21lc3NhZ2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9xdWV1ZXMucHk6CisgICAgICAgIFJlbW92ZXMgbmVlZGxlc3MgY2FsbCB0byByZXN1
bHRzX2Zyb21fdGVzdF9ydW5fd2l0aG91dF9wYXRjaC4KKyAgICAgICAgKENvbW1pdFF1ZXVlLl9m
YWlsaW5nX3Rlc3RzX21lc3NhZ2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHk6CisgICAgICAgIChNb2NrQ29tbWl0UXVldWVUYXNr
LnJlc3VsdHNfZnJvbV90ZXN0X3J1bl93aXRob3V0X3BhdGNoKTogRGVsZXRlZC4KKwogMjAxNC0x
MC0zMCAgUm9oaXQgS3VtYXIgIDxrdW1hci5yb2hpdEBzYW1zdW5nLmNvbT4KIAogICAgICAgICBb
R1RLXSBNaW5pYnJvd3NlciA6IEFkZCB3aW5kb3cgZnVsbHNjcmVlbiBzdXBwb3J0IGZvciBNaW5p
YnJvd3NlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xh
eW91dHRlc3RyZXN1bHRzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2xh
eW91dHRlc3RyZXN1bHRzLnB5CmluZGV4IGU3NGNhNzguLjdmYjY3YzEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9sYXlvdXR0ZXN0cmVzdWx0cy5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvbGF5b3V0dGVzdHJlc3VsdHMucHkK
QEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgTGF5b3V0VGVzdFJlc3VsdHMob2JqZWN0KToKICAgICAg
ICAgcmV0dXJuIHNlbGYuX2RpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0CiAKICAgICBkZWYg
dGVzdF9yZXN1bHRzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fdGVzdF9yZXN1bHRzCisg
ICAgICAgIHJldHVybiBbcmVzdWx0IGZvciByZXN1bHQgaW4gc2VsZi5fdGVzdF9yZXN1bHRzXQog
CiAgICAgZGVmIHJlc3VsdHNfbWF0Y2hpbmdfZmFpbHVyZV90eXBlcyhzZWxmLCBmYWlsdXJlX3R5
cGVzKToKICAgICAgICAgcmV0dXJuIFtyZXN1bHQgZm9yIHJlc3VsdCBpbiBzZWxmLl90ZXN0X3Jl
c3VsdHMgaWYgcmVzdWx0Lmhhc19mYWlsdXJlX21hdGNoaW5nX3R5cGVzKCpmYWlsdXJlX3R5cGVz
KV0KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvY29tbWl0cXVl
dWV0YXNrX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21t
aXRxdWV1ZXRhc2tfdW5pdHRlc3QucHkKaW5kZXggZGMxMzljOC4uMzAyYTUzNiAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRhc2tfdW5pdHRl
c3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9jb21taXRxdWV1ZXRh
c2tfdW5pdHRlc3QucHkKQEAgLTE4MSw2ICsxODEsNyBAQCBjbGFzcyBDb21taXRRdWV1ZVRhc2tU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIyBUaGUgZmFpbHVyZSBzdGF0dXMgb25s
eSBtZWFucyBhbnl0aGluZyBpZiB3ZSBhY3R1YWxseSBmYWlsZWQuCiAgICAgICAgIGlmIGV4cGVj
dGVkX2FuYWx5c2lzX3Jlc3VsdCA9PSBQYXRjaEFuYWx5c2lzUmVzdWx0LkZBSUw6CiAgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHRhc2suZmFpbHVyZV9zdGF0dXNfaWQsIGV4cGVjdGVkX2Zh
aWx1cmVfc3RhdHVzX2lkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHRhc2su
cmVzdWx0c19mcm9tX3BhdGNoX3Rlc3RfcnVuKHBhdGNoKSwgTGF5b3V0VGVzdFJlc3VsdHMpCiAK
ICAgICBkZWYgX3J1bl90aHJvdWdoX3Rhc2soc2VsZiwgY29tbWl0X3F1ZXVlLCBleHBlY3RlZF9s
b2dzLCBleHBlY3RlZF9leGNlcHRpb249Tm9uZSwgZXhwZWN0X3JldHJ5PUZhbHNlKToKICAgICAg
ICAgc2VsZi5tYXhEaWZmID0gTm9uZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2JvdC9wYXRjaGFuYWx5c2lzdGFzay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9ib3QvcGF0Y2hhbmFseXNpc3Rhc2sucHkKaW5kZXggZjVlYWQ0Yy4uNmRjMDgzZiAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9wYXRjaGFuYWx5c2lzdGFz
ay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3BhdGNoYW5hbHlzaXN0
YXNrLnB5CkBAIC04Miw3ICs4Miw2IEBAIGNsYXNzIFBhdGNoQW5hbHlzaXNUYXNrKG9iamVjdCk6
CiAgICAgICAgIHNlbGYuX3NjcmlwdF9lcnJvciA9IE5vbmUKICAgICAgICAgc2VsZi5fcmVzdWx0
c19hcmNoaXZlX2Zyb21fcGF0Y2hfdGVzdF9ydW4gPSBOb25lCiAgICAgICAgIHNlbGYuX3Jlc3Vs
dHNfZnJvbV9wYXRjaF90ZXN0X3J1biA9IE5vbmUKLSAgICAgICAgc2VsZi5fY2xlYW5fdHJlZV9y
ZXN1bHRzID0gTm9uZQogCiAgICAgZGVmIF9ydW5fY29tbWFuZChzZWxmLCBjb21tYW5kLCBzdWNj
ZXNzX21lc3NhZ2UsIGZhaWx1cmVfbWVzc2FnZSk6CiAgICAgICAgIHRyeToKQEAgLTE4NSwxNyAr
MTg0LDM0IEBAIGNsYXNzIFBhdGNoQW5hbHlzaXNUYXNrKG9iamVjdCk6CiAKICAgICBkZWYgX2Nv
bnRpbnVlX3Rlc3RpbmdfcGF0Y2hfdGhhdF9leGNlZWRlZF9mYWlsdXJlX2xpbWl0X29uX2ZpcnN0
X29yX3NlY29uZF90cnkoc2VsZiwgcmVzdWx0cywgcmVzdWx0c19hcmNoaXZlLCBzY3JpcHRfZXJy
b3IpOgogICAgICAgICBzZWxmLl9idWlsZF9hbmRfdGVzdF93aXRob3V0X3BhdGNoKCkKLSAgICAg
ICAgc2VsZi5fY2xlYW5fdHJlZV9yZXN1bHRzID0gc2VsZi5fZGVsZWdhdGUudGVzdF9yZXN1bHRz
KCkKIAogICAgICAgICAjIElmIHdlJ3ZlIG1hZGUgaXQgaGVyZSwgdGhlbiBtYW55ICg1MDApIHRl
c3RzIGFyZSBmYWlsaW5nIHdpdGggdGhlIHBhdGNoIGFwcGxpZWQsIGJ1dAogICAgICAgICAjIGlm
IHRoZSBjbGVhbiB0cmVlIGlzIGFsc28gZmFpbGluZyBtYW55IHRlc3RzLCBldmVuIGlmIGl0J3Mg
bm90IHF1aXRlIGFzIG1hbnkgKDQ5NSksCiAgICAgICAgICMgdGhlbiB3ZSBjYW4ndCBiZSBjZXJ0
YWluIHRoYXQgdGhlIGRpc2NyZXBhbmN5IGlzbid0IGR1ZSB0byBmbGFraW5lc3MsIGFuZCBoZW5j
ZSB3ZSBtdXN0CiAgICAgICAgICMgZGVmZXIganVkZ2VtZW50LgotICAgICAgICBpZiAobGVuKHJl
c3VsdHMuZmFpbGluZ190ZXN0cygpKSAtIGxlbihzZWxmLl9jbGVhbl90cmVlX3Jlc3VsdHMuZmFp
bGluZ190ZXN0cygpKSkgPD0gNToKKyAgICAgICAgaWYgKGxlbihyZXN1bHRzLmZhaWxpbmdfdGVz
dHMoKSkgLSBsZW4oc2VsZi5fZGVsZWdhdGUudGVzdF9yZXN1bHRzKCkuZmFpbGluZ190ZXN0cygp
KSkgPD0gNToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgICAgIHJldHVybiBzZWxm
LnJlcG9ydF9mYWlsdXJlKHJlc3VsdHNfYXJjaGl2ZSwgcmVzdWx0cywgc2NyaXB0X2Vycm9yKQog
CisgICAgZGVmIF9zaG91bGRfZGVmZXJfcGF0Y2hfb3JfdGhyb3coc2VsZiwgZmFpbHVyZXNfd2l0
aF9wYXRjaCwgcmVzdWx0c19hcmNoaXZlX2Zvcl9mYWlsdXJlc193aXRoX3BhdGNoLCBzY3JpcHRf
ZXJyb3IsIGZhaWx1cmVfaWQpOgorICAgICAgICBzZWxmLl9idWlsZF9hbmRfdGVzdF93aXRob3V0
X3BhdGNoKCkKKyAgICAgICAgY2xlYW5fdHJlZV9yZXN1bHRzID0gc2VsZi5fZGVsZWdhdGUudGVz
dF9yZXN1bHRzKCkKKworICAgICAgICBpZiBjbGVhbl90cmVlX3Jlc3VsdHMuZGlkX2V4Y2VlZF90
ZXN0X2ZhaWx1cmVfbGltaXQoKToKKyAgICAgICAgICAgICMgV2UgY2Fubm90IGtub3cgd2hldGhl
ciB0aGUgZmFpbHVyZXMgd2Ugc2F3IGluIHRoZSB0ZXN0IHJ1bnMgd2l0aCB0aGUgcGF0Y2ggYXJl
IGV4cGVjdGVkLgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBmYWlsdXJlc19p
bnRyb2R1Y2VkX2J5X3BhdGNoID0gZnJvemVuc2V0KGZhaWx1cmVzX3dpdGhfcGF0Y2gpIC0gZnJv
emVuc2V0KGNsZWFuX3RyZWVfcmVzdWx0cy5mYWlsaW5nX3Rlc3RfcmVzdWx0cygpKQorICAgICAg
ICBpZiBmYWlsdXJlc19pbnRyb2R1Y2VkX2J5X3BhdGNoOgorICAgICAgICAgICAgc2VsZi5mYWls
dXJlX3N0YXR1c19pZCA9IGZhaWx1cmVfaWQKKyAgICAgICAgICAgICMgcmVwb3J0X2ZhaWx1cmUg
d2lsbCBlaXRoZXIgdGhyb3cgb3IgcmV0dXJuIGZhbHNlLgorICAgICAgICAgICAgcmV0dXJuIG5v
dCBzZWxmLnJlcG9ydF9mYWlsdXJlKHJlc3VsdHNfYXJjaGl2ZV9mb3JfZmFpbHVyZXNfd2l0aF9w
YXRjaCwgTGF5b3V0VGVzdFJlc3VsdHMoZmFpbHVyZXNfaW50cm9kdWNlZF9ieV9wYXRjaCwgZGlk
X2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQ9RmFsc2UpLCBzY3JpcHRfZXJyb3IpCisKKyAgICAg
ICAgIyBJbiB0aGlzIGNhc2UsIHdlIGtub3cgdGhhdCBhbGwgb2YgdGhlIGZhaWx1cmVzIHRoYXQg
d2Ugc2F3IHdpdGggdGhlIHBhdGNoIHdlcmUKKyAgICAgICAgIyBhbHNvIHByZXNlbnQgd2l0aG91
dCB0aGUgcGF0Y2gsIHNvIHdlIGRvbid0IG5lZWQgdG8gZGVmZXIuCisgICAgICAgIHJldHVybiBG
YWxzZQorCiAgICAgZGVmIF90ZXN0X3BhdGNoKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl90ZXN0
KCk6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQpAQCAtMjM2LDMyICsyNTIsMTUgQEAgY2xhc3Mg
UGF0Y2hBbmFseXNpc1Rhc2sob2JqZWN0KToKIAogICAgICAgICAgICAgdGVzdHNfdGhhdF9jb25z
aXN0ZW50bHlfZmFpbGVkID0gZmlyc3RfZmFpbGluZ19yZXN1bHRzX3NldC5pbnRlcnNlY3Rpb24o
c2Vjb25kX2ZhaWxpbmdfcmVzdWx0c19zZXQpCiAgICAgICAgICAgICBpZiB0ZXN0c190aGF0X2Nv
bnNpc3RlbnRseV9mYWlsZWQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5fYnVpbGRfYW5kX3Rlc3Rf
d2l0aG91dF9wYXRjaCgpCi0gICAgICAgICAgICAgICAgc2VsZi5fY2xlYW5fdHJlZV9yZXN1bHRz
ID0gc2VsZi5fZGVsZWdhdGUudGVzdF9yZXN1bHRzKCkKLSAgICAgICAgICAgICAgICB0ZXN0c190
aGF0X2ZhaWxlZF9vbl90cmVlID0gc2VsZi5fY2xlYW5fdHJlZV9yZXN1bHRzLmZhaWxpbmdfdGVz
dF9yZXN1bHRzKCkKLQotICAgICAgICAgICAgICAgIG5ld19mYWlsdXJlc19pbnRyb2R1Y2VkX2J5
X3BhdGNoID0gdGVzdHNfdGhhdF9jb25zaXN0ZW50bHlfZmFpbGVkLmRpZmZlcmVuY2Uoc2V0KHRl
c3RzX3RoYXRfZmFpbGVkX29uX3RyZWUpKQotICAgICAgICAgICAgICAgIGlmIG5ld19mYWlsdXJl
c19pbnRyb2R1Y2VkX2J5X3BhdGNoOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWx1cmVf
c3RhdHVzX2lkID0gZmlyc3RfZmFpbHVyZV9zdGF0dXNfaWQKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUoZmlyc3RfcmVzdWx0c19hcmNoaXZlLCBuZXdfZmFp
bHVyZXNfaW50cm9kdWNlZF9ieV9wYXRjaCwgZmlyc3Rfc2NyaXB0X2Vycm9yKQorICAgICAgICAg
ICAgICAgIGlmIHNlbGYuX3Nob3VsZF9kZWZlcl9wYXRjaF9vcl90aHJvdyh0ZXN0c190aGF0X2Nv
bnNpc3RlbnRseV9mYWlsZWQsIGZpcnN0X3Jlc3VsdHNfYXJjaGl2ZSwgZmlyc3Rfc2NyaXB0X2Vy
cm9yLCBmaXJzdF9mYWlsdXJlX3N0YXR1c19pZCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBGYWxzZSAgIyBEZWZlciBwYXRjaAogCi0gICAgICAgICAgICAjIEF0IHRoaXMgcG9pbnQgd2Ug
a25vdyB0aGF0IHRoZXJlIGlzIGZsYWt5bmVzcyB3aXRoIHRoZSBwYXRjaCBhcHBsaWVkLCBidXQg
bm8gY29uc2lzdGVudCBmYWlsdXJlcworICAgICAgICAgICAgIyBBdCB0aGlzIHBvaW50IHdlIGtu
b3cgdGhhdCBhdCBsZWFzdCBvbmUgdGVzdCBmbGFrZWQsIGJ1dCBubyBjb25zaXN0ZW50IGZhaWx1
cmVzCiAgICAgICAgICAgICAjIHdlcmUgaW50cm9kdWNlZC4gVGhpcyBpcyBhIGJpdCBvZiBhIGdy
ZXktem9uZS4KLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIGlmIHNlbGYuX2J1
aWxkX2FuZF90ZXN0X3dpdGhvdXRfcGF0Y2goKToKLSAgICAgICAgICAgICMgVGhlIGVycm9yIGZy
b20gdGhlIHByZXZpb3VzIC5fdGVzdCgpIHJ1biBpcyByZWFsLCByZXBvcnQgaXQuCi0gICAgICAg
ICAgICBzZWxmLmZhaWx1cmVfc3RhdHVzX2lkID0gZmlyc3RfZmFpbHVyZV9zdGF0dXNfaWQKLSAg
ICAgICAgICAgIHJldHVybiBzZWxmLnJlcG9ydF9mYWlsdXJlKGZpcnN0X3Jlc3VsdHNfYXJjaGl2
ZSwgZmlyc3RfcmVzdWx0cywgZmlyc3Rfc2NyaXB0X2Vycm9yKQorICAgICAgICAgICAgcmV0dXJu
IEZhbHNlICAjIERlZmVyIHBhdGNoCiAKLSAgICAgICAgc2VsZi5fY2xlYW5fdHJlZV9yZXN1bHRz
ID0gc2VsZi5fZGVsZWdhdGUudGVzdF9yZXN1bHRzKCkKLQotICAgICAgICBpZiBzZWxmLl9jbGVh
bl90cmVlX3Jlc3VsdHMuZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQoKToKLSAgICAgICAg
ICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIGlmIHNldChmaXJzdF9yZXN1bHRzLmZhaWxpbmdf
dGVzdHMoKSkgLSBzZXQoc2VsZi5fY2xlYW5fdHJlZV9yZXN1bHRzLmZhaWxpbmdfdGVzdHMoKSk6
Ci0gICAgICAgICAgICBzZWxmLmZhaWx1cmVfc3RhdHVzX2lkID0gZmlyc3RfZmFpbHVyZV9zdGF0
dXNfaWQKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnJlcG9ydF9mYWlsdXJlKGZpcnN0X3Jlc3Vs
dHNfYXJjaGl2ZSwgZmlyc3RfcmVzdWx0cywgZmlyc3Rfc2NyaXB0X2Vycm9yKQorICAgICAgICBp
ZiBzZWxmLl9zaG91bGRfZGVmZXJfcGF0Y2hfb3JfdGhyb3coZmlyc3RfcmVzdWx0cy5mYWlsaW5n
X3Rlc3RfcmVzdWx0cygpLCBmaXJzdF9yZXN1bHRzX2FyY2hpdmUsIGZpcnN0X3NjcmlwdF9lcnJv
ciwgZmlyc3RfZmFpbHVyZV9zdGF0dXNfaWQpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlICAj
IERlZmVyIHBhdGNoCiAKICAgICAgICAgIyBBdCB0aGlzIHBvaW50LCB3ZSBrbm93IHRoYXQgdGhl
IGZpcnN0IGFuZCBzZWNvbmQgcnVucyBoYWQgdGhlIGV4YWN0IHNhbWUgZmFpbHVyZXMsCiAgICAg
ICAgICMgYW5kIHRoYXQgdGhvc2UgZmFpbHVyZXMgYXJlIGFsbCBwcmVzZW50IG9uIHRoZSBjbGVh
biB0cmVlLCBzbyB3ZSBjYW4gc2F5IHdpdGggY2VydGFpbnR5CkBAIC0yNzYsMTAgKzI3NSw2IEBA
IGNsYXNzIFBhdGNoQW5hbHlzaXNUYXNrKG9iamVjdCk6CiAgICAgICAgIGFzc2VydChzZWxmLl9w
YXRjaC5pZCgpID09IHBhdGNoLmlkKCkpICAjIFBhdGNoQW5hbHlzaXNUYXNrIGlzIG5vdCBjdXJy
ZW50bHkgcmUtdXNlYWJsZS4KICAgICAgICAgcmV0dXJuIHNlbGYuX3Jlc3VsdHNfZnJvbV9wYXRj
aF90ZXN0X3J1bgogCi0gICAgZGVmIHJlc3VsdHNfZnJvbV90ZXN0X3J1bl93aXRob3V0X3BhdGNo
KHNlbGYsIHBhdGNoKToKLSAgICAgICAgYXNzZXJ0KHNlbGYuX3BhdGNoLmlkKCkgPT0gcGF0Y2gu
aWQoKSkgICMgUGF0Y2hBbmFseXNpc1Rhc2sgaXMgbm90IGN1cnJlbnRseSByZS11c2VhYmxlLgot
ICAgICAgICByZXR1cm4gc2VsZi5fY2xlYW5fdHJlZV9yZXN1bHRzCi0KICAgICBkZWYgcmVwb3J0
X2ZhaWx1cmUoc2VsZiwgcmVzdWx0c19hcmNoaXZlPU5vbmUsIHJlc3VsdHM9Tm9uZSwgc2NyaXB0
X2Vycm9yPU5vbmUpOgogICAgICAgICBpZiBub3Qgc2VsZi52YWxpZGF0ZSgpOgogICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbS5weQppbmRleCA2Y2ZkZTNiLi4zNGI2N2M3
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3
YXJuaW5nc3lzdGVtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9lYXJseXdhcm5pbmdzeXN0ZW0ucHkKQEAgLTU4LDE2ICs1OCwxMyBAQCBjbGFzcyBBYnN0cmFj
dEVhcmx5V2FybmluZ1N5c3RlbShBYnN0cmFjdFJldmlld1F1ZXVlLCBFYXJseVdhcm5pbmdTeXN0
ZW1UYXNrRGVsZQogCiAgICAgZGVmIF9mYWlsaW5nX3Rlc3RzX21lc3NhZ2Uoc2VsZiwgdGFzaywg
cGF0Y2gpOgogICAgICAgICByZXN1bHRzID0gdGFzay5yZXN1bHRzX2Zyb21fcGF0Y2hfdGVzdF9y
dW4ocGF0Y2gpCi0gICAgICAgIGNsZWFuX3Jlc3VsdHMgPSB0YXNrLnJlc3VsdHNfZnJvbV90ZXN0
X3J1bl93aXRob3V0X3BhdGNoKHBhdGNoKQogCi0gICAgICAgIHVuZXhwZWN0ZWRfZmFpbHVyZXMg
PSBOb25lCi0gICAgICAgIGlmIHJlc3VsdHMgYW5kIGNsZWFuX3Jlc3VsdHM6Ci0gICAgICAgICAg
ICB1bmV4cGVjdGVkX2ZhaWx1cmVzID0gbGlzdChzZXQocmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkp
IC0gc2V0KGNsZWFuX3Jlc3VsdHMuZmFpbGluZ190ZXN0cygpKSkKLSAgICAgICAgaWYgbm90IHVu
ZXhwZWN0ZWRfZmFpbHVyZXM6CisgICAgICAgIGlmIG5vdCByZXN1bHRzOgogICAgICAgICAgICAg
cmV0dXJuIE5vbmUKLSAgICAgICAgaWYgcmVzdWx0cyBhbmQgcmVzdWx0cy5kaWRfZXhjZWVkX3Rl
c3RfZmFpbHVyZV9saW1pdCgpOgorCisgICAgICAgIGlmIHJlc3VsdHMuZGlkX2V4Y2VlZF90ZXN0
X2ZhaWx1cmVfbGltaXQoKToKICAgICAgICAgICAgIHJldHVybiAiTnVtYmVyIG9mIHRlc3QgZmFp
bHVyZXMgZXhjZWVkZWQgdGhlIGZhaWx1cmUgbGltaXQuIgotICAgICAgICByZXR1cm4gIk5ldyBm
YWlsaW5nIHRlc3RzOlxuJXMiICUgIlxuIi5qb2luKHVuZXhwZWN0ZWRfZmFpbHVyZXMpCisgICAg
ICAgIHJldHVybiAiTmV3IGZhaWxpbmcgdGVzdHM6XG4lcyIgJSAiXG4iLmpvaW4ocmVzdWx0cy5m
YWlsaW5nX3Rlc3RzKCkpCiAKICAgICBkZWYgX3Bvc3RfcmVqZWN0X21lc3NhZ2Vfb25fYnVnKHNl
bGYsIHRvb2wsIHBhdGNoLCBzdGF0dXNfaWQsIGV4dHJhX21lc3NhZ2VfdGV4dD1Ob25lKToKICAg
ICAgICAgaWYgbm90IGV4dHJhX21lc3NhZ2VfdGV4dDoKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW1fdW5pdHRlc3QucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVt
X3VuaXR0ZXN0LnB5CmluZGV4IDAxYzk2MjguLmM2ZGUxM2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW1fdW5pdHRlc3Qu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2Fybmlu
Z3N5c3RlbV91bml0dGVzdC5weQpAQCAtNTEsOSArNTEsOCBAQCBjbGFzcyBBYnN0cmFjdEVhcmx5
V2FybmluZ1N5c3RlbVRlc3QoUXVldWVzVGVzdCk6CiAgICAgICAgIHRhc2sucmVzdWx0c19mcm9t
X3BhdGNoX3Rlc3RfcnVuID0gbGFtYmRhIGE6IExheW91dFRlc3RSZXN1bHRzKFt0ZXN0X3Jlc3Vs
dHMuVGVzdFJlc3VsdCgiZm9vLmh0bWwiLCBmYWlsdXJlcz1bdGVzdF9mYWlsdXJlcy5GYWlsdXJl
VGV4dE1pc21hdGNoKCldKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9yZXN1bHRzLlRlc3RSZXN1
bHQoImJhci5odG1sIiwgZmFpbHVyZXM9W3Rlc3RfZmFpbHVyZXMuRmFpbHVyZVRleHRNaXNtYXRj
aCgpXSldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdD1G
YWxzZSkKLSAgICAgICAgdGFzay5yZXN1bHRzX2Zyb21fdGVzdF9ydW5fd2l0aG91dF9wYXRjaCA9
IGxhbWJkYSBhOiBMYXlvdXRUZXN0UmVzdWx0cyhbXSwgZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVf
bGltaXQ9RmFsc2UpCiAgICAgICAgIHBhdGNoID0gZXdzLl90b29sLmJ1Z3MuZmV0Y2hfYXR0YWNo
bWVudCgxMDAwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRNdWx0aUxpbmVFcXVhbChld3MuX2ZhaWxp
bmdfdGVzdHNfbWVzc2FnZSh0YXNrLCBwYXRjaCksICJOZXcgZmFpbGluZyB0ZXN0czpcbmJhci5o
dG1sXG5mb28uaHRtbCIpCisgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwoZXdzLl9m
YWlsaW5nX3Rlc3RzX21lc3NhZ2UodGFzaywgcGF0Y2gpLCAiTmV3IGZhaWxpbmcgdGVzdHM6XG5m
b28uaHRtbFxuYmFyLmh0bWwiKQogCiAKIGNsYXNzIEVhcmx5V2FybmluZ1N5c3RlbVRlc3QoUXVl
dWVzVGVzdCk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvcXVldWVzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVl
cy5weQppbmRleCAyM2I3ODU5Li42YmU4NTNmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXMucHkKQEAgLTMzOCwxNyArMzM4LDEzIEBAIGNsYXNzIENv
bW1pdFF1ZXVlKFBhdGNoUHJvY2Vzc2luZ1F1ZXVlLCBTdGVwU2VxdWVuY2VFcnJvckhhbmRsZXIs
IENvbW1pdFF1ZXVlVGFzCiAKICAgICBkZWYgX2ZhaWxpbmdfdGVzdHNfbWVzc2FnZShzZWxmLCB0
YXNrLCBwYXRjaCk6CiAgICAgICAgIHJlc3VsdHMgPSB0YXNrLnJlc3VsdHNfZnJvbV9wYXRjaF90
ZXN0X3J1bihwYXRjaCkKLSAgICAgICAgY2xlYW5fcmVzdWx0cyA9IHRhc2sucmVzdWx0c19mcm9t
X3Rlc3RfcnVuX3dpdGhvdXRfcGF0Y2gocGF0Y2gpCiAKLSAgICAgICAgdW5leHBlY3RlZF9mYWls
dXJlcyA9IE5vbmUKLSAgICAgICAgaWYgcmVzdWx0cyBhbmQgY2xlYW5fcmVzdWx0czoKLSAgICAg
ICAgICAgIHVuZXhwZWN0ZWRfZmFpbHVyZXMgPSBsaXN0KHNldChyZXN1bHRzLmZhaWxpbmdfdGVz
dHMoKSkgLSBzZXQoY2xlYW5fcmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkpKQotICAgICAgICAjIEZJ
WE1FOiBDYW4gdGhpcyBldmVyIGhhcHBlbj8KLSAgICAgICAgaWYgbm90IHVuZXhwZWN0ZWRfZmFp
bHVyZXM6CisgICAgICAgIGlmIG5vdCByZXN1bHRzOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUK
LSAgICAgICAgaWYgcmVzdWx0cyBhbmQgcmVzdWx0cy5kaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9s
aW1pdCgpOgorCisgICAgICAgIGlmIHJlc3VsdHMuZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGlt
aXQoKToKICAgICAgICAgICAgIHJldHVybiAiTnVtYmVyIG9mIHRlc3QgZmFpbHVyZXMgZXhjZWVk
ZWQgdGhlIGZhaWx1cmUgbGltaXQuIgotICAgICAgICByZXR1cm4gIk5ldyBmYWlsaW5nIHRlc3Rz
OlxuJXMiICUgIlxuIi5qb2luKHVuZXhwZWN0ZWRfZmFpbHVyZXMpCisgICAgICAgIHJldHVybiAi
TmV3IGZhaWxpbmcgdGVzdHM6XG4lcyIgJSAiXG4iLmpvaW4ocmVzdWx0cy5mYWlsaW5nX3Rlc3Rz
KCkpCiAKICAgICBkZWYgX2Vycm9yX21lc3NhZ2VfZm9yX2J1ZyhzZWxmLCB0YXNrLCBwYXRjaCwg
c2NyaXB0X2Vycm9yKToKICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX2ZhaWxpbmdfdGVzdHNfbWVz
c2FnZSh0YXNrLCBwYXRjaCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0LnB5CmluZGV4IGUyYTQ4ODAuLmI5ZjcxOGQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5p
dHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVl
c191bml0dGVzdC5weQpAQCAtMzA4LDkgKzMwOCw2IEBAIE1PQ0s6IHJlbGVhc2Vfd29ya19pdGVt
OiBjb21taXQtcXVldWUgMTAwMDAKICAgICAgICAgICAgIGRlZiByZXN1bHRzX2Zyb21fcGF0Y2hf
dGVzdF9ydW4oc2VsZiwgcGF0Y2gpOgogICAgICAgICAgICAgICAgIHJldHVybiBMYXlvdXRUZXN0
UmVzdWx0cyhbdGVzdF9yZXN1bHRzLlRlc3RSZXN1bHQoIm1vY2tfdGVzdF9uYW1lLmh0bWwiLCBm
YWlsdXJlcz1bdGVzdF9mYWlsdXJlcy5GYWlsdXJlVGV4dE1pc21hdGNoKCldKV0sIGRpZF9leGNl
ZWRfdGVzdF9mYWlsdXJlX2xpbWl0PUZhbHNlKQogCi0gICAgICAgICAgICBkZWYgcmVzdWx0c19m
cm9tX3Rlc3RfcnVuX3dpdGhvdXRfcGF0Y2goc2VsZiwgcGF0Y2gpOgotICAgICAgICAgICAgICAg
IHJldHVybiBMYXlvdXRUZXN0UmVzdWx0cyhbXSwgZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGlt
aXQ9RmFsc2UpCi0KICAgICAgICAgcXVldWUgPSBDb21taXRRdWV1ZShNb2NrQ29tbWl0UXVldWVU
YXNrKQogCiAgICAgICAgIGRlZiBtb2NrX3J1bl93ZWJraXRfcGF0Y2goY29tbWFuZCk6Ci0tIAox
LjkuMyAoQXBwbGUgR2l0LTUwKQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>