<?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>106402</bug_id>
          
          <creation_ts>2013-01-08 18:53:15 -0800</creation_ts>
          <short_desc>Adding tool to check local changes have been successfully landed via a third-party (such as the commit queue).</short_desc>
          <delta_ts>2013-01-25 08:31:08 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>107408</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim &apos;mithro&apos; Ansell">mithro</reporter>
          <assigned_to name="Tim &apos;mithro&apos; Ansell">mithro</assigned_to>
          <cc>abarth</cc>
    
    <cc>alancutter</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>802886</commentid>
    <comment_count>0</comment_count>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-08 18:53:15 -0800</bug_when>
    <thetext>Adding tool to check a branch from git was successfully landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802888</commentid>
    <comment_count>1</comment_count>
      <attachid>181819</attachid>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-08 18:55:54 -0800</bug_when>
    <thetext>Created attachment 181819
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802899</commentid>
    <comment_count>2</comment_count>
      <attachid>181819</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-08 19:12:18 -0800</bug_when>
    <thetext>Comment on attachment 181819
Patch

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

Do you want this?

&gt; Tools/Scripts/webkitpy/tool/steps/landcheck.py:1
&gt; +# Copyright (C) 2010 Google Inc. All rights reserved.

2013. :)

&gt; Tools/Scripts/webkitpy/tool/steps/landcheck.py:52
&gt; +            raise ScriptError(message=&quot;Unable to find committed subversion revision.&quot;)
&gt; +
&gt; +        if not scm.working_directory_is_clean():
&gt; +            raise ScriptError(message=&quot;Uncommited Changes&quot;)

ScriptError is an error from Executive.  We should rename it to ExecutiveError to stop confusion. :) (You&apos;re not the first).  I would just use Exception or your own error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802900</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-08 19:12:37 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 181819 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=181819&amp;action=review
&gt; 
&gt; Do you want this?
Bah.  I misclicked, and typed that in the wrong box. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802901</commentid>
    <comment_count>4</comment_count>
      <attachid>181819</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-08 19:13:53 -0800</bug_when>
    <thetext>Comment on attachment 181819
Patch

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

This is fantastic, btw.

I assume you didn&apos;t run the SCM unit tests? (since they&apos;re probably broken.  You ahve to pass --all to test-webkitpy and then go get a sandwitch.  I recommend adding unittests but running only your new ones and not the whole SVN/SCM suite. :(

&gt; Tools/Scripts/webkitpy/tool/steps/landcheck.py:57
&gt; +        print &quot;Diff with&quot;
&gt; +        print &quot;git diff %s&quot; % commit_id

Do you want this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802906</commentid>
    <comment_count>5</comment_count>
      <attachid>181819</attachid>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-08 19:19:31 -0800</bug_when>
    <thetext>Comment on attachment 181819
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/tool/steps/landcheck.py:57
&gt;&gt; +        print &quot;git diff %s&quot; % commit_id
&gt; 
&gt; Do you want this?

So I ran into a problem, the &quot;scm.rebase_onto_revision()&quot; will become interactive if there is a problem rebasing. This means I can&apos;t just run the diff command for you.

Any idea on how to solve it? One thought is to do the rebase and check if it succeeded properly, otherwise reset to before the rebase and then output the manual commands you need to run?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802921</commentid>
    <comment_count>6</comment_count>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-08 19:47:38 -0800</bug_when>
    <thetext>Seems to get a lot of errors with;

[67/1734] webkitpy.common.checkout.scm.scm_unittest.GitSVNTest.test_commit_with_message_not_synced_with_conflict erred:
  Traceback (most recent call last):
    File &quot;/fast/chrome/src/third_party/WebKit/Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py&quot;, line 1300, in test_commit_with_message_not_synced_with_conflict
      self.assertRaises(ScriptError, scm.commit_with_message, &quot;another test commit&quot;, force_squash=True)
    File &quot;/usr/lib/python2.7/unittest/case.py&quot;, line 471, in assertRaises
      callableObj(*args, **kwargs)
    File &quot;/fast/chrome/src/third_party/WebKit/Tools/Scripts/webkitpy/common/checkout/scm/git.py&quot;, line 377, in commit_with_message
      return self.push_local_commits_to_server(username=username, password=password)
    File &quot;/fast/chrome/src/third_party/WebKit/Tools/Scripts/webkitpy/common/checkout/scm/git.py&quot;, line 462, in push_local_commits_to_server
      raise AuthenticationError(SVN.svn_server_host, prompt_for_password=True)
  AuthenticationError</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802925</commentid>
    <comment_count>7</comment_count>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-08 19:51:04 -0800</bug_when>
    <thetext>Without my patch;
  Ran 1733 tests in 34.321s                                                                                               
  FAILED (failures=1, errors=22)


With my patch;
  Ran 1734 tests in 30.736s                                                                             
  FAILED (failures=1, errors=22)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802932</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-08 19:58:03 -0800</bug_when>
    <thetext>test-webkitpy (without --all) should have no errors.

Sadly scm_unittests.py has been ignored for a *long* time and is likely full of failures. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802935</commentid>
    <comment_count>9</comment_count>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-08 20:01:39 -0800</bug_when>
    <thetext>Added 1 extra test which doesn&apos;t fail.

I&apos;ll go hit the tests with a stick in another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803015</commentid>
    <comment_count>10</comment_count>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-08 21:50:33 -0800</bug_when>
    <thetext>Mike also suggested that I try the most comment case, then if that fails print what a human would need to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803773</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-01-09 15:19:36 -0800</bug_when>
    <thetext>I think this change is a little problematic as-is. I&apos;m not entirely sure what the intent is, as it looks like it&apos;s checking two things: 1) that a given bug id has landed, and 2) that if we rebase a git branch against that bug id, then the branch is empty (fully merged), right? Given that this command has side effects (actually rebasing the branch), and isn&apos;t actually landing things, calling it &quot;land-check&quot; seems like a bad name. 

I&apos;m also a bit torn on having a command that only works in git checkouts, but then again, you&apos;re not likely to need this at all in an svn checkout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803832</commentid>
    <comment_count>12</comment_count>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-09 16:51:34 -0800</bug_when>
    <thetext>It seems like there has been provisions for git only commands already because of the following;

        AbstractDeclarativeCommand.__init__(self, options=options, requires_local_commits=True)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803883</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-09 17:41:38 -0800</bug_when>
    <thetext>Correct, webkitpy works best with Git, but still supports SVN:
https://lists.webkit.org/pipermail/webkit-dev/2012-April/020198.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803973</commentid>
    <comment_count>14</comment_count>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-09 19:38:52 -0800</bug_when>
    <thetext>There are already;

    def ensure_clean_working_directory(self, force_clean):
        if self.working_directory_is_clean():
            return
        if not force_clean:
            print self.run(self.status_command(), error_handler=Executive.ignore_error, cwd=self.checkout_root)
            raise ScriptError(message=&quot;Working directory has modifications, pass --force-clean or --no-clean to continue.&quot;)
        _log.info(&quot;Cleaning working directory&quot;)
        self.clean_working_directory()



    def ensure_no_local_commits(self, force):
        if not self.supports_local_commits():
            return
        commits = self.local_commits()
        if not len(commits):
            return
        if not force:
            _log.error(&quot;Working directory has local commits, pass --force-clean to continue.&quot;)
            sys.exit(1) #### WHY!? Oh god why!?
        self.discard_local_commits()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803987</commentid>
    <comment_count>15</comment_count>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-09 19:51:20 -0800</bug_when>
    <thetext>Any better idea for a name then?

 landed-rebase?
 compare-to-landed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804002</commentid>
    <comment_count>16</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-01-09 20:18:14 -0800</bug_when>
    <thetext>is your intent to actually rebase as well, or is that just a (necessary?) side effect of checking to see if the branch is merged?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804018</commentid>
    <comment_count>17</comment_count>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-09 20:48:25 -0800</bug_when>
    <thetext>Its just a side effect of doing the diff. It also means that any uncommitted changes are easier to rebase onto HEAD.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804037</commentid>
    <comment_count>18</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-01-09 21:33:07 -0800</bug_when>
    <thetext>I&apos;m not wild about the side effects. It seems like you can try doing a rebase plus a diff, and if you either get a diff or run into rebasing problems, you know the branch is not fully merged. Either way, abort and do a reset back to the previous branch point.

If you took that path, then something like &apos;check-merged&apos; might be a good name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804081</commentid>
    <comment_count>19</comment_count>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-09 22:50:34 -0800</bug_when>
    <thetext>The original idea was to make sure that I could delete a local git branch because everything on it has been merged successfully.

Can you think of a better way to do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804425</commentid>
    <comment_count>20</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-01-10 09:09:01 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; The original idea was to make sure that I could delete a local git branch because everything on it has been merged successfully.
&gt; 

Right, doesn&apos;t my idea still let you know if it&apos;s safe to do that?

&gt; Can you think of a better way to do this?

Unfortunately, no. I don&apos;t know of a good way to do this w/ git either, given the way we land changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809977</commentid>
    <comment_count>21</comment_count>
      <attachid>183322</attachid>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-17 17:06:09 -0800</bug_when>
    <thetext>Created attachment 183322
Patch - Have yet to finish the tests, but would like a review anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809984</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-17 17:16:33 -0800</bug_when>
    <thetext>Attachment 183322 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1
Tools/Scripts/webkitpy/tool/steps/haslanded.py:51:  [HasLanded.strip_change_log] Passing unexpected keyword argument &apos;flags&apos; in function call  [pylint/E1123] [5]
Total errors found: 1 in 7 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>809991</commentid>
    <comment_count>23</comment_count>
      <attachid>183322</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-01-17 17:33:41 -0800</bug_when>
    <thetext>Comment on attachment 183322
Patch - Have yet to finish the tests, but would like a review anyway.

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

&gt; Tools/ChangeLog:3
&gt; +        Adding tool to check your local changes where successfully landed.

please go into a bit more detail in your changelogs, so that readers can understand what&apos;s going on. I wouuld add the name of the new webkit-patch command, and that it is a new webkit-patch command, at least :). I would also describe in a bit of detail what the command is doing.

&gt; Tools/Scripts/webkitpy/common/checkout/diff_parser.py:61
&gt; +                           (&quot;^index [0-9a-f]*\.\.[0-9a-f]*&quot;, lambda matched: &quot;===================================================================\n&quot;),

why was this change needed?

&gt; Tools/Scripts/webkitpy/common/net/bugzilla/bug.py:130
&gt; +        # revision.

You don&apos;t have to limit yourself to 80 cols, so you could probably put this comment on one line.

&gt; Tools/Scripts/webkitpy/common/net/bugzilla/bug.py:132
&gt; +        for cmt in sorted(self.comments(), reverse=True):

webkit style is to not use abbreviated variable names unless they&apos;re absolutely common and clear. Even I don&apos;t think &apos;cmt&apos; makes it over that bar. In addition, it&apos;s pretty idiomatic, when iterating over a plural, to use the singular as the variable name (e.g., for comment in comments).

&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:70
&gt; +        # Now this is there it gets complicated, we need to compare out diff to the diff at landed_revision.

typo: &quot;our&quot; instead of &quot;out&quot;?

&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:88
&gt; +            [&quot;interdiff&quot;, landed_file.name, local_file.name], decode_output=False)

interdiff? what&apos;s interdiff?

So, it looks like you&apos;ve abandoned the &apos;merge the branch and see if we still have a diff&apos; approach, and now you&apos;re attempting to see if the local diff basically matches the diff that landed? Does that actually work in practice? I assume that&apos;s what this interdiff thing helps with?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810007</commentid>
    <comment_count>24</comment_count>
      <attachid>183322</attachid>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-17 17:47:50 -0800</bug_when>
    <thetext>Comment on attachment 183322
Patch - Have yet to finish the tests, but would like a review anyway.

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

&gt;&gt; Tools/ChangeLog:3
&gt;&gt; +        Adding tool to check your local changes where successfully landed.
&gt; 
&gt; please go into a bit more detail in your changelogs, so that readers can understand what&apos;s going on. I wouuld add the name of the new webkit-patch command, and that it is a new webkit-patch command, at least :). I would also describe in a bit of detail what the command is doing.

Done.

&gt;&gt; Tools/Scripts/webkitpy/common/checkout/diff_parser.py:61
&gt;&gt; +                           (&quot;^index [0-9a-f]*\.\.[0-9a-f]*&quot;, lambda matched: &quot;===================================================================\n&quot;),
&gt; 
&gt; why was this change needed?

That is a good question, I&apos;m trying to figure out why my diffs have a different format to the output of &quot;git diff&quot;.

diff --git a/Tools/Scripts/webkitpy/tool/steps/haslanded.py b/Tools/Scripts/webkitpy/tool/steps/haslanded.py
new file mode 100644
index 0000000000000000000000000000000000000000..102b7890d5e029fb1c07c0a1ae1017813a12fee8

&gt;&gt; Tools/Scripts/webkitpy/common/net/bugzilla/bug.py:130
&gt;&gt; +        # revision.
&gt; 
&gt; You don&apos;t have to limit yourself to 80 cols, so you could probably put this comment on one line.

Done

&gt;&gt; Tools/Scripts/webkitpy/common/net/bugzilla/bug.py:132
&gt;&gt; +        for cmt in sorted(self.comments(), reverse=True):
&gt; 
&gt; webkit style is to not use abbreviated variable names unless they&apos;re absolutely common and clear. Even I don&apos;t think &apos;cmt&apos; makes it over that bar. In addition, it&apos;s pretty idiomatic, when iterating over a plural, to use the singular as the variable name (e.g., for comment in comments).

Done.

&gt;&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:70
&gt;&gt; +        # Now this is there it gets complicated, we need to compare out diff to the diff at landed_revision.
&gt; 
&gt; typo: &quot;our&quot; instead of &quot;out&quot;?

Done.

&gt;&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:88
&gt;&gt; +            [&quot;interdiff&quot;, landed_file.name, local_file.name], decode_output=False)
&gt; 
&gt; interdiff? what&apos;s interdiff?
&gt; 
&gt; So, it looks like you&apos;ve abandoned the &apos;merge the branch and see if we still have a diff&apos; approach, and now you&apos;re attempting to see if the local diff basically matches the diff that landed? Does that actually work in practice? I assume that&apos;s what this interdiff thing helps with?

interdiff is part of the standard GNU diff tools;

NAME
       interdiff - show differences between two diff files

SYNOPSIS
       interdiff [[-p n] | [--strip-match=n]] [[-U n] | [--unified=n]] [[-d PAT] | [--drop-context=PAT]] [[-q] | [--quiet]] [[-z] |
                 [--decompress]] [[-b] | [--ignore-space-change]] [[-B] | [--ignore-blank-lines]] [[-i] | [--ignore-case]] [[-w] |
                 [--ignore-all-space]] [[--interpolate] | [--combine] | [--flip]] [--no-revert-omitted] diff1 diff2

       interdiff {[--help] | [--version]}

DESCRIPTION
       interdiff creates a unified format diff that expresses the difference between two diffs. The diffs must both be relative to the
       same files. For best results, the diffs must have at least three lines of context.


Yes, I&apos;ve abandoned the merge and diff approach and now comparing the two diff files. I hope to add more features to this in the future like &quot;Looks like the diff partially landed, do you want to rebase onto it?&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810008</commentid>
    <comment_count>25</comment_count>
      <attachid>183331</attachid>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-17 17:47:56 -0800</bug_when>
    <thetext>Created attachment 183331
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810011</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-17 17:50:59 -0800</bug_when>
    <thetext>Attachment 183331 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1
Tools/Scripts/webkitpy/tool/steps/haslanded.py:51:  [HasLanded.strip_change_log] Passing unexpected keyword argument &apos;flags&apos; in function call  [pylint/E1123] [5]
Total errors found: 1 in 7 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>810021</commentid>
    <comment_count>27</comment_count>
      <attachid>183331</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-01-17 17:58:14 -0800</bug_when>
    <thetext>Comment on attachment 183331
Patch

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

&gt; Tools/ChangeLog:6
&gt; +        This command compares the finally commit patch to the changes which

nit: commit -&gt; committed.

This is actually a bit more detail than I would&apos;ve written :). I&apos;d probably just have put something like &quot;was successfully landed by comparing the local diff to what was actually committed&quot;.

Note that I&apos;m only being so picky here because you&apos;re new to the project and I&apos;m trying to give some guidelines; I hope this is helpful.

&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:88
&gt; +            [&quot;interdiff&quot;, landed_file.name, local_file.name], decode_output=False)

looks like interdiff is only available on my ubuntu precise box by default (not mac or win), so you might want to trap this in case the commands&apos; not available and log something useful.

This approach seems reasonable and I&apos;m fine w/ you landing something along these lines to see if it actually works and is useful. Needs at least some minimal testing of the new command, and you need to figure out what&apos;s up with the change to the diff_parser before you get an r+, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810051</commentid>
    <comment_count>28</comment_count>
      <attachid>183331</attachid>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-17 18:09:45 -0800</bug_when>
    <thetext>Comment on attachment 183331
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:88
&gt;&gt; +            [&quot;interdiff&quot;, landed_file.name, local_file.name], decode_output=False)
&gt; 
&gt; looks like interdiff is only available on my ubuntu precise box by default (not mac or win), so you might want to trap this in case the commands&apos; not available and log something useful.

As the moment it&apos;ll raise an error when interdiff isn&apos;t found.

&gt; 
&gt; This approach seems reasonable and I&apos;m fine w/ you landing something along these lines to see if it actually works and is useful. 

I&apos;ve had quite a few people say they liked the idea of this patch locally, so I think we&apos;ll find it gets used quite a bit.

&gt; Needs at least some minimal testing of the new command,

Adding now.

&gt; and you need to figure out what&apos;s up with the change to the diff_parser before you get an r+, though.

The diff_parser change was caused by create_patch passing --full-index to diff.

I&apos;ve added two test cases to diff_parser to make sure both types of diffs convert successfully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811781</commentid>
    <comment_count>29</comment_count>
      <attachid>183706</attachid>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-20 21:45:18 -0800</bug_when>
    <thetext>Created attachment 183706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811810</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-20 22:21:20 -0800</bug_when>
    <thetext>Attachment 183706 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:194:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:204:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:215:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:227:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:239:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:250:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:262:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:272:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:283:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:292:  trailing whitespace  [pep8/W291] [5]
Total errors found: 10 in 9 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>811917</commentid>
    <comment_count>31</comment_count>
      <attachid>183727</attachid>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-21 00:57:50 -0800</bug_when>
    <thetext>Created attachment 183727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811919</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-21 01:01:07 -0800</bug_when>
    <thetext>Attachment 183727 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:194:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:204:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:215:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:227:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:239:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:250:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:262:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:272:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:283:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:292:  trailing whitespace  [pep8/W291] [5]
Total errors found: 10 in 7 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>811929</commentid>
    <comment_count>33</comment_count>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-21 01:18:45 -0800</bug_when>
    <thetext>Hey guys,

Could I get another review on this patch? I&apos;m unsure the correct way to test the run method, should I just use the MockExecutive?

Tim</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811938</commentid>
    <comment_count>34</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-21 01:39:28 -0800</bug_when>
    <thetext>I think what&apos;s blocking me from reviewing this patch is understanding the use case.  I worry that we haven&apos;t achieved sufficent buy-in from the relevant parties here.  Namely Dirk Pranke, Adam and myself.

Perhaps its easiest for you and Dirk to have a heart-to-heart over irc, or you and I can?

Mostly I want to understand why we want this?  This makes it so that git users know that their git svn dcommit (aka webkit-patch land) succeeded?

I personally only webkit-patch land about once every 6 months. :)  Otherwise I use the commit-queue for all my patches, so I&apos;m probably not your target audience. :)

Or maybe this is a use case that I haven&apos;t even conceived of?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811962</commentid>
    <comment_count>35</comment_count>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-21 02:19:43 -0800</bug_when>
    <thetext>This patch is useful for anyone who lands patches via the commit-queue rather than landing using git svn dcommit/svn commit. (Also works in any case where someone else land patches for you). 

It makes sure your current local changes match the changes that were landed and they didn&apos;t accidently land an old patch. This allows you to then discard your local changes without fear of accidentally missing something.

It should now work for both svn users and git users. Git users will probably use it more as they are more likely to have lots of local changes being sent out for review.

I&apos;ve updated the title to make more sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811967</commentid>
    <comment_count>36</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-21 02:31:33 -0800</bug_when>
    <thetext>Ah!  I see!  So this is not something we would add to &quot;land&quot; but rather just a separate command to verify &quot;did this ever get committed&quot; to a local commit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811968</commentid>
    <comment_count>37</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-21 02:33:14 -0800</bug_when>
    <thetext>I assume this only works if provided a bug id. :)  It checks the bug for the commit revision and then compares the commit revision to the local commit diff, correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811972</commentid>
    <comment_count>38</comment_count>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-21 02:36:04 -0800</bug_when>
    <thetext>(In reply to comment #37)
&gt; I assume this only works if provided a bug id. :)  It checks the bug for the commit revision and then compares the commit revision to the local commit diff, correct?

It looks up the bugid in the Changelog (in the same way other commands do) or can be provided one on the commandline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811974</commentid>
    <comment_count>39</comment_count>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-21 02:40:09 -0800</bug_when>
    <thetext>(In reply to comment #36)
&gt; Ah!  I see!  So this is not something we would add to &quot;land&quot; but rather just a separate command to verify &quot;did this ever get committed&quot; to a local commit?

Yes, correct! It basically is verifying that you can throw away your local changes because they have already been committed via an alternative route.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811975</commentid>
    <comment_count>40</comment_count>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-21 02:40:52 -0800</bug_when>
    <thetext>(In reply to comment #37)
&gt; I assume this only works if provided a bug id. :)  It checks the bug for the commit revision and then compares the commit revision to the local commit diff, correct?

Yes, that is correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812321</commentid>
    <comment_count>41</comment_count>
      <attachid>183727</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-01-21 12:12:53 -0800</bug_when>
    <thetext>Comment on attachment 183727
Patch

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

I&apos;m basically okay with this patch and approach. You should fix (or suppress) the style warnings; otherwise, I&apos;m just looking at minor issues.

&gt; Tools/Scripts/webkitpy/common/net/bugzilla/bug.py:136
&gt; +        # If we don&apos;t find a revision, return None

nit: this comment doesn&apos;t add much.

&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:69
&gt; +        # Now this is there it gets complicated, we need to compare our diff to the diff at landed_revision.

typo: &quot;there&quot; -&gt; &quot;where&quot;?

&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:84
&gt; +            [&quot;interdiff&quot;, diff1_patch.name, diff2_patch.name], decode_output=False)

I&apos;m still not fond of just raising an uncaught exception if interdiff isn&apos;t available. Tools shouldn&apos;t just return hard-to-follow stack traces to the user. Can you catch this somewhere and print a more helpful message?

&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:89
&gt; +            return True

Should we log some sort of a message in this case rather than silently succeeding?

&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:118
&gt; +        self._tool.scm().discard_local_changes()

Do you want this line?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812322</commentid>
    <comment_count>42</comment_count>
      <attachid>183727</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-01-21 12:14:05 -0800</bug_when>
    <thetext>Comment on attachment 183727
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:118
&gt;&gt; +        self._tool.scm().discard_local_changes()
&gt; 
&gt; Do you want this line?

Whoops, never mind, wasn&apos;t thinking about the fact that you told it to discard the changes :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812521</commentid>
    <comment_count>43</comment_count>
      <attachid>183866</attachid>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-21 18:46:28 -0800</bug_when>
    <thetext>Created attachment 183866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812522</commentid>
    <comment_count>44</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-21 18:48:16 -0800</bug_when>
    <thetext>Attachment 183866 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:194:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:204:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:215:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:227:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:239:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:250:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:262:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:272:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:283:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:292:  trailing whitespace  [pep8/W291] [5]
Total errors found: 10 in 7 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>813990</commentid>
    <comment_count>45</comment_count>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-23 01:19:20 -0800</bug_when>
    <thetext>Friendly poke.

The style failures are caused by the tests which have patches in &quot;&quot;&quot; strings and thus need the extra space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814016</commentid>
    <comment_count>46</comment_count>
      <attachid>183866</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-23 02:00:35 -0800</bug_when>
    <thetext>Comment on attachment 183866
Patch

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

&gt; Tools/Scripts/webkitpy/common/net/bugzilla/bug.py:130
&gt; +        r = re.compile(&quot;Committed r(?P&lt;svn_revision&gt;\d+)&quot;)

It&apos;s slightly sad that we don&apos;t keep this string in the same place as it&apos;s generated, but OK.

&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:46
&gt; +    @staticmethod

Why does everyone love @staticmethod so much?   Am I the only hater? :)  Statics are impossible to mock, short of replacing them on the actual object.  You can&apos;t even subclass to mock out a static.

&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:49
&gt; +        convert = diff_parser.get_diff_converter(lines[0])

We don&apos;t generally use &quot;get&quot; in getters in WebKit, but obviously this one already exists.  Probably imported from some chromium code. :)

&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:54
&gt; +        lines = StringIO.StringIO(diff).readlines()

Does readlines return you a generator?  Can one just write: for line in StringIO.StringIO(diff)?

&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:58
&gt; +            indexline = re.match(&quot;^Index: ([^\\n]*/)?([^/\\n]*)$&quot;, line)

It&apos;s nice to put constants like these somewhere easily identifiable/reusable (like on the SVN object?), but if this is the only place we need this regexp then that&apos;s OK.

&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:72
&gt; +    @staticmethod
&gt; +    def diff_diff(diff1, diff2, diff1_suffix, diff2_suffix, executive=None):
&gt; +        # Now this is where it gets complicated, we need to compare our diff to the diff at landed_revision.
&gt; +        diff1_patch = tempfile.NamedTemporaryFile(suffix=diff1_suffix + &apos;.patch&apos;)
&gt; +        diff1_patch.write(diff1)
&gt; +        diff1_patch.flush()

Here again, @staticmethod makes testing/mocking more difficult.  FileSystem has a temporary file method iirc, making it possible to test this method with a MockFileSystem instead of a real one.

FileSystem also has a write_binary_file helper function which does a full write. :)

&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:81
&gt; +        # Diff the two diff&apos;s together...
&gt; +        if not executive:
&gt; +            executive = Executive()

If we&apos;re adidng new code, we should require an Executive.  Our current testing strategy tries to leverage our central mocks as much as possible.

&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:99
&gt; +            raise ScriptError(&quot;Unable to find landed message in associated bug.&quot;)

ScriptError is an Executive-only thing and really should be renamed ExecutiveError.  It does have some special handling in webkit-patch, but it feels wrong to reuse-it here.  Callers will expect it to have properties which make no sense in this case.  I would just use Exception here.

&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:114
&gt; +        pretty_diff_file = self._show_pretty_diff(diff_diff)

Use the with construction, and then you don&apos;t have to close. :)

&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:117
&gt; +        diff_correct = self._tool.user.confirm(&quot;Can I discard local changes?&quot;)

I believe the grammar nazis would tell us it&apos;s &quot;may I&quot; :)

&gt;&gt; Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:292
&gt;&gt; + 
&gt; 
&gt; trailing whitespace  [pep8/W291] [5]

Is there some way to tell pep8 to ignore this warning for these &quot;&quot;&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815143</commentid>
    <comment_count>47</comment_count>
      <attachid>183866</attachid>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-23 23:39:55 -0800</bug_when>
    <thetext>Comment on attachment 183866
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:46
&gt;&gt; +    @staticmethod
&gt; 
&gt; Why does everyone love @staticmethod so much?   Am I the only hater? :)  Statics are impossible to mock, short of replacing them on the actual object.  You can&apos;t even subclass to mock out a static.

Change to @classmethod

&gt;&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:49
&gt;&gt; +        convert = diff_parser.get_diff_converter(lines[0])
&gt; 
&gt; We don&apos;t generally use &quot;get&quot; in getters in WebKit, but obviously this one already exists.  Probably imported from some chromium code. :)

Okay :)

&gt;&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:54
&gt;&gt; +        lines = StringIO.StringIO(diff).readlines()
&gt; 
&gt; Does readlines return you a generator?  Can one just write: for line in StringIO.StringIO(diff)?

Done, it&apos;s leftover from when I was doing things with lines first.

&gt;&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:58
&gt;&gt; +            indexline = re.match(&quot;^Index: ([^\\n]*/)?([^/\\n]*)$&quot;, line)
&gt; 
&gt; It&apos;s nice to put constants like these somewhere easily identifiable/reusable (like on the SVN object?), but if this is the only place we need this regexp then that&apos;s OK.

I think it&apos;s okay for now. Ideally we&apos;d replace this function with something in the SCM object which knows how to discard parts of a patch properly...

&gt;&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:114
&gt;&gt; +        pretty_diff_file = self._show_pretty_diff(diff_diff)
&gt; 
&gt; Use the with construction, and then you don&apos;t have to close. :)

Done.

&gt;&gt; Tools/Scripts/webkitpy/tool/steps/haslanded.py:117
&gt;&gt; +        diff_correct = self._tool.user.confirm(&quot;Can I discard local changes?&quot;)
&gt; 
&gt; I believe the grammar nazis would tell us it&apos;s &quot;may I&quot; :)

Done.

&gt;&gt;&gt; Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:292
&gt;&gt;&gt; + 
&gt;&gt; 
&gt;&gt; trailing whitespace  [pep8/W291] [5]
&gt; 
&gt; Is there some way to tell pep8 to ignore this warning for these &quot;&quot;&quot;?

You can use # nopep8 to stop pep8 from apply to a line, but that would break the patches...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815144</commentid>
    <comment_count>48</comment_count>
      <attachid>184417</attachid>
    <who name="Tim &apos;mithro&apos; Ansell">mithro</who>
    <bug_when>2013-01-23 23:40:35 -0800</bug_when>
    <thetext>Created attachment 184417
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815163</commentid>
    <comment_count>49</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-24 00:06:33 -0800</bug_when>
    <thetext>Attachment 184417 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy/common/net/bugzilla/bug.py&apos;, u&apos;Tools/Scripts/webkitpy/common/net/bugzilla/bug_unittest.py&apos;, u&apos;Tools/Scripts/webkitpy/tool/commands/upload.py&apos;, u&apos;Tools/Scripts/webkitpy/tool/steps/__init__.py&apos;, u&apos;Tools/Scripts/webkitpy/tool/steps/haslanded.py&apos;, u&apos;Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py&apos;]&quot; exit_code: 1
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:194:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:204:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:215:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:227:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:239:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:250:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:262:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:272:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:283:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py:292:  trailing whitespace  [pep8/W291] [5]
Total errors found: 10 in 7 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>815203</commentid>
    <comment_count>50</comment_count>
      <attachid>184417</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-24 00:55:08 -0800</bug_when>
    <thetext>Comment on attachment 184417
Patch

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815286</commentid>
    <comment_count>51</comment_count>
      <attachid>184417</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-24 03:07:12 -0800</bug_when>
    <thetext>Comment on attachment 184417
Patch

Rejecting attachment 184417 from commit-queue.

New failing tests:
inspector-protocol/debugger-terminate-dedicated-worker-while-paused.html
Full output: http://queues.webkit.org/results/16076699</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815305</commentid>
    <comment_count>52</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-24 03:41:14 -0800</bug_when>
    <thetext>The flakiness must end!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815318</commentid>
    <comment_count>53</comment_count>
      <attachid>184417</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-24 04:21:06 -0800</bug_when>
    <thetext>Comment on attachment 184417
Patch

Clearing flags on attachment: 184417

Committed r140674: &lt;http://trac.webkit.org/changeset/140674&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815319</commentid>
    <comment_count>54</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-24 04:21:12 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816153</commentid>
    <comment_count>55</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-24 20:59:20 -0800</bug_when>
    <thetext>The test added by this patch is failing on bots:
http://build.webkit.org/builders/Apple%20MountainLion%20Release%20WK1%20%28Tests%29/builds/6087/steps/webkitpy-test/logs/stdio

[1623/1639] webkitpy.tool.steps.haslanded_unittest.HasLandedTest.test_run erred:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/slave/mountainlion-release-tests-wk1/build/Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py&quot;, line 134, in test_run
      HasLanded.diff_diff(diff1, diff1_add_line, &apos;&apos;, &apos;add-line&apos;),
    File &quot;/Volumes/Data/slave/mountainlion-release-tests-wk1/build/Tools/Scripts/webkitpy/tool/steps/haslanded.py&quot;, line 84, in diff_diff
      [&quot;interdiff&quot;, diff1_patch.name, diff2_patch.name], decode_output=False)
    File &quot;/Volumes/Data/slave/mountainlion-release-tests-wk1/build/Tools/Scripts/webkitpy/common/system/executive.py&quot;, line 411, in run_command
      close_fds=self._should_close_fds())
    File &quot;/Volumes/Data/slave/mountainlion-release-tests-wk1/build/Tools/Scripts/webkitpy/common/system/executive.py&quot;, line 482, in popen
      return subprocess.Popen(string_args, **kwargs)
    File &quot;/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py&quot;, line 679, in __init__
      errread, errwrite)
    File &quot;/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py&quot;, line 1228, in _execute_child
      raise child_exception
  OSError: [Errno 2] No such file or directory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816155</commentid>
    <comment_count>56</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-24 21:02:05 -0800</bug_when>
    <thetext>Unfortunately the CQ/EWS no longer run test-webkitpy.  They used to,but because we don&apos;t parse test-webkitpy output currently, the CQ/EWS have no way to ignore known failures and would fail forever if the tree was red.

I suspect the fix here is easy.  Lets see if mithro is around #webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816171</commentid>
    <comment_count>57</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-24 21:17:01 -0800</bug_when>
    <thetext>Skipped the test temporarily in http://trac.webkit.org/changeset/140776.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816177</commentid>
    <comment_count>58</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-24 21:26:18 -0800</bug_when>
    <thetext>Made the test run on machines with interdiff, in http://trac.webkit.org/changeset/140777</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816618</commentid>
    <comment_count>59</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-01-25 08:31:08 -0800</bug_when>
    <thetext>(In reply to comment #58)
&gt; Made the test run on machines with interdiff, in http://trac.webkit.org/changeset/140777

&apos;which interdiff&apos; isn&apos;t going to work on windows. I guess maybe that&apos;ll sort of be okay, but probably only accidentally :). Also, having to call out to a subprocess in a decorator might be kinda slow.

We should probably fix this more robustly.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181819</attachid>
            <date>2013-01-08 18:55:54 -0800</date>
            <delta_ts>2013-01-17 17:06:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106402-20130109135257.patch</filename>
            <type>text/plain</type>
            <size>10767</size>
            <attacher name="Tim &apos;mithro&apos; Ansell">mithro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MDQyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzZlM2FkOTkyNTVjYWE5OGI5ZmJmYzZkYTM2ZmEwY2Mz
NWY3OTM1YS4uNGUzZjdlZWM3ZjVlM2I1ZjQ5Mzc2NmMxYTdmYTBiYWQ1MDllYmQ5OSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDEzLTAxLTA4ICBUaW0gJ21pdGhybycgQW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+
CisKKyAgICAgICAgQWRkaW5nIHRvb2wgdG8gY2hlY2sgYSBicmFuY2ggZnJvbSBnaXQgd2FzIHN1
Y2Nlc3NmdWxseSBsYW5kZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDY0MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9naXQucHk6
CisgICAgICAgIChHaXQucmViYXNlX29udG9fcmV2aXNpb24pOiBTdXBwb3J0IHJlYmFzaW5nIG9u
IGEgc3ZuIHJldmlzaW9uLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L3NjbS9zY20ucHk6CisgICAgICAgIChTQ00ud2lsbC5yZWJhc2Vfb25fcmV2aXNpb24pOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWcucHk6Cisg
ICAgICAgIChCdWcuY29tbWl0X3JldmlzaW9uKTogR2V0IGNvbW1pdHRlZCByZXZpc2lvbiBmcm9t
IGJ1Z3ppbGxhLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxs
YS9idWdfdW5pdHRlc3QucHk6CisgICAgICAgIChCdWdUZXN0LnRlc3RfY29tbWl0X3JldmlzaW9u
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5Ogor
ICAgICAgICAoTGFuZENoZWNrKTogCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL19faW5pdF9fLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9s
YW5kY2hlY2sucHk6CisgICAgICAgIChMYW5kQ2hlY2spOgorICAgICAgICAoTGFuZENoZWNrLnJ1
bik6CisKIDIwMTMtMDEtMDIgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgQWRkIGNocm9taXVtLm9yZyBlbWFpbCBhZGRyZXNzIGZvciBTdGV2ZSBCbG9j
ay4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3Nj
bS9naXQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vZ2l0
LnB5CmluZGV4IGU4ZjE0ZGUyYzZlZDJiYWQxNDNmNzZjNTgwMzBmZWI1YzE5ZmI0ZTAuLjhkYWYw
ZjllOWRmZTJmYjEyNTk2YTNmZmMxOTRlZjViZjkzNTBiNTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9naXQucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL2dpdC5weQpAQCAtMTQzLDYgKzE0Mywx
MiBAQCBjbGFzcyBHaXQoU0NNLCBTVk5SZXBvc2l0b3J5KToKICAgICBkZWYgbG9jYWxfY29tbWl0
cyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9naXQoWydsb2cnLCAnLS1wcmV0dHk9
b25lbGluZScsICdIRUFELi4uJyArIHNlbGYucmVtb3RlX2JyYW5jaF9yZWYoKV0pLnNwbGl0bGlu
ZXMoKQogCisgICAgZGVmIHJlYmFzZV9vbnRvX3JldmlzaW9uKHNlbGYsIHJldmlzaW9uKToKKyAg
ICAgICAgY29tbWl0aWQgPSBzZWxmLmdpdF9jb21taXRfZnJvbV9zdm5fcmV2aXNpb24ocmV2aXNp
b24pCisgICAgICAgIGlmIG5vdCBjb21taXRpZDoKKyAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVy
cm9yKG1lc3NhZ2U9IlN1YnZlcnNpb24gcmV2aXNpb24gbm90IHlldCBmZXRjaGVkLiIpCisgICAg
ICAgIHNlbGYuX3J1bl9naXQoWydyZWJhc2UnLCAnJXN+JyAlIGNvbW1pdGlkXSkKKwogICAgIGRl
ZiByZWJhc2VfaW5fcHJvZ3Jlc3Moc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lz
dGVtLmV4aXN0cyhzZWxmLmFic29sdXRlX3BhdGgoc2VsZi5fZmlsZXN5c3RlbS5qb2luKCcuZ2l0
JywgJ3JlYmFzZS1hcHBseScpKSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2NoZWNrb3V0L3NjbS9zY20ucHkKaW5kZXggN2Q2ZTE4MDRkM2EzODU0NzU3ZDc2Y2QwZGU2
NzBiZDQ2ZjZjNWZlMC4uNWYyZTNhYjI5MDY0NTQ1YjBmNDM3MmYyNmQzNzQyODg1ZTAyZDk4OCAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3Nj
bS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2Nt
LnB5CkBAIC0yNDksMyArMjQ5LDYgQEAgY2xhc3MgU0NNOgogCiAgICAgZGVmIGxvY2FsX2NvbW1p
dHMoc2VsZik6CiAgICAgICAgIHJldHVybiBbXQorCisgICAgZGVmIHJlYmFzZV9vbl9yZXZpc2lv
bihzZWxmLCByZXZpc2lvbik6CisgICAgICAgIFNDTS5fc3ViY2xhc3NfbXVzdF9pbXBsZW1lbnQo
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxh
L2J1Zy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWcu
cHkKaW5kZXggNGJmOGVjNjFlMWNiYjUwMGE4Yzk0ZjNjZTkxNmNkMmU0N2ViNTA1ZC4uMzQ4MmE2
YmFiNDliOGNmMjA1MzY1ZTQwY2E2ZGQ3NTQwY2IwODk1OSAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Zy5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5CkBAIC0yOCw2ICsyOCw4IEBA
CiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCitpbXBvcnQgcmUKKwogZnJvbSAuYXR0
YWNobWVudCBpbXBvcnQgQXR0YWNobWVudAogCiAKQEAgLTEyMywzICsxMjUsMTQgQEAgY2xhc3Mg
QnVnKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJu
IEZhbHNlCiAKKyAgICBkZWYgY29tbWl0X3JldmlzaW9uKHNlbGYpOgorICAgICAgICAjIFNvcnQg
dGhlIGNvbW1lbnRzIGluIHJldmVyc2Ugb3JkZXIgYXMgd2Ugd2FudCB0aGUgbGF0ZXN0IGNvbW1p
dHRlZAorICAgICAgICAjIHJldmlzaW9uLgorICAgICAgICByID0gcmUuY29tcGlsZSgiQ29tbWl0
dGVkIHIoP1A8c3ZuX3JldmlzaW9uPlxkKykiKQorICAgICAgICBmb3IgY210IGluIHNvcnRlZChz
ZWxmLmNvbW1lbnRzKCksIHJldmVyc2U9VHJ1ZSk6CisgICAgICAgICAgICByZXYgPSByLnNlYXJj
aChjbXRbJ3RleHQnXSkKKyAgICAgICAgICAgIGlmIHJldjoKKyAgICAgICAgICAgICAgICByZXR1
cm4gaW50KHJldi5ncm91cCgnc3ZuX3JldmlzaW9uJykpCisKKyAgICAgICAgIyBJZiB3ZSBkb24n
dCBmaW5kIGEgcmV2aXNpb24sIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBOb25lCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnX3Vu
aXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1
Z191bml0dGVzdC5weQppbmRleCBmMjBjNjAxMGM4Mzc2MmZkYzU4OWMzOWM4OWJkYzY4YmFmMmY0
YjY0Li42OGMwMDIxODE3MmRkZWQwMWYyMmM2ZGI5NmMzODQ5NDA0Y2I0NTNmIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnX3VuaXR0ZXN0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWdf
dW5pdHRlc3QucHkKQEAgLTQ1LDMgKzQ1LDM5IEBAIGNsYXNzIEJ1Z1Rlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICAgICAgICAgICAgYnVnemlsbGE9Tm9uZSkKICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGJ1Zy5pc19pbl9jb21tZW50cygiTWVzc2FnZTMuIikpCiAgICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoYnVnLmlzX2luX2NvbW1lbnRzKCJNZXNzYWdlLiIpKQorCisgICAgZGVmIHRl
c3RfY29tbWl0X3JldmlzaW9uKHNlbGYpOgorICAgICAgICBidWcgPSBCdWcoeyJjb21tZW50cyI6
IFtdfSwgYnVnemlsbGE9Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWcuY29tbWl0
X3JldmlzaW9uKCksIE5vbmUpCisKKyAgICAgICAgYnVnID0gQnVnKHsiY29tbWVudHMiOiBbCisg
ICAgICAgICAgICB7InRleHQiOiAiQ29tbWVudCAxIn0sCisgICAgICAgICAgICB7InRleHQiOiAi
Q29tbWVudCAyIn0sCisgICAgICAgICAgICBdfSwgYnVnemlsbGE9Tm9uZSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChidWcuY29tbWl0X3JldmlzaW9uKCksIE5vbmUpCisKKyAgICAgICAgYnVn
ID0gQnVnKHsiY29tbWVudHMiOiBbCisgICAgICAgICAgICB7InRleHQiOiAiQ29tbWl0dGVkIHIx
Mzg3NzY6IDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMzg3NzY+In0sCisgICAg
ICAgICAgICBdfSwgYnVnemlsbGE9Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWcu
Y29tbWl0X3JldmlzaW9uKCksIDEzODc3NikKKworICAgICAgICBidWcgPSBCdWcoeyJjb21tZW50
cyI6IFsKKyAgICAgICAgICAgIHsidGV4dCI6ICIoRnJvbSB1cGRhdGUgb2YgYXR0YWNobWVudCAx
ODEyNjkpIENsZWFyaW5nIGZsYWdzIG9uIGF0dGFjaG1lbnQ6IDE4MTI2OSBDb21taXR0ZWQgcjEz
ODc3NjogPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEzODc3Nj4ifSwKKyAgICAg
ICAgICAgIF19LCBidWd6aWxsYT1Ob25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zy5j
b21taXRfcmV2aXNpb24oKSwgMTM4Nzc2KQorCisgICAgICAgIGJ1ZyA9IEJ1Zyh7ImNvbW1lbnRz
IjogWworICAgICAgICAgICAgeyJ0ZXh0IjogIkNvbW1lbnQgYmVmb3JlIn0sCisgICAgICAgICAg
ICB7InRleHQiOiAiKEZyb20gdXBkYXRlIG9mIGF0dGFjaG1lbnQgMTgxMjY5KSBDbGVhcmluZyBm
bGFncyBvbiBhdHRhY2htZW50OiAxODEyNjkgQ29tbWl0dGVkIHIxMzg3NzY6IDxodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8xMzg3NzY+In0sCisgICAgICAgICAgICB7InRleHQiOiAi
Q29tbWVudCBhZnRlciJ9LAorICAgICAgICAgICAgXX0sIGJ1Z3ppbGxhPU5vbmUpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoYnVnLmNvbW1pdF9yZXZpc2lvbigpLCAxMzg3NzYpCisKKyAgICAg
ICAgYnVnID0gQnVnKHsiY29tbWVudHMiOiBbCisgICAgICAgICAgICB7InRleHQiOiAiQ29tbWVu
dCBiZWZvcmUifSwKKyAgICAgICAgICAgIHsidGV4dCI6ICIoRnJvbSB1cGRhdGUgb2YgYXR0YWNo
bWVudCAxODEyNjkpIENsZWFyaW5nIGZsYWdzIG9uIGF0dGFjaG1lbnQ6IDE4MTI2OSBDb21taXR0
ZWQgcjEzODc3NjogPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEzODc3Nj4ifSwK
KyAgICAgICAgICAgIHsidGV4dCI6ICJDb21tZW50IE1pZGRsZSJ9LAorICAgICAgICAgICAgeyJ0
ZXh0IjogIihGcm9tIHVwZGF0ZSBvZiBhdHRhY2htZW50IDE4MTI4MCkgQ2xlYXJpbmcgZmxhZ3Mg
b24gYXR0YWNobWVudDogMTgxMjgwIENvbW1pdHRlZCByMTM4OTc2OiA8aHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMTM4OTc2PiJ9LAorICAgICAgICAgICAgeyJ0ZXh0IjogIkNvbW1l
bnQgQWZ0ZXIifSwKKyAgICAgICAgICAgIF19LCBidWd6aWxsYT1Ob25lKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ1Zy5jb21taXRfcmV2aXNpb24oKSwgMTM4OTc2KQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkKaW5kZXggNDMwMzRlOWI2YjY3
YzM0YzYwNjk1MzY2YWI2MGFiZTQ2YjA5ZWM3MS4uNmYxNWY5NjY5NzkzYzZhNTBlODdiMWY3ZGVi
MTNkYmJlZTIzMzUyYSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL3VwbG9hZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvdXBsb2FkLnB5CkBAIC0yNDEsNiArMjQxLDE1IEBAIGNsYXNzIExhbmRTYWZlbHkoQWJzdHJh
Y3RQYXRjaFVwbG9hZGluZ0NvbW1hbmQpOgogICAgIF0KIAogCitjbGFzcyBMYW5kQ2hlY2soQWJz
dHJhY3RQYXRjaFVwbG9hZGluZ0NvbW1hbmQpOgorICAgIG5hbWUgPSAibGFuZC1jaGVjayIKKyAg
ICBoZWxwX3RleHQgPSAiQ2hlY2sgdGhhdCBhIGJyYW5jaCB3YXMgc3VjY2Vzc2Z1bGx5IGxhbmRl
ZCBhbmQgbm8gY2hhbmdlcyByZW1haW4uIgorICAgIGFyZ3VtZW50X25hbWVzID0gIltCVUdJRF0i
CisgICAgc3RlcHMgPSBbCisgICAgICAgIHN0ZXBzLkxhbmRDaGVjaywKKyAgICBdCisKKwogY2xh
c3MgUHJlcGFyZShBYnN0cmFjdFNlcXVlbmNlZENvbW1hbmQpOgogICAgIG5hbWUgPSAicHJlcGFy
ZSIKICAgICBoZWxwX3RleHQgPSAiQ3JlYXRlcyBhIGJ1ZyAob3IgcHJvbXB0cyBmb3IgYW4gZXhp
c3RpbmcgYnVnKSBhbmQgcHJlcGFyZXMgdGhlIENoYW5nZUxvZ3MiCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHkKaW5kZXggNTY0MjllOGZlMjRlYmM0N2Ni
NDk4OWVmYjcwYzcwYmM4YjUyZmM0MS4uYzQ5MGY3YjI2MWY3ODFlODAyYzEzNGE4ZGUxODAxZGNk
MjM2YjcxYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19f
aW5pdF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9fX2luaXRf
Xy5weQpAQCAtNDAsMTEgKzQwLDEzIEBAIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5jbG9zZWJ1
ZyBpbXBvcnQgQ2xvc2VCdWcKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5jbG9zZWJ1Z2Zvcmxh
bmRkaWZmIGltcG9ydCBDbG9zZUJ1Z0ZvckxhbmREaWZmCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3Rl
cHMuY2xvc2VwYXRjaCBpbXBvcnQgQ2xvc2VQYXRjaAogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBz
LmNvbW1pdCBpbXBvcnQgQ29tbWl0Citmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMubGFuZGNoZWNr
IGltcG9ydCBMYW5kQ2hlY2sKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5jb25maXJtZGlmZiBp
bXBvcnQgQ29uZmlybURpZmYKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5jcmVhdGVidWcgaW1w
b3J0IENyZWF0ZUJ1ZwogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmVkaXRjaGFuZ2Vsb2cgaW1w
b3J0IEVkaXRDaGFuZ2VMb2cKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5lbnN1cmVidWdpc29w
ZW5hbmRhc3NpZ25lZCBpbXBvcnQgRW5zdXJlQnVnSXNPcGVuQW5kQXNzaWduZWQKIGZyb20gd2Vi
a2l0cHkudG9vbC5zdGVwcy5lbnN1cmVsb2NhbGNvbW1pdGlmbmVlZGVkIGltcG9ydCBFbnN1cmVM
b2NhbENvbW1pdElmTmVlZGVkCitmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMubGFuZGNoZWNrIGlt
cG9ydCBMYW5kQ2hlY2sKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5vYnNvbGV0ZXBhdGNoZXMg
aW1wb3J0IE9ic29sZXRlUGF0Y2hlcwogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLm9wdGlvbnMg
aW1wb3J0IE9wdGlvbnMKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5wb3N0ZGlmZiBpbXBvcnQg
UG9zdERpZmYKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9s
YW5kY2hlY2sucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvbGFuZGNoZWNr
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjNmNTY1Mjk5NTMxYzkzNTNmZWJjMTUwNmY4N2RlYjg0YWNjYjJiMjAK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvbGFu
ZGNoZWNrLnB5CkBAIC0wLDAgKzEsNTcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgbG9n
Z2luZworaW1wb3J0IHN5cworCitmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuYWJzdHJhY3RzdGVw
IGltcG9ydCBBYnN0cmFjdFN0ZXAKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRp
dmUgaW1wb3J0IFNjcmlwdEVycm9yCisKKworX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFt
ZV9fKQorCisKK2NsYXNzIExhbmRDaGVjayhBYnN0cmFjdFN0ZXApOgorCisgICAgcmVxdWlyZXNf
bG9jYWxfY29tbWl0cyA9IFRydWUKKworICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgorICAgICAg
ICBzY20gPSBzZWxmLl90b29sLnNjbSgpCisKKyAgICAgICAgIyBHZXQgdGhlIFNWTiByZXZpc2lv
biBmcm9tIHRoZSBidWcKKyAgICAgICAgc3ZuX3JldmlzaW9uID0gc2VsZi5jYWNoZWRfbG9va3Vw
KHN0YXRlLCAiYnVnIikuY29tbWl0X3JldmlzaW9uKCkKKyAgICAgICAgaWYgbm90IHN2bl9yZXZp
c2lvbjoKKyAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9IlVuYWJsZSB0byBm
aW5kIGNvbW1pdHRlZCBzdWJ2ZXJzaW9uIHJldmlzaW9uLiIpCisKKyAgICAgICAgaWYgbm90IHNj
bS53b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbigpOgorICAgICAgICAgICAgcmFpc2UgU2NyaXB0
RXJyb3IobWVzc2FnZT0iVW5jb21taXRlZCBDaGFuZ2VzIikKKworICAgICAgICBzY20ucmViYXNl
X29udG9fcmV2aXNpb24oc3ZuX3JldmlzaW9uKQorICAgICAgICBjb21taXRfaWQgPSBzY20uZ2l0
X2NvbW1pdF9mcm9tX3N2bl9yZXZpc2lvbihzdm5fcmV2aXNpb24pCisgICAgICAgIHByaW50ICJE
aWZmIHdpdGgiCisgICAgICAgIHByaW50ICJnaXQgZGlmZiAlcyIgJSBjb21taXRfaWQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183322</attachid>
            <date>2013-01-17 17:06:09 -0800</date>
            <delta_ts>2013-01-17 17:47:52 -0800</delta_ts>
            <desc>Patch - Have yet to finish the tests, but would like a review anyway.</desc>
            <filename>bug-106402-20130118120307.patch</filename>
            <type>text/plain</type>
            <size>12194</size>
            <attacher name="Tim &apos;mithro&apos; Ansell">mithro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5OTY1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGIyYjE2MTE2NWJmODA5OWQ4MWE0OTA0ZDczYWQ5Yjk2
MWM0NWU1Zi4uMDYzZDEzMWE4MGEzODUwNjAyM2Q5YWU5ODYyMjZlNzhhMzlhNmI2OSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3
IEBACisyMDEzLTAxLTE3ICBUaW0gJ21pdGhybycgQW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+
CisKKyAgICAgICAgQWRkaW5nIHRvb2wgdG8gY2hlY2sgeW91ciBsb2NhbCBjaGFuZ2VzIHdoZXJl
IHN1Y2Nlc3NmdWxseSBsYW5kZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDY0MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZfcGFy
c2VyLnB5OgorICAgICAgICAoZ2l0X2RpZmZfdG9fc3ZuX2RpZmYpOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWcucHk6CisgICAgICAgIChCdWcuY29t
bWl0X3JldmlzaW9uKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVn
emlsbGEvYnVnX3VuaXR0ZXN0LnB5OgorICAgICAgICAoQnVnVGVzdC50ZXN0X2lzX2luX2NvbW1l
bnRzKToKKyAgICAgICAgKEJ1Z1Rlc3QpOgorICAgICAgICAoQnVnVGVzdC50ZXN0X2NvbW1pdF9y
ZXZpc2lvbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9h
ZC5weToKKyAgICAgICAgKEhhc0xhbmRlZCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL19faW5pdF9fLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9oYXNsYW5kZWQucHk6IEFkZGVkLgorICAgICAgICAoSGFzTGFuZGVkKToKKyAgICAgICAg
KEhhc0xhbmRlZC5jb252ZXJ0X3RvX3N2bik6CisgICAgICAgIChIYXNMYW5kZWQuc3RyaXBfY2hh
bmdlX2xvZyk6CisgICAgICAgIChydW4pOgorCiAyMDEzLTAxLTE2ICBEYXZpZCBLaWx6ZXIgIDxk
ZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIHhjcnVuIHRvIGZpbmQgcGF0aCB0byBt
YWtlIGZvciBNYWMgcG9ydApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvZGlmZl9wYXJzZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9kaWZmX3BhcnNlci5weQppbmRleCAyZWQ1NTJjNDU1NWRiNzJkZjE2YjIxMjU0
N2YyYzEyNWFlMzAxYTA0Li4yMjdjYjU1OTg4YWFlNzc1YmRiNWU4MTZiODQwNDYwOGNkNGZkMWNl
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9kaWZm
X3BhcnNlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9k
aWZmX3BhcnNlci5weQpAQCAtNTcsOCArNTcsOCBAQCBkZWYgZ2l0X2RpZmZfdG9fc3ZuX2RpZmYo
bGluZSk6CiAgICAgIyBGSVhNRTogVGhpcyBsaXN0IHNob3VsZCBiZSBhIGNsYXNzIG1lbWJlciBv
biBEaWZmUGFyc2VyLgogICAgICMgVGhlc2UgcmVnZXhwIHBhdHRlcm5zIHNob3VsZCBiZSBjb21w
aWxlZCBvbmNlIGluc3RlYWQgb2YgZXZlcnkgdGltZS4KICAgICBjb252ZXJzaW9uX3BhdHRlcm5z
ID0gKCgiXmRpZmYgLS1naXQgXHcvKC4rKSBcdy8oP1A8RmlsZVBhdGg+LispIiwgbGFtYmRhIG1h
dGNoZWQ6ICJJbmRleDogIiArIG1hdGNoZWQuZ3JvdXAoJ0ZpbGVQYXRoJykgKyAiXG4iKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICgiXm5ldyBmaWxlLioiLCBsYW1iZGEgbWF0Y2hlZDog
IlxuIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoIl5pbmRleCBbMC05YS1mXXs3fVwu
XC5bMC05YS1mXXs3fSBbMC05XXs2fSIsIGxhbWJkYSBtYXRjaGVkOiAiPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAoIl5uZXcgZmlsZS4qIiwgbGFtYmRhIG1hdGNo
ZWQ6ICIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgiXmluZGV4IFswLTlhLWZdKlwu
XC5bMC05YS1mXSoiLCBsYW1iZGEgbWF0Y2hlZDogIj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKCJeLS0tIFx3Lyg/UDxGaWxlUGF0aD4uKykiLCBsYW1iZGEgbWF0
Y2hlZDogIi0tLSAiICsgbWF0Y2hlZC5ncm91cCgnRmlsZVBhdGgnKSArICJcbiIpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKCJeXCtcK1wrIFx3Lyg/UDxGaWxlUGF0aD4uKykiLCBsYW1i
ZGEgbWF0Y2hlZDogIisrKyAiICsgbWF0Y2hlZC5ncm91cCgnRmlsZVBhdGgnKSArICJcbiIpKQog
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEv
YnVnLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Zy5w
eQppbmRleCA0YmY4ZWM2MWUxY2JiNTAwYThjOTRmM2NlOTE2Y2QyZTQ3ZWI1MDVkLi4zNDgyYTZi
YWI0OWI4Y2YyMDUzNjVlNDBjYTZkZDc1NDBjYjA4OTU5IDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWcucHkKQEAgLTI4LDYgKzI4LDggQEAK
ICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCByZQorCiBmcm9tIC5hdHRh
Y2htZW50IGltcG9ydCBBdHRhY2htZW50CiAKIApAQCAtMTIzLDMgKzEyNSwxNCBAQCBjbGFzcyBC
dWcob2JqZWN0KToKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4g
RmFsc2UKIAorICAgIGRlZiBjb21taXRfcmV2aXNpb24oc2VsZik6CisgICAgICAgICMgU29ydCB0
aGUgY29tbWVudHMgaW4gcmV2ZXJzZSBvcmRlciBhcyB3ZSB3YW50IHRoZSBsYXRlc3QgY29tbWl0
dGVkCisgICAgICAgICMgcmV2aXNpb24uCisgICAgICAgIHIgPSByZS5jb21waWxlKCJDb21taXR0
ZWQgcig/UDxzdm5fcmV2aXNpb24+XGQrKSIpCisgICAgICAgIGZvciBjbXQgaW4gc29ydGVkKHNl
bGYuY29tbWVudHMoKSwgcmV2ZXJzZT1UcnVlKToKKyAgICAgICAgICAgIHJldiA9IHIuc2VhcmNo
KGNtdFsndGV4dCddKQorICAgICAgICAgICAgaWYgcmV2OgorICAgICAgICAgICAgICAgIHJldHVy
biBpbnQocmV2Lmdyb3VwKCdzdm5fcmV2aXNpb24nKSkKKworICAgICAgICAjIElmIHdlIGRvbid0
IGZpbmQgYSByZXZpc2lvbiwgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIE5vbmUKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWdfdW5p
dHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVn
X3VuaXR0ZXN0LnB5CmluZGV4IGYyMGM2MDEwYzgzNzYyZmRjNTg5YzM5Yzg5YmRjNjhiYWYyZjRi
NjQuLjY4YzAwMjE4MTcyZGRlZDAxZjIyYzZkYjk2YzM4NDk0MDRjYjQ1M2YgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWdfdW5pdHRlc3Qu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z191
bml0dGVzdC5weQpAQCAtNDUsMyArNDUsMzkgQEAgY2xhc3MgQnVnVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgICAgICAgICAgICAgICBidWd6aWxsYT1Ob25lKQogICAgICAgICBzZWxmLmFz
c2VydFRydWUoYnVnLmlzX2luX2NvbW1lbnRzKCJNZXNzYWdlMy4iKSkKICAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShidWcuaXNfaW5fY29tbWVudHMoIk1lc3NhZ2UuIikpCisKKyAgICBkZWYgdGVz
dF9jb21taXRfcmV2aXNpb24oc2VsZik6CisgICAgICAgIGJ1ZyA9IEJ1Zyh7ImNvbW1lbnRzIjog
W119LCBidWd6aWxsYT1Ob25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zy5jb21taXRf
cmV2aXNpb24oKSwgTm9uZSkKKworICAgICAgICBidWcgPSBCdWcoeyJjb21tZW50cyI6IFsKKyAg
ICAgICAgICAgIHsidGV4dCI6ICJDb21tZW50IDEifSwKKyAgICAgICAgICAgIHsidGV4dCI6ICJD
b21tZW50IDIifSwKKyAgICAgICAgICAgIF19LCBidWd6aWxsYT1Ob25lKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGJ1Zy5jb21taXRfcmV2aXNpb24oKSwgTm9uZSkKKworICAgICAgICBidWcg
PSBCdWcoeyJjb21tZW50cyI6IFsKKyAgICAgICAgICAgIHsidGV4dCI6ICJDb21taXR0ZWQgcjEz
ODc3NjogPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEzODc3Nj4ifSwKKyAgICAg
ICAgICAgIF19LCBidWd6aWxsYT1Ob25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zy5j
b21taXRfcmV2aXNpb24oKSwgMTM4Nzc2KQorCisgICAgICAgIGJ1ZyA9IEJ1Zyh7ImNvbW1lbnRz
IjogWworICAgICAgICAgICAgeyJ0ZXh0IjogIihGcm9tIHVwZGF0ZSBvZiBhdHRhY2htZW50IDE4
MTI2OSkgQ2xlYXJpbmcgZmxhZ3Mgb24gYXR0YWNobWVudDogMTgxMjY5IENvbW1pdHRlZCByMTM4
Nzc2OiA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTM4Nzc2PiJ9LAorICAgICAg
ICAgICAgXX0sIGJ1Z3ppbGxhPU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVnLmNv
bW1pdF9yZXZpc2lvbigpLCAxMzg3NzYpCisKKyAgICAgICAgYnVnID0gQnVnKHsiY29tbWVudHMi
OiBbCisgICAgICAgICAgICB7InRleHQiOiAiQ29tbWVudCBiZWZvcmUifSwKKyAgICAgICAgICAg
IHsidGV4dCI6ICIoRnJvbSB1cGRhdGUgb2YgYXR0YWNobWVudCAxODEyNjkpIENsZWFyaW5nIGZs
YWdzIG9uIGF0dGFjaG1lbnQ6IDE4MTI2OSBDb21taXR0ZWQgcjEzODc3NjogPGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzEzODc3Nj4ifSwKKyAgICAgICAgICAgIHsidGV4dCI6ICJD
b21tZW50IGFmdGVyIn0sCisgICAgICAgICAgICBdfSwgYnVnemlsbGE9Tm9uZSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChidWcuY29tbWl0X3JldmlzaW9uKCksIDEzODc3NikKKworICAgICAg
ICBidWcgPSBCdWcoeyJjb21tZW50cyI6IFsKKyAgICAgICAgICAgIHsidGV4dCI6ICJDb21tZW50
IGJlZm9yZSJ9LAorICAgICAgICAgICAgeyJ0ZXh0IjogIihGcm9tIHVwZGF0ZSBvZiBhdHRhY2ht
ZW50IDE4MTI2OSkgQ2xlYXJpbmcgZmxhZ3Mgb24gYXR0YWNobWVudDogMTgxMjY5IENvbW1pdHRl
ZCByMTM4Nzc2OiA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTM4Nzc2PiJ9LAor
ICAgICAgICAgICAgeyJ0ZXh0IjogIkNvbW1lbnQgTWlkZGxlIn0sCisgICAgICAgICAgICB7InRl
eHQiOiAiKEZyb20gdXBkYXRlIG9mIGF0dGFjaG1lbnQgMTgxMjgwKSBDbGVhcmluZyBmbGFncyBv
biBhdHRhY2htZW50OiAxODEyODAgQ29tbWl0dGVkIHIxMzg5NzY6IDxodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8xMzg5NzY+In0sCisgICAgICAgICAgICB7InRleHQiOiAiQ29tbWVu
dCBBZnRlciJ9LAorICAgICAgICAgICAgXX0sIGJ1Z3ppbGxhPU5vbmUpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoYnVnLmNvbW1pdF9yZXZpc2lvbigpLCAxMzg5NzYpCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weQppbmRleCA0MzAzNGU5YjZiNjdj
MzRjNjA2OTUzNjZhYjYwYWJlNDZiMDllYzcxLi5kM2ZhYTc4YjNjOGY1MGY4NjJkNTk1MDU1MzZl
MTE4NWM2ZGY2NjMwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvdXBsb2FkLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy91cGxvYWQucHkKQEAgLTI0MSw2ICsyNDEsMTUgQEAgY2xhc3MgTGFuZFNhZmVseShBYnN0cmFj
dFBhdGNoVXBsb2FkaW5nQ29tbWFuZCk6CiAgICAgXQogCiAKK2NsYXNzIEhhc0xhbmRlZChBYnN0
cmFjdFBhdGNoVXBsb2FkaW5nQ29tbWFuZCk6CisgICAgbmFtZSA9ICJoYXMtbGFuZGVkIgorICAg
IGhlbHBfdGV4dCA9ICJDaGVjayB0aGF0IHRoZSBjdXJyZW50IGNvZGUgd2FzIHN1Y2Nlc3NmdWxs
eSBsYW5kZWQgYW5kIG5vIGNoYW5nZXMgcmVtYWluLiIKKyAgICBhcmd1bWVudF9uYW1lcyA9ICJb
QlVHSURdIgorICAgIHN0ZXBzID0gWworICAgICAgICBzdGVwcy5IYXNMYW5kZWQsCisgICAgXQor
CisKIGNsYXNzIFByZXBhcmUoQWJzdHJhY3RTZXF1ZW5jZWRDb21tYW5kKToKICAgICBuYW1lID0g
InByZXBhcmUiCiAgICAgaGVscF90ZXh0ID0gIkNyZWF0ZXMgYSBidWcgKG9yIHByb21wdHMgZm9y
IGFuIGV4aXN0aW5nIGJ1ZykgYW5kIHByZXBhcmVzIHRoZSBDaGFuZ2VMb2dzIgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5CmluZGV4IDUwMjMxOWY3YmRh
MGYwMWZmOWQ3NDk0YTIwMGQ4NjI5NGFmMGUzOTQuLjcwOWRlNWIxMjQ2MGM5ZTE1MTAyMjNmMWQ3
YTRkN2NkYzhiZWEzODUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9fX2luaXRfXy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
X19pbml0X18ucHkKQEAgLTQ1LDYgKzQ1LDcgQEAgZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmRp
c2NhcmRsb2NhbGNoYW5nZXMgaW1wb3J0IERpc2NhcmRMb2NhbENoYW5nZXMKIGZyb20gd2Via2l0
cHkudG9vbC5zdGVwcy5lZGl0Y2hhbmdlbG9nIGltcG9ydCBFZGl0Q2hhbmdlTG9nCiBmcm9tIHdl
YmtpdHB5LnRvb2wuc3RlcHMuZW5zdXJlYnVnaXNvcGVuYW5kYXNzaWduZWQgaW1wb3J0IEVuc3Vy
ZUJ1Z0lzT3BlbkFuZEFzc2lnbmVkCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuZW5zdXJlbG9j
YWxjb21taXRpZm5lZWRlZCBpbXBvcnQgRW5zdXJlTG9jYWxDb21taXRJZk5lZWRlZAorZnJvbSB3
ZWJraXRweS50b29sLnN0ZXBzLmhhc2xhbmRlZCBpbXBvcnQgSGFzTGFuZGVkCiBmcm9tIHdlYmtp
dHB5LnRvb2wuc3RlcHMub2Jzb2xldGVwYXRjaGVzIGltcG9ydCBPYnNvbGV0ZVBhdGNoZXMKIGZy
b20gd2Via2l0cHkudG9vbC5zdGVwcy5vcHRpb25zIGltcG9ydCBPcHRpb25zCiBmcm9tIHdlYmtp
dHB5LnRvb2wuc3RlcHMucG9zdGRpZmYgaW1wb3J0IFBvc3REaWZmCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvaGFzbGFuZGVkLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3N0ZXBzL2hhc2xhbmRlZC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTE5MTFkZGFk
N2E5N2Y5ZjcxMGJmM2UyMWY3MTM4M2E3OGJmNmVlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2hhc2xhbmRlZC5weQpAQCAtMCwwICsxLDk5IEBA
CisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBzeXMKK2ltcG9ydCBy
ZQoraW1wb3J0IHRlbXBmaWxlCisKK2Zyb20gd2Via2l0cHkudG9vbC5zdGVwcy5hYnN0cmFjdHN0
ZXAgaW1wb3J0IEFic3RyYWN0U3RlcAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1
dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0IGlt
cG9ydCBkaWZmX3BhcnNlcgorCitmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMgaW1wb3J0IGNvbmZp
cm1kaWZmCisKK19sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKKworCitjbGFzcyBI
YXNMYW5kZWQoY29uZmlybWRpZmYuQ29uZmlybURpZmYpOgorCisgICAgZGVmIGNvbnZlcnRfdG9f
c3ZuKHNlbGYsIGRpZmYpOgorICAgICAgICBsaW5lcyA9IGRpZmYuc3BsaXQoJ1xuJykKKyAgICAg
ICAgY29udmVydCA9IGRpZmZfcGFyc2VyLmdldF9kaWZmX2NvbnZlcnRlcihsaW5lc1sxXSkKKyAg
ICAgICAgcmV0dXJuICIiLmpvaW4oY29udmVydCh4ICsgJ1xuJykgZm9yIHggaW4gbGluZXMpCisK
KyAgICBkZWYgc3RyaXBfY2hhbmdlX2xvZyhzZWxmLCBkaWZmKToKKyAgICAgICAgcmV0dXJuIHJl
LnN1YigiIiJcCiteSW5kZXg6IChbXlxuXSopQ2hhbmdlTG9nJAorXj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0kCiteLS0t
IFxcMUNoYW5nZUxvZyQKK15cXCtcXCtcXCsgXFwxQ2hhbmdlTG9nJAorKC4qKQorKF5JbmRleDog
LiokCitePT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PSQpIiIiLCAiXFwzIiwgZGlmZiwgZmxhZ3M9cmUuUyB8IHJlLk0pCisK
KyAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKKyAgICAgICAgIyBDaGVjayBpZiB0aGVyZSBhcmUg
Y2hhbmdlcyBmaXJzdAorICAgICAgICBpZiBub3Qgc2VsZi5fdG9vbC5zY20oKS5sb2NhbF9jaGFu
Z2VzX2V4aXN0KCk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgICMgQ2hlY2sg
aWYgdGhlcmUgaXMgYSBTVk4gcmV2aXNpb24gaW4gdGhlIGJ1ZyBmcm9tIHRoZSBjb21taXQgcXVl
dWUKKyAgICAgICAgbGFuZGVkX3JldmlzaW9uID0gc2VsZi5jYWNoZWRfbG9va3VwKHN0YXRlLCAi
YnVnIikuY29tbWl0X3JldmlzaW9uKCkKKyAgICAgICAgaWYgbm90IGxhbmRlZF9yZXZpc2lvbjoK
KyAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCJVbmFibGUgdG8gZmluZCBsYW5kZWQgbWVz
c2FnZSBpbiBhc3NvY2lhdGVkIGJ1Zy4iKQorCisgICAgICAgICMgTm93IHRoaXMgaXMgdGhlcmUg
aXQgZ2V0cyBjb21wbGljYXRlZCwgd2UgbmVlZCB0byBjb21wYXJlIG91dCBkaWZmIHRvIHRoZSBk
aWZmIGF0IGxhbmRlZF9yZXZpc2lvbi4KKyAgICAgICAgbGFuZGVkX2RpZmZfYmluID0gc2VsZi5f
dG9vbC5zY20oKS5kaWZmX2Zvcl9yZXZpc2lvbihsYW5kZWRfcmV2aXNpb24pCisgICAgICAgIGxh
bmRlZF9kaWZmX3RyaW1tZWQgPSBzZWxmLnN0cmlwX2NoYW5nZV9sb2coc2VsZi5jb252ZXJ0X3Rv
X3N2bihsYW5kZWRfZGlmZl9iaW4pKQorCisgICAgICAgIGxhbmRlZF9maWxlID0gdGVtcGZpbGUu
TmFtZWRUZW1wb3JhcnlGaWxlKHN1ZmZpeD0nLWxhbmRlZC5wYXRjaCcpCisgICAgICAgIGxhbmRl
ZF9maWxlLndyaXRlKGxhbmRlZF9kaWZmX3RyaW1tZWQpCisgICAgICAgIGxhbmRlZF9maWxlLmZs
dXNoKCkKKworICAgICAgICAjIENoZWNrIGlmIHRoZXJlIGFyZSBhbnkgZGlmZmVyZW5jZXMgaW4g
dGhlIHBhdGNoIHRoYXQgZG9uJ3QgaGFwcGVuCisgICAgICAgIGxvY2FsX2RpZmZfYmluID0gc2Vs
Zi5fdG9vbC5zY20oKS5jcmVhdGVfcGF0Y2goKQorICAgICAgICBsb2NhbF9kaWZmX3RyaW1tZWQg
PSBzZWxmLnN0cmlwX2NoYW5nZV9sb2coc2VsZi5jb252ZXJ0X3RvX3N2bihsb2NhbF9kaWZmX2Jp
bikpCisKKyAgICAgICAgbG9jYWxfZmlsZSA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShz
dWZmaXg9Jy1sb2NhbC5wYXRjaCcpCisgICAgICAgIGxvY2FsX2ZpbGUud3JpdGUobG9jYWxfZGlm
Zl90cmltbWVkKQorICAgICAgICBsb2NhbF9maWxlLmZsdXNoKCkKKworICAgICAgICAjIERpZmYg
dGhlIHR3byBkaWZmJ3MgdG9nZXRoZXIuLi4KKyAgICAgICAgZGlmZl9kaWZmID0gc2VsZi5fdG9v
bC5leGVjdXRpdmUucnVuX2NvbW1hbmQoCisgICAgICAgICAgICBbImludGVyZGlmZiIsIGxhbmRl
ZF9maWxlLm5hbWUsIGxvY2FsX2ZpbGUubmFtZV0sIGRlY29kZV9vdXRwdXQ9RmFsc2UpCisKKyAg
ICAgICAgcHJldHR5X2RpZmZfZmlsZSA9IHNlbGYuX3Nob3dfcHJldHR5X2RpZmYoZGlmZl9kaWZm
KQorICAgICAgICBpZiBub3QgcHJldHR5X2RpZmZfZmlsZToKKyAgICAgICAgICAgIHNlbGYuX3Rv
b2wudXNlci5wYWdlKGRpZmZfZGlmZikKKyAgICAgICAgZGlmZl9jb3JyZWN0ID0gc2VsZi5fdG9v
bC51c2VyLmNvbmZpcm0oIkNhbiBJIGRpc2NhcmQgbG9jYWwgY2hhbmdlcz8iKQorICAgICAgICBp
ZiBwcmV0dHlfZGlmZl9maWxlOgorICAgICAgICAgICAgcHJldHR5X2RpZmZfZmlsZS5jbG9zZSgp
CisgICAgICAgIGlmIG5vdCBkaWZmX2NvcnJlY3Q6CisgICAgICAgICAgICBzZWxmLl9leGl0KDEp
CisKKyAgICAgICAgc2VsZi5fdG9vbC5zY20oKS5kaXNjYXJkX2xvY2FsX2NoYW5nZXMoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183331</attachid>
            <date>2013-01-17 17:47:56 -0800</date>
            <delta_ts>2013-01-20 21:45:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106402-20130118124456.patch</filename>
            <type>text/plain</type>
            <size>12449</size>
            <attacher name="Tim &apos;mithro&apos; Ansell">mithro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5OTY1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGIyYjE2MTE2NWJmODA5OWQ4MWE0OTA0ZDczYWQ5Yjk2
MWM0NWU1Zi4uY2VjY2MzMTAyN2JlOTljOGRhNzA4Mzc4NDA0MTliNWVmNTdkZjBlZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMz
IEBACisyMDEzLTAxLTE3ICBUaW0gJ21pdGhybycgQW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+
CisKKyAgICAgICAgQWRkaW5nICJoYXMtbGFuZGVkIiBjb21tYW5kIHRvIHdlYmtpdC1wYXRjaCB3
aGljaCBhbGxvd3MgYSBwZXJzb24gdG8KKyAgICAgICAgY2hlY2sgYSBsb2NhbCBjaGFuZ2VzIHdh
cyBzdWNjZXNzZnVsbHkgbGFuZGVkLgorCisgICAgICAgIFRoaXMgY29tbWFuZCBjb21wYXJlcyB0
aGUgZmluYWxseSBjb21taXQgcGF0Y2ggdG8gdGhlIGNoYW5nZXMgd2hpY2gKKyAgICAgICAgZXhp
c3QgbG9jYWxseSAoaWdub3JpbmcgdGhlIENoYW5nZUxvZyBmaWxlKS4gSXQgdGhlbiBhc2tzIGlm
IHlvdSB3aXNoCisgICAgICAgIHRvIGRpc2NhcmQgeW91ciBsb2NhbCBjaGFuZ2VzLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY0MDIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZfcGFyc2VyLnB5OgorICAgICAgICAoZ2l0X2RpZmZf
dG9fc3ZuX2RpZmYpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6
aWxsYS9idWcucHk6CisgICAgICAgIChCdWcuY29tbWl0X3JldmlzaW9uKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnX3VuaXR0ZXN0LnB5OgorICAg
ICAgICAoQnVnVGVzdC50ZXN0X2lzX2luX2NvbW1lbnRzKToKKyAgICAgICAgKEJ1Z1Rlc3QpOgor
ICAgICAgICAoQnVnVGVzdC50ZXN0X2NvbW1pdF9yZXZpc2lvbik6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weToKKyAgICAgICAgKEhhc0xhbmRlZCk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9oYXNsYW5kZWQucHk6IEFkZGVkLgor
ICAgICAgICAoSGFzTGFuZGVkKToKKyAgICAgICAgKEhhc0xhbmRlZC5jb252ZXJ0X3RvX3N2bik6
CisgICAgICAgIChIYXNMYW5kZWQuc3RyaXBfY2hhbmdlX2xvZyk6CisgICAgICAgIChydW4pOgor
CiAyMDEzLTAxLTE2ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAg
ICAgVXNlIHhjcnVuIHRvIGZpbmQgcGF0aCB0byBtYWtlIGZvciBNYWMgcG9ydApkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvZGlmZl9wYXJzZXIucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9kaWZmX3BhcnNlci5weQpp
bmRleCAyZWQ1NTJjNDU1NWRiNzJkZjE2YjIxMjU0N2YyYzEyNWFlMzAxYTA0Li4yMjdjYjU1OTg4
YWFlNzc1YmRiNWU4MTZiODQwNDYwOGNkNGZkMWNlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9kaWZmX3BhcnNlci5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9kaWZmX3BhcnNlci5weQpAQCAtNTcsOCArNTcs
OCBAQCBkZWYgZ2l0X2RpZmZfdG9fc3ZuX2RpZmYobGluZSk6CiAgICAgIyBGSVhNRTogVGhpcyBs
aXN0IHNob3VsZCBiZSBhIGNsYXNzIG1lbWJlciBvbiBEaWZmUGFyc2VyLgogICAgICMgVGhlc2Ug
cmVnZXhwIHBhdHRlcm5zIHNob3VsZCBiZSBjb21waWxlZCBvbmNlIGluc3RlYWQgb2YgZXZlcnkg
dGltZS4KICAgICBjb252ZXJzaW9uX3BhdHRlcm5zID0gKCgiXmRpZmYgLS1naXQgXHcvKC4rKSBc
dy8oP1A8RmlsZVBhdGg+LispIiwgbGFtYmRhIG1hdGNoZWQ6ICJJbmRleDogIiArIG1hdGNoZWQu
Z3JvdXAoJ0ZpbGVQYXRoJykgKyAiXG4iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICgi
Xm5ldyBmaWxlLioiLCBsYW1iZGEgbWF0Y2hlZDogIlxuIiksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAoIl5pbmRleCBbMC05YS1mXXs3fVwuXC5bMC05YS1mXXs3fSBbMC05XXs2fSIsIGxh
bWJkYSBtYXRjaGVkOiAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PVxuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoIl5uZXcgZmlsZS4qIiwgbGFtYmRhIG1hdGNoZWQ6ICIiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICgiXmluZGV4IFswLTlhLWZdKlwuXC5bMC05YS1mXSoiLCBsYW1iZGEgbWF0Y2hl
ZDogIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT1cbiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJeLS0tIFx3
Lyg/UDxGaWxlUGF0aD4uKykiLCBsYW1iZGEgbWF0Y2hlZDogIi0tLSAiICsgbWF0Y2hlZC5ncm91
cCgnRmlsZVBhdGgnKSArICJcbiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJeXCtc
K1wrIFx3Lyg/UDxGaWxlUGF0aD4uKykiLCBsYW1iZGEgbWF0Y2hlZDogIisrKyAiICsgbWF0Y2hl
ZC5ncm91cCgnRmlsZVBhdGgnKSArICJcbiIpKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Zy5weQppbmRleCA0YmY4ZWM2MWUxY2JiNTAwYThj
OTRmM2NlOTE2Y2QyZTQ3ZWI1MDVkLi4zYTEyOGNiYWI5N2M0ZGE2ODMyODM4MDRkMzk4YjQ0NDYx
ZDIyYzEwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVn
emlsbGEvYnVnLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6
aWxsYS9idWcucHkKQEAgLTI4LDYgKzI4LDggQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAKK2ltcG9ydCByZQorCiBmcm9tIC5hdHRhY2htZW50IGltcG9ydCBBdHRhY2htZW50CiAK
IApAQCAtMTIzLDMgKzEyNSwxMyBAQCBjbGFzcyBCdWcob2JqZWN0KToKICAgICAgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gRmFsc2UKIAorICAgIGRlZiBjb21taXRfcmV2
aXNpb24oc2VsZik6CisgICAgICAgICMgU29ydCB0aGUgY29tbWVudHMgaW4gcmV2ZXJzZSBvcmRl
ciBhcyB3ZSB3YW50IHRoZSBsYXRlc3QgY29tbWl0dGVkIHJldmlzaW9uLgorICAgICAgICByID0g
cmUuY29tcGlsZSgiQ29tbWl0dGVkIHIoP1A8c3ZuX3JldmlzaW9uPlxkKykiKQorICAgICAgICBm
b3IgY29tbWVudCBpbiBzb3J0ZWQoc2VsZi5jb21tZW50cygpLCByZXZlcnNlPVRydWUpOgorICAg
ICAgICAgICAgcmV2ID0gci5zZWFyY2goY29tbWVudFsndGV4dCddKQorICAgICAgICAgICAgaWYg
cmV2OgorICAgICAgICAgICAgICAgIHJldHVybiBpbnQocmV2Lmdyb3VwKCdzdm5fcmV2aXNpb24n
KSkKKworICAgICAgICAjIElmIHdlIGRvbid0IGZpbmQgYSByZXZpc2lvbiwgcmV0dXJuIE5vbmUK
KyAgICAgICAgcmV0dXJuIE5vbmUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9idWd6aWxsYS9idWdfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnX3VuaXR0ZXN0LnB5CmluZGV4IGYyMGM2MDEwYzgz
NzYyZmRjNTg5YzM5Yzg5YmRjNjhiYWYyZjRiNjQuLjY4YzAwMjE4MTcyZGRlZDAxZjIyYzZkYjk2
YzM4NDk0MDRjYjQ1M2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9idWd6aWxsYS9idWdfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z191bml0dGVzdC5weQpAQCAtNDUsMyArNDUsMzkgQEAg
Y2xhc3MgQnVnVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgICBidWd6
aWxsYT1Ob25lKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoYnVnLmlzX2luX2NvbW1lbnRzKCJN
ZXNzYWdlMy4iKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShidWcuaXNfaW5fY29tbWVudHMo
Ik1lc3NhZ2UuIikpCisKKyAgICBkZWYgdGVzdF9jb21taXRfcmV2aXNpb24oc2VsZik6CisgICAg
ICAgIGJ1ZyA9IEJ1Zyh7ImNvbW1lbnRzIjogW119LCBidWd6aWxsYT1Ob25lKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1Zy5jb21taXRfcmV2aXNpb24oKSwgTm9uZSkKKworICAgICAgICBi
dWcgPSBCdWcoeyJjb21tZW50cyI6IFsKKyAgICAgICAgICAgIHsidGV4dCI6ICJDb21tZW50IDEi
fSwKKyAgICAgICAgICAgIHsidGV4dCI6ICJDb21tZW50IDIifSwKKyAgICAgICAgICAgIF19LCBi
dWd6aWxsYT1Ob25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zy5jb21taXRfcmV2aXNp
b24oKSwgTm9uZSkKKworICAgICAgICBidWcgPSBCdWcoeyJjb21tZW50cyI6IFsKKyAgICAgICAg
ICAgIHsidGV4dCI6ICJDb21taXR0ZWQgcjEzODc3NjogPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzEzODc3Nj4ifSwKKyAgICAgICAgICAgIF19LCBidWd6aWxsYT1Ob25lKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zy5jb21taXRfcmV2aXNpb24oKSwgMTM4Nzc2KQorCisg
ICAgICAgIGJ1ZyA9IEJ1Zyh7ImNvbW1lbnRzIjogWworICAgICAgICAgICAgeyJ0ZXh0IjogIihG
cm9tIHVwZGF0ZSBvZiBhdHRhY2htZW50IDE4MTI2OSkgQ2xlYXJpbmcgZmxhZ3Mgb24gYXR0YWNo
bWVudDogMTgxMjY5IENvbW1pdHRlZCByMTM4Nzc2OiA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMTM4Nzc2PiJ9LAorICAgICAgICAgICAgXX0sIGJ1Z3ppbGxhPU5vbmUpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVnLmNvbW1pdF9yZXZpc2lvbigpLCAxMzg3NzYpCisKKyAg
ICAgICAgYnVnID0gQnVnKHsiY29tbWVudHMiOiBbCisgICAgICAgICAgICB7InRleHQiOiAiQ29t
bWVudCBiZWZvcmUifSwKKyAgICAgICAgICAgIHsidGV4dCI6ICIoRnJvbSB1cGRhdGUgb2YgYXR0
YWNobWVudCAxODEyNjkpIENsZWFyaW5nIGZsYWdzIG9uIGF0dGFjaG1lbnQ6IDE4MTI2OSBDb21t
aXR0ZWQgcjEzODc3NjogPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEzODc3Nj4i
fSwKKyAgICAgICAgICAgIHsidGV4dCI6ICJDb21tZW50IGFmdGVyIn0sCisgICAgICAgICAgICBd
fSwgYnVnemlsbGE9Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWcuY29tbWl0X3Jl
dmlzaW9uKCksIDEzODc3NikKKworICAgICAgICBidWcgPSBCdWcoeyJjb21tZW50cyI6IFsKKyAg
ICAgICAgICAgIHsidGV4dCI6ICJDb21tZW50IGJlZm9yZSJ9LAorICAgICAgICAgICAgeyJ0ZXh0
IjogIihGcm9tIHVwZGF0ZSBvZiBhdHRhY2htZW50IDE4MTI2OSkgQ2xlYXJpbmcgZmxhZ3Mgb24g
YXR0YWNobWVudDogMTgxMjY5IENvbW1pdHRlZCByMTM4Nzc2OiA8aHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvMTM4Nzc2PiJ9LAorICAgICAgICAgICAgeyJ0ZXh0IjogIkNvbW1lbnQg
TWlkZGxlIn0sCisgICAgICAgICAgICB7InRleHQiOiAiKEZyb20gdXBkYXRlIG9mIGF0dGFjaG1l
bnQgMTgxMjgwKSBDbGVhcmluZyBmbGFncyBvbiBhdHRhY2htZW50OiAxODEyODAgQ29tbWl0dGVk
IHIxMzg5NzY6IDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMzg5NzY+In0sCisg
ICAgICAgICAgICB7InRleHQiOiAiQ29tbWVudCBBZnRlciJ9LAorICAgICAgICAgICAgXX0sIGJ1
Z3ppbGxhPU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVnLmNvbW1pdF9yZXZpc2lv
bigpLCAxMzg5NzYpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvdXBsb2FkLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3Vw
bG9hZC5weQppbmRleCA0MzAzNGU5YjZiNjdjMzRjNjA2OTUzNjZhYjYwYWJlNDZiMDllYzcxLi5k
M2ZhYTc4YjNjOGY1MGY4NjJkNTk1MDU1MzZlMTE4NWM2ZGY2NjMwIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkKQEAgLTI0MSw2ICsyNDEsMTUg
QEAgY2xhc3MgTGFuZFNhZmVseShBYnN0cmFjdFBhdGNoVXBsb2FkaW5nQ29tbWFuZCk6CiAgICAg
XQogCiAKK2NsYXNzIEhhc0xhbmRlZChBYnN0cmFjdFBhdGNoVXBsb2FkaW5nQ29tbWFuZCk6Cisg
ICAgbmFtZSA9ICJoYXMtbGFuZGVkIgorICAgIGhlbHBfdGV4dCA9ICJDaGVjayB0aGF0IHRoZSBj
dXJyZW50IGNvZGUgd2FzIHN1Y2Nlc3NmdWxseSBsYW5kZWQgYW5kIG5vIGNoYW5nZXMgcmVtYWlu
LiIKKyAgICBhcmd1bWVudF9uYW1lcyA9ICJbQlVHSURdIgorICAgIHN0ZXBzID0gWworICAgICAg
ICBzdGVwcy5IYXNMYW5kZWQsCisgICAgXQorCisKIGNsYXNzIFByZXBhcmUoQWJzdHJhY3RTZXF1
ZW5jZWRDb21tYW5kKToKICAgICBuYW1lID0gInByZXBhcmUiCiAgICAgaGVscF90ZXh0ID0gIkNy
ZWF0ZXMgYSBidWcgKG9yIHByb21wdHMgZm9yIGFuIGV4aXN0aW5nIGJ1ZykgYW5kIHByZXBhcmVz
IHRoZSBDaGFuZ2VMb2dzIgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3N0ZXBzL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19f
aW5pdF9fLnB5CmluZGV4IDUwMjMxOWY3YmRhMGYwMWZmOWQ3NDk0YTIwMGQ4NjI5NGFmMGUzOTQu
LjcwOWRlNWIxMjQ2MGM5ZTE1MTAyMjNmMWQ3YTRkN2NkYzhiZWEzODUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9fX2luaXRfXy5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHkKQEAgLTQ1LDYgKzQ1LDcgQEAg
ZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmRpc2NhcmRsb2NhbGNoYW5nZXMgaW1wb3J0IERpc2Nh
cmRMb2NhbENoYW5nZXMKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5lZGl0Y2hhbmdlbG9nIGlt
cG9ydCBFZGl0Q2hhbmdlTG9nCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuZW5zdXJlYnVnaXNv
cGVuYW5kYXNzaWduZWQgaW1wb3J0IEVuc3VyZUJ1Z0lzT3BlbkFuZEFzc2lnbmVkCiBmcm9tIHdl
YmtpdHB5LnRvb2wuc3RlcHMuZW5zdXJlbG9jYWxjb21taXRpZm5lZWRlZCBpbXBvcnQgRW5zdXJl
TG9jYWxDb21taXRJZk5lZWRlZAorZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmhhc2xhbmRlZCBp
bXBvcnQgSGFzTGFuZGVkCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMub2Jzb2xldGVwYXRjaGVz
IGltcG9ydCBPYnNvbGV0ZVBhdGNoZXMKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5vcHRpb25z
IGltcG9ydCBPcHRpb25zCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMucG9zdGRpZmYgaW1wb3J0
IFBvc3REaWZmCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
aGFzbGFuZGVkLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2hhc2xhbmRl
ZC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hOTcwMzMwMDhjODljYTEzZmM5YzczZDhmODdmNzk2NDAwNzZiODRi
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2hh
c2xhbmRlZC5weQpAQCAtMCwwICsxLDk5IEBACisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisj
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IGxv
Z2dpbmcKK2ltcG9ydCBzeXMKK2ltcG9ydCByZQoraW1wb3J0IHRlbXBmaWxlCisKK2Zyb20gd2Vi
a2l0cHkudG9vbC5zdGVwcy5hYnN0cmFjdHN0ZXAgaW1wb3J0IEFic3RyYWN0U3RlcAorZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKK2Zyb20g
d2Via2l0cHkuY29tbW9uLmNoZWNrb3V0IGltcG9ydCBkaWZmX3BhcnNlcgorCitmcm9tIHdlYmtp
dHB5LnRvb2wuc3RlcHMgaW1wb3J0IGNvbmZpcm1kaWZmCisKK19sb2cgPSBsb2dnaW5nLmdldExv
Z2dlcihfX25hbWVfXykKKworCitjbGFzcyBIYXNMYW5kZWQoY29uZmlybWRpZmYuQ29uZmlybURp
ZmYpOgorCisgICAgZGVmIGNvbnZlcnRfdG9fc3ZuKHNlbGYsIGRpZmYpOgorICAgICAgICBsaW5l
cyA9IGRpZmYuc3BsaXQoJ1xuJykKKyAgICAgICAgY29udmVydCA9IGRpZmZfcGFyc2VyLmdldF9k
aWZmX2NvbnZlcnRlcihsaW5lc1sxXSkKKyAgICAgICAgcmV0dXJuICIiLmpvaW4oY29udmVydCh4
ICsgJ1xuJykgZm9yIHggaW4gbGluZXMpCisKKyAgICBkZWYgc3RyaXBfY2hhbmdlX2xvZyhzZWxm
LCBkaWZmKToKKyAgICAgICAgcmV0dXJuIHJlLnN1YigiIiJcCiteSW5kZXg6IChbXlxuXSopQ2hh
bmdlTG9nJAorXj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0kCiteLS0tIFxcMUNoYW5nZUxvZyQKK15cXCtcXCtcXCsgXFwx
Q2hhbmdlTG9nJAorKC4qKQorKF5JbmRleDogLiokCitePT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSQpIiIiLCAiXFwzIiwg
ZGlmZiwgZmxhZ3M9cmUuUyB8IHJlLk0pCisKKyAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKKyAg
ICAgICAgIyBDaGVjayBpZiB0aGVyZSBhcmUgY2hhbmdlcyBmaXJzdAorICAgICAgICBpZiBub3Qg
c2VsZi5fdG9vbC5zY20oKS5sb2NhbF9jaGFuZ2VzX2V4aXN0KCk6CisgICAgICAgICAgICByZXR1
cm4gVHJ1ZQorCisgICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgYSBTVk4gcmV2aXNpb24gaW4g
dGhlIGJ1ZyBmcm9tIHRoZSBjb21taXQgcXVldWUKKyAgICAgICAgbGFuZGVkX3JldmlzaW9uID0g
c2VsZi5jYWNoZWRfbG9va3VwKHN0YXRlLCAiYnVnIikuY29tbWl0X3JldmlzaW9uKCkKKyAgICAg
ICAgaWYgbm90IGxhbmRlZF9yZXZpc2lvbjoKKyAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9y
KCJVbmFibGUgdG8gZmluZCBsYW5kZWQgbWVzc2FnZSBpbiBhc3NvY2lhdGVkIGJ1Zy4iKQorCisg
ICAgICAgICMgTm93IHRoaXMgaXMgdGhlcmUgaXQgZ2V0cyBjb21wbGljYXRlZCwgd2UgbmVlZCB0
byBjb21wYXJlIG91ciBkaWZmIHRvIHRoZSBkaWZmIGF0IGxhbmRlZF9yZXZpc2lvbi4KKyAgICAg
ICAgbGFuZGVkX2RpZmZfYmluID0gc2VsZi5fdG9vbC5zY20oKS5kaWZmX2Zvcl9yZXZpc2lvbihs
YW5kZWRfcmV2aXNpb24pCisgICAgICAgIGxhbmRlZF9kaWZmX3RyaW1tZWQgPSBzZWxmLnN0cmlw
X2NoYW5nZV9sb2coc2VsZi5jb252ZXJ0X3RvX3N2bihsYW5kZWRfZGlmZl9iaW4pKQorCisgICAg
ICAgIGxhbmRlZF9maWxlID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKHN1ZmZpeD0nLWxh
bmRlZC5wYXRjaCcpCisgICAgICAgIGxhbmRlZF9maWxlLndyaXRlKGxhbmRlZF9kaWZmX3RyaW1t
ZWQpCisgICAgICAgIGxhbmRlZF9maWxlLmZsdXNoKCkKKworICAgICAgICAjIENoZWNrIGlmIHRo
ZXJlIGFyZSBhbnkgZGlmZmVyZW5jZXMgaW4gdGhlIHBhdGNoIHRoYXQgZG9uJ3QgaGFwcGVuCisg
ICAgICAgIGxvY2FsX2RpZmZfYmluID0gc2VsZi5fdG9vbC5zY20oKS5jcmVhdGVfcGF0Y2goKQor
ICAgICAgICBsb2NhbF9kaWZmX3RyaW1tZWQgPSBzZWxmLnN0cmlwX2NoYW5nZV9sb2coc2VsZi5j
b252ZXJ0X3RvX3N2bihsb2NhbF9kaWZmX2JpbikpCisKKyAgICAgICAgbG9jYWxfZmlsZSA9IHRl
bXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShzdWZmaXg9Jy1sb2NhbC5wYXRjaCcpCisgICAgICAg
IGxvY2FsX2ZpbGUud3JpdGUobG9jYWxfZGlmZl90cmltbWVkKQorICAgICAgICBsb2NhbF9maWxl
LmZsdXNoKCkKKworICAgICAgICAjIERpZmYgdGhlIHR3byBkaWZmJ3MgdG9nZXRoZXIuLi4KKyAg
ICAgICAgZGlmZl9kaWZmID0gc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2NvbW1hbmQoCisgICAg
ICAgICAgICBbImludGVyZGlmZiIsIGxhbmRlZF9maWxlLm5hbWUsIGxvY2FsX2ZpbGUubmFtZV0s
IGRlY29kZV9vdXRwdXQ9RmFsc2UpCisKKyAgICAgICAgcHJldHR5X2RpZmZfZmlsZSA9IHNlbGYu
X3Nob3dfcHJldHR5X2RpZmYoZGlmZl9kaWZmKQorICAgICAgICBpZiBub3QgcHJldHR5X2RpZmZf
ZmlsZToKKyAgICAgICAgICAgIHNlbGYuX3Rvb2wudXNlci5wYWdlKGRpZmZfZGlmZikKKyAgICAg
ICAgZGlmZl9jb3JyZWN0ID0gc2VsZi5fdG9vbC51c2VyLmNvbmZpcm0oIkNhbiBJIGRpc2NhcmQg
bG9jYWwgY2hhbmdlcz8iKQorICAgICAgICBpZiBwcmV0dHlfZGlmZl9maWxlOgorICAgICAgICAg
ICAgcHJldHR5X2RpZmZfZmlsZS5jbG9zZSgpCisgICAgICAgIGlmIG5vdCBkaWZmX2NvcnJlY3Q6
CisgICAgICAgICAgICBzZWxmLl9leGl0KDEpCisKKyAgICAgICAgc2VsZi5fdG9vbC5zY20oKS5k
aXNjYXJkX2xvY2FsX2NoYW5nZXMoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183706</attachid>
            <date>2013-01-20 21:45:18 -0800</date>
            <delta_ts>2013-01-21 00:57:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106402-20130121164213.patch</filename>
            <type>text/plain</type>
            <size>26961</size>
            <attacher name="Tim &apos;mithro&apos; Ansell">mithro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMjgzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzg2MWJlMjc1ZmI5OWU0OTgwOWM3ODAzMTQ4ZWFiYmNl
NTRjN2FlNS4uMzExMzRjMWI1YTAxMjE2ZWNiYTc3MzhhYWRmMDJjYTJhMTI2MWUwMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0
IEBACisyMDEzLTAxLTE3ICBUaW0gJ21pdGhybycgQW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+
CisKKyAgICAgICAgQWRkaW5nICJoYXMtbGFuZGVkIiBjb21tYW5kIHRvIHdlYmtpdC1wYXRjaCB3
aGljaCBjb21wYXJlcyB0aGUgZmluYWxseQorICAgICAgICBjb21taXR0ZWQgcGF0Y2ggdG8gdGhl
IGNoYW5nZXMgd2hpY2ggZXhpc3QgbG9jYWxseSAoaWdub3JpbmcgdGhlCisgICAgICAgIENoYW5n
ZUxvZyBmaWxlKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA2NDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9kaWZmX3BhcnNlci5weToK
KyAgICAgICAgKGdpdF9kaWZmX3RvX3N2bl9kaWZmKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5OgorICAgICAgICAoQnVnLmNvbW1pdF9yZXZp
c2lvbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1
Z191bml0dGVzdC5weToKKyAgICAgICAgKEJ1Z1Rlc3QudGVzdF9pc19pbl9jb21tZW50cyk6Cisg
ICAgICAgIChCdWdUZXN0KToKKyAgICAgICAgKEJ1Z1Rlc3QudGVzdF9jb21taXRfcmV2aXNpb24p
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHk6Cisg
ICAgICAgIChIYXNMYW5kZWQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9fX2luaXRfXy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvaGFz
bGFuZGVkLnB5OiBBZGRlZC4KKyAgICAgICAgKEhhc0xhbmRlZCk6CisgICAgICAgIChIYXNMYW5k
ZWQuY29udmVydF90b19zdm4pOgorICAgICAgICAoSGFzTGFuZGVkLnN0cmlwX2NoYW5nZV9sb2cp
OgorICAgICAgICAocnVuKToKKworMjAxMy0wMS0yMCAgVGltICdtaXRocm8nIEFuc2VsbCAgPG1p
dGhyb0BtaXRoaXMuY29tPgorCisgICAgICAgIEV4dGVuZCBkaWZmX3BhcnNlciB0byBzdXBwb3J0
IHRoZSAtLWZ1bGwtaW5kZXggb3V0cHV0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9kaWZm
X3BhcnNlci5weToKKyAgICAgICAgKGdpdF9kaWZmX3RvX3N2bl9kaWZmKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9kaWZmX3BhcnNlcl91bml0dGVzdC5weToK
KyAgICAgICAgKERpZmZQYXJzZXJUZXN0KToKKyAgICAgICAgKERpZmZQYXJzZXJUZXN0LnRlc3Rf
Z2l0X2RpZmZfdG9fc3ZuX2RpZmYpOgorICAgICAgICAoZ2l0X2RpZmZfdG9fc3ZuX2RpZmYpOgor
CiAyMDEzLTAxLTIwICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtjaHJvbWl1bV0gbW92ZSBmcmFtZSBnZW5lcmF0aW9uIHJlbGF0ZWQgbWV0aG9kcyB0
byBUZXN0UnVubmVyCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
aGVja291dC9kaWZmX3BhcnNlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L2RpZmZfcGFyc2VyLnB5CmluZGV4IDJlZDU1MmM0NTU1ZGI3MmRmMTZiMjEyNTQ3ZjJj
MTI1YWUzMDFhMDQuLmMwNWM2ZDkwNzZjZjA5YzRlNTYyM2E4MWM5OGM3NDY4OGQ3OTQ0N2IgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZfcGFy
c2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZf
cGFyc2VyLnB5CkBAIC01OCw3ICs1OCw3IEBAIGRlZiBnaXRfZGlmZl90b19zdm5fZGlmZihsaW5l
KToKICAgICAjIFRoZXNlIHJlZ2V4cCBwYXR0ZXJucyBzaG91bGQgYmUgY29tcGlsZWQgb25jZSBp
bnN0ZWFkIG9mIGV2ZXJ5IHRpbWUuCiAgICAgY29udmVyc2lvbl9wYXR0ZXJucyA9ICgoIl5kaWZm
IC0tZ2l0IFx3LyguKykgXHcvKD9QPEZpbGVQYXRoPi4rKSIsIGxhbWJkYSBtYXRjaGVkOiAiSW5k
ZXg6ICIgKyBtYXRjaGVkLmdyb3VwKCdGaWxlUGF0aCcpICsgIlxuIiksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoIl5uZXcgZmlsZS4qIiwgbGFtYmRhIG1hdGNoZWQ6ICJcbiIpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKCJeaW5kZXggWzAtOWEtZl17N31cLlwuWzAtOWEtZl17
N30gWzAtOV17Nn0iLCBsYW1iZGEgbWF0Y2hlZDogIj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKCJeaW5kZXggKFswLTlhLWZdezd9fFswLTlhLWZdezQwfSlcLlwu
KFswLTlhLWZdezd9fFswLTlhLWZdezQwfSkgWzAtOV17Nn0iLCBsYW1iZGEgbWF0Y2hlZDogIj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT1cbiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJeLS0tIFx3Lyg/UDxG
aWxlUGF0aD4uKykiLCBsYW1iZGEgbWF0Y2hlZDogIi0tLSAiICsgbWF0Y2hlZC5ncm91cCgnRmls
ZVBhdGgnKSArICJcbiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJeXCtcK1wrIFx3
Lyg/UDxGaWxlUGF0aD4uKykiLCBsYW1iZGEgbWF0Y2hlZDogIisrKyAiICsgbWF0Y2hlZC5ncm91
cCgnRmlsZVBhdGgnKSArICJcbiIpKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jaGVja291dC9kaWZmX3BhcnNlcl91bml0dGVzdC5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZfcGFyc2VyX3VuaXR0ZXN0LnB5CmluZGV4
IGI0OGIxNjI2MmQ2OTExY2YzZGViNTMwOWZjZWJjOTVjOTIyY2QxNjIuLjM5YjNmMWVkZmRlNTE2
ZmM4MGUzOWMyZTRmY2E0YmNiNmZjZTJhMmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZfcGFyc2VyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZfcGFyc2VyX3VuaXR0ZXN0LnB5
CkBAIC0yNiwxMyArMjYsMTYgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWlt
cG9ydCB1bml0dGVzdAoraW1wb3J0IGNTdHJpbmdJTyBhcyBTdHJpbmdJTworaW1wb3J0IHVuaXR0
ZXN0MiBhcyB1bml0dGVzdAogaW1wb3J0IGRpZmZfcGFyc2VyCiBpbXBvcnQgcmUKIAogZnJvbSB3
ZWJraXRweS5jb21tb24uY2hlY2tvdXQuZGlmZl90ZXN0X2RhdGEgaW1wb3J0IERJRkZfVEVTVF9E
QVRBCiAKIGNsYXNzIERpZmZQYXJzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBtYXhE
aWZmID0gTm9uZQorCiAgICAgZGVmIHRlc3RfZGlmZl9wYXJzZXIoc2VsZiwgcGFyc2VyID0gTm9u
ZSk6CiAgICAgICAgIGlmIG5vdCBwYXJzZXI6CiAgICAgICAgICAgICBwYXJzZXIgPSBkaWZmX3Bh
cnNlci5EaWZmUGFyc2VyKERJRkZfVEVTVF9EQVRBLnNwbGl0bGluZXMoKSkKQEAgLTg5LDMgKzky
LDQ4IEBAIGNsYXNzIERpZmZQYXJzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAg
Zm9yIHByZWZpeCBpbiBwcmVmaXhlczoKICAgICAgICAgICAgIHBhdGNoID0gcC5zdWIobGFtYmRh
IHg6ICIgJXMvIiAlIHByZWZpeFt4Lmdyb3VwKDEpXSwgRElGRl9URVNUX0RBVEEpCiAgICAgICAg
ICAgICBzZWxmLnRlc3RfZGlmZl9wYXJzZXIoZGlmZl9wYXJzZXIuRGlmZlBhcnNlcihwYXRjaC5z
cGxpdGxpbmVzKCkpKQorCisgICAgZGVmIHRlc3RfZ2l0X2RpZmZfdG9fc3ZuX2RpZmYoc2VsZik6
CisgICAgICAgIG91dHB1dCA9ICIiIlwKK0luZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9kaWZmX3BhcnNlci5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZfcGFyc2VyLnB5CisrKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvZGlmZl9wYXJzZXIucHkKK0BAIC01OSw2ICs1
OSw3IEBAIGRlZiBnaXRfZGlmZl90b19zdm5fZGlmZihsaW5lKToKKyAgICAgY29udmVyc2lvbl9w
YXR0ZXJucyA9ICgoIl5kaWZmIC0tZ2l0IFx3LyguKykgXHcvKD9QPEZpbGVQYXRoPi4rKSIsIGxh
bWJkYSBtYXRjaGVkOiAiSW5kZXg6ICIgKyBtYXRjaGVkLmdyb3VwKCdGaWxlUGF0aCcpICsgIlxc
biIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiXm5ldyBmaWxlLioiLCBsYW1iZGEg
bWF0Y2hlZDogIlxcbiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiXmluZGV4IFsw
LTlhLWZdezd9XC5cLlswLTlhLWZdezd9IFswLTldezZ9IiwgbGFtYmRhIG1hdGNoZWQ6ICI9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKCJeaW5kZXggWzAtOWEtZl17Mzl9XC5cLlswLTlhLWZdezM5fSBb
MC05XXs2fSIsIGxhbWJkYSBtYXRjaGVkOiAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIl4tLS0gXHcv
KD9QPEZpbGVQYXRoPi4rKSIsIGxhbWJkYSBtYXRjaGVkOiAiLS0tICIgKyBtYXRjaGVkLmdyb3Vw
KCdGaWxlUGF0aCcpICsgIlxcbiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiXlwr
XCtcKyBcdy8oP1A8RmlsZVBhdGg+LispIiwgbGFtYmRhIG1hdGNoZWQ6ICIrKysgIiArIG1hdGNo
ZWQuZ3JvdXAoJ0ZpbGVQYXRoJykgKyAiXFxuIikpCisiIiIKKworICAgICAgICBpbnB1dGZtdCA9
IFN0cmluZ0lPLlN0cmluZ0lPKCIiIlwKK2RpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jaGVja291dC9kaWZmX3BhcnNlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZfcGFyc2VyLnB5CitpbmRleCAyZWQ1NTJjNDU1NWRiNzJk
ZjE2YjIxMjU0N2YyYzEyNWFlMzAxYTA0Li43Mjg3MDQ4MjAwMGMwZGJhNjRjZTQzMDBlZDc4MmMw
M2VlNzliNzRmIDEwMDY0NAorLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvZGlmZl9wYXJzZXIucHkKKysrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L2RpZmZfcGFyc2VyLnB5CitAQCAtNTksNiArNTksNyBAQCBkZWYgZ2l0X2RpZmZf
dG9fc3ZuX2RpZmYobGluZSk6CisgICAgIGNvbnZlcnNpb25fcGF0dGVybnMgPSAoKCJeZGlmZiAt
LWdpdCBcdy8oLispIFx3Lyg/UDxGaWxlUGF0aD4uKykiLCBsYW1iZGEgbWF0Y2hlZDogIkluZGV4
OiAiICsgbWF0Y2hlZC5ncm91cCgnRmlsZVBhdGgnKSArICJcXG4iKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoIl5uZXcgZmlsZS4qIiwgbGFtYmRhIG1hdGNoZWQ6ICJcXG4iKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoIl5pbmRleCBbMC05YS1mXXs3fVwuXC5bMC05YS1m
XXs3fSBbMC05XXs2fSIsIGxhbWJkYSBtYXRjaGVkOiAiPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgi
XmluZGV4IFswLTlhLWZdezM5fVwuXC5bMC05YS1mXXszOX0gWzAtOV17Nn0iLCBsYW1iZGEgbWF0
Y2hlZDogIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJeLS0tIFx3Lyg/UDxGaWxlUGF0aD4uKykiLCBs
YW1iZGEgbWF0Y2hlZDogIi0tLSAiICsgbWF0Y2hlZC5ncm91cCgnRmlsZVBhdGgnKSArICJcXG4i
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIl5cK1wrXCsgXHcvKD9QPEZpbGVQYXRo
Pi4rKSIsIGxhbWJkYSBtYXRjaGVkOiAiKysrICIgKyBtYXRjaGVkLmdyb3VwKCdGaWxlUGF0aCcp
ICsgIlxcbiIpKQorIiIiKQorICAgICAgICBzaG9ydGZtdCA9IFN0cmluZ0lPLlN0cmluZ0lPKCIi
IlwKK2RpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9k
aWZmX3BhcnNlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Rp
ZmZfcGFyc2VyLnB5CitpbmRleCBiNDhiMTYyLi5mMzAwOTYwIDEwMDY0NAorLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvZGlmZl9wYXJzZXIucHkKKysrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZfcGFyc2VyLnB5CitAQCAt
NTksNiArNTksNyBAQCBkZWYgZ2l0X2RpZmZfdG9fc3ZuX2RpZmYobGluZSk6CisgICAgIGNvbnZl
cnNpb25fcGF0dGVybnMgPSAoKCJeZGlmZiAtLWdpdCBcdy8oLispIFx3Lyg/UDxGaWxlUGF0aD4u
KykiLCBsYW1iZGEgbWF0Y2hlZDogIkluZGV4OiAiICsgbWF0Y2hlZC5ncm91cCgnRmlsZVBhdGgn
KSArICJcXG4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIl5uZXcgZmlsZS4qIiwg
bGFtYmRhIG1hdGNoZWQ6ICJcXG4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIl5p
bmRleCBbMC05YS1mXXs3fVwuXC5bMC05YS1mXXs3fSBbMC05XXs2fSIsIGxhbWJkYSBtYXRjaGVk
OiAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICgiXmluZGV4IFswLTlhLWZdezM5fVwuXC5bMC05YS1m
XXszOX0gWzAtOV17Nn0iLCBsYW1iZGEgbWF0Y2hlZDogIj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJe
LS0tIFx3Lyg/UDxGaWxlUGF0aD4uKykiLCBsYW1iZGEgbWF0Y2hlZDogIi0tLSAiICsgbWF0Y2hl
ZC5ncm91cCgnRmlsZVBhdGgnKSArICJcXG4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoIl5cK1wrXCsgXHcvKD9QPEZpbGVQYXRoPi4rKSIsIGxhbWJkYSBtYXRjaGVkOiAiKysrICIg
KyBtYXRjaGVkLmdyb3VwKCdGaWxlUGF0aCcpICsgIlxcbiIpKQorIiIiKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwob3V0cHV0LCAnJy5qb2luKGRpZmZfcGFyc2VyLmdpdF9k
aWZmX3RvX3N2bl9kaWZmKHgpIGZvciB4IGluIHNob3J0Zm10LnJlYWRsaW5lcygpKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRNdWx0aUxpbmVFcXVhbChvdXRwdXQsICcnLmpvaW4oZGlmZl9wYXJzZXIu
Z2l0X2RpZmZfdG9fc3ZuX2RpZmYoeCkgZm9yIHggaW4gaW5wdXRmbXQucmVhZGxpbmVzKCkpKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1
Zy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWcucHkK
aW5kZXggNGJmOGVjNjFlMWNiYjUwMGE4Yzk0ZjNjZTkxNmNkMmU0N2ViNTA1ZC4uM2ExMjhjYmFi
OTdjNGRhNjgzMjgzODA0ZDM5OGI0NDQ2MWQyMmMxMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Zy5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5CkBAIC0yOCw2ICsyOCw4IEBACiAj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCitpbXBvcnQgcmUKKwogZnJvbSAuYXR0YWNo
bWVudCBpbXBvcnQgQXR0YWNobWVudAogCiAKQEAgLTEyMywzICsxMjUsMTMgQEAgY2xhc3MgQnVn
KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIEZh
bHNlCiAKKyAgICBkZWYgY29tbWl0X3JldmlzaW9uKHNlbGYpOgorICAgICAgICAjIFNvcnQgdGhl
IGNvbW1lbnRzIGluIHJldmVyc2Ugb3JkZXIgYXMgd2Ugd2FudCB0aGUgbGF0ZXN0IGNvbW1pdHRl
ZCByZXZpc2lvbi4KKyAgICAgICAgciA9IHJlLmNvbXBpbGUoIkNvbW1pdHRlZCByKD9QPHN2bl9y
ZXZpc2lvbj5cZCspIikKKyAgICAgICAgZm9yIGNvbW1lbnQgaW4gc29ydGVkKHNlbGYuY29tbWVu
dHMoKSwgcmV2ZXJzZT1UcnVlKToKKyAgICAgICAgICAgIHJldiA9IHIuc2VhcmNoKGNvbW1lbnRb
J3RleHQnXSkKKyAgICAgICAgICAgIGlmIHJldjoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50
KHJldi5ncm91cCgnc3ZuX3JldmlzaW9uJykpCisKKyAgICAgICAgIyBJZiB3ZSBkb24ndCBmaW5k
IGEgcmV2aXNpb24sIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnX3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z191bml0
dGVzdC5weQppbmRleCBmMjBjNjAxMGM4Mzc2MmZkYzU4OWMzOWM4OWJkYzY4YmFmMmY0YjY0Li42
OGMwMDIxODE3MmRkZWQwMWYyMmM2ZGI5NmMzODQ5NDA0Y2I0NTNmIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnX3VuaXR0ZXN0LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWdfdW5pdHRl
c3QucHkKQEAgLTQ1LDMgKzQ1LDM5IEBAIGNsYXNzIEJ1Z1Rlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgICAgICAgICAgICAgICAgYnVnemlsbGE9Tm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGJ1Zy5pc19pbl9jb21tZW50cygiTWVzc2FnZTMuIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UoYnVnLmlzX2luX2NvbW1lbnRzKCJNZXNzYWdlLiIpKQorCisgICAgZGVmIHRlc3RfY29t
bWl0X3JldmlzaW9uKHNlbGYpOgorICAgICAgICBidWcgPSBCdWcoeyJjb21tZW50cyI6IFtdfSwg
YnVnemlsbGE9Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWcuY29tbWl0X3Jldmlz
aW9uKCksIE5vbmUpCisKKyAgICAgICAgYnVnID0gQnVnKHsiY29tbWVudHMiOiBbCisgICAgICAg
ICAgICB7InRleHQiOiAiQ29tbWVudCAxIn0sCisgICAgICAgICAgICB7InRleHQiOiAiQ29tbWVu
dCAyIn0sCisgICAgICAgICAgICBdfSwgYnVnemlsbGE9Tm9uZSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChidWcuY29tbWl0X3JldmlzaW9uKCksIE5vbmUpCisKKyAgICAgICAgYnVnID0gQnVn
KHsiY29tbWVudHMiOiBbCisgICAgICAgICAgICB7InRleHQiOiAiQ29tbWl0dGVkIHIxMzg3NzY6
IDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMzg3NzY+In0sCisgICAgICAgICAg
ICBdfSwgYnVnemlsbGE9Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWcuY29tbWl0
X3JldmlzaW9uKCksIDEzODc3NikKKworICAgICAgICBidWcgPSBCdWcoeyJjb21tZW50cyI6IFsK
KyAgICAgICAgICAgIHsidGV4dCI6ICIoRnJvbSB1cGRhdGUgb2YgYXR0YWNobWVudCAxODEyNjkp
IENsZWFyaW5nIGZsYWdzIG9uIGF0dGFjaG1lbnQ6IDE4MTI2OSBDb21taXR0ZWQgcjEzODc3Njog
PGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEzODc3Nj4ifSwKKyAgICAgICAgICAg
IF19LCBidWd6aWxsYT1Ob25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zy5jb21taXRf
cmV2aXNpb24oKSwgMTM4Nzc2KQorCisgICAgICAgIGJ1ZyA9IEJ1Zyh7ImNvbW1lbnRzIjogWwor
ICAgICAgICAgICAgeyJ0ZXh0IjogIkNvbW1lbnQgYmVmb3JlIn0sCisgICAgICAgICAgICB7InRl
eHQiOiAiKEZyb20gdXBkYXRlIG9mIGF0dGFjaG1lbnQgMTgxMjY5KSBDbGVhcmluZyBmbGFncyBv
biBhdHRhY2htZW50OiAxODEyNjkgQ29tbWl0dGVkIHIxMzg3NzY6IDxodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8xMzg3NzY+In0sCisgICAgICAgICAgICB7InRleHQiOiAiQ29tbWVu
dCBhZnRlciJ9LAorICAgICAgICAgICAgXX0sIGJ1Z3ppbGxhPU5vbmUpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoYnVnLmNvbW1pdF9yZXZpc2lvbigpLCAxMzg3NzYpCisKKyAgICAgICAgYnVn
ID0gQnVnKHsiY29tbWVudHMiOiBbCisgICAgICAgICAgICB7InRleHQiOiAiQ29tbWVudCBiZWZv
cmUifSwKKyAgICAgICAgICAgIHsidGV4dCI6ICIoRnJvbSB1cGRhdGUgb2YgYXR0YWNobWVudCAx
ODEyNjkpIENsZWFyaW5nIGZsYWdzIG9uIGF0dGFjaG1lbnQ6IDE4MTI2OSBDb21taXR0ZWQgcjEz
ODc3NjogPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEzODc3Nj4ifSwKKyAgICAg
ICAgICAgIHsidGV4dCI6ICJDb21tZW50IE1pZGRsZSJ9LAorICAgICAgICAgICAgeyJ0ZXh0Ijog
IihGcm9tIHVwZGF0ZSBvZiBhdHRhY2htZW50IDE4MTI4MCkgQ2xlYXJpbmcgZmxhZ3Mgb24gYXR0
YWNobWVudDogMTgxMjgwIENvbW1pdHRlZCByMTM4OTc2OiA8aHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMTM4OTc2PiJ9LAorICAgICAgICAgICAgeyJ0ZXh0IjogIkNvbW1lbnQgQWZ0
ZXIifSwKKyAgICAgICAgICAgIF19LCBidWd6aWxsYT1Ob25lKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ1Zy5jb21taXRfcmV2aXNpb24oKSwgMTM4OTc2KQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkKaW5kZXggNDMwMzRlOWI2YjY3YzM0YzYw
Njk1MzY2YWI2MGFiZTQ2YjA5ZWM3MS4uZDNmYWE3OGIzYzhmNTBmODYyZDU5NTA1NTM2ZTExODVj
NmRmNjYzMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L3VwbG9hZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBs
b2FkLnB5CkBAIC0yNDEsNiArMjQxLDE1IEBAIGNsYXNzIExhbmRTYWZlbHkoQWJzdHJhY3RQYXRj
aFVwbG9hZGluZ0NvbW1hbmQpOgogICAgIF0KIAogCitjbGFzcyBIYXNMYW5kZWQoQWJzdHJhY3RQ
YXRjaFVwbG9hZGluZ0NvbW1hbmQpOgorICAgIG5hbWUgPSAiaGFzLWxhbmRlZCIKKyAgICBoZWxw
X3RleHQgPSAiQ2hlY2sgdGhhdCB0aGUgY3VycmVudCBjb2RlIHdhcyBzdWNjZXNzZnVsbHkgbGFu
ZGVkIGFuZCBubyBjaGFuZ2VzIHJlbWFpbi4iCisgICAgYXJndW1lbnRfbmFtZXMgPSAiW0JVR0lE
XSIKKyAgICBzdGVwcyA9IFsKKyAgICAgICAgc3RlcHMuSGFzTGFuZGVkLAorICAgIF0KKworCiBj
bGFzcyBQcmVwYXJlKEFic3RyYWN0U2VxdWVuY2VkQ29tbWFuZCk6CiAgICAgbmFtZSA9ICJwcmVw
YXJlIgogICAgIGhlbHBfdGV4dCA9ICJDcmVhdGVzIGEgYnVnIChvciBwcm9tcHRzIGZvciBhbiBl
eGlzdGluZyBidWcpIGFuZCBwcmVwYXJlcyB0aGUgQ2hhbmdlTG9ncyIKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9fX2luaXRfXy5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy9fX2luaXRfXy5weQppbmRleCA1MDIzMTlmN2JkYTBmMDFm
ZjlkNzQ5NGEyMDBkODYyOTRhZjBlMzk0Li43MDlkZTViMTI0NjBjOWUxNTEwMjIzZjFkN2E0ZDdj
ZGM4YmVhMzg1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
X19pbml0X18ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19faW5p
dF9fLnB5CkBAIC00NSw2ICs0NSw3IEBAIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5kaXNjYXJk
bG9jYWxjaGFuZ2VzIGltcG9ydCBEaXNjYXJkTG9jYWxDaGFuZ2VzCiBmcm9tIHdlYmtpdHB5LnRv
b2wuc3RlcHMuZWRpdGNoYW5nZWxvZyBpbXBvcnQgRWRpdENoYW5nZUxvZwogZnJvbSB3ZWJraXRw
eS50b29sLnN0ZXBzLmVuc3VyZWJ1Z2lzb3BlbmFuZGFzc2lnbmVkIGltcG9ydCBFbnN1cmVCdWdJ
c09wZW5BbmRBc3NpZ25lZAogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmVuc3VyZWxvY2FsY29t
bWl0aWZuZWVkZWQgaW1wb3J0IEVuc3VyZUxvY2FsQ29tbWl0SWZOZWVkZWQKK2Zyb20gd2Via2l0
cHkudG9vbC5zdGVwcy5oYXNsYW5kZWQgaW1wb3J0IEhhc0xhbmRlZAogZnJvbSB3ZWJraXRweS50
b29sLnN0ZXBzLm9ic29sZXRlcGF0Y2hlcyBpbXBvcnQgT2Jzb2xldGVQYXRjaGVzCiBmcm9tIHdl
YmtpdHB5LnRvb2wuc3RlcHMub3B0aW9ucyBpbXBvcnQgT3B0aW9ucwogZnJvbSB3ZWJraXRweS50
b29sLnN0ZXBzLnBvc3RkaWZmIGltcG9ydCBQb3N0RGlmZgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2hhc2xhbmRlZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy9oYXNsYW5kZWQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE4YjgyMTYzMjU3Njky
NzI0YjlkMThjM2FlYWMyNDk3M2YzYjUwNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy9oYXNsYW5kZWQucHkKQEAgLTAsMCArMSwxMTggQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCitpbXBvcnQgY1N0cmluZ0lPIGFzIFN0cmluZ0lPCitpbXBvcnQgbG9n
Z2luZworaW1wb3J0IHN5cworaW1wb3J0IHJlCitpbXBvcnQgdGVtcGZpbGUKKworZnJvbSB3ZWJr
aXRweS50b29sLnN0ZXBzLmFic3RyYWN0c3RlcCBpbXBvcnQgQWJzdHJhY3RTdGVwCitmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVy
cm9yCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dCBpbXBvcnQgZGlmZl9wYXJzZXIKKwor
ZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzIGltcG9ydCBjb25maXJtZGlmZgorCitfbG9nID0gbG9n
Z2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKworY2xhc3MgSGFzTGFuZGVkKGNvbmZpcm1kaWZm
LkNvbmZpcm1EaWZmKToKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgY29udmVydF90b19z
dm4oZGlmZik6CisgICAgICAgIGxpbmVzID0gU3RyaW5nSU8uU3RyaW5nSU8oZGlmZikucmVhZGxp
bmVzKCkKKyAgICAgICAgY29udmVydCA9IGRpZmZfcGFyc2VyLmdldF9kaWZmX2NvbnZlcnRlcihs
aW5lc1swXSkKKyAgICAgICAgcmV0dXJuICIiLmpvaW4oY29udmVydCh4KSBmb3IgeCBpbiBsaW5l
cykKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgc3RyaXBfY2hhbmdlX2xvZyhkaWZmKToK
KyAgICAgICAgbGluZXMgPSBTdHJpbmdJTy5TdHJpbmdJTyhkaWZmKS5yZWFkbGluZXMoKQorICAg
ICAgICBvdXRwdXQgPSBbXQorICAgICAgICBza2lwcGluZyA9IEZhbHNlCisgICAgICAgIGZvciBs
aW5lIGluIGxpbmVzOgorICAgICAgICAgICAgaW5kZXhsaW5lID0gcmUubWF0Y2goIl5JbmRleDog
KFteXFxuXSovKT8oW14vXFxuXSopJCIsIGxpbmUpCisgICAgICAgICAgICBpZiBza2lwcGluZyBh
bmQgaW5kZXhsaW5lOgorICAgICAgICAgICAgICAgIHNraXBwaW5nID0gRmFsc2UKKyAgICAgICAg
ICAgIGlmIGluZGV4bGluZSBhbmQgaW5kZXhsaW5lLmdyb3VwKDIpID09ICJDaGFuZ2VMb2ciOgor
ICAgICAgICAgICAgICAgIHNraXBwaW5nID0gVHJ1ZQorICAgICAgICAgICAgaWYgbm90IHNraXBw
aW5nOgorICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQobGluZSkKKyAgICAgICAgcmV0dXJu
ICIiLmpvaW4ob3V0cHV0KQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBkaWZmX2RpZmYo
ZGlmZjEsIGRpZmYyLCBkaWZmMV9zdWZmaXgsIGRpZmYyX3N1ZmZpeCwgZXhlY3V0aXZlPU5vbmUp
OgorICAgICAgICAjIE5vdyB0aGlzIGlzIHRoZXJlIGl0IGdldHMgY29tcGxpY2F0ZWQsIHdlIG5l
ZWQgdG8gY29tcGFyZSBvdXIgZGlmZiB0byB0aGUgZGlmZiBhdCBsYW5kZWRfcmV2aXNpb24uCisg
ICAgICAgIGRpZmYxX3BhdGNoID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKHN1ZmZpeD1k
aWZmMV9zdWZmaXggKyAnLnBhdGNoJykKKyAgICAgICAgZGlmZjFfcGF0Y2gud3JpdGUoZGlmZjEp
CisgICAgICAgIGRpZmYxX3BhdGNoLmZsdXNoKCkKKworICAgICAgICAjIENoZWNrIGlmIHRoZXJl
IGFyZSBhbnkgZGlmZmVyZW5jZXMgaW4gdGhlIHBhdGNoIHRoYXQgZG9uJ3QgaGFwcGVuCisgICAg
ICAgIGRpZmYyX3BhdGNoID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKHN1ZmZpeD1kaWZm
Ml9zdWZmaXggKyAnLnBhdGNoJykKKyAgICAgICAgZGlmZjJfcGF0Y2gud3JpdGUoZGlmZjIpCisg
ICAgICAgIGRpZmYyX3BhdGNoLmZsdXNoKCkKKworICAgICAgICAjIERpZmYgdGhlIHR3byBkaWZm
J3MgdG9nZXRoZXIuLi4KKyAgICAgICAgaWYgbm90IGV4ZWN1dGl2ZToKKyAgICAgICAgICAgIGV4
ZWN1dGl2ZSA9IEV4ZWN1dGl2ZSgpCisKKyAgICAgICAgcmV0dXJuIGV4ZWN1dGl2ZS5ydW5fY29t
bWFuZCgKKyAgICAgICAgICAgIFsiaW50ZXJkaWZmIiwgZGlmZjFfcGF0Y2gubmFtZSwgZGlmZjJf
cGF0Y2gubmFtZV0sIGRlY29kZV9vdXRwdXQ9RmFsc2UpCisKKyAgICBkZWYgcnVuKHNlbGYsIHN0
YXRlKToKKyAgICAgICAgIyBDaGVjayBpZiB0aGVyZSBhcmUgY2hhbmdlcyBmaXJzdAorICAgICAg
ICBpZiBub3Qgc2VsZi5fdG9vbC5zY20oKS5sb2NhbF9jaGFuZ2VzX2V4aXN0KCk6CisgICAgICAg
ICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgYSBTVk4gcmV2
aXNpb24gaW4gdGhlIGJ1ZyBmcm9tIHRoZSBjb21taXQgcXVldWUKKyAgICAgICAgbGFuZGVkX3Jl
dmlzaW9uID0gc2VsZi5jYWNoZWRfbG9va3VwKHN0YXRlLCAiYnVnIikuY29tbWl0X3JldmlzaW9u
KCkKKyAgICAgICAgaWYgbm90IGxhbmRlZF9yZXZpc2lvbjoKKyAgICAgICAgICAgIHJhaXNlIFNj
cmlwdEVycm9yKCJVbmFibGUgdG8gZmluZCBsYW5kZWQgbWVzc2FnZSBpbiBhc3NvY2lhdGVkIGJ1
Zy4iKQorCisgICAgICAgICMgTm93IHRoaXMgaXMgdGhlcmUgaXQgZ2V0cyBjb21wbGljYXRlZCwg
d2UgbmVlZCB0byBjb21wYXJlIG91ciBkaWZmIHRvIHRoZSBkaWZmIGF0IGxhbmRlZF9yZXZpc2lv
bi4KKyAgICAgICAgbGFuZGVkX2RpZmZfYmluID0gc2VsZi5fdG9vbC5zY20oKS5kaWZmX2Zvcl9y
ZXZpc2lvbihsYW5kZWRfcmV2aXNpb24pCisgICAgICAgIGxhbmRlZF9kaWZmX3RyaW1tZWQgPSBz
ZWxmLnN0cmlwX2NoYW5nZV9sb2coc2VsZi5jb252ZXJ0X3RvX3N2bihsYW5kZWRfZGlmZl9iaW4p
KQorCisgICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBkaWZmZXJlbmNlcyBpbiB0aGUg
cGF0Y2ggdGhhdCBkb24ndCBoYXBwZW4KKyAgICAgICAgbG9jYWxfZGlmZl9iaW4gPSBzZWxmLl90
b29sLnNjbSgpLmNyZWF0ZV9wYXRjaCgpCisgICAgICAgIGxvY2FsX2RpZmZfdHJpbW1lZCA9IHNl
bGYuc3RyaXBfY2hhbmdlX2xvZyhzZWxmLmNvbnZlcnRfdG9fc3ZuKGxvY2FsX2RpZmZfYmluKSkK
KworICAgICAgICAjIERpZmYgdGhlIHR3byBkaWZmJ3MgdG9nZXRoZXIuLi4KKyAgICAgICAgZGlm
Zl9kaWZmID0gc2VsZi5kaWZmX2RpZmYobGFuZGVkX2RpZmZfdHJpbW1lZCwgbG9jYWxfZGlmZl90
cmltbWVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWxhbmRlZCcsICct
bG9jYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRpdmU9c2Vs
Zi5fdG9vbC5leGVjdXRpdmUpCisKKyAgICAgICAgcHJldHR5X2RpZmZfZmlsZSA9IHNlbGYuX3No
b3dfcHJldHR5X2RpZmYoZGlmZl9kaWZmKQorICAgICAgICBpZiBub3QgcHJldHR5X2RpZmZfZmls
ZToKKyAgICAgICAgICAgIHNlbGYuX3Rvb2wudXNlci5wYWdlKGRpZmZfZGlmZikKKyAgICAgICAg
ZGlmZl9jb3JyZWN0ID0gc2VsZi5fdG9vbC51c2VyLmNvbmZpcm0oIkNhbiBJIGRpc2NhcmQgbG9j
YWwgY2hhbmdlcz8iKQorICAgICAgICBpZiBwcmV0dHlfZGlmZl9maWxlOgorICAgICAgICAgICAg
cHJldHR5X2RpZmZfZmlsZS5jbG9zZSgpCisgICAgICAgIGlmIG5vdCBkaWZmX2NvcnJlY3Q6Cisg
ICAgICAgICAgICBzZWxmLl9leGl0KDEpCisKKyAgICAgICAgc2VsZi5fdG9vbC5zY20oKS5kaXNj
YXJkX2xvY2FsX2NoYW5nZXMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL2hhc2xhbmRlZF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy9oYXNsYW5kZWRfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQxZTM2ZDhjYzA5
Mzc3YTkwYTMwNmYwOGE5YjhlNjY4ZmNjZGE3NAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9oYXNsYW5kZWRfdW5pdHRlc3QucHkKQEAgLTAsMCAr
MSwyOTcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdW5pdHRlc3QyIGFzIHVuaXR0ZXN0CisK
K2Zyb20gd2Via2l0cHkudG9vbC5zdGVwcy5oYXNsYW5kZWQgaW1wb3J0IEhhc0xhbmRlZAorCisK
K2NsYXNzIEhhc0xhbmRlZFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1heERpZmYgPSBO
b25lCisKKyAgICBkZWYgdGVzdF9ydW4oc2VsZik6CisgICAgICAgICMgVGhlc2UgcGF0Y2hlcyBy
ZXF1aXJlIHRyYWlsaW5nIHdoaXRlc3BhY2UgdG8gcmVtYWluIHZhbGlkIHBhdGNoZXMuCisgICAg
ICAgIGRpZmYxID0gIiIiXAorSW5kZXg6IGEucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhLnB5CisrKysg
YS5weQorQEAgLTEsMyArMSw1IEBACisgQQorIEIKKyBDCisrRAorK0UKK0luZGV4OiBiLnB5Cis9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CistLS0gYi5weSAgICAgIDIwMTMtMDEtMjEgMTU6MjA6NTkuNjkzODg3MTg1ICsx
MTAwCisrKysgYi5weSAgICAgIDIwMTMtMDEtMjEgMTU6MjI6MjQuMzgyNTU1NzExICsxMTAwCitA
QCAtMSwzICsxLDUgQEAKKyAxCisgMgorIDMKKys0CisrNQorIiIiCisKKyAgICAgICAgZGlmZjFf
YWRkX2xpbmUgPSAiIiJcCitJbmRleDogYS5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGEucHkKKysrKyBh
LnB5CitAQCAtMSwzICsxLDYgQEAKKyBBCisgQgorIEMKKytECisrRQorK0YKK0luZGV4OiBiLnB5
Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CistLS0gYi5weQorKysrIGIucHkKK0BAIC0xLDMgKzEsNSBAQAorIDEKKyAy
CisgMworKzQKKys1CisiIiIKKworICAgICAgICBkaWZmMV9yZW1vdmVfbGluZSA9ICIiIlwKK0lu
ZGV4OiBhLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09CistLS0gYS5weQorKysrIGEucHkKK0BAIC0xLDMgKzEsNCBA
QAorIEEKKyBCCisgQworK0QKK0luZGV4OiBiLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYi5weQorKysr
IGIucHkKK0BAIC0xLDMgKzEsNSBAQAorIDEKKyAyCisgMworKzQKKys1CisiIiIKKworICAgICAg
ICBkaWZmMV9hZGRfZmlsZSA9IGRpZmYxICsgIiIiXAorSW5kZXg6IGMucHkKKz09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
Ky0tLSBjLnB5CisrKysgYy5weQorQEAgLTEsMyArMSw1IEBACisgMQorIDIKKyAzCisrNAorKzUK
KyIiIgorCisgICAgICAgIGRpZmYxX3JlbW92ZV9maWxlID0gIiIiXAorSW5kZXg6IGEucHkKKz09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KKy0tLSBhLnB5CisrKysgYS5weQorQEAgLTEsMyArMSw1IEBACisgQQorIEIKKyBD
CisrRAorK0UKKyIiIgorICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKAorICAgICAg
ICAgICAgSGFzTGFuZGVkLmRpZmZfZGlmZihkaWZmMSwgZGlmZjFfYWRkX2xpbmUsICcnLCAnYWRk
LWxpbmUnKSwKKyAgICAgICAgICAgICIiIlwKK2RpZmYgLXUgYS5weSBhLnB5CistLS0gYS5weQor
KysrIGEucHkKK0BAIC01LDAgKzYgQEAKKytGCisiIiIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRN
dWx0aUxpbmVFcXVhbCgKKyAgICAgICAgICAgIEhhc0xhbmRlZC5kaWZmX2RpZmYoZGlmZjEsIGRp
ZmYxX3JlbW92ZV9saW5lLCAnJywgJ3JlbW92ZS1saW5lJyksCisgICAgICAgICAgICAiIiJcCitk
aWZmIC11IGEucHkgYS5weQorLS0tIGEucHkKKysrKyBhLnB5CitAQCAtNSArNCwwIEBACistRQor
IiIiKQorICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKAorICAgICAgICAgICAgSGFz
TGFuZGVkLmRpZmZfZGlmZihkaWZmMSwgZGlmZjFfYWRkX2ZpbGUsICcnLCAnYWRkLWZpbGUnKSwK
KyAgICAgICAgICAgICIiIlwKK29ubHkgaW4gcGF0Y2gyOgordW5jaGFuZ2VkOgorLS0tIGMucHkK
KysrKyBjLnB5CitAQCAtMSwzICsxLDUgQEAKKyAxCisgMgorIDMKKys0CisrNQorIiIiKQorICAg
ICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKAorICAgICAgICAgICAgSGFzTGFuZGVkLmRp
ZmZfZGlmZihkaWZmMSwgZGlmZjFfcmVtb3ZlX2ZpbGUsICcnLCAncmVtb3ZlLWZpbGUnKSwKKyAg
ICAgICAgICAgICIiIlwKK3JldmVydGVkOgorLS0tIGIucHkgICAgICAyMDEzLTAxLTIxIDE1OjIy
OjI0LjM4MjU1NTcxMSArMTEwMAorKysrIGIucHkgICAgICAyMDEzLTAxLTIxIDE1OjIwOjU5LjY5
Mzg4NzE4NSArMTEwMAorQEAgLTEsNSArMSwzIEBACisgMQorIDIKKyAzCistNAorLTUKKyIiIikK
KworICAgIGRlZiB0ZXN0X2NvbnZlcnRfdG9fc3ZuX2FuZF9zdHJpcF9jaGFuZ2VfbG9nKHNlbGYp
OgorICAgICAgICAjIFRoZXNlIHBhdGNoZXMgcmVxdWlyZSB0cmFpbGluZyB3aGl0ZXNwYWNlIHRv
IHJlbWFpbiB2YWxpZCBwYXRjaGVzLgorICAgICAgICB0ZXN0YmVmb3JlMSA9IEhhc0xhbmRlZC5j
b252ZXJ0X3RvX3N2bigiIiJcCitkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCitpbmRleCAyMTliYTcyLi4wMzkwYjczIDEwMDY0NAorLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKysgYi9Ub29scy9DaGFuZ2VMb2cKK0BAIC0xLDMgKzEsMzIgQEAKKysyMDEzLTAx
LTE3ICBUaW0gJ21pdGhybycgQW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+CisrCisrICAgICAg
ICBBZGRpbmcgImhhcy1sYW5kZWQiIGNvbW1hbmQgdG8gd2Via2l0LXBhdGNoIHdoaWNoIGFsbG93
cyBhIHBlcnNvbiB0bworKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisrCisg
MjAxMy0wMS0yMCAgVGltICdtaXRocm8nIEFuc2VsbCAgPG1pdGhyb0BtaXRoaXMuY29tPgorIAor
ICAgICAgICAgRXh0ZW5kIGRpZmZfcGFyc2VyIHRvIHN1cHBvcnQgdGhlIC0tZnVsbC1pbmRleCBv
dXRwdXQuCitkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1
Z3ppbGxhL2J1Zy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxs
YS9idWcucHkKK2luZGV4IDRiZjhlYzYuLjNhMTI4Y2IgMTAwNjQ0CistLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5CisrKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5CitAQCAtMjgsNiArMjgsOCBA
QAorK2ltcG9ydCByZQorKworIGZyb20gLmF0dGFjaG1lbnQgaW1wb3J0IEF0dGFjaG1lbnQKKyAK
KyIiIikKKyAgICAgICAgdGVzdGFmdGVyMSA9IEhhc0xhbmRlZC5jb252ZXJ0X3RvX3N2bigiIiJc
CitkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxh
L2J1Zy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWcu
cHkKK2luZGV4IDRiZjhlYzYuLjNhMTI4Y2IgMTAwNjQ0CistLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5CisrKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5CitAQCAtMjgsNiArMjgsOCBAQAorK2lt
cG9ydCByZQorKworIGZyb20gLmF0dGFjaG1lbnQgaW1wb3J0IEF0dGFjaG1lbnQKKyAKK2RpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKK2luZGV4IDIxOWJhNzIu
LjAzOTBiNzMgMTAwNjQ0CistLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrKyBiL1Rvb2xzL0NoYW5n
ZUxvZworQEAgLTEsMyArMSwzMiBAQAorKzIwMTMtMDEtMTcgIFRpbSAnbWl0aHJvJyBBbnNlbGwg
IDxtaXRocm9AbWl0aGlzLmNvbT4KKysKKysgICAgICAgIEFkZGluZyAiaGFzLWxhbmRlZCIgY29t
bWFuZCB0byB3ZWJraXQtcGF0Y2ggd2hpY2ggYWxsb3dzIGEgcGVyc29uIHRvCisrICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKysKKyAyMDEzLTAxLTIwICBUaW0gJ21pdGhybycg
QW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+CisgCisgICAgICAgICBFeHRlbmQgZGlmZl9wYXJz
ZXIgdG8gc3VwcG9ydCB0aGUgLS1mdWxsLWluZGV4IG91dHB1dC4KKyIiIikKKyAgICAgICAgdGVz
dGV4cGVjdGVkMSA9ICIiIlwKK0luZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvYnVnemlsbGEvYnVnLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Zy5weQorKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9idWd6aWxsYS9idWcucHkKK0BAIC0yOCw2ICsyOCw4IEBACisraW1wb3J0IHJl
CisrCisgZnJvbSAuYXR0YWNobWVudCBpbXBvcnQgQXR0YWNobWVudAorIAorIiIiCisgICAgICAg
IHRlc3RtaWRkbGUxID0gSGFzTGFuZGVkLmNvbnZlcnRfdG9fc3ZuKCIiIlwKK2RpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Zy5weQoraW5kZXggNGJm
OGVjNi4uM2ExMjhjYiAxMDA2NDQKKy0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9idWd6aWxsYS9idWcucHkKKysrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9idWd6aWxsYS9idWcucHkKK0BAIC0yOCw2ICsyOCw4IEBACisraW1wb3J0IHJlCisrCisg
ZnJvbSAuYXR0YWNobWVudCBpbXBvcnQgQXR0YWNobWVudAorIAorZGlmZiAtLWdpdCBhL0NoYW5n
ZUxvZyBiL0NoYW5nZUxvZworaW5kZXggMjE5YmE3Mi4uMDM5MGI3MyAxMDA2NDQKKy0tLSBhL0No
YW5nZUxvZworKysrIGIvQ2hhbmdlTG9nCitAQCAtMSwzICsxLDMyIEBACisrMjAxMy0wMS0xNyAg
VGltICdtaXRocm8nIEFuc2VsbCAgPG1pdGhyb0BtaXRoaXMuY29tPgorKworKyAgICAgICAgQWRk
aW5nICJoYXMtbGFuZGVkIiBjb21tYW5kIHRvIHdlYmtpdC1wYXRjaCB3aGljaCBhbGxvd3MgYSBw
ZXJzb24gdG8KKysgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorKworIDIwMTMt
MDEtMjAgIFRpbSAnbWl0aHJvJyBBbnNlbGwgIDxtaXRocm9AbWl0aGlzLmNvbT4KKyAKKyAgICAg
ICAgIEV4dGVuZCBkaWZmX3BhcnNlciB0byBzdXBwb3J0IHRoZSAtLWZ1bGwtaW5kZXggb3V0cHV0
LgorZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL290aGVyLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vb3RoZXIucHkKK2luZGV4IDRiZjhlYzYuLjNh
MTI4Y2IgMTAwNjQ0CistLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9vdGhlci5w
eQorKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vb3RoZXIucHkKK0BAIC0yOCw2
ICsyOCw4IEBACisraW1wb3J0IHJlCisrCisgZnJvbSAuYXR0YWNobWVudCBpbXBvcnQgQXR0YWNo
bWVudAorIAorIiIiKQorICAgICAgICB0ZXN0ZXhwZWN0ZWQyID0gIiIiXAorSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWcucHkKKz09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
Ky0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5Cisr
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Zy5weQorQEAg
LTI4LDYgKzI4LDggQEAKKytpbXBvcnQgcmUKKysKKyBmcm9tIC5hdHRhY2htZW50IGltcG9ydCBB
dHRhY2htZW50CisgCitJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vb3RoZXIu
cHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KKy0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9vdGhlci5w
eQorKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL290aGVyLnB5CitAQCAtMjgsNiAr
MjgsOCBAQAorK2ltcG9ydCByZQorKworIGZyb20gLmF0dGFjaG1lbnQgaW1wb3J0IEF0dGFjaG1l
bnQKKyAKKyIiIgorCisgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwodGVzdGV4cGVj
dGVkMSwgSGFzTGFuZGVkLnN0cmlwX2NoYW5nZV9sb2codGVzdGJlZm9yZTEpKQorICAgICAgICBz
ZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKHRlc3RleHBlY3RlZDEsIEhhc0xhbmRlZC5zdHJpcF9j
aGFuZ2VfbG9nKHRlc3RhZnRlcjEpKQorICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFs
KHRlc3RleHBlY3RlZDIsIEhhc0xhbmRlZC5zdHJpcF9jaGFuZ2VfbG9nKHRlc3RtaWRkbGUxKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183727</attachid>
            <date>2013-01-21 00:57:50 -0800</date>
            <delta_ts>2013-01-21 18:47:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106402-20130121195445.patch</filename>
            <type>text/plain</type>
            <size>20406</size>
            <attacher name="Tim &apos;mithro&apos; Ansell">mithro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMzEwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2Q5Mjg3OTliY2FjOTBjMDNkZDU3NzRkOGQwM2I4Nzcz
YmJiM2YxMC4uMWEzNzZiNzNlZGMwZjlhZTRkY2E4OTgzN2RlOTBhMDY1ZTMyNDQwMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMw
IEBACisyMDEzLTAxLTE3ICBUaW0gJ21pdGhybycgQW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+
CisKKyAgICAgICAgQWRkaW5nICJoYXMtbGFuZGVkIiBjb21tYW5kIHRvIHdlYmtpdC1wYXRjaCB3
aGljaCBjb21wYXJlcyB0aGUgZmluYWxseQorICAgICAgICBjb21taXR0ZWQgcGF0Y2ggdG8gdGhl
IGNoYW5nZXMgd2hpY2ggZXhpc3QgbG9jYWxseSAoaWdub3JpbmcgdGhlCisgICAgICAgIENoYW5n
ZUxvZyBmaWxlKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA2NDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9kaWZmX3BhcnNlci5weToK
KyAgICAgICAgKGdpdF9kaWZmX3RvX3N2bl9kaWZmKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5OgorICAgICAgICAoQnVnLmNvbW1pdF9yZXZp
c2lvbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1
Z191bml0dGVzdC5weToKKyAgICAgICAgKEJ1Z1Rlc3QudGVzdF9pc19pbl9jb21tZW50cyk6Cisg
ICAgICAgIChCdWdUZXN0KToKKyAgICAgICAgKEJ1Z1Rlc3QudGVzdF9jb21taXRfcmV2aXNpb24p
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHk6Cisg
ICAgICAgIChIYXNMYW5kZWQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9fX2luaXRfXy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvaGFz
bGFuZGVkLnB5OiBBZGRlZC4KKyAgICAgICAgKEhhc0xhbmRlZCk6CisgICAgICAgIChIYXNMYW5k
ZWQuY29udmVydF90b19zdm4pOgorICAgICAgICAoSGFzTGFuZGVkLnN0cmlwX2NoYW5nZV9sb2cp
OgorICAgICAgICAocnVuKToKKwogMjAxMy0wMS0yMSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21t
eXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IFVwZGF0ZSB0aGUgUlRD
UGVlckNvbm5lY3Rpb24gc3RhdGVzIHRvIG1hdGNoIHRoZSBsYXRlc3Qgc3BlY2lmaWNhdGlvbgpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1
Zy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWcucHkK
aW5kZXggNGJmOGVjNjFlMWNiYjUwMGE4Yzk0ZjNjZTkxNmNkMmU0N2ViNTA1ZC4uM2ExMjhjYmFi
OTdjNGRhNjgzMjgzODA0ZDM5OGI0NDQ2MWQyMmMxMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Zy5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5CkBAIC0yOCw2ICsyOCw4IEBACiAj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCitpbXBvcnQgcmUKKwogZnJvbSAuYXR0YWNo
bWVudCBpbXBvcnQgQXR0YWNobWVudAogCiAKQEAgLTEyMywzICsxMjUsMTMgQEAgY2xhc3MgQnVn
KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIEZh
bHNlCiAKKyAgICBkZWYgY29tbWl0X3JldmlzaW9uKHNlbGYpOgorICAgICAgICAjIFNvcnQgdGhl
IGNvbW1lbnRzIGluIHJldmVyc2Ugb3JkZXIgYXMgd2Ugd2FudCB0aGUgbGF0ZXN0IGNvbW1pdHRl
ZCByZXZpc2lvbi4KKyAgICAgICAgciA9IHJlLmNvbXBpbGUoIkNvbW1pdHRlZCByKD9QPHN2bl9y
ZXZpc2lvbj5cZCspIikKKyAgICAgICAgZm9yIGNvbW1lbnQgaW4gc29ydGVkKHNlbGYuY29tbWVu
dHMoKSwgcmV2ZXJzZT1UcnVlKToKKyAgICAgICAgICAgIHJldiA9IHIuc2VhcmNoKGNvbW1lbnRb
J3RleHQnXSkKKyAgICAgICAgICAgIGlmIHJldjoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50
KHJldi5ncm91cCgnc3ZuX3JldmlzaW9uJykpCisKKyAgICAgICAgIyBJZiB3ZSBkb24ndCBmaW5k
IGEgcmV2aXNpb24sIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnX3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z191bml0
dGVzdC5weQppbmRleCBmMjBjNjAxMGM4Mzc2MmZkYzU4OWMzOWM4OWJkYzY4YmFmMmY0YjY0Li42
OGMwMDIxODE3MmRkZWQwMWYyMmM2ZGI5NmMzODQ5NDA0Y2I0NTNmIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnX3VuaXR0ZXN0LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWdfdW5pdHRl
c3QucHkKQEAgLTQ1LDMgKzQ1LDM5IEBAIGNsYXNzIEJ1Z1Rlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgICAgICAgICAgICAgICAgYnVnemlsbGE9Tm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGJ1Zy5pc19pbl9jb21tZW50cygiTWVzc2FnZTMuIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UoYnVnLmlzX2luX2NvbW1lbnRzKCJNZXNzYWdlLiIpKQorCisgICAgZGVmIHRlc3RfY29t
bWl0X3JldmlzaW9uKHNlbGYpOgorICAgICAgICBidWcgPSBCdWcoeyJjb21tZW50cyI6IFtdfSwg
YnVnemlsbGE9Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWcuY29tbWl0X3Jldmlz
aW9uKCksIE5vbmUpCisKKyAgICAgICAgYnVnID0gQnVnKHsiY29tbWVudHMiOiBbCisgICAgICAg
ICAgICB7InRleHQiOiAiQ29tbWVudCAxIn0sCisgICAgICAgICAgICB7InRleHQiOiAiQ29tbWVu
dCAyIn0sCisgICAgICAgICAgICBdfSwgYnVnemlsbGE9Tm9uZSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChidWcuY29tbWl0X3JldmlzaW9uKCksIE5vbmUpCisKKyAgICAgICAgYnVnID0gQnVn
KHsiY29tbWVudHMiOiBbCisgICAgICAgICAgICB7InRleHQiOiAiQ29tbWl0dGVkIHIxMzg3NzY6
IDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMzg3NzY+In0sCisgICAgICAgICAg
ICBdfSwgYnVnemlsbGE9Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWcuY29tbWl0
X3JldmlzaW9uKCksIDEzODc3NikKKworICAgICAgICBidWcgPSBCdWcoeyJjb21tZW50cyI6IFsK
KyAgICAgICAgICAgIHsidGV4dCI6ICIoRnJvbSB1cGRhdGUgb2YgYXR0YWNobWVudCAxODEyNjkp
IENsZWFyaW5nIGZsYWdzIG9uIGF0dGFjaG1lbnQ6IDE4MTI2OSBDb21taXR0ZWQgcjEzODc3Njog
PGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEzODc3Nj4ifSwKKyAgICAgICAgICAg
IF19LCBidWd6aWxsYT1Ob25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zy5jb21taXRf
cmV2aXNpb24oKSwgMTM4Nzc2KQorCisgICAgICAgIGJ1ZyA9IEJ1Zyh7ImNvbW1lbnRzIjogWwor
ICAgICAgICAgICAgeyJ0ZXh0IjogIkNvbW1lbnQgYmVmb3JlIn0sCisgICAgICAgICAgICB7InRl
eHQiOiAiKEZyb20gdXBkYXRlIG9mIGF0dGFjaG1lbnQgMTgxMjY5KSBDbGVhcmluZyBmbGFncyBv
biBhdHRhY2htZW50OiAxODEyNjkgQ29tbWl0dGVkIHIxMzg3NzY6IDxodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8xMzg3NzY+In0sCisgICAgICAgICAgICB7InRleHQiOiAiQ29tbWVu
dCBhZnRlciJ9LAorICAgICAgICAgICAgXX0sIGJ1Z3ppbGxhPU5vbmUpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoYnVnLmNvbW1pdF9yZXZpc2lvbigpLCAxMzg3NzYpCisKKyAgICAgICAgYnVn
ID0gQnVnKHsiY29tbWVudHMiOiBbCisgICAgICAgICAgICB7InRleHQiOiAiQ29tbWVudCBiZWZv
cmUifSwKKyAgICAgICAgICAgIHsidGV4dCI6ICIoRnJvbSB1cGRhdGUgb2YgYXR0YWNobWVudCAx
ODEyNjkpIENsZWFyaW5nIGZsYWdzIG9uIGF0dGFjaG1lbnQ6IDE4MTI2OSBDb21taXR0ZWQgcjEz
ODc3NjogPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEzODc3Nj4ifSwKKyAgICAg
ICAgICAgIHsidGV4dCI6ICJDb21tZW50IE1pZGRsZSJ9LAorICAgICAgICAgICAgeyJ0ZXh0Ijog
IihGcm9tIHVwZGF0ZSBvZiBhdHRhY2htZW50IDE4MTI4MCkgQ2xlYXJpbmcgZmxhZ3Mgb24gYXR0
YWNobWVudDogMTgxMjgwIENvbW1pdHRlZCByMTM4OTc2OiA8aHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMTM4OTc2PiJ9LAorICAgICAgICAgICAgeyJ0ZXh0IjogIkNvbW1lbnQgQWZ0
ZXIifSwKKyAgICAgICAgICAgIF19LCBidWd6aWxsYT1Ob25lKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ1Zy5jb21taXRfcmV2aXNpb24oKSwgMTM4OTc2KQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkKaW5kZXggNDMwMzRlOWI2YjY3YzM0YzYw
Njk1MzY2YWI2MGFiZTQ2YjA5ZWM3MS4uZDNmYWE3OGIzYzhmNTBmODYyZDU5NTA1NTM2ZTExODVj
NmRmNjYzMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L3VwbG9hZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBs
b2FkLnB5CkBAIC0yNDEsNiArMjQxLDE1IEBAIGNsYXNzIExhbmRTYWZlbHkoQWJzdHJhY3RQYXRj
aFVwbG9hZGluZ0NvbW1hbmQpOgogICAgIF0KIAogCitjbGFzcyBIYXNMYW5kZWQoQWJzdHJhY3RQ
YXRjaFVwbG9hZGluZ0NvbW1hbmQpOgorICAgIG5hbWUgPSAiaGFzLWxhbmRlZCIKKyAgICBoZWxw
X3RleHQgPSAiQ2hlY2sgdGhhdCB0aGUgY3VycmVudCBjb2RlIHdhcyBzdWNjZXNzZnVsbHkgbGFu
ZGVkIGFuZCBubyBjaGFuZ2VzIHJlbWFpbi4iCisgICAgYXJndW1lbnRfbmFtZXMgPSAiW0JVR0lE
XSIKKyAgICBzdGVwcyA9IFsKKyAgICAgICAgc3RlcHMuSGFzTGFuZGVkLAorICAgIF0KKworCiBj
bGFzcyBQcmVwYXJlKEFic3RyYWN0U2VxdWVuY2VkQ29tbWFuZCk6CiAgICAgbmFtZSA9ICJwcmVw
YXJlIgogICAgIGhlbHBfdGV4dCA9ICJDcmVhdGVzIGEgYnVnIChvciBwcm9tcHRzIGZvciBhbiBl
eGlzdGluZyBidWcpIGFuZCBwcmVwYXJlcyB0aGUgQ2hhbmdlTG9ncyIKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9fX2luaXRfXy5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy9fX2luaXRfXy5weQppbmRleCA1MDIzMTlmN2JkYTBmMDFm
ZjlkNzQ5NGEyMDBkODYyOTRhZjBlMzk0Li43MDlkZTViMTI0NjBjOWUxNTEwMjIzZjFkN2E0ZDdj
ZGM4YmVhMzg1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
X19pbml0X18ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19faW5p
dF9fLnB5CkBAIC00NSw2ICs0NSw3IEBAIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5kaXNjYXJk
bG9jYWxjaGFuZ2VzIGltcG9ydCBEaXNjYXJkTG9jYWxDaGFuZ2VzCiBmcm9tIHdlYmtpdHB5LnRv
b2wuc3RlcHMuZWRpdGNoYW5nZWxvZyBpbXBvcnQgRWRpdENoYW5nZUxvZwogZnJvbSB3ZWJraXRw
eS50b29sLnN0ZXBzLmVuc3VyZWJ1Z2lzb3BlbmFuZGFzc2lnbmVkIGltcG9ydCBFbnN1cmVCdWdJ
c09wZW5BbmRBc3NpZ25lZAogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmVuc3VyZWxvY2FsY29t
bWl0aWZuZWVkZWQgaW1wb3J0IEVuc3VyZUxvY2FsQ29tbWl0SWZOZWVkZWQKK2Zyb20gd2Via2l0
cHkudG9vbC5zdGVwcy5oYXNsYW5kZWQgaW1wb3J0IEhhc0xhbmRlZAogZnJvbSB3ZWJraXRweS50
b29sLnN0ZXBzLm9ic29sZXRlcGF0Y2hlcyBpbXBvcnQgT2Jzb2xldGVQYXRjaGVzCiBmcm9tIHdl
YmtpdHB5LnRvb2wuc3RlcHMub3B0aW9ucyBpbXBvcnQgT3B0aW9ucwogZnJvbSB3ZWJraXRweS50
b29sLnN0ZXBzLnBvc3RkaWZmIGltcG9ydCBQb3N0RGlmZgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2hhc2xhbmRlZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy9oYXNsYW5kZWQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE4YjgyMTYzMjU3Njky
NzI0YjlkMThjM2FlYWMyNDk3M2YzYjUwNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy9oYXNsYW5kZWQucHkKQEAgLTAsMCArMSwxMTggQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCitpbXBvcnQgY1N0cmluZ0lPIGFzIFN0cmluZ0lPCitpbXBvcnQgbG9n
Z2luZworaW1wb3J0IHN5cworaW1wb3J0IHJlCitpbXBvcnQgdGVtcGZpbGUKKworZnJvbSB3ZWJr
aXRweS50b29sLnN0ZXBzLmFic3RyYWN0c3RlcCBpbXBvcnQgQWJzdHJhY3RTdGVwCitmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVy
cm9yCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dCBpbXBvcnQgZGlmZl9wYXJzZXIKKwor
ZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzIGltcG9ydCBjb25maXJtZGlmZgorCitfbG9nID0gbG9n
Z2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKworY2xhc3MgSGFzTGFuZGVkKGNvbmZpcm1kaWZm
LkNvbmZpcm1EaWZmKToKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgY29udmVydF90b19z
dm4oZGlmZik6CisgICAgICAgIGxpbmVzID0gU3RyaW5nSU8uU3RyaW5nSU8oZGlmZikucmVhZGxp
bmVzKCkKKyAgICAgICAgY29udmVydCA9IGRpZmZfcGFyc2VyLmdldF9kaWZmX2NvbnZlcnRlcihs
aW5lc1swXSkKKyAgICAgICAgcmV0dXJuICIiLmpvaW4oY29udmVydCh4KSBmb3IgeCBpbiBsaW5l
cykKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgc3RyaXBfY2hhbmdlX2xvZyhkaWZmKToK
KyAgICAgICAgbGluZXMgPSBTdHJpbmdJTy5TdHJpbmdJTyhkaWZmKS5yZWFkbGluZXMoKQorICAg
ICAgICBvdXRwdXQgPSBbXQorICAgICAgICBza2lwcGluZyA9IEZhbHNlCisgICAgICAgIGZvciBs
aW5lIGluIGxpbmVzOgorICAgICAgICAgICAgaW5kZXhsaW5lID0gcmUubWF0Y2goIl5JbmRleDog
KFteXFxuXSovKT8oW14vXFxuXSopJCIsIGxpbmUpCisgICAgICAgICAgICBpZiBza2lwcGluZyBh
bmQgaW5kZXhsaW5lOgorICAgICAgICAgICAgICAgIHNraXBwaW5nID0gRmFsc2UKKyAgICAgICAg
ICAgIGlmIGluZGV4bGluZSBhbmQgaW5kZXhsaW5lLmdyb3VwKDIpID09ICJDaGFuZ2VMb2ciOgor
ICAgICAgICAgICAgICAgIHNraXBwaW5nID0gVHJ1ZQorICAgICAgICAgICAgaWYgbm90IHNraXBw
aW5nOgorICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQobGluZSkKKyAgICAgICAgcmV0dXJu
ICIiLmpvaW4ob3V0cHV0KQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBkaWZmX2RpZmYo
ZGlmZjEsIGRpZmYyLCBkaWZmMV9zdWZmaXgsIGRpZmYyX3N1ZmZpeCwgZXhlY3V0aXZlPU5vbmUp
OgorICAgICAgICAjIE5vdyB0aGlzIGlzIHRoZXJlIGl0IGdldHMgY29tcGxpY2F0ZWQsIHdlIG5l
ZWQgdG8gY29tcGFyZSBvdXIgZGlmZiB0byB0aGUgZGlmZiBhdCBsYW5kZWRfcmV2aXNpb24uCisg
ICAgICAgIGRpZmYxX3BhdGNoID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKHN1ZmZpeD1k
aWZmMV9zdWZmaXggKyAnLnBhdGNoJykKKyAgICAgICAgZGlmZjFfcGF0Y2gud3JpdGUoZGlmZjEp
CisgICAgICAgIGRpZmYxX3BhdGNoLmZsdXNoKCkKKworICAgICAgICAjIENoZWNrIGlmIHRoZXJl
IGFyZSBhbnkgZGlmZmVyZW5jZXMgaW4gdGhlIHBhdGNoIHRoYXQgZG9uJ3QgaGFwcGVuCisgICAg
ICAgIGRpZmYyX3BhdGNoID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKHN1ZmZpeD1kaWZm
Ml9zdWZmaXggKyAnLnBhdGNoJykKKyAgICAgICAgZGlmZjJfcGF0Y2gud3JpdGUoZGlmZjIpCisg
ICAgICAgIGRpZmYyX3BhdGNoLmZsdXNoKCkKKworICAgICAgICAjIERpZmYgdGhlIHR3byBkaWZm
J3MgdG9nZXRoZXIuLi4KKyAgICAgICAgaWYgbm90IGV4ZWN1dGl2ZToKKyAgICAgICAgICAgIGV4
ZWN1dGl2ZSA9IEV4ZWN1dGl2ZSgpCisKKyAgICAgICAgcmV0dXJuIGV4ZWN1dGl2ZS5ydW5fY29t
bWFuZCgKKyAgICAgICAgICAgIFsiaW50ZXJkaWZmIiwgZGlmZjFfcGF0Y2gubmFtZSwgZGlmZjJf
cGF0Y2gubmFtZV0sIGRlY29kZV9vdXRwdXQ9RmFsc2UpCisKKyAgICBkZWYgcnVuKHNlbGYsIHN0
YXRlKToKKyAgICAgICAgIyBDaGVjayBpZiB0aGVyZSBhcmUgY2hhbmdlcyBmaXJzdAorICAgICAg
ICBpZiBub3Qgc2VsZi5fdG9vbC5zY20oKS5sb2NhbF9jaGFuZ2VzX2V4aXN0KCk6CisgICAgICAg
ICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgYSBTVk4gcmV2
aXNpb24gaW4gdGhlIGJ1ZyBmcm9tIHRoZSBjb21taXQgcXVldWUKKyAgICAgICAgbGFuZGVkX3Jl
dmlzaW9uID0gc2VsZi5jYWNoZWRfbG9va3VwKHN0YXRlLCAiYnVnIikuY29tbWl0X3JldmlzaW9u
KCkKKyAgICAgICAgaWYgbm90IGxhbmRlZF9yZXZpc2lvbjoKKyAgICAgICAgICAgIHJhaXNlIFNj
cmlwdEVycm9yKCJVbmFibGUgdG8gZmluZCBsYW5kZWQgbWVzc2FnZSBpbiBhc3NvY2lhdGVkIGJ1
Zy4iKQorCisgICAgICAgICMgTm93IHRoaXMgaXMgdGhlcmUgaXQgZ2V0cyBjb21wbGljYXRlZCwg
d2UgbmVlZCB0byBjb21wYXJlIG91ciBkaWZmIHRvIHRoZSBkaWZmIGF0IGxhbmRlZF9yZXZpc2lv
bi4KKyAgICAgICAgbGFuZGVkX2RpZmZfYmluID0gc2VsZi5fdG9vbC5zY20oKS5kaWZmX2Zvcl9y
ZXZpc2lvbihsYW5kZWRfcmV2aXNpb24pCisgICAgICAgIGxhbmRlZF9kaWZmX3RyaW1tZWQgPSBz
ZWxmLnN0cmlwX2NoYW5nZV9sb2coc2VsZi5jb252ZXJ0X3RvX3N2bihsYW5kZWRfZGlmZl9iaW4p
KQorCisgICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBkaWZmZXJlbmNlcyBpbiB0aGUg
cGF0Y2ggdGhhdCBkb24ndCBoYXBwZW4KKyAgICAgICAgbG9jYWxfZGlmZl9iaW4gPSBzZWxmLl90
b29sLnNjbSgpLmNyZWF0ZV9wYXRjaCgpCisgICAgICAgIGxvY2FsX2RpZmZfdHJpbW1lZCA9IHNl
bGYuc3RyaXBfY2hhbmdlX2xvZyhzZWxmLmNvbnZlcnRfdG9fc3ZuKGxvY2FsX2RpZmZfYmluKSkK
KworICAgICAgICAjIERpZmYgdGhlIHR3byBkaWZmJ3MgdG9nZXRoZXIuLi4KKyAgICAgICAgZGlm
Zl9kaWZmID0gc2VsZi5kaWZmX2RpZmYobGFuZGVkX2RpZmZfdHJpbW1lZCwgbG9jYWxfZGlmZl90
cmltbWVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWxhbmRlZCcsICct
bG9jYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRpdmU9c2Vs
Zi5fdG9vbC5leGVjdXRpdmUpCisKKyAgICAgICAgcHJldHR5X2RpZmZfZmlsZSA9IHNlbGYuX3No
b3dfcHJldHR5X2RpZmYoZGlmZl9kaWZmKQorICAgICAgICBpZiBub3QgcHJldHR5X2RpZmZfZmls
ZToKKyAgICAgICAgICAgIHNlbGYuX3Rvb2wudXNlci5wYWdlKGRpZmZfZGlmZikKKyAgICAgICAg
ZGlmZl9jb3JyZWN0ID0gc2VsZi5fdG9vbC51c2VyLmNvbmZpcm0oIkNhbiBJIGRpc2NhcmQgbG9j
YWwgY2hhbmdlcz8iKQorICAgICAgICBpZiBwcmV0dHlfZGlmZl9maWxlOgorICAgICAgICAgICAg
cHJldHR5X2RpZmZfZmlsZS5jbG9zZSgpCisgICAgICAgIGlmIG5vdCBkaWZmX2NvcnJlY3Q6Cisg
ICAgICAgICAgICBzZWxmLl9leGl0KDEpCisKKyAgICAgICAgc2VsZi5fdG9vbC5zY20oKS5kaXNj
YXJkX2xvY2FsX2NoYW5nZXMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL2hhc2xhbmRlZF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy9oYXNsYW5kZWRfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQxZTM2ZDhjYzA5
Mzc3YTkwYTMwNmYwOGE5YjhlNjY4ZmNjZGE3NAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9oYXNsYW5kZWRfdW5pdHRlc3QucHkKQEAgLTAsMCAr
MSwyOTcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdW5pdHRlc3QyIGFzIHVuaXR0ZXN0CisK
K2Zyb20gd2Via2l0cHkudG9vbC5zdGVwcy5oYXNsYW5kZWQgaW1wb3J0IEhhc0xhbmRlZAorCisK
K2NsYXNzIEhhc0xhbmRlZFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1heERpZmYgPSBO
b25lCisKKyAgICBkZWYgdGVzdF9ydW4oc2VsZik6CisgICAgICAgICMgVGhlc2UgcGF0Y2hlcyBy
ZXF1aXJlIHRyYWlsaW5nIHdoaXRlc3BhY2UgdG8gcmVtYWluIHZhbGlkIHBhdGNoZXMuCisgICAg
ICAgIGRpZmYxID0gIiIiXAorSW5kZXg6IGEucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhLnB5CisrKysg
YS5weQorQEAgLTEsMyArMSw1IEBACisgQQorIEIKKyBDCisrRAorK0UKK0luZGV4OiBiLnB5Cis9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CistLS0gYi5weSAgICAgIDIwMTMtMDEtMjEgMTU6MjA6NTkuNjkzODg3MTg1ICsx
MTAwCisrKysgYi5weSAgICAgIDIwMTMtMDEtMjEgMTU6MjI6MjQuMzgyNTU1NzExICsxMTAwCitA
QCAtMSwzICsxLDUgQEAKKyAxCisgMgorIDMKKys0CisrNQorIiIiCisKKyAgICAgICAgZGlmZjFf
YWRkX2xpbmUgPSAiIiJcCitJbmRleDogYS5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGEucHkKKysrKyBh
LnB5CitAQCAtMSwzICsxLDYgQEAKKyBBCisgQgorIEMKKytECisrRQorK0YKK0luZGV4OiBiLnB5
Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CistLS0gYi5weQorKysrIGIucHkKK0BAIC0xLDMgKzEsNSBAQAorIDEKKyAy
CisgMworKzQKKys1CisiIiIKKworICAgICAgICBkaWZmMV9yZW1vdmVfbGluZSA9ICIiIlwKK0lu
ZGV4OiBhLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09CistLS0gYS5weQorKysrIGEucHkKK0BAIC0xLDMgKzEsNCBA
QAorIEEKKyBCCisgQworK0QKK0luZGV4OiBiLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYi5weQorKysr
IGIucHkKK0BAIC0xLDMgKzEsNSBAQAorIDEKKyAyCisgMworKzQKKys1CisiIiIKKworICAgICAg
ICBkaWZmMV9hZGRfZmlsZSA9IGRpZmYxICsgIiIiXAorSW5kZXg6IGMucHkKKz09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
Ky0tLSBjLnB5CisrKysgYy5weQorQEAgLTEsMyArMSw1IEBACisgMQorIDIKKyAzCisrNAorKzUK
KyIiIgorCisgICAgICAgIGRpZmYxX3JlbW92ZV9maWxlID0gIiIiXAorSW5kZXg6IGEucHkKKz09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KKy0tLSBhLnB5CisrKysgYS5weQorQEAgLTEsMyArMSw1IEBACisgQQorIEIKKyBD
CisrRAorK0UKKyIiIgorICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKAorICAgICAg
ICAgICAgSGFzTGFuZGVkLmRpZmZfZGlmZihkaWZmMSwgZGlmZjFfYWRkX2xpbmUsICcnLCAnYWRk
LWxpbmUnKSwKKyAgICAgICAgICAgICIiIlwKK2RpZmYgLXUgYS5weSBhLnB5CistLS0gYS5weQor
KysrIGEucHkKK0BAIC01LDAgKzYgQEAKKytGCisiIiIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRN
dWx0aUxpbmVFcXVhbCgKKyAgICAgICAgICAgIEhhc0xhbmRlZC5kaWZmX2RpZmYoZGlmZjEsIGRp
ZmYxX3JlbW92ZV9saW5lLCAnJywgJ3JlbW92ZS1saW5lJyksCisgICAgICAgICAgICAiIiJcCitk
aWZmIC11IGEucHkgYS5weQorLS0tIGEucHkKKysrKyBhLnB5CitAQCAtNSArNCwwIEBACistRQor
IiIiKQorICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKAorICAgICAgICAgICAgSGFz
TGFuZGVkLmRpZmZfZGlmZihkaWZmMSwgZGlmZjFfYWRkX2ZpbGUsICcnLCAnYWRkLWZpbGUnKSwK
KyAgICAgICAgICAgICIiIlwKK29ubHkgaW4gcGF0Y2gyOgordW5jaGFuZ2VkOgorLS0tIGMucHkK
KysrKyBjLnB5CitAQCAtMSwzICsxLDUgQEAKKyAxCisgMgorIDMKKys0CisrNQorIiIiKQorICAg
ICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKAorICAgICAgICAgICAgSGFzTGFuZGVkLmRp
ZmZfZGlmZihkaWZmMSwgZGlmZjFfcmVtb3ZlX2ZpbGUsICcnLCAncmVtb3ZlLWZpbGUnKSwKKyAg
ICAgICAgICAgICIiIlwKK3JldmVydGVkOgorLS0tIGIucHkgICAgICAyMDEzLTAxLTIxIDE1OjIy
OjI0LjM4MjU1NTcxMSArMTEwMAorKysrIGIucHkgICAgICAyMDEzLTAxLTIxIDE1OjIwOjU5LjY5
Mzg4NzE4NSArMTEwMAorQEAgLTEsNSArMSwzIEBACisgMQorIDIKKyAzCistNAorLTUKKyIiIikK
KworICAgIGRlZiB0ZXN0X2NvbnZlcnRfdG9fc3ZuX2FuZF9zdHJpcF9jaGFuZ2VfbG9nKHNlbGYp
OgorICAgICAgICAjIFRoZXNlIHBhdGNoZXMgcmVxdWlyZSB0cmFpbGluZyB3aGl0ZXNwYWNlIHRv
IHJlbWFpbiB2YWxpZCBwYXRjaGVzLgorICAgICAgICB0ZXN0YmVmb3JlMSA9IEhhc0xhbmRlZC5j
b252ZXJ0X3RvX3N2bigiIiJcCitkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCitpbmRleCAyMTliYTcyLi4wMzkwYjczIDEwMDY0NAorLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKysgYi9Ub29scy9DaGFuZ2VMb2cKK0BAIC0xLDMgKzEsMzIgQEAKKysyMDEzLTAx
LTE3ICBUaW0gJ21pdGhybycgQW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+CisrCisrICAgICAg
ICBBZGRpbmcgImhhcy1sYW5kZWQiIGNvbW1hbmQgdG8gd2Via2l0LXBhdGNoIHdoaWNoIGFsbG93
cyBhIHBlcnNvbiB0bworKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisrCisg
MjAxMy0wMS0yMCAgVGltICdtaXRocm8nIEFuc2VsbCAgPG1pdGhyb0BtaXRoaXMuY29tPgorIAor
ICAgICAgICAgRXh0ZW5kIGRpZmZfcGFyc2VyIHRvIHN1cHBvcnQgdGhlIC0tZnVsbC1pbmRleCBv
dXRwdXQuCitkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1
Z3ppbGxhL2J1Zy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxs
YS9idWcucHkKK2luZGV4IDRiZjhlYzYuLjNhMTI4Y2IgMTAwNjQ0CistLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5CisrKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5CitAQCAtMjgsNiArMjgsOCBA
QAorK2ltcG9ydCByZQorKworIGZyb20gLmF0dGFjaG1lbnQgaW1wb3J0IEF0dGFjaG1lbnQKKyAK
KyIiIikKKyAgICAgICAgdGVzdGFmdGVyMSA9IEhhc0xhbmRlZC5jb252ZXJ0X3RvX3N2bigiIiJc
CitkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxh
L2J1Zy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWcu
cHkKK2luZGV4IDRiZjhlYzYuLjNhMTI4Y2IgMTAwNjQ0CistLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5CisrKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5CitAQCAtMjgsNiArMjgsOCBAQAorK2lt
cG9ydCByZQorKworIGZyb20gLmF0dGFjaG1lbnQgaW1wb3J0IEF0dGFjaG1lbnQKKyAKK2RpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKK2luZGV4IDIxOWJhNzIu
LjAzOTBiNzMgMTAwNjQ0CistLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrKyBiL1Rvb2xzL0NoYW5n
ZUxvZworQEAgLTEsMyArMSwzMiBAQAorKzIwMTMtMDEtMTcgIFRpbSAnbWl0aHJvJyBBbnNlbGwg
IDxtaXRocm9AbWl0aGlzLmNvbT4KKysKKysgICAgICAgIEFkZGluZyAiaGFzLWxhbmRlZCIgY29t
bWFuZCB0byB3ZWJraXQtcGF0Y2ggd2hpY2ggYWxsb3dzIGEgcGVyc29uIHRvCisrICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKysKKyAyMDEzLTAxLTIwICBUaW0gJ21pdGhybycg
QW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+CisgCisgICAgICAgICBFeHRlbmQgZGlmZl9wYXJz
ZXIgdG8gc3VwcG9ydCB0aGUgLS1mdWxsLWluZGV4IG91dHB1dC4KKyIiIikKKyAgICAgICAgdGVz
dGV4cGVjdGVkMSA9ICIiIlwKK0luZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvYnVnemlsbGEvYnVnLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Zy5weQorKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9idWd6aWxsYS9idWcucHkKK0BAIC0yOCw2ICsyOCw4IEBACisraW1wb3J0IHJl
CisrCisgZnJvbSAuYXR0YWNobWVudCBpbXBvcnQgQXR0YWNobWVudAorIAorIiIiCisgICAgICAg
IHRlc3RtaWRkbGUxID0gSGFzTGFuZGVkLmNvbnZlcnRfdG9fc3ZuKCIiIlwKK2RpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Zy5weQoraW5kZXggNGJm
OGVjNi4uM2ExMjhjYiAxMDA2NDQKKy0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9idWd6aWxsYS9idWcucHkKKysrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9idWd6aWxsYS9idWcucHkKK0BAIC0yOCw2ICsyOCw4IEBACisraW1wb3J0IHJlCisrCisg
ZnJvbSAuYXR0YWNobWVudCBpbXBvcnQgQXR0YWNobWVudAorIAorZGlmZiAtLWdpdCBhL0NoYW5n
ZUxvZyBiL0NoYW5nZUxvZworaW5kZXggMjE5YmE3Mi4uMDM5MGI3MyAxMDA2NDQKKy0tLSBhL0No
YW5nZUxvZworKysrIGIvQ2hhbmdlTG9nCitAQCAtMSwzICsxLDMyIEBACisrMjAxMy0wMS0xNyAg
VGltICdtaXRocm8nIEFuc2VsbCAgPG1pdGhyb0BtaXRoaXMuY29tPgorKworKyAgICAgICAgQWRk
aW5nICJoYXMtbGFuZGVkIiBjb21tYW5kIHRvIHdlYmtpdC1wYXRjaCB3aGljaCBhbGxvd3MgYSBw
ZXJzb24gdG8KKysgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorKworIDIwMTMt
MDEtMjAgIFRpbSAnbWl0aHJvJyBBbnNlbGwgIDxtaXRocm9AbWl0aGlzLmNvbT4KKyAKKyAgICAg
ICAgIEV4dGVuZCBkaWZmX3BhcnNlciB0byBzdXBwb3J0IHRoZSAtLWZ1bGwtaW5kZXggb3V0cHV0
LgorZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL290aGVyLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vb3RoZXIucHkKK2luZGV4IDRiZjhlYzYuLjNh
MTI4Y2IgMTAwNjQ0CistLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9vdGhlci5w
eQorKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vb3RoZXIucHkKK0BAIC0yOCw2
ICsyOCw4IEBACisraW1wb3J0IHJlCisrCisgZnJvbSAuYXR0YWNobWVudCBpbXBvcnQgQXR0YWNo
bWVudAorIAorIiIiKQorICAgICAgICB0ZXN0ZXhwZWN0ZWQyID0gIiIiXAorSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWcucHkKKz09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
Ky0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5Cisr
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Zy5weQorQEAg
LTI4LDYgKzI4LDggQEAKKytpbXBvcnQgcmUKKysKKyBmcm9tIC5hdHRhY2htZW50IGltcG9ydCBB
dHRhY2htZW50CisgCitJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vb3RoZXIu
cHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KKy0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9vdGhlci5w
eQorKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL290aGVyLnB5CitAQCAtMjgsNiAr
MjgsOCBAQAorK2ltcG9ydCByZQorKworIGZyb20gLmF0dGFjaG1lbnQgaW1wb3J0IEF0dGFjaG1l
bnQKKyAKKyIiIgorCisgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwodGVzdGV4cGVj
dGVkMSwgSGFzTGFuZGVkLnN0cmlwX2NoYW5nZV9sb2codGVzdGJlZm9yZTEpKQorICAgICAgICBz
ZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKHRlc3RleHBlY3RlZDEsIEhhc0xhbmRlZC5zdHJpcF9j
aGFuZ2VfbG9nKHRlc3RhZnRlcjEpKQorICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFs
KHRlc3RleHBlY3RlZDIsIEhhc0xhbmRlZC5zdHJpcF9jaGFuZ2VfbG9nKHRlc3RtaWRkbGUxKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183866</attachid>
            <date>2013-01-21 18:46:28 -0800</date>
            <delta_ts>2013-01-23 23:40:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106402-20130122134322.patch</filename>
            <type>text/plain</type>
            <size>20681</size>
            <attacher name="Tim &apos;mithro&apos; Ansell">mithro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMzEwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2Q5Mjg3OTliY2FjOTBjMDNkZDU3NzRkOGQwM2I4Nzcz
YmJiM2YxMC4uNTZiNThmYTI5ZjIzMGNmOGJjZWNjYzgzYmFlMzVkODFjMGFmY2I2NiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMw
IEBACisyMDEzLTAxLTE3ICBUaW0gJ21pdGhybycgQW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+
CisKKyAgICAgICAgQWRkaW5nICJoYXMtbGFuZGVkIiBjb21tYW5kIHRvIHdlYmtpdC1wYXRjaCB3
aGljaCBjb21wYXJlcyBhCisgICAgICAgIGNvbW1pdHRlZCBwYXRjaCB0byB0aGUgY2hhbmdlcyB3
aGljaCBleGlzdCBsb2NhbGx5IChpZ25vcmluZyB0aGUKKyAgICAgICAgQ2hhbmdlTG9nIGZpbGUp
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY0
MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZfcGFyc2VyLnB5OgorICAgICAgICAo
Z2l0X2RpZmZfdG9fc3ZuX2RpZmYpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9idWd6aWxsYS9idWcucHk6CisgICAgICAgIChCdWcuY29tbWl0X3JldmlzaW9uKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnX3VuaXR0ZXN0
LnB5OgorICAgICAgICAoQnVnVGVzdC50ZXN0X2lzX2luX2NvbW1lbnRzKToKKyAgICAgICAgKEJ1
Z1Rlc3QpOgorICAgICAgICAoQnVnVGVzdC50ZXN0X2NvbW1pdF9yZXZpc2lvbik6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weToKKyAgICAgICAgKEhh
c0xhbmRlZCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19faW5pdF9f
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9oYXNsYW5kZWQucHk6
IEFkZGVkLgorICAgICAgICAoSGFzTGFuZGVkKToKKyAgICAgICAgKEhhc0xhbmRlZC5jb252ZXJ0
X3RvX3N2bik6CisgICAgICAgIChIYXNMYW5kZWQuc3RyaXBfY2hhbmdlX2xvZyk6CisgICAgICAg
IChydW4pOgorCiAyMDEzLTAxLTIxICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUu
Y29tPgogCiAgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogVXBkYXRlIHRoZSBSVENQZWVyQ29ubmVj
dGlvbiBzdGF0ZXMgdG8gbWF0Y2ggdGhlIGxhdGVzdCBzcGVjaWZpY2F0aW9uCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Zy5weQppbmRleCA0YmY4
ZWM2MWUxY2JiNTAwYThjOTRmM2NlOTE2Y2QyZTQ3ZWI1MDVkLi43MGNhZWYzMzA5Yjg3YWI0ODdm
OWNmOGMyZDRjMDNmOGMwNGY1MGRhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9idWd6aWxsYS9idWcucHkKQEAgLTI4LDYgKzI4LDggQEAKICMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCByZQorCiBmcm9tIC5hdHRhY2htZW50IGltcG9y
dCBBdHRhY2htZW50CiAKIApAQCAtMTIzLDMgKzEyNSwxMiBAQCBjbGFzcyBCdWcob2JqZWN0KToK
ICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gRmFsc2UKIAorICAg
IGRlZiBjb21taXRfcmV2aXNpb24oc2VsZik6CisgICAgICAgICMgU29ydCB0aGUgY29tbWVudHMg
aW4gcmV2ZXJzZSBvcmRlciBhcyB3ZSB3YW50IHRoZSBsYXRlc3QgY29tbWl0dGVkIHJldmlzaW9u
LgorICAgICAgICByID0gcmUuY29tcGlsZSgiQ29tbWl0dGVkIHIoP1A8c3ZuX3JldmlzaW9uPlxk
KykiKQorICAgICAgICBmb3IgY29tbWVudCBpbiBzb3J0ZWQoc2VsZi5jb21tZW50cygpLCByZXZl
cnNlPVRydWUpOgorICAgICAgICAgICAgcmV2ID0gci5zZWFyY2goY29tbWVudFsndGV4dCddKQor
ICAgICAgICAgICAgaWYgcmV2OgorICAgICAgICAgICAgICAgIHJldHVybiBpbnQocmV2Lmdyb3Vw
KCdzdm5fcmV2aXNpb24nKSkKKworICAgICAgICByZXR1cm4gTm9uZQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z191bml0dGVzdC5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWdfdW5pdHRlc3Qu
cHkKaW5kZXggZjIwYzYwMTBjODM3NjJmZGM1ODljMzljODliZGM2OGJhZjJmNGI2NC4uNjhjMDAy
MTgxNzJkZGVkMDFmMjJjNmRiOTZjMzg0OTQwNGNiNDUzZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z191bml0dGVzdC5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnX3VuaXR0ZXN0LnB5
CkBAIC00NSwzICs0NSwzOSBAQCBjbGFzcyBCdWdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgICAgICAgICAgIGJ1Z3ppbGxhPU5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShi
dWcuaXNfaW5fY29tbWVudHMoIk1lc3NhZ2UzLiIpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KGJ1Zy5pc19pbl9jb21tZW50cygiTWVzc2FnZS4iKSkKKworICAgIGRlZiB0ZXN0X2NvbW1pdF9y
ZXZpc2lvbihzZWxmKToKKyAgICAgICAgYnVnID0gQnVnKHsiY29tbWVudHMiOiBbXX0sIGJ1Z3pp
bGxhPU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVnLmNvbW1pdF9yZXZpc2lvbigp
LCBOb25lKQorCisgICAgICAgIGJ1ZyA9IEJ1Zyh7ImNvbW1lbnRzIjogWworICAgICAgICAgICAg
eyJ0ZXh0IjogIkNvbW1lbnQgMSJ9LAorICAgICAgICAgICAgeyJ0ZXh0IjogIkNvbW1lbnQgMiJ9
LAorICAgICAgICAgICAgXX0sIGJ1Z3ppbGxhPU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYnVnLmNvbW1pdF9yZXZpc2lvbigpLCBOb25lKQorCisgICAgICAgIGJ1ZyA9IEJ1Zyh7ImNv
bW1lbnRzIjogWworICAgICAgICAgICAgeyJ0ZXh0IjogIkNvbW1pdHRlZCByMTM4Nzc2OiA8aHR0
cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTM4Nzc2PiJ9LAorICAgICAgICAgICAgXX0s
IGJ1Z3ppbGxhPU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVnLmNvbW1pdF9yZXZp
c2lvbigpLCAxMzg3NzYpCisKKyAgICAgICAgYnVnID0gQnVnKHsiY29tbWVudHMiOiBbCisgICAg
ICAgICAgICB7InRleHQiOiAiKEZyb20gdXBkYXRlIG9mIGF0dGFjaG1lbnQgMTgxMjY5KSBDbGVh
cmluZyBmbGFncyBvbiBhdHRhY2htZW50OiAxODEyNjkgQ29tbWl0dGVkIHIxMzg3NzY6IDxodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMzg3NzY+In0sCisgICAgICAgICAgICBdfSwg
YnVnemlsbGE9Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWcuY29tbWl0X3Jldmlz
aW9uKCksIDEzODc3NikKKworICAgICAgICBidWcgPSBCdWcoeyJjb21tZW50cyI6IFsKKyAgICAg
ICAgICAgIHsidGV4dCI6ICJDb21tZW50IGJlZm9yZSJ9LAorICAgICAgICAgICAgeyJ0ZXh0Ijog
IihGcm9tIHVwZGF0ZSBvZiBhdHRhY2htZW50IDE4MTI2OSkgQ2xlYXJpbmcgZmxhZ3Mgb24gYXR0
YWNobWVudDogMTgxMjY5IENvbW1pdHRlZCByMTM4Nzc2OiA8aHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMTM4Nzc2PiJ9LAorICAgICAgICAgICAgeyJ0ZXh0IjogIkNvbW1lbnQgYWZ0
ZXIifSwKKyAgICAgICAgICAgIF19LCBidWd6aWxsYT1Ob25lKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ1Zy5jb21taXRfcmV2aXNpb24oKSwgMTM4Nzc2KQorCisgICAgICAgIGJ1ZyA9IEJ1
Zyh7ImNvbW1lbnRzIjogWworICAgICAgICAgICAgeyJ0ZXh0IjogIkNvbW1lbnQgYmVmb3JlIn0s
CisgICAgICAgICAgICB7InRleHQiOiAiKEZyb20gdXBkYXRlIG9mIGF0dGFjaG1lbnQgMTgxMjY5
KSBDbGVhcmluZyBmbGFncyBvbiBhdHRhY2htZW50OiAxODEyNjkgQ29tbWl0dGVkIHIxMzg3NzY6
IDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMzg3NzY+In0sCisgICAgICAgICAg
ICB7InRleHQiOiAiQ29tbWVudCBNaWRkbGUifSwKKyAgICAgICAgICAgIHsidGV4dCI6ICIoRnJv
bSB1cGRhdGUgb2YgYXR0YWNobWVudCAxODEyODApIENsZWFyaW5nIGZsYWdzIG9uIGF0dGFjaG1l
bnQ6IDE4MTI4MCBDb21taXR0ZWQgcjEzODk3NjogPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzEzODk3Nj4ifSwKKyAgICAgICAgICAgIHsidGV4dCI6ICJDb21tZW50IEFmdGVyIn0s
CisgICAgICAgICAgICBdfSwgYnVnemlsbGE9Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChidWcuY29tbWl0X3JldmlzaW9uKCksIDEzODk3NikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5CmluZGV4IDQzMDM0ZTliNmI2N2MzNGM2MDY5NTM2
NmFiNjBhYmU0NmIwOWVjNzEuLmQzZmFhNzhiM2M4ZjUwZjg2MmQ1OTUwNTUzNmUxMTg1YzZkZjY2
MzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxv
YWQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5w
eQpAQCAtMjQxLDYgKzI0MSwxNSBAQCBjbGFzcyBMYW5kU2FmZWx5KEFic3RyYWN0UGF0Y2hVcGxv
YWRpbmdDb21tYW5kKToKICAgICBdCiAKIAorY2xhc3MgSGFzTGFuZGVkKEFic3RyYWN0UGF0Y2hV
cGxvYWRpbmdDb21tYW5kKToKKyAgICBuYW1lID0gImhhcy1sYW5kZWQiCisgICAgaGVscF90ZXh0
ID0gIkNoZWNrIHRoYXQgdGhlIGN1cnJlbnQgY29kZSB3YXMgc3VjY2Vzc2Z1bGx5IGxhbmRlZCBh
bmQgbm8gY2hhbmdlcyByZW1haW4uIgorICAgIGFyZ3VtZW50X25hbWVzID0gIltCVUdJRF0iCisg
ICAgc3RlcHMgPSBbCisgICAgICAgIHN0ZXBzLkhhc0xhbmRlZCwKKyAgICBdCisKKwogY2xhc3Mg
UHJlcGFyZShBYnN0cmFjdFNlcXVlbmNlZENvbW1hbmQpOgogICAgIG5hbWUgPSAicHJlcGFyZSIK
ICAgICBoZWxwX3RleHQgPSAiQ3JlYXRlcyBhIGJ1ZyAob3IgcHJvbXB0cyBmb3IgYW4gZXhpc3Rp
bmcgYnVnKSBhbmQgcHJlcGFyZXMgdGhlIENoYW5nZUxvZ3MiCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHkKaW5kZXggNTAyMzE5ZjdiZGEwZjAxZmY5ZDc0
OTRhMjAwZDg2Mjk0YWYwZTM5NC4uNzA5ZGU1YjEyNDYwYzllMTUxMDIyM2YxZDdhNGQ3Y2RjOGJl
YTM4NSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19faW5p
dF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9fX2luaXRfXy5w
eQpAQCAtNDUsNiArNDUsNyBAQCBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuZGlzY2FyZGxvY2Fs
Y2hhbmdlcyBpbXBvcnQgRGlzY2FyZExvY2FsQ2hhbmdlcwogZnJvbSB3ZWJraXRweS50b29sLnN0
ZXBzLmVkaXRjaGFuZ2Vsb2cgaW1wb3J0IEVkaXRDaGFuZ2VMb2cKIGZyb20gd2Via2l0cHkudG9v
bC5zdGVwcy5lbnN1cmVidWdpc29wZW5hbmRhc3NpZ25lZCBpbXBvcnQgRW5zdXJlQnVnSXNPcGVu
QW5kQXNzaWduZWQKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5lbnN1cmVsb2NhbGNvbW1pdGlm
bmVlZGVkIGltcG9ydCBFbnN1cmVMb2NhbENvbW1pdElmTmVlZGVkCitmcm9tIHdlYmtpdHB5LnRv
b2wuc3RlcHMuaGFzbGFuZGVkIGltcG9ydCBIYXNMYW5kZWQKIGZyb20gd2Via2l0cHkudG9vbC5z
dGVwcy5vYnNvbGV0ZXBhdGNoZXMgaW1wb3J0IE9ic29sZXRlUGF0Y2hlcwogZnJvbSB3ZWJraXRw
eS50b29sLnN0ZXBzLm9wdGlvbnMgaW1wb3J0IE9wdGlvbnMKIGZyb20gd2Via2l0cHkudG9vbC5z
dGVwcy5wb3N0ZGlmZiBpbXBvcnQgUG9zdERpZmYKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9zdGVwcy9oYXNsYW5kZWQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvaGFzbGFuZGVkLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3OTQzYTExNGI3NGY0MDZhMWM5
MTEwY2ViNTQ1ODJjNDNlODA2ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc3RlcHMvaGFzbGFuZGVkLnB5CkBAIC0wLDAgKzEsMTI0IEBACisjIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworaW1wb3J0IGNTdHJpbmdJTyBhcyBTdHJpbmdJTworaW1wb3J0IGxvZ2dpbmcK
K2ltcG9ydCBzeXMKK2ltcG9ydCByZQoraW1wb3J0IHRlbXBmaWxlCisKK2Zyb20gd2Via2l0cHku
dG9vbC5zdGVwcy5hYnN0cmFjdHN0ZXAgaW1wb3J0IEFic3RyYWN0U3RlcAorZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBTY3JpcHRFcnJvcgor
ZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQgaW1wb3J0IGRpZmZfcGFyc2VyCisKK2Zyb20g
d2Via2l0cHkudG9vbC5zdGVwcyBpbXBvcnQgY29uZmlybWRpZmYKKworX2xvZyA9IGxvZ2dpbmcu
Z2V0TG9nZ2VyKF9fbmFtZV9fKQorCisKK2NsYXNzIEhhc0xhbmRlZChjb25maXJtZGlmZi5Db25m
aXJtRGlmZik6CisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGNvbnZlcnRfdG9fc3ZuKGRp
ZmYpOgorICAgICAgICBsaW5lcyA9IFN0cmluZ0lPLlN0cmluZ0lPKGRpZmYpLnJlYWRsaW5lcygp
CisgICAgICAgIGNvbnZlcnQgPSBkaWZmX3BhcnNlci5nZXRfZGlmZl9jb252ZXJ0ZXIobGluZXNb
MF0pCisgICAgICAgIHJldHVybiAiIi5qb2luKGNvbnZlcnQoeCkgZm9yIHggaW4gbGluZXMpCisK
KyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIHN0cmlwX2NoYW5nZV9sb2coZGlmZik6CisgICAg
ICAgIGxpbmVzID0gU3RyaW5nSU8uU3RyaW5nSU8oZGlmZikucmVhZGxpbmVzKCkKKyAgICAgICAg
b3V0cHV0ID0gW10KKyAgICAgICAgc2tpcHBpbmcgPSBGYWxzZQorICAgICAgICBmb3IgbGluZSBp
biBsaW5lczoKKyAgICAgICAgICAgIGluZGV4bGluZSA9IHJlLm1hdGNoKCJeSW5kZXg6IChbXlxc
bl0qLyk/KFteL1xcbl0qKSQiLCBsaW5lKQorICAgICAgICAgICAgaWYgc2tpcHBpbmcgYW5kIGlu
ZGV4bGluZToKKyAgICAgICAgICAgICAgICBza2lwcGluZyA9IEZhbHNlCisgICAgICAgICAgICBp
ZiBpbmRleGxpbmUgYW5kIGluZGV4bGluZS5ncm91cCgyKSA9PSAiQ2hhbmdlTG9nIjoKKyAgICAg
ICAgICAgICAgICBza2lwcGluZyA9IFRydWUKKyAgICAgICAgICAgIGlmIG5vdCBza2lwcGluZzoK
KyAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKGxpbmUpCisgICAgICAgIHJldHVybiAiIi5q
b2luKG91dHB1dCkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZGlmZl9kaWZmKGRpZmYx
LCBkaWZmMiwgZGlmZjFfc3VmZml4LCBkaWZmMl9zdWZmaXgsIGV4ZWN1dGl2ZT1Ob25lKToKKyAg
ICAgICAgIyBOb3cgdGhpcyBpcyB3aGVyZSBpdCBnZXRzIGNvbXBsaWNhdGVkLCB3ZSBuZWVkIHRv
IGNvbXBhcmUgb3VyIGRpZmYgdG8gdGhlIGRpZmYgYXQgbGFuZGVkX3JldmlzaW9uLgorICAgICAg
ICBkaWZmMV9wYXRjaCA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShzdWZmaXg9ZGlmZjFf
c3VmZml4ICsgJy5wYXRjaCcpCisgICAgICAgIGRpZmYxX3BhdGNoLndyaXRlKGRpZmYxKQorICAg
ICAgICBkaWZmMV9wYXRjaC5mbHVzaCgpCisKKyAgICAgICAgIyBDaGVjayBpZiB0aGVyZSBhcmUg
YW55IGRpZmZlcmVuY2VzIGluIHRoZSBwYXRjaCB0aGF0IGRvbid0IGhhcHBlbgorICAgICAgICBk
aWZmMl9wYXRjaCA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShzdWZmaXg9ZGlmZjJfc3Vm
Zml4ICsgJy5wYXRjaCcpCisgICAgICAgIGRpZmYyX3BhdGNoLndyaXRlKGRpZmYyKQorICAgICAg
ICBkaWZmMl9wYXRjaC5mbHVzaCgpCisKKyAgICAgICAgIyBEaWZmIHRoZSB0d28gZGlmZidzIHRv
Z2V0aGVyLi4uCisgICAgICAgIGlmIG5vdCBleGVjdXRpdmU6CisgICAgICAgICAgICBleGVjdXRp
dmUgPSBFeGVjdXRpdmUoKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBleGVj
dXRpdmUucnVuX2NvbW1hbmQoCisgICAgICAgICAgICAgICAgWyJpbnRlcmRpZmYiLCBkaWZmMV9w
YXRjaC5uYW1lLCBkaWZmMl9wYXRjaC5uYW1lXSwgZGVjb2RlX291dHB1dD1GYWxzZSkKKyAgICAg
ICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgorICAgICAgICAgICAgX2xvZy53YXJuaW5nKCJVbmFi
bGUgdG8gZmluZCBpbnRlcmRpZmYgdXRpbCAocGFydCBvZiBHTlUgZGlmZnRvb2xzIHBhY2thZ2Up
IHdoaWNoIGlzIHJlcXVpcmVkLiIpCisgICAgICAgICAgICByYWlzZQorCisgICAgZGVmIHJ1bihz
ZWxmLCBzdGF0ZSk6CisgICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgYXJlIGNoYW5nZXMgZmlyc3QK
KyAgICAgICAgaWYgbm90IHNlbGYuX3Rvb2wuc2NtKCkubG9jYWxfY2hhbmdlc19leGlzdCgpOgor
ICAgICAgICAgICAgX2xvZy53YXJuKCJObyBsb2NhbCBjaGFuZ2VzIGZvdW5kLCBleGl0aW5nLiIp
CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMg
YSBTVk4gcmV2aXNpb24gaW4gdGhlIGJ1ZyBmcm9tIHRoZSBjb21taXQgcXVldWUKKyAgICAgICAg
bGFuZGVkX3JldmlzaW9uID0gc2VsZi5jYWNoZWRfbG9va3VwKHN0YXRlLCAiYnVnIikuY29tbWl0
X3JldmlzaW9uKCkKKyAgICAgICAgaWYgbm90IGxhbmRlZF9yZXZpc2lvbjoKKyAgICAgICAgICAg
IHJhaXNlIFNjcmlwdEVycm9yKCJVbmFibGUgdG8gZmluZCBsYW5kZWQgbWVzc2FnZSBpbiBhc3Nv
Y2lhdGVkIGJ1Zy4iKQorCisgICAgICAgICMgTm93IHRoaXMgaXMgdGhlcmUgaXQgZ2V0cyBjb21w
bGljYXRlZCwgd2UgbmVlZCB0byBjb21wYXJlIG91ciBkaWZmIHRvIHRoZSBkaWZmIGF0IGxhbmRl
ZF9yZXZpc2lvbi4KKyAgICAgICAgbGFuZGVkX2RpZmZfYmluID0gc2VsZi5fdG9vbC5zY20oKS5k
aWZmX2Zvcl9yZXZpc2lvbihsYW5kZWRfcmV2aXNpb24pCisgICAgICAgIGxhbmRlZF9kaWZmX3Ry
aW1tZWQgPSBzZWxmLnN0cmlwX2NoYW5nZV9sb2coc2VsZi5jb252ZXJ0X3RvX3N2bihsYW5kZWRf
ZGlmZl9iaW4pKQorCisgICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBkaWZmZXJlbmNl
cyBpbiB0aGUgcGF0Y2ggdGhhdCBkb24ndCBoYXBwZW4KKyAgICAgICAgbG9jYWxfZGlmZl9iaW4g
PSBzZWxmLl90b29sLnNjbSgpLmNyZWF0ZV9wYXRjaCgpCisgICAgICAgIGxvY2FsX2RpZmZfdHJp
bW1lZCA9IHNlbGYuc3RyaXBfY2hhbmdlX2xvZyhzZWxmLmNvbnZlcnRfdG9fc3ZuKGxvY2FsX2Rp
ZmZfYmluKSkKKworICAgICAgICAjIERpZmYgdGhlIHR3byBkaWZmJ3MgdG9nZXRoZXIuLi4KKyAg
ICAgICAgZGlmZl9kaWZmID0gc2VsZi5kaWZmX2RpZmYobGFuZGVkX2RpZmZfdHJpbW1lZCwgbG9j
YWxfZGlmZl90cmltbWVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWxh
bmRlZCcsICctbG9jYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVj
dXRpdmU9c2VsZi5fdG9vbC5leGVjdXRpdmUpCisKKyAgICAgICAgcHJldHR5X2RpZmZfZmlsZSA9
IHNlbGYuX3Nob3dfcHJldHR5X2RpZmYoZGlmZl9kaWZmKQorICAgICAgICBpZiBub3QgcHJldHR5
X2RpZmZfZmlsZToKKyAgICAgICAgICAgIHNlbGYuX3Rvb2wudXNlci5wYWdlKGRpZmZfZGlmZikK
KyAgICAgICAgZGlmZl9jb3JyZWN0ID0gc2VsZi5fdG9vbC51c2VyLmNvbmZpcm0oIkNhbiBJIGRp
c2NhcmQgbG9jYWwgY2hhbmdlcz8iKQorICAgICAgICBpZiBwcmV0dHlfZGlmZl9maWxlOgorICAg
ICAgICAgICAgcHJldHR5X2RpZmZfZmlsZS5jbG9zZSgpCisKKyAgICAgICAgaWYgZGlmZl9jb3Jy
ZWN0OgorICAgICAgICAgICAgIyBEaXNjYXJkIGNoYW5nZXMgaWYgdGhlIHVzZXIgY29uZmlybWVk
IHdlIHNob3VsZAorICAgICAgICAgICAgX2xvZy53YXJuKCJEaXNjYXJkaW5nIGNoYW5nZXMgYXMg
cmVxdWVzdGVkLiIpCisgICAgICAgICAgICBzZWxmLl90b29sLnNjbSgpLmRpc2NhcmRfbG9jYWxf
Y2hhbmdlcygpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
aGFzbGFuZGVkX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L2hhc2xhbmRlZF91bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NDFlMzZkOGNjMDkzNzdhOTBhMzA2
ZjA4YTliOGU2NjhmY2NkYTc0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL2hhc2xhbmRlZF91bml0dGVzdC5weQpAQCAtMCwwICsxLDI5NyBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisj
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKK2ltcG9ydCB1bml0dGVzdDIgYXMgdW5pdHRlc3QKKworZnJvbSB3ZWJr
aXRweS50b29sLnN0ZXBzLmhhc2xhbmRlZCBpbXBvcnQgSGFzTGFuZGVkCisKKworY2xhc3MgSGFz
TGFuZGVkVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbWF4RGlmZiA9IE5vbmUKKworICAg
IGRlZiB0ZXN0X3J1bihzZWxmKToKKyAgICAgICAgIyBUaGVzZSBwYXRjaGVzIHJlcXVpcmUgdHJh
aWxpbmcgd2hpdGVzcGFjZSB0byByZW1haW4gdmFsaWQgcGF0Y2hlcy4KKyAgICAgICAgZGlmZjEg
PSAiIiJcCitJbmRleDogYS5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGEucHkKKysrKyBhLnB5CitAQCAt
MSwzICsxLDUgQEAKKyBBCisgQgorIEMKKytECisrRQorSW5kZXg6IGIucHkKKz09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
Ky0tLSBiLnB5ICAgICAgMjAxMy0wMS0yMSAxNToyMDo1OS42OTM4ODcxODUgKzExMDAKKysrKyBi
LnB5ICAgICAgMjAxMy0wMS0yMSAxNToyMjoyNC4zODI1NTU3MTEgKzExMDAKK0BAIC0xLDMgKzEs
NSBAQAorIDEKKyAyCisgMworKzQKKys1CisiIiIKKworICAgICAgICBkaWZmMV9hZGRfbGluZSA9
ICIiIlwKK0luZGV4OiBhLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYS5weQorKysrIGEucHkKK0BAIC0x
LDMgKzEsNiBAQAorIEEKKyBCCisgQworK0QKKytFCisrRgorSW5kZXg6IGIucHkKKz09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KKy0tLSBiLnB5CisrKysgYi5weQorQEAgLTEsMyArMSw1IEBACisgMQorIDIKKyAzCisrNAor
KzUKKyIiIgorCisgICAgICAgIGRpZmYxX3JlbW92ZV9saW5lID0gIiIiXAorSW5kZXg6IGEucHkK
Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KKy0tLSBhLnB5CisrKysgYS5weQorQEAgLTEsMyArMSw0IEBACisgQQorIEIK
KyBDCisrRAorSW5kZXg6IGIucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBiLnB5CisrKysgYi5weQorQEAg
LTEsMyArMSw1IEBACisgMQorIDIKKyAzCisrNAorKzUKKyIiIgorCisgICAgICAgIGRpZmYxX2Fk
ZF9maWxlID0gZGlmZjEgKyAiIiJcCitJbmRleDogYy5weQorPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGMucHkK
KysrKyBjLnB5CitAQCAtMSwzICsxLDUgQEAKKyAxCisgMgorIDMKKys0CisrNQorIiIiCisKKyAg
ICAgICAgZGlmZjFfcmVtb3ZlX2ZpbGUgPSAiIiJcCitJbmRleDogYS5weQorPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor
LS0tIGEucHkKKysrKyBhLnB5CitAQCAtMSwzICsxLDUgQEAKKyBBCisgQgorIEMKKytECisrRQor
IiIiCisgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwoCisgICAgICAgICAgICBIYXNM
YW5kZWQuZGlmZl9kaWZmKGRpZmYxLCBkaWZmMV9hZGRfbGluZSwgJycsICdhZGQtbGluZScpLAor
ICAgICAgICAgICAgIiIiXAorZGlmZiAtdSBhLnB5IGEucHkKKy0tLSBhLnB5CisrKysgYS5weQor
QEAgLTUsMCArNiBAQAorK0YKKyIiIikKKworICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVx
dWFsKAorICAgICAgICAgICAgSGFzTGFuZGVkLmRpZmZfZGlmZihkaWZmMSwgZGlmZjFfcmVtb3Zl
X2xpbmUsICcnLCAncmVtb3ZlLWxpbmUnKSwKKyAgICAgICAgICAgICIiIlwKK2RpZmYgLXUgYS5w
eSBhLnB5CistLS0gYS5weQorKysrIGEucHkKK0BAIC01ICs0LDAgQEAKKy1FCisiIiIpCisgICAg
ICAgIHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwoCisgICAgICAgICAgICBIYXNMYW5kZWQuZGlm
Zl9kaWZmKGRpZmYxLCBkaWZmMV9hZGRfZmlsZSwgJycsICdhZGQtZmlsZScpLAorICAgICAgICAg
ICAgIiIiXAorb25seSBpbiBwYXRjaDI6Cit1bmNoYW5nZWQ6CistLS0gYy5weQorKysrIGMucHkK
K0BAIC0xLDMgKzEsNSBAQAorIDEKKyAyCisgMworKzQKKys1CisiIiIpCisgICAgICAgIHNlbGYu
YXNzZXJ0TXVsdGlMaW5lRXF1YWwoCisgICAgICAgICAgICBIYXNMYW5kZWQuZGlmZl9kaWZmKGRp
ZmYxLCBkaWZmMV9yZW1vdmVfZmlsZSwgJycsICdyZW1vdmUtZmlsZScpLAorICAgICAgICAgICAg
IiIiXAorcmV2ZXJ0ZWQ6CistLS0gYi5weSAgICAgIDIwMTMtMDEtMjEgMTU6MjI6MjQuMzgyNTU1
NzExICsxMTAwCisrKysgYi5weSAgICAgIDIwMTMtMDEtMjEgMTU6MjA6NTkuNjkzODg3MTg1ICsx
MTAwCitAQCAtMSw1ICsxLDMgQEAKKyAxCisgMgorIDMKKy00CistNQorIiIiKQorCisgICAgZGVm
IHRlc3RfY29udmVydF90b19zdm5fYW5kX3N0cmlwX2NoYW5nZV9sb2coc2VsZik6CisgICAgICAg
ICMgVGhlc2UgcGF0Y2hlcyByZXF1aXJlIHRyYWlsaW5nIHdoaXRlc3BhY2UgdG8gcmVtYWluIHZh
bGlkIHBhdGNoZXMuCisgICAgICAgIHRlc3RiZWZvcmUxID0gSGFzTGFuZGVkLmNvbnZlcnRfdG9f
c3ZuKCIiIlwKK2RpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
K2luZGV4IDIxOWJhNzIuLjAzOTBiNzMgMTAwNjQ0CistLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
KyBiL1Rvb2xzL0NoYW5nZUxvZworQEAgLTEsMyArMSwzMiBAQAorKzIwMTMtMDEtMTcgIFRpbSAn
bWl0aHJvJyBBbnNlbGwgIDxtaXRocm9AbWl0aGlzLmNvbT4KKysKKysgICAgICAgIEFkZGluZyAi
aGFzLWxhbmRlZCIgY29tbWFuZCB0byB3ZWJraXQtcGF0Y2ggd2hpY2ggYWxsb3dzIGEgcGVyc29u
IHRvCisrICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKysKKyAyMDEzLTAxLTIw
ICBUaW0gJ21pdGhybycgQW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+CisgCisgICAgICAgICBF
eHRlbmQgZGlmZl9wYXJzZXIgdG8gc3VwcG9ydCB0aGUgLS1mdWxsLWluZGV4IG91dHB1dC4KK2Rp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVn
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Zy5weQor
aW5kZXggNGJmOGVjNi4uM2ExMjhjYiAxMDA2NDQKKy0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWcucHkKKysrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWcucHkKK0BAIC0yOCw2ICsyOCw4IEBACisraW1wb3J0
IHJlCisrCisgZnJvbSAuYXR0YWNobWVudCBpbXBvcnQgQXR0YWNobWVudAorIAorIiIiKQorICAg
ICAgICB0ZXN0YWZ0ZXIxID0gSGFzTGFuZGVkLmNvbnZlcnRfdG9fc3ZuKCIiIlwKK2RpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Zy5weQoraW5kZXgg
NGJmOGVjNi4uM2ExMjhjYiAxMDA2NDQKKy0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9idWd6aWxsYS9idWcucHkKKysrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9idWd6aWxsYS9idWcucHkKK0BAIC0yOCw2ICsyOCw4IEBACisraW1wb3J0IHJlCisr
CisgZnJvbSAuYXR0YWNobWVudCBpbXBvcnQgQXR0YWNobWVudAorIAorZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZworaW5kZXggMjE5YmE3Mi4uMDM5MGI3MyAx
MDA2NDQKKy0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysrIGIvVG9vbHMvQ2hhbmdlTG9nCitAQCAt
MSwzICsxLDMyIEBACisrMjAxMy0wMS0xNyAgVGltICdtaXRocm8nIEFuc2VsbCAgPG1pdGhyb0Bt
aXRoaXMuY29tPgorKworKyAgICAgICAgQWRkaW5nICJoYXMtbGFuZGVkIiBjb21tYW5kIHRvIHdl
YmtpdC1wYXRjaCB3aGljaCBhbGxvd3MgYSBwZXJzb24gdG8KKysgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorKworIDIwMTMtMDEtMjAgIFRpbSAnbWl0aHJvJyBBbnNlbGwgIDxt
aXRocm9AbWl0aGlzLmNvbT4KKyAKKyAgICAgICAgIEV4dGVuZCBkaWZmX3BhcnNlciB0byBzdXBw
b3J0IHRoZSAtLWZ1bGwtaW5kZXggb3V0cHV0LgorIiIiKQorICAgICAgICB0ZXN0ZXhwZWN0ZWQx
ID0gIiIiXAorSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxs
YS9idWcucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KKy0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvYnVnemlsbGEvYnVnLnB5CisrKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L2J1Z3ppbGxhL2J1Zy5weQorQEAgLTI4LDYgKzI4LDggQEAKKytpbXBvcnQgcmUKKysKKyBmcm9t
IC5hdHRhY2htZW50IGltcG9ydCBBdHRhY2htZW50CisgCisiIiIKKyAgICAgICAgdGVzdG1pZGRs
ZTEgPSBIYXNMYW5kZWQuY29udmVydF90b19zdm4oIiIiXAorZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWcucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5CitpbmRleCA0YmY4ZWM2Li4zYTEy
OGNiIDEwMDY0NAorLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3pp
bGxhL2J1Zy5weQorKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3pp
bGxhL2J1Zy5weQorQEAgLTI4LDYgKzI4LDggQEAKKytpbXBvcnQgcmUKKysKKyBmcm9tIC5hdHRh
Y2htZW50IGltcG9ydCBBdHRhY2htZW50CisgCitkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hh
bmdlTG9nCitpbmRleCAyMTliYTcyLi4wMzkwYjczIDEwMDY0NAorLS0tIGEvQ2hhbmdlTG9nCisr
KysgYi9DaGFuZ2VMb2cKK0BAIC0xLDMgKzEsMzIgQEAKKysyMDEzLTAxLTE3ICBUaW0gJ21pdGhy
bycgQW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+CisrCisrICAgICAgICBBZGRpbmcgImhhcy1s
YW5kZWQiIGNvbW1hbmQgdG8gd2Via2l0LXBhdGNoIHdoaWNoIGFsbG93cyBhIHBlcnNvbiB0bwor
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisrCisgMjAxMy0wMS0yMCAgVGlt
ICdtaXRocm8nIEFuc2VsbCAgPG1pdGhyb0BtaXRoaXMuY29tPgorIAorICAgICAgICAgRXh0ZW5k
IGRpZmZfcGFyc2VyIHRvIHN1cHBvcnQgdGhlIC0tZnVsbC1pbmRleCBvdXRwdXQuCitkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vb3RoZXIucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9vdGhlci5weQoraW5kZXggNGJmOGVjNi4uM2ExMjhjYiAxMDA2
NDQKKy0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL290aGVyLnB5CisrKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9vdGhlci5weQorQEAgLTI4LDYgKzI4LDggQEAK
KytpbXBvcnQgcmUKKysKKyBmcm9tIC5hdHRhY2htZW50IGltcG9ydCBBdHRhY2htZW50CisgCisi
IiIpCisgICAgICAgIHRlc3RleHBlY3RlZDIgPSAiIiJcCitJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Zy5weQorPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWcucHkKKysrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5CitAQCAtMjgsNiArMjgs
OCBAQAorK2ltcG9ydCByZQorKworIGZyb20gLmF0dGFjaG1lbnQgaW1wb3J0IEF0dGFjaG1lbnQK
KyAKK0luZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9vdGhlci5weQorPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQorLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL290aGVyLnB5CisrKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vb3RoZXIucHkKK0BAIC0yOCw2ICsyOCw4IEBACisr
aW1wb3J0IHJlCisrCisgZnJvbSAuYXR0YWNobWVudCBpbXBvcnQgQXR0YWNobWVudAorIAorIiIi
CisKKyAgICAgICAgc2VsZi5hc3NlcnRNdWx0aUxpbmVFcXVhbCh0ZXN0ZXhwZWN0ZWQxLCBIYXNM
YW5kZWQuc3RyaXBfY2hhbmdlX2xvZyh0ZXN0YmVmb3JlMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0
TXVsdGlMaW5lRXF1YWwodGVzdGV4cGVjdGVkMSwgSGFzTGFuZGVkLnN0cmlwX2NoYW5nZV9sb2co
dGVzdGFmdGVyMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwodGVzdGV4cGVj
dGVkMiwgSGFzTGFuZGVkLnN0cmlwX2NoYW5nZV9sb2codGVzdG1pZGRsZTEpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184417</attachid>
            <date>2013-01-23 23:40:35 -0800</date>
            <delta_ts>2013-01-24 04:21:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106402-20130124183727.patch</filename>
            <type>text/plain</type>
            <size>21369</size>
            <attacher name="Tim &apos;mithro&apos; Ansell">mithro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNjU1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzNmNzI2MjE1N2I1Nzg4MzI2NDQ2MDMwNjhmYTQ0ZmNh
Yjc0MjM4NC4uYTExNTk4YThmOWY2OGQxNWU4MjRlYzg4ZmU0MGUwNTQwNWY0YWIwMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUw
IEBACisyMDEzLTAxLTIzICBUaW0gJ21pdGhybycgQW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+
CisKKyAgICAgICAgQWRkaW5nICJoYXMtbGFuZGVkIiBjb21tYW5kIHRvIHdlYmtpdC1wYXRjaCB3
aGljaCBjb21wYXJlcyBhCisgICAgICAgIGNvbW1pdHRlZCBwYXRjaCB0byB0aGUgY2hhbmdlcyB3
aGljaCBleGlzdCBsb2NhbGx5IChpZ25vcmluZyB0aGUKKyAgICAgICAgQ2hhbmdlTG9nIGZpbGUp
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY0
MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2RpZmZfcGFyc2VyLnB5OgorICAgICAgICAo
Z2l0X2RpZmZfdG9fc3ZuX2RpZmYpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9idWd6aWxsYS9idWcucHk6CisgICAgICAgIChCdWcuY29tbWl0X3JldmlzaW9uKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnX3VuaXR0ZXN0
LnB5OgorICAgICAgICAoQnVnVGVzdC50ZXN0X2lzX2luX2NvbW1lbnRzKToKKyAgICAgICAgKEJ1
Z1Rlc3QpOgorICAgICAgICAoQnVnVGVzdC50ZXN0X2NvbW1pdF9yZXZpc2lvbik6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weToKKyAgICAgICAgKEhh
c0xhbmRlZCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL19faW5pdF9f
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9oYXNsYW5kZWQucHk6
IEFkZGVkLgorICAgICAgICAoSGFzTGFuZGVkKToKKyAgICAgICAgKEhhc0xhbmRlZC5jb252ZXJ0
X3RvX3N2bik6CisgICAgICAgIChIYXNMYW5kZWQuc3RyaXBfY2hhbmdlX2xvZyk6CisgICAgICAg
IChydW4pOgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxh
L2J1Zy5weToKKyAgICAgICAgKEJ1Zy5jb21taXRfcmV2aXNpb24pOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWdfdW5pdHRlc3QucHk6CisgICAgICAg
IChCdWdUZXN0LnRlc3RfaXNfaW5fY29tbWVudHMpOgorICAgICAgICAoQnVnVGVzdCk6CisgICAg
ICAgIChCdWdUZXN0LnRlc3RfY29tbWl0X3JldmlzaW9uKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5OgorICAgICAgICAoSGFzTGFuZGVkKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2hhc2xhbmRlZC5weTogQWRkZWQuCisgICAg
ICAgIChIYXNMYW5kZWQpOgorICAgICAgICAoSGFzTGFuZGVkLmNvbnZlcnRfdG9fc3ZuKToKKyAg
ICAgICAgKEhhc0xhbmRlZC5zdHJpcF9jaGFuZ2VfbG9nKToKKyAgICAgICAgKEhhc0xhbmRlZC5k
aWZmX2RpZmYpOgorICAgICAgICAoSGFzTGFuZGVkLnJ1bik6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL2hhc2xhbmRlZF91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAg
IChIYXNMYW5kZWRUZXN0KToKKyAgICAgICAgKEhhc0xhbmRlZFRlc3QudGVzdF9ydW4pOgorICAg
ICAgICAodGVzdF9jb252ZXJ0X3RvX3N2bl9hbmRfc3RyaXBfY2hhbmdlX2xvZyk6CisKIDIwMTMt
MDEtMjMgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtD
aHJvbWl1bV0gR2l2ZSB3ZWJraXRfc3VwcG9ydCBhIGNoYW5jZSB0byByZXNldCBzdGF0ZSBiZXR3
ZWVuIGxheW91dCB0ZXN0IHJ1bnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9idWd6aWxsYS9idWcucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9uZXQvYnVnemlsbGEvYnVnLnB5CmluZGV4IDRiZjhlYzYxZTFjYmI1MDBhOGM5NGYzY2U5MTZj
ZDJlNDdlYjUwNWQuLjcwY2FlZjMzMDliODdhYjQ4N2Y5Y2Y4YzJkNGMwM2Y4YzA0ZjUwZGEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWcu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Zy5w
eQpAQCAtMjgsNiArMjgsOCBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAoraW1w
b3J0IHJlCisKIGZyb20gLmF0dGFjaG1lbnQgaW1wb3J0IEF0dGFjaG1lbnQKIAogCkBAIC0xMjMs
MyArMTI1LDEyIEBAIGNsYXNzIEJ1ZyhvYmplY3QpOgogICAgICAgICAgICAgICAgIHJldHVybiBU
cnVlCiAgICAgICAgIHJldHVybiBGYWxzZQogCisgICAgZGVmIGNvbW1pdF9yZXZpc2lvbihzZWxm
KToKKyAgICAgICAgIyBTb3J0IHRoZSBjb21tZW50cyBpbiByZXZlcnNlIG9yZGVyIGFzIHdlIHdh
bnQgdGhlIGxhdGVzdCBjb21taXR0ZWQgcmV2aXNpb24uCisgICAgICAgIHIgPSByZS5jb21waWxl
KCJDb21taXR0ZWQgcig/UDxzdm5fcmV2aXNpb24+XGQrKSIpCisgICAgICAgIGZvciBjb21tZW50
IGluIHNvcnRlZChzZWxmLmNvbW1lbnRzKCksIHJldmVyc2U9VHJ1ZSk6CisgICAgICAgICAgICBy
ZXYgPSByLnNlYXJjaChjb21tZW50Wyd0ZXh0J10pCisgICAgICAgICAgICBpZiByZXY6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGludChyZXYuZ3JvdXAoJ3N2bl9yZXZpc2lvbicpKQorCisgICAg
ICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9uZXQvYnVnemlsbGEvYnVnX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L2J1Z3ppbGxhL2J1Z191bml0dGVzdC5weQppbmRleCA5YzlmZDlkZmZkZDExMmE5
OTdlMmRmYTc3YmZlNTBjNDZmMzYwZmNkLi5iOTBiOTE1YTg0NTE0MzQ4ZDJmYzNkNzlmMGE5YjU4
YmJmOGNiZjYzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQv
YnVnemlsbGEvYnVnX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9idWd6aWxsYS9idWdfdW5pdHRlc3QucHkKQEAgLTQ1LDMgKzQ1LDM5IEBAIGNsYXNz
IEJ1Z1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgICAgYnVnemlsbGE9
Tm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1Zy5pc19pbl9jb21tZW50cygiTWVzc2Fn
ZTMuIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnVnLmlzX2luX2NvbW1lbnRzKCJNZXNz
YWdlLiIpKQorCisgICAgZGVmIHRlc3RfY29tbWl0X3JldmlzaW9uKHNlbGYpOgorICAgICAgICBi
dWcgPSBCdWcoeyJjb21tZW50cyI6IFtdfSwgYnVnemlsbGE9Tm9uZSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChidWcuY29tbWl0X3JldmlzaW9uKCksIE5vbmUpCisKKyAgICAgICAgYnVnID0g
QnVnKHsiY29tbWVudHMiOiBbCisgICAgICAgICAgICB7InRleHQiOiAiQ29tbWVudCAxIn0sCisg
ICAgICAgICAgICB7InRleHQiOiAiQ29tbWVudCAyIn0sCisgICAgICAgICAgICBdfSwgYnVnemls
bGE9Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWcuY29tbWl0X3JldmlzaW9uKCks
IE5vbmUpCisKKyAgICAgICAgYnVnID0gQnVnKHsiY29tbWVudHMiOiBbCisgICAgICAgICAgICB7
InRleHQiOiAiQ29tbWl0dGVkIHIxMzg3NzY6IDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8xMzg3NzY+In0sCisgICAgICAgICAgICBdfSwgYnVnemlsbGE9Tm9uZSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChidWcuY29tbWl0X3JldmlzaW9uKCksIDEzODc3NikKKworICAgICAg
ICBidWcgPSBCdWcoeyJjb21tZW50cyI6IFsKKyAgICAgICAgICAgIHsidGV4dCI6ICIoRnJvbSB1
cGRhdGUgb2YgYXR0YWNobWVudCAxODEyNjkpIENsZWFyaW5nIGZsYWdzIG9uIGF0dGFjaG1lbnQ6
IDE4MTI2OSBDb21taXR0ZWQgcjEzODc3NjogPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LzEzODc3Nj4ifSwKKyAgICAgICAgICAgIF19LCBidWd6aWxsYT1Ob25lKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGJ1Zy5jb21taXRfcmV2aXNpb24oKSwgMTM4Nzc2KQorCisgICAgICAg
IGJ1ZyA9IEJ1Zyh7ImNvbW1lbnRzIjogWworICAgICAgICAgICAgeyJ0ZXh0IjogIkNvbW1lbnQg
YmVmb3JlIn0sCisgICAgICAgICAgICB7InRleHQiOiAiKEZyb20gdXBkYXRlIG9mIGF0dGFjaG1l
bnQgMTgxMjY5KSBDbGVhcmluZyBmbGFncyBvbiBhdHRhY2htZW50OiAxODEyNjkgQ29tbWl0dGVk
IHIxMzg3NzY6IDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMzg3NzY+In0sCisg
ICAgICAgICAgICB7InRleHQiOiAiQ29tbWVudCBhZnRlciJ9LAorICAgICAgICAgICAgXX0sIGJ1
Z3ppbGxhPU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVnLmNvbW1pdF9yZXZpc2lv
bigpLCAxMzg3NzYpCisKKyAgICAgICAgYnVnID0gQnVnKHsiY29tbWVudHMiOiBbCisgICAgICAg
ICAgICB7InRleHQiOiAiQ29tbWVudCBiZWZvcmUifSwKKyAgICAgICAgICAgIHsidGV4dCI6ICIo
RnJvbSB1cGRhdGUgb2YgYXR0YWNobWVudCAxODEyNjkpIENsZWFyaW5nIGZsYWdzIG9uIGF0dGFj
aG1lbnQ6IDE4MTI2OSBDb21taXR0ZWQgcjEzODc3NjogPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzEzODc3Nj4ifSwKKyAgICAgICAgICAgIHsidGV4dCI6ICJDb21tZW50IE1pZGRs
ZSJ9LAorICAgICAgICAgICAgeyJ0ZXh0IjogIihGcm9tIHVwZGF0ZSBvZiBhdHRhY2htZW50IDE4
MTI4MCkgQ2xlYXJpbmcgZmxhZ3Mgb24gYXR0YWNobWVudDogMTgxMjgwIENvbW1pdHRlZCByMTM4
OTc2OiA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTM4OTc2PiJ9LAorICAgICAg
ICAgICAgeyJ0ZXh0IjogIkNvbW1lbnQgQWZ0ZXIifSwKKyAgICAgICAgICAgIF19LCBidWd6aWxs
YT1Ob25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zy5jb21taXRfcmV2aXNpb24oKSwg
MTM4OTc2KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L3VwbG9hZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQu
cHkKaW5kZXggNDMwMzRlOWI2YjY3YzM0YzYwNjk1MzY2YWI2MGFiZTQ2YjA5ZWM3MS4uZDNmYWE3
OGIzYzhmNTBmODYyZDU5NTA1NTM2ZTExODVjNmRmNjYzMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5CkBAIC0yNDEsNiArMjQxLDE1IEBAIGNs
YXNzIExhbmRTYWZlbHkoQWJzdHJhY3RQYXRjaFVwbG9hZGluZ0NvbW1hbmQpOgogICAgIF0KIAog
CitjbGFzcyBIYXNMYW5kZWQoQWJzdHJhY3RQYXRjaFVwbG9hZGluZ0NvbW1hbmQpOgorICAgIG5h
bWUgPSAiaGFzLWxhbmRlZCIKKyAgICBoZWxwX3RleHQgPSAiQ2hlY2sgdGhhdCB0aGUgY3VycmVu
dCBjb2RlIHdhcyBzdWNjZXNzZnVsbHkgbGFuZGVkIGFuZCBubyBjaGFuZ2VzIHJlbWFpbi4iCisg
ICAgYXJndW1lbnRfbmFtZXMgPSAiW0JVR0lEXSIKKyAgICBzdGVwcyA9IFsKKyAgICAgICAgc3Rl
cHMuSGFzTGFuZGVkLAorICAgIF0KKworCiBjbGFzcyBQcmVwYXJlKEFic3RyYWN0U2VxdWVuY2Vk
Q29tbWFuZCk6CiAgICAgbmFtZSA9ICJwcmVwYXJlIgogICAgIGhlbHBfdGV4dCA9ICJDcmVhdGVz
IGEgYnVnIChvciBwcm9tcHRzIGZvciBhbiBleGlzdGluZyBidWcpIGFuZCBwcmVwYXJlcyB0aGUg
Q2hhbmdlTG9ncyIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9fX2luaXRfXy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9fX2luaXRf
Xy5weQppbmRleCA1MDIzMTlmN2JkYTBmMDFmZjlkNzQ5NGEyMDBkODYyOTRhZjBlMzk0Li43MDlk
ZTViMTI0NjBjOWUxNTEwMjIzZjFkN2E0ZDdjZGM4YmVhMzg1IDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvX19pbml0X18ucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3N0ZXBzL19faW5pdF9fLnB5CkBAIC00NSw2ICs0NSw3IEBAIGZyb20g
d2Via2l0cHkudG9vbC5zdGVwcy5kaXNjYXJkbG9jYWxjaGFuZ2VzIGltcG9ydCBEaXNjYXJkTG9j
YWxDaGFuZ2VzCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuZWRpdGNoYW5nZWxvZyBpbXBvcnQg
RWRpdENoYW5nZUxvZwogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmVuc3VyZWJ1Z2lzb3BlbmFu
ZGFzc2lnbmVkIGltcG9ydCBFbnN1cmVCdWdJc09wZW5BbmRBc3NpZ25lZAogZnJvbSB3ZWJraXRw
eS50b29sLnN0ZXBzLmVuc3VyZWxvY2FsY29tbWl0aWZuZWVkZWQgaW1wb3J0IEVuc3VyZUxvY2Fs
Q29tbWl0SWZOZWVkZWQKK2Zyb20gd2Via2l0cHkudG9vbC5zdGVwcy5oYXNsYW5kZWQgaW1wb3J0
IEhhc0xhbmRlZAogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLm9ic29sZXRlcGF0Y2hlcyBpbXBv
cnQgT2Jzb2xldGVQYXRjaGVzCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMub3B0aW9ucyBpbXBv
cnQgT3B0aW9ucwogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLnBvc3RkaWZmIGltcG9ydCBQb3N0
RGlmZgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2hhc2xh
bmRlZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9oYXNsYW5kZWQucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTE2YTM0MDc2YWFiZDU4YTg3NDc1NzcxMGM3N2M2YmZiYjI2NWNiYgotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9oYXNsYW5k
ZWQucHkKQEAgLTAsMCArMSwxMjAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisj
IG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgY1N0cmlu
Z0lPIGFzIFN0cmluZ0lPCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHN5cworaW1wb3J0IHJlCitp
bXBvcnQgdGVtcGZpbGUKKworZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmFic3RyYWN0c3RlcCBp
bXBvcnQgQWJzdHJhY3RTdGVwCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZl
IGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVj
a291dCBpbXBvcnQgZGlmZl9wYXJzZXIKKworZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzIGltcG9y
dCBjb25maXJtZGlmZgorCitfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKKwor
Y2xhc3MgSGFzTGFuZGVkKGNvbmZpcm1kaWZmLkNvbmZpcm1EaWZmKToKKworICAgIEBjbGFzc21l
dGhvZAorICAgIGRlZiBjb252ZXJ0X3RvX3N2bihjbHMsIGRpZmYpOgorICAgICAgICBsaW5lcyA9
IFN0cmluZ0lPLlN0cmluZ0lPKGRpZmYpLnJlYWRsaW5lcygpCisgICAgICAgIGNvbnZlcnQgPSBk
aWZmX3BhcnNlci5nZXRfZGlmZl9jb252ZXJ0ZXIobGluZXNbMF0pCisgICAgICAgIHJldHVybiAi
Ii5qb2luKGNvbnZlcnQoeCkgZm9yIHggaW4gbGluZXMpCisKKyAgICBAY2xhc3NtZXRob2QKKyAg
ICBkZWYgc3RyaXBfY2hhbmdlX2xvZyhjbHMsIGRpZmYpOgorICAgICAgICBvdXRwdXQgPSBbXQor
ICAgICAgICBza2lwcGluZyA9IEZhbHNlCisgICAgICAgIGZvciBsaW5lIGluIFN0cmluZ0lPLlN0
cmluZ0lPKGRpZmYpLnJlYWRsaW5lcygpOgorICAgICAgICAgICAgaW5kZXhsaW5lID0gcmUubWF0
Y2goIl5JbmRleDogKFteXFxuXSovKT8oW14vXFxuXSopJCIsIGxpbmUpCisgICAgICAgICAgICBp
ZiBza2lwcGluZyBhbmQgaW5kZXhsaW5lOgorICAgICAgICAgICAgICAgIHNraXBwaW5nID0gRmFs
c2UKKyAgICAgICAgICAgIGlmIGluZGV4bGluZSBhbmQgaW5kZXhsaW5lLmdyb3VwKDIpID09ICJD
aGFuZ2VMb2ciOgorICAgICAgICAgICAgICAgIHNraXBwaW5nID0gVHJ1ZQorICAgICAgICAgICAg
aWYgbm90IHNraXBwaW5nOgorICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQobGluZSkKKyAg
ICAgICAgcmV0dXJuICIiLmpvaW4ob3V0cHV0KQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVm
IGRpZmZfZGlmZihjbHMsIGRpZmYxLCBkaWZmMiwgZGlmZjFfc3VmZml4LCBkaWZmMl9zdWZmaXgs
IGV4ZWN1dGl2ZT1Ob25lKToKKyAgICAgICAgIyBOb3cgdGhpcyBpcyB3aGVyZSBpdCBnZXRzIGNv
bXBsaWNhdGVkLCB3ZSBuZWVkIHRvIGNvbXBhcmUgb3VyIGRpZmYgdG8gdGhlIGRpZmYgYXQgbGFu
ZGVkX3JldmlzaW9uLgorICAgICAgICBkaWZmMV9wYXRjaCA9IHRlbXBmaWxlLk5hbWVkVGVtcG9y
YXJ5RmlsZShzdWZmaXg9ZGlmZjFfc3VmZml4ICsgJy5wYXRjaCcpCisgICAgICAgIGRpZmYxX3Bh
dGNoLndyaXRlKGRpZmYxKQorICAgICAgICBkaWZmMV9wYXRjaC5mbHVzaCgpCisKKyAgICAgICAg
IyBDaGVjayBpZiB0aGVyZSBhcmUgYW55IGRpZmZlcmVuY2VzIGluIHRoZSBwYXRjaCB0aGF0IGRv
bid0IGhhcHBlbgorICAgICAgICBkaWZmMl9wYXRjaCA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5
RmlsZShzdWZmaXg9ZGlmZjJfc3VmZml4ICsgJy5wYXRjaCcpCisgICAgICAgIGRpZmYyX3BhdGNo
LndyaXRlKGRpZmYyKQorICAgICAgICBkaWZmMl9wYXRjaC5mbHVzaCgpCisKKyAgICAgICAgIyBE
aWZmIHRoZSB0d28gZGlmZidzIHRvZ2V0aGVyLi4uCisgICAgICAgIGlmIG5vdCBleGVjdXRpdmU6
CisgICAgICAgICAgICBleGVjdXRpdmUgPSBFeGVjdXRpdmUoKQorCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIHJldHVybiBleGVjdXRpdmUucnVuX2NvbW1hbmQoCisgICAgICAgICAgICAgICAg
WyJpbnRlcmRpZmYiLCBkaWZmMV9wYXRjaC5uYW1lLCBkaWZmMl9wYXRjaC5uYW1lXSwgZGVjb2Rl
X291dHB1dD1GYWxzZSkKKyAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgorICAgICAgICAg
ICAgX2xvZy53YXJuaW5nKCJVbmFibGUgdG8gZmluZCBpbnRlcmRpZmYgdXRpbCAocGFydCBvZiBH
TlUgZGlmZnRvb2xzIHBhY2thZ2UpIHdoaWNoIGlzIHJlcXVpcmVkLiIpCisgICAgICAgICAgICBy
YWlzZQorCisgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CisgICAgICAgICMgQ2hlY2sgaWYgdGhl
cmUgYXJlIGNoYW5nZXMgZmlyc3QKKyAgICAgICAgaWYgbm90IHNlbGYuX3Rvb2wuc2NtKCkubG9j
YWxfY2hhbmdlc19leGlzdCgpOgorICAgICAgICAgICAgX2xvZy53YXJuKCJObyBsb2NhbCBjaGFu
Z2VzIGZvdW5kLCBleGl0aW5nLiIpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAg
ICMgQ2hlY2sgaWYgdGhlcmUgaXMgYSBTVk4gcmV2aXNpb24gaW4gdGhlIGJ1ZyBmcm9tIHRoZSBj
b21taXQgcXVldWUKKyAgICAgICAgbGFuZGVkX3JldmlzaW9uID0gc2VsZi5jYWNoZWRfbG9va3Vw
KHN0YXRlLCAiYnVnIikuY29tbWl0X3JldmlzaW9uKCkKKyAgICAgICAgaWYgbm90IGxhbmRlZF9y
ZXZpc2lvbjoKKyAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCJVbmFibGUgdG8gZmluZCBs
YW5kZWQgbWVzc2FnZSBpbiBhc3NvY2lhdGVkIGJ1Zy4iKQorCisgICAgICAgICMgTm93IHRoaXMg
aXMgdGhlcmUgaXQgZ2V0cyBjb21wbGljYXRlZCwgd2UgbmVlZCB0byBjb21wYXJlIG91ciBkaWZm
IHRvIHRoZSBkaWZmIGF0IGxhbmRlZF9yZXZpc2lvbi4KKyAgICAgICAgbGFuZGVkX2RpZmZfYmlu
ID0gc2VsZi5fdG9vbC5zY20oKS5kaWZmX2Zvcl9yZXZpc2lvbihsYW5kZWRfcmV2aXNpb24pCisg
ICAgICAgIGxhbmRlZF9kaWZmX3RyaW1tZWQgPSBzZWxmLnN0cmlwX2NoYW5nZV9sb2coc2VsZi5j
b252ZXJ0X3RvX3N2bihsYW5kZWRfZGlmZl9iaW4pKQorCisgICAgICAgICMgQ2hlY2sgaWYgdGhl
cmUgYXJlIGFueSBkaWZmZXJlbmNlcyBpbiB0aGUgcGF0Y2ggdGhhdCBkb24ndCBoYXBwZW4KKyAg
ICAgICAgbG9jYWxfZGlmZl9iaW4gPSBzZWxmLl90b29sLnNjbSgpLmNyZWF0ZV9wYXRjaCgpCisg
ICAgICAgIGxvY2FsX2RpZmZfdHJpbW1lZCA9IHNlbGYuc3RyaXBfY2hhbmdlX2xvZyhzZWxmLmNv
bnZlcnRfdG9fc3ZuKGxvY2FsX2RpZmZfYmluKSkKKworICAgICAgICAjIERpZmYgdGhlIHR3byBk
aWZmJ3MgdG9nZXRoZXIuLi4KKyAgICAgICAgZGlmZl9kaWZmID0gc2VsZi5kaWZmX2RpZmYobGFu
ZGVkX2RpZmZfdHJpbW1lZCwgbG9jYWxfZGlmZl90cmltbWVkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnLWxhbmRlZCcsICctbG9jYWwnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleGVjdXRpdmU9c2VsZi5fdG9vbC5leGVjdXRpdmUpCisKKyAgICAg
ICAgd2l0aCBzZWxmLl9zaG93X3ByZXR0eV9kaWZmKGRpZmZfZGlmZikgYXMgcHJldHR5X2RpZmZf
ZmlsZToKKyAgICAgICAgICAgIGlmIG5vdCBwcmV0dHlfZGlmZl9maWxlOgorICAgICAgICAgICAg
ICAgIHNlbGYuX3Rvb2wudXNlci5wYWdlKGRpZmZfZGlmZikKKworICAgICAgICAgICAgaWYgc2Vs
Zi5fdG9vbC51c2VyLmNvbmZpcm0oIk1heSBJIGRpc2NhcmQgbG9jYWwgY2hhbmdlcz8iKToKKyAg
ICAgICAgICAgICAgICAjIERpc2NhcmQgY2hhbmdlcyBpZiB0aGUgdXNlciBjb25maXJtZWQgd2Ug
c2hvdWxkCisgICAgICAgICAgICAgICAgX2xvZy53YXJuKCJEaXNjYXJkaW5nIGNoYW5nZXMgYXMg
cmVxdWVzdGVkLiIpCisgICAgICAgICAgICAgICAgc2VsZi5fdG9vbC5zY20oKS5kaXNjYXJkX2xv
Y2FsX2NoYW5nZXMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL2hhc2xhbmRlZF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9oYXNsYW5kZWRfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQxZTM2ZDhjYzA5Mzc3YTkw
YTMwNmYwOGE5YjhlNjY4ZmNjZGE3NAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9zdGVwcy9oYXNsYW5kZWRfdW5pdHRlc3QucHkKQEAgLTAsMCArMSwyOTcg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdW5pdHRlc3QyIGFzIHVuaXR0ZXN0CisKK2Zyb20g
d2Via2l0cHkudG9vbC5zdGVwcy5oYXNsYW5kZWQgaW1wb3J0IEhhc0xhbmRlZAorCisKK2NsYXNz
IEhhc0xhbmRlZFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1heERpZmYgPSBOb25lCisK
KyAgICBkZWYgdGVzdF9ydW4oc2VsZik6CisgICAgICAgICMgVGhlc2UgcGF0Y2hlcyByZXF1aXJl
IHRyYWlsaW5nIHdoaXRlc3BhY2UgdG8gcmVtYWluIHZhbGlkIHBhdGNoZXMuCisgICAgICAgIGRp
ZmYxID0gIiIiXAorSW5kZXg6IGEucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhLnB5CisrKysgYS5weQor
QEAgLTEsMyArMSw1IEBACisgQQorIEIKKyBDCisrRAorK0UKK0luZGV4OiBiLnB5Cis9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09CistLS0gYi5weSAgICAgIDIwMTMtMDEtMjEgMTU6MjA6NTkuNjkzODg3MTg1ICsxMTAwCisr
KysgYi5weSAgICAgIDIwMTMtMDEtMjEgMTU6MjI6MjQuMzgyNTU1NzExICsxMTAwCitAQCAtMSwz
ICsxLDUgQEAKKyAxCisgMgorIDMKKys0CisrNQorIiIiCisKKyAgICAgICAgZGlmZjFfYWRkX2xp
bmUgPSAiIiJcCitJbmRleDogYS5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGEucHkKKysrKyBhLnB5CitA
QCAtMSwzICsxLDYgQEAKKyBBCisgQgorIEMKKytECisrRQorK0YKK0luZGV4OiBiLnB5Cis9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CistLS0gYi5weQorKysrIGIucHkKK0BAIC0xLDMgKzEsNSBAQAorIDEKKyAyCisgMwor
KzQKKys1CisiIiIKKworICAgICAgICBkaWZmMV9yZW1vdmVfbGluZSA9ICIiIlwKK0luZGV4OiBh
LnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CistLS0gYS5weQorKysrIGEucHkKK0BAIC0xLDMgKzEsNCBAQAorIEEK
KyBCCisgQworK0QKK0luZGV4OiBiLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYi5weQorKysrIGIucHkK
K0BAIC0xLDMgKzEsNSBAQAorIDEKKyAyCisgMworKzQKKys1CisiIiIKKworICAgICAgICBkaWZm
MV9hZGRfZmlsZSA9IGRpZmYxICsgIiIiXAorSW5kZXg6IGMucHkKKz09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBj
LnB5CisrKysgYy5weQorQEAgLTEsMyArMSw1IEBACisgMQorIDIKKyAzCisrNAorKzUKKyIiIgor
CisgICAgICAgIGRpZmYxX3JlbW92ZV9maWxlID0gIiIiXAorSW5kZXg6IGEucHkKKz09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KKy0tLSBhLnB5CisrKysgYS5weQorQEAgLTEsMyArMSw1IEBACisgQQorIEIKKyBDCisrRAor
K0UKKyIiIgorICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKAorICAgICAgICAgICAg
SGFzTGFuZGVkLmRpZmZfZGlmZihkaWZmMSwgZGlmZjFfYWRkX2xpbmUsICcnLCAnYWRkLWxpbmUn
KSwKKyAgICAgICAgICAgICIiIlwKK2RpZmYgLXUgYS5weSBhLnB5CistLS0gYS5weQorKysrIGEu
cHkKK0BAIC01LDAgKzYgQEAKKytGCisiIiIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRNdWx0aUxp
bmVFcXVhbCgKKyAgICAgICAgICAgIEhhc0xhbmRlZC5kaWZmX2RpZmYoZGlmZjEsIGRpZmYxX3Jl
bW92ZV9saW5lLCAnJywgJ3JlbW92ZS1saW5lJyksCisgICAgICAgICAgICAiIiJcCitkaWZmIC11
IGEucHkgYS5weQorLS0tIGEucHkKKysrKyBhLnB5CitAQCAtNSArNCwwIEBACistRQorIiIiKQor
ICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKAorICAgICAgICAgICAgSGFzTGFuZGVk
LmRpZmZfZGlmZihkaWZmMSwgZGlmZjFfYWRkX2ZpbGUsICcnLCAnYWRkLWZpbGUnKSwKKyAgICAg
ICAgICAgICIiIlwKK29ubHkgaW4gcGF0Y2gyOgordW5jaGFuZ2VkOgorLS0tIGMucHkKKysrKyBj
LnB5CitAQCAtMSwzICsxLDUgQEAKKyAxCisgMgorIDMKKys0CisrNQorIiIiKQorICAgICAgICBz
ZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKAorICAgICAgICAgICAgSGFzTGFuZGVkLmRpZmZfZGlm
ZihkaWZmMSwgZGlmZjFfcmVtb3ZlX2ZpbGUsICcnLCAncmVtb3ZlLWZpbGUnKSwKKyAgICAgICAg
ICAgICIiIlwKK3JldmVydGVkOgorLS0tIGIucHkgICAgICAyMDEzLTAxLTIxIDE1OjIyOjI0LjM4
MjU1NTcxMSArMTEwMAorKysrIGIucHkgICAgICAyMDEzLTAxLTIxIDE1OjIwOjU5LjY5Mzg4NzE4
NSArMTEwMAorQEAgLTEsNSArMSwzIEBACisgMQorIDIKKyAzCistNAorLTUKKyIiIikKKworICAg
IGRlZiB0ZXN0X2NvbnZlcnRfdG9fc3ZuX2FuZF9zdHJpcF9jaGFuZ2VfbG9nKHNlbGYpOgorICAg
ICAgICAjIFRoZXNlIHBhdGNoZXMgcmVxdWlyZSB0cmFpbGluZyB3aGl0ZXNwYWNlIHRvIHJlbWFp
biB2YWxpZCBwYXRjaGVzLgorICAgICAgICB0ZXN0YmVmb3JlMSA9IEhhc0xhbmRlZC5jb252ZXJ0
X3RvX3N2bigiIiJcCitkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCitpbmRleCAyMTliYTcyLi4wMzkwYjczIDEwMDY0NAorLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKysgYi9Ub29scy9DaGFuZ2VMb2cKK0BAIC0xLDMgKzEsMzIgQEAKKysyMDEzLTAxLTE3ICBU
aW0gJ21pdGhybycgQW5zZWxsICA8bWl0aHJvQG1pdGhpcy5jb20+CisrCisrICAgICAgICBBZGRp
bmcgImhhcy1sYW5kZWQiIGNvbW1hbmQgdG8gd2Via2l0LXBhdGNoIHdoaWNoIGFsbG93cyBhIHBl
cnNvbiB0bworKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisrCisgMjAxMy0w
MS0yMCAgVGltICdtaXRocm8nIEFuc2VsbCAgPG1pdGhyb0BtaXRoaXMuY29tPgorIAorICAgICAg
ICAgRXh0ZW5kIGRpZmZfcGFyc2VyIHRvIHN1cHBvcnQgdGhlIC0tZnVsbC1pbmRleCBvdXRwdXQu
CitkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxh
L2J1Zy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWcu
cHkKK2luZGV4IDRiZjhlYzYuLjNhMTI4Y2IgMTAwNjQ0CistLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5CisrKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5CitAQCAtMjgsNiArMjgsOCBAQAorK2lt
cG9ydCByZQorKworIGZyb20gLmF0dGFjaG1lbnQgaW1wb3J0IEF0dGFjaG1lbnQKKyAKKyIiIikK
KyAgICAgICAgdGVzdGFmdGVyMSA9IEhhc0xhbmRlZC5jb252ZXJ0X3RvX3N2bigiIiJcCitkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Zy5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWcucHkKK2lu
ZGV4IDRiZjhlYzYuLjNhMTI4Y2IgMTAwNjQ0CistLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5CisrKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5CitAQCAtMjgsNiArMjgsOCBAQAorK2ltcG9ydCBy
ZQorKworIGZyb20gLmF0dGFjaG1lbnQgaW1wb3J0IEF0dGFjaG1lbnQKKyAKK2RpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKK2luZGV4IDIxOWJhNzIuLjAzOTBi
NzMgMTAwNjQ0CistLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrKyBiL1Rvb2xzL0NoYW5nZUxvZwor
QEAgLTEsMyArMSwzMiBAQAorKzIwMTMtMDEtMTcgIFRpbSAnbWl0aHJvJyBBbnNlbGwgIDxtaXRo
cm9AbWl0aGlzLmNvbT4KKysKKysgICAgICAgIEFkZGluZyAiaGFzLWxhbmRlZCIgY29tbWFuZCB0
byB3ZWJraXQtcGF0Y2ggd2hpY2ggYWxsb3dzIGEgcGVyc29uIHRvCisrICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKysKKyAyMDEzLTAxLTIwICBUaW0gJ21pdGhybycgQW5zZWxs
ICA8bWl0aHJvQG1pdGhpcy5jb20+CisgCisgICAgICAgICBFeHRlbmQgZGlmZl9wYXJzZXIgdG8g
c3VwcG9ydCB0aGUgLS1mdWxsLWluZGV4IG91dHB1dC4KKyIiIikKKyAgICAgICAgdGVzdGV4cGVj
dGVkMSA9ICIiIlwKK0luZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVn
emlsbGEvYnVnLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L2J1Z3ppbGxhL2J1Zy5weQorKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L25ldC9idWd6aWxsYS9idWcucHkKK0BAIC0yOCw2ICsyOCw4IEBACisraW1wb3J0IHJlCisrCisg
ZnJvbSAuYXR0YWNobWVudCBpbXBvcnQgQXR0YWNobWVudAorIAorIiIiCisgICAgICAgIHRlc3Rt
aWRkbGUxID0gSGFzTGFuZGVkLmNvbnZlcnRfdG9fc3ZuKCIiIlwKK2RpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Zy5weQoraW5kZXggNGJmOGVjNi4u
M2ExMjhjYiAxMDA2NDQKKy0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9i
dWd6aWxsYS9idWcucHkKKysrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9i
dWd6aWxsYS9idWcucHkKK0BAIC0yOCw2ICsyOCw4IEBACisraW1wb3J0IHJlCisrCisgZnJvbSAu
YXR0YWNobWVudCBpbXBvcnQgQXR0YWNobWVudAorIAorZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBi
L0NoYW5nZUxvZworaW5kZXggMjE5YmE3Mi4uMDM5MGI3MyAxMDA2NDQKKy0tLSBhL0NoYW5nZUxv
ZworKysrIGIvQ2hhbmdlTG9nCitAQCAtMSwzICsxLDMyIEBACisrMjAxMy0wMS0xNyAgVGltICdt
aXRocm8nIEFuc2VsbCAgPG1pdGhyb0BtaXRoaXMuY29tPgorKworKyAgICAgICAgQWRkaW5nICJo
YXMtbGFuZGVkIiBjb21tYW5kIHRvIHdlYmtpdC1wYXRjaCB3aGljaCBhbGxvd3MgYSBwZXJzb24g
dG8KKysgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorKworIDIwMTMtMDEtMjAg
IFRpbSAnbWl0aHJvJyBBbnNlbGwgIDxtaXRocm9AbWl0aGlzLmNvbT4KKyAKKyAgICAgICAgIEV4
dGVuZCBkaWZmX3BhcnNlciB0byBzdXBwb3J0IHRoZSAtLWZ1bGwtaW5kZXggb3V0cHV0LgorZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL290aGVyLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vb3RoZXIucHkKK2luZGV4IDRiZjhlYzYuLjNhMTI4Y2Ig
MTAwNjQ0CistLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9vdGhlci5weQorKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vb3RoZXIucHkKK0BAIC0yOCw2ICsyOCw4
IEBACisraW1wb3J0IHJlCisrCisgZnJvbSAuYXR0YWNobWVudCBpbXBvcnQgQXR0YWNobWVudAor
IAorIiIiKQorICAgICAgICB0ZXN0ZXhwZWN0ZWQyID0gIiIiXAorSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWcucHkKKz09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnLnB5CisrKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Zy5weQorQEAgLTI4LDYg
KzI4LDggQEAKKytpbXBvcnQgcmUKKysKKyBmcm9tIC5hdHRhY2htZW50IGltcG9ydCBBdHRhY2ht
ZW50CisgCitJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vb3RoZXIucHkKKz09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KKy0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9vdGhlci5weQorKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL290aGVyLnB5CitAQCAtMjgsNiArMjgsOCBA
QAorK2ltcG9ydCByZQorKworIGZyb20gLmF0dGFjaG1lbnQgaW1wb3J0IEF0dGFjaG1lbnQKKyAK
KyIiIgorCisgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwodGVzdGV4cGVjdGVkMSwg
SGFzTGFuZGVkLnN0cmlwX2NoYW5nZV9sb2codGVzdGJlZm9yZTEpKQorICAgICAgICBzZWxmLmFz
c2VydE11bHRpTGluZUVxdWFsKHRlc3RleHBlY3RlZDEsIEhhc0xhbmRlZC5zdHJpcF9jaGFuZ2Vf
bG9nKHRlc3RhZnRlcjEpKQorICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKHRlc3Rl
eHBlY3RlZDIsIEhhc0xhbmRlZC5zdHJpcF9jaGFuZ2VfbG9nKHRlc3RtaWRkbGUxKSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>