<?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>62166</bug_id>
          
          <creation_ts>2011-06-06 17:03:50 -0700</creation_ts>
          <short_desc>Add a suggest-nominations command to webkit-patch for computing potential committer/reviewer nominations</short_desc>
          <delta_ts>2011-10-19 16:24:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Tom Zakrajsek">tomz</assigned_to>
          <cc>abarth</cc>
    
    <cc>adele</cc>
    
    <cc>s.mathur</cc>
    
    <cc>tomz</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>416132</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-06 17:03:50 -0700</bug_when>
    <thetext>Add a suggest-nominations command to webkit-patch for computing potential committer/reviewer nominations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416136</commentid>
    <comment_count>1</comment_count>
      <attachid>96155</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-06 17:06:46 -0700</bug_when>
    <thetext>Created attachment 96155
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416137</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-06 17:07:38 -0700</bug_when>
    <thetext>I wrote this while I was waiting for my fastMalloc(0) patch to finally run through all the layout tests this morning.  Mostly because I had the surprising realization the other day that Noel Gordon was not yet a committer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416139</commentid>
    <comment_count>3</comment_count>
      <attachid>96156</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-06 17:08:30 -0700</bug_when>
    <thetext>Created attachment 96156
sorted the includes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416141</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-06 17:10:33 -0700</bug_when>
    <thetext>Here is some example output (ignoring all the Warnings it currently prints due to missing email addresses in committers.py):

% webkit-patch suggest-nominations
REVIEWER: Patrick Gansterer (paroga@webkit.org) has 224 reviewed patches
REVIEWER: Pavel Podivilov (podivilov@chromium.org) has 181 reviewed patches
REVIEWER: Alexander Pavlov (apavlov@chromium.org) has 108 reviewed patches
REVIEWER: Chris Rogers (crogers@google.com) has 107 reviewed patches
REVIEWER: Carlos Garcia Campos (cgarcia@igalia.com) has 101 reviewed patches
REVIEWER: Jer Noble (jer.noble@apple.com) has 100 reviewed patches
REVIEWER: Ilya Tikhonovsky (loislo@chromium.org) has 88 reviewed patches
REVIEWER: Philippe Normand (pnormand@igalia.com) has 86 reviewed patches
REVIEWER: Abhishek Arya (inferno@chromium.org) has 82 reviewed patches
COMMITTER: Andrey Adaikin (aandrey@google.com) has 40 reviewed patches
COMMITTER: Ryuan Choi (ryuan.choi@samsung.com) has 36 reviewed patches
COMMITTER: Vsevolod Vlasov (vsevik@chromium.org) has 36 reviewed patches
COMMITTER: Luke Macpherson (macpherson@chromium.org) has 35 reviewed patches
COMMITTER: Mark Pilgrim (pilgrim@chromium.org) has 32 reviewed patches
COMMITTER: Ilya Sherman (isherman@chromium.org) has 25 reviewed patches
COMMITTER: Siddharth Mathur (siddharth.mathur@nokia.com) has 24 reviewed patches
COMMITTER: Mike Reed (reed@google.com) has 23 reviewed patches
COMMITTER: Naoki Takano (takano.naoki@gmail.com) has 23 reviewed patches
COMMITTER: Chris Guillory (chris.guillory@google.com) has 21 reviewed patches
COMMITTER: Nat Duca (nduca@chromium.org) has 21 reviewed patches
COMMITTER: Noel Gordon (noel.gordon@gmail.com) has 21 reviewed patches</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416143</commentid>
    <comment_count>5</comment_count>
      <attachid>96156</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-06 17:12:07 -0700</bug_when>
    <thetext>Comment on attachment 96156
sorted the includes

I can haz tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416145</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-06 17:13:08 -0700</bug_when>
    <thetext>Sure, what would you like tested? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416147</commentid>
    <comment_count>7</comment_count>
      <attachid>96156</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-06-06 17:14:35 -0700</bug_when>
    <thetext>Comment on attachment 96156
sorted the includes

I would just stub out git_log = self._tool.executive.run_command([&apos;git&apos;, &apos;log&apos;, &apos;--since=&quot;9 months ago&quot;&apos;]) to produce interesting output that you can then see what your code prints.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416150</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-06 17:17:49 -0700</bug_when>
    <thetext>This has some relation to bug 26533, but I didn&apos;t re-use any of that code (because it was never landed into webkitpy).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448096</commentid>
    <comment_count>9</comment_count>
    <who name="Siddharth Mathur">s.mathur</who>
    <bug_when>2011-08-08 10:48:32 -0700</bug_when>
    <thetext>(In reply to comment #4)

&lt;joke&gt;Gee, it&apos;s great to see a tool flag my name for *appreciation*. Wish life had more such tools :) &lt;/joke&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468085</commentid>
    <comment_count>10</comment_count>
      <attachid>107553</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-15 14:23:22 -0700</bug_when>
    <thetext>Created attachment 107553
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468118</commentid>
    <comment_count>11</comment_count>
      <attachid>107553</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-15 15:27:22 -0700</bug_when>
    <thetext>Comment on attachment 107553
Patch

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

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:61
&gt; +        git_log = self._tool.executive.run_command([&apos;git&apos;, &apos;log&apos;, &apos;--since=&quot;9 months ago&quot;&apos;])
&gt; +        match_git_svn_id = re.compile(r&quot;\n\n    git-svn-id:.*\n&quot;, re.MULTILINE)
&gt; +        match_get_log_lines = re.compile(r&quot;^\S.*\n&quot;, re.MULTILINE)
&gt; +        match_leading_indent = re.compile(r&quot;^[ ]{4}&quot;, re.MULTILINE)

This only works on git?  Should we mention that in the help?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468119</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-15 15:27:52 -0700</bug_when>
    <thetext>Sorry, don&apos;t have time to review completely right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468120</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-15 15:29:03 -0700</bug_when>
    <thetext>I&apos;m in no rush.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468854</commentid>
    <comment_count>14</comment_count>
    <who name="Tom Zakrajsek">tomz</who>
    <bug_when>2011-09-16 15:40:33 -0700</bug_when>
    <thetext>I&apos;m not sure if it&apos;s a big deal, but this patch chokes if you redirect the output (at least on linux).  Specifically when it is printing unicode names.

$ webkit-patch suggest-nominations &gt; temp.txt
Traceback (most recent call last):
  File &quot;/home/tomz/WebKit/Tools/Scripts/webkit-patch&quot;, line 66, in &lt;module&gt; main()
  File &quot;/home/tomz/WebKit/Tools/Scripts/webkit-patch&quot;, line 61, in main
    WebKitPatch(os.path.abspath(__file__)).main()
  File &quot;/home/tomz/WebKit/Tools/Scripts/webkitpy/tool/multicommandtool.py&quot;, line 308, in main
    result = command.check_arguments_and_execute(options, args, self)
  File &quot;/home/tomz/WebKit/Tools/Scripts/webkitpy/tool/multicommandtool.py&quot;, line 117, in check_arguments_and_execute
    return self.execute(options, args, tool) or 0
  File &quot;/home/tomz/WebKit/Tools/Scripts/webkitpy/tool/commands/suggestnominations.py&quot;, line 145, in execute
    self._print_nominations(nominations)
  File &quot;/home/tomz/WebKit/Tools/Scripts/webkitpy/tool/commands/suggestnominations.py&quot;, line 140, in _print_nominations
    print &quot;%(roles_string)s: %(author_name)s (%(author_email)s) has %(patch_count)s reviewed patches&quot; % nomination

UnicodeEncodeError: &apos;ascii&apos; codec can&apos;t encode character u&apos;\xf3&apos; in position 16: ordinal not in range(128)

When I don&apos;t redirect, I can see that the name it choked on was:
COMMITTER: Kristóf Kosztyó (Kosztyo.Kristof@stud.u-szeged.hu) has 19 reviewed patches
                ^</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468874</commentid>
    <comment_count>15</comment_count>
    <who name="Tom Zakrajsek">tomz</who>
    <bug_when>2011-09-16 16:15:19 -0700</bug_when>
    <thetext>You could append &quot;.encode(&apos;ascii&apos;, &apos;replace&apos;)&quot; to author_name at suggestnominations.py@121. 

121:   &apos;author_name&apos;: author_name.encode(&apos;ascii&apos;, &apos;replace&apos;),

The downside is that those characters become &apos;?&apos; even when not using redirection.  Still seems like a better idea than a potential exception.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468877</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-16 16:18:45 -0700</bug_when>
    <thetext>We have this general problem with stdin/stdout encoding on systems with LANG=ascii set.  This is the same root problem as bug 63452.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470909</commentid>
    <comment_count>17</comment_count>
    <who name="Tom Zakrajsek">tomz</who>
    <bug_when>2011-09-21 10:25:55 -0700</bug_when>
    <thetext>There are some people that have contributed using different emails.  Right now, this script doesn&apos;t take the union of those.  One fix would be to count patches by Name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482839</commentid>
    <comment_count>18</comment_count>
      <attachid>110769</attachid>
    <who name="Tom Zakrajsek">tomz</who>
    <bug_when>2011-10-12 16:28:44 -0700</bug_when>
    <thetext>Created attachment 110769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482852</commentid>
    <comment_count>19</comment_count>
      <attachid>110769</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-12 16:47:40 -0700</bug_when>
    <thetext>Comment on attachment 110769
Patch

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

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:58
&gt; +        options = [
&gt; +            steps.Options.committer_minimum,
&gt; +            steps.Options.reviewer_minimum,
&gt; +            steps.Options.max_commit_age,
&gt; +            steps.Options.show_commits,
&gt; +        ]
&gt; +
&gt; +        AbstractDeclarativeCommand.__init__(self, options=options)

I&apos;m confused why we need to do this dance?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482989</commentid>
    <comment_count>20</comment_count>
    <who name="Tom Zakrajsek">tomz</who>
    <bug_when>2011-10-12 21:07:12 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 110769 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=110769&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:58
&gt; &gt; +        options = [
&gt; &gt; +            steps.Options.committer_minimum,
&gt; &gt; +            steps.Options.reviewer_minimum,
&gt; &gt; +            steps.Options.max_commit_age,
&gt; &gt; +            steps.Options.show_commits,
&gt; &gt; +        ]
&gt; &gt; +
&gt; &gt; +        AbstractDeclarativeCommand.__init__(self, options=options)
&gt; 
&gt; I&apos;m confused why we need to do this dance?

Assuming you mean the __init__() call, this was in your first draft, and without it bind_to_tool fails with &quot;AttributeError: &apos;SuggestNominations&apos; object has no attribute &apos;_tool&apos;&quot;.  The original version was supporting an option &quot;git_commit&quot; which I didn&apos;t see a reason for though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483206</commentid>
    <comment_count>21</comment_count>
      <attachid>110850</attachid>
    <who name="Tom Zakrajsek">tomz</who>
    <bug_when>2011-10-13 08:38:00 -0700</bug_when>
    <thetext>Created attachment 110850
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483408</commentid>
    <comment_count>22</comment_count>
    <who name="Tom Zakrajsek">tomz</who>
    <bug_when>2011-10-13 12:47:21 -0700</bug_when>
    <thetext>Adam Barth thought the issue in #19 was about the options setup, and recommended pointing to another example of this pattern.  See Tools/Scripts/webkitpy/tool/commands/upload.py: PostCommits, MarkBugFixed, CreateBug, ....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483421</commentid>
    <comment_count>23</comment_count>
      <attachid>110850</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-13 13:07:11 -0700</bug_when>
    <thetext>Comment on attachment 110850
Patch

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

One more round please. :)

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:48
&gt; +        self.committer_minimum = steps.Options.committer_minimum.default
&gt; +        self.reviewer_minimum = steps.Options.reviewer_minimum.default
&gt; +        self.max_commit_age = steps.Options.max_commit_age.default
&gt; +        self.show_commits = steps.Options.show_commits.default

Why do you need to pull defaults here?

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:55
&gt; +            steps.Options.committer_minimum,
&gt; +            steps.Options.reviewer_minimum,
&gt; +            steps.Options.max_commit_age,
&gt; +            steps.Options.show_commits,

Yeah, since you&apos;re not using steps, you could just do the make_option here, isntead of using the shared steps options.

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:60
&gt; +        # FIXME: This should probably be on the tool somewhere.
&gt; +        self._committer_list = CommitterList()

Isn&apos;t it already on the tool?  Maybe it isn&apos;t... but it certainly should be. :)  (Not that you have to fix that.)

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:162
&gt; +        for author_email, curr_counter in counters_by_email.items():

curr_ is a horrible name.  just call it &quot;counter&quot; or &quot;counter_for_author&quot; or whatever it is.

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:163
&gt; +            if author_email != curr_counter[&apos;mru_email&apos;]:

what&apos;s mru?  most recently used?  maybe latest_email?  latest_name?

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:199
&gt; +            curr_counter = self._counters_by_email[nomination[&apos;author_email&apos;]]

yeah, just call it counter. :)

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:209
&gt; +            # split the tuples
&gt; +            # the second element is the &quot;counter&quot; structure
&gt; +            ia, a = a_tuple
&gt; +            ib, b = b_tuple

You want somethign like:

_, a_counter = a_tuple
_, b_counter = b_tuple

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:225
&gt; +            aka_list = []

I might have called this alais_list.  aka is OK, but might be more confusing to non-native english speakers.

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:230
&gt; +            if len(aka_list):

You can just do if aka_list here.

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:248
&gt; +

two lines.

&gt; Tools/Scripts/webkitpy/tool/steps/options.py:41
&gt; +    committer_minimum = make_option(&quot;--committer-minimum&quot;, action=&quot;store&quot;, dest=&quot;committer_minimum&quot;, type=&quot;int&quot;, default=10, help=&quot;Specify minimum patch count for Committer nominations.&quot;)

I wouldn&apos;t put these in steps/options unless they&apos;re used by a step.  Just inline them into your command.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483561</commentid>
    <comment_count>24</comment_count>
    <who name="Tom Zakrajsek">tomz</who>
    <bug_when>2011-10-13 15:31:56 -0700</bug_when>
    <thetext>Awesome feedback.  Thanks.  I&apos;m working on fixing.  I&apos;m having trouble annotating your review comments though.  Specifically:

Why do you need to pull defaults here?
&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:55
&gt; +            steps.Options.committer_minimum,

it&apos;s because one of the unit tests is bypassing the &quot;exec&quot; function.  It just creates the object and calls _recent_commit_messages to test.  I could restructure that test.  I just thought that initializing these here made sense in the spirit of don&apos;t create an object in an invalid state.  They are &quot;overridden&quot; if exec is passed new values.  I&apos;ll see if I can come up with a better way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483592</commentid>
    <comment_count>25</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-13 15:58:53 -0700</bug_when>
    <thetext>Split out the &quot;setup this object from options&quot; into a separate method and call it maually from both execute and your unittest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484009</commentid>
    <comment_count>26</comment_count>
      <attachid>111021</attachid>
    <who name="Tom Zakrajsek">tomz</who>
    <bug_when>2011-10-14 09:02:01 -0700</bug_when>
    <thetext>Created attachment 111021
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486984</commentid>
    <comment_count>27</comment_count>
      <attachid>111021</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-19 14:03:08 -0700</bug_when>
    <thetext>Comment on attachment 111021
Patch

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

I&apos;m willing to rubber-stamp this, so we can use it and evaluate the utility. Seems like a huge amount of code for this.

&gt; Tools/Scripts/webkitpy/tool/commands/suggestnominations.py:78
&gt; +            (message, _) = match_git_svn_id.subn(&quot;&quot;, message)
&gt; +            (message, _) = match_get_log_lines.subn(&quot;&quot;, message)
&gt; +            (message, _) = match_leading_indent.subn(&quot;&quot;, message)

Why subn and not sub?  Seems you don&apos;t want the number of subs anyway. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487113</commentid>
    <comment_count>28</comment_count>
      <attachid>111021</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-19 16:24:19 -0700</bug_when>
    <thetext>Comment on attachment 111021
Patch

Clearing flags on attachment: 111021

Committed r97891: &lt;http://trac.webkit.org/changeset/97891&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487114</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-19 16:24:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96155</attachid>
            <date>2011-06-06 17:06:46 -0700</date>
            <delta_ts>2011-06-06 17:08:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62166-20110606170644.patch</filename>
            <type>text/plain</type>
            <size>10457</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgxOTYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3OTdiNzg0Mzg1Zjk2YWMyYTAyNTJhMDkyN2Q5YjViYmI4
ZDIwYzg4Li5jZDBjMjFmZmIyOGIwOWEwMDE2NGM1MDhlY2I2MWM0NTIyZmZiYjk2IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTEtMDYtMDYgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHN1Z2dlc3Qtbm9t
aW5hdGlvbnMgY29tbWFuZCB0byB3ZWJraXQtcGF0Y2ggZm9yIGNvbXB1dGluZyBwb3RlbnRpYWwg
Y29tbWl0dGVyL3Jldmlld2VyIG5vbWluYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjE2NgorCisgICAgICAgIFRoZSBzY3JpcHQgc2hvd3Mg
YSBsaXN0IG9mIHBlb3BsZSB3aG8gaGF2ZSBleGNlZWRlZCB0aGUgcmVjb21tZW5kZWQKKyAgICAg
ICAgbWluaW11bSBudW1iZXIgb2YgKnJldmlld2VkKiBwYXRjaGVzIGZvciBjb21taXR0ZXIvcmV2
aWV3ZXIgc3RhdHVzCisgICAgICAgIHdpdGhpbiB0aGUgbGFzdCA5IG1vbnRocy4KKyAgICAgICAg
VGhpcyBtb3N0bHkgbWFrZXMgaXQgZWFzeSBmb3IgbWUgdG8gbWFrZSBzdXJlIHRoYXQgc29tZW9u
ZSB3aG8gaXMKKyAgICAgICAgcXVpZXRseSB1c2luZyB0aGUgY29tbWl0LXF1ZXVlIGRvZXNuJ3Qg
Z2V0IGZvcmdvdHRlbiBmb3IgZXZlbnR1YWwKKyAgICAgICAgY29tbWl0dGVyIG5vbWluYXRpb24u
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2cu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL19faW5pdF9fLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5h
dGlvbnMucHk6IEFkZGVkLgorCiAyMDExLTA2LTA2ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5z
b25AaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXggdGhlIEdUSysgYnVpbGQgYnkgZW5zdXJpbmcg
dGhhdCB0aGUgYXV0b2dlbmVyYXRlZCBzb3VyY2VzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2cucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2cucHkKaW5kZXggNmVlODMxNmI5NzUzMWU5
YTVmODRiM2JjNTMwOWI3ZjBhNzNiZDJmOS4uY2U2YzJiZGM0YzRlZjlhMDk4ZDI2Mzc5NjYxNzdi
ZWMxZWZhYWMyZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvY2hhbmdlbG9nLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L2NoYW5nZWxvZy5weQpAQCAtNzQsNiArNzQsMTAgQEAgY2xhc3MgQ2hhbmdlTG9nRW50
cnkob2JqZWN0KToKICAgICAjIGUuZy4gMjAwOS0wNi0wMyAgRXJpYyBTZWlkZWwgIDxlcmljQHdl
YmtpdC5vcmc+CiAgICAgZGF0ZV9saW5lX3JlZ2V4cCA9IHInXig/UDxkYXRlPlxkezR9LVxkezJ9
LVxkezJ9KVxzKyg/UDxuYW1lPi4rPylccys8KD9QPGVtYWlsPltePD5dKyk+JCcKIAorICAgICMg
ZS5nLiBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKyAgICAjIChEaXNjYXJkIGV2ZXJ5dGhpbmcg
YWZ0ZXIgdGhlIGZpcnN0IHBlcmlvZCB0byBtYXRjaCBtb3JlIGludmFsaWQgbGluZXMuKQorICAg
IHJldmlld2VkX2J5X3JlZ2V4cCA9IHInXlxzK1Jldmlld2VkIGJ5ICg/UDxyZXZpZXdlcj4uKj8p
W1wuLF0/XHMqJCcKKwogICAgICMgZS5nLiA9PSBSb2xsZWQgb3ZlciB0byBDaGFuZ2VMb2ctMjAx
MS0wMi0xNiA9PQogICAgIHJvbGxlZF9vdmVyX3JlZ2V4cCA9IHInXj09IFJvbGxlZCBvdmVyIHRv
IENoYW5nZUxvZy1cZHs0fS1cZHsyfS1cZHsyfSA9PSQnCiAKQEAgLTkxLDcgKzk1LDcgQEAgY2xh
c3MgQ2hhbmdlTG9nRW50cnkob2JqZWN0KToKICAgICAgICAgc2VsZi5fYXV0aG9yX25hbWUgPSBt
YXRjaC5ncm91cCgibmFtZSIpIGlmIG1hdGNoIGVsc2UgTm9uZQogICAgICAgICBzZWxmLl9hdXRo
b3JfZW1haWwgPSBtYXRjaC5ncm91cCgiZW1haWwiKSBpZiBtYXRjaCBlbHNlIE5vbmUKIAotICAg
ICAgICBtYXRjaCA9IHJlLnNlYXJjaCgiXlxzK1Jldmlld2VkIGJ5ICg/UDxyZXZpZXdlcj4uKj8p
W1wuLF0/XHMqJCIsIHNlbGYuX2NvbnRlbnRzLCByZS5NVUxUSUxJTkUpICMgRGlzY2FyZCBldmVy
eXRoaW5nIGFmdGVyIHRoZSBmaXJzdCBwZXJpb2QKKyAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2go
c2VsZi5yZXZpZXdlZF9ieV9yZWdleHAsIHNlbGYuX2NvbnRlbnRzLCByZS5NVUxUSUxJTkUpCiAg
ICAgICAgIHNlbGYuX3Jldmlld2VyX3RleHQgPSBtYXRjaC5ncm91cCgicmV2aWV3ZXIiKSBpZiBt
YXRjaCBlbHNlIE5vbmUKIAogICAgICAgICBzZWxmLl9yZXZpZXdlciA9IHNlbGYuX2NvbW1pdHRl
cl9saXN0LmNvbW1pdHRlcl9ieV9uYW1lKHNlbGYuX3Jldmlld2VyX3RleHQpCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvX19pbml0X18ucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvX19pbml0X18ucHkKaW5kZXggMjZiZDE5
NTZhNTVkODc4YTUzNjEyMTg5ZjljNTYwZjg5MWRlZDdlYy4uMzUyZTI5OWE3ZmE0YjYxMzc4YTk0
N2JhNjU0ODAyNzhhNjMyMjI5YyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL19faW5pdF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9fX2luaXRfXy5weQpAQCAtMTMsMyArMTMsNCBAQCBmcm9tIHdlYmtpdHB5LnRv
b2wuY29tbWFuZHMucmViYXNlbGluZXNlcnZlciBpbXBvcnQgUmViYXNlbGluZVNlcnZlcgogZnJv
bSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnJvbGwgaW1wb3J0ICoKIGZyb20gd2Via2l0cHkudG9v
bC5jb21tYW5kcy5zaGVyaWZmYm90IGltcG9ydCAqCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFu
ZHMudXBsb2FkIGltcG9ydCAqCitmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuc3VnZ2VzdG5v
bWluYXRpb25zIGltcG9ydCAqCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9ucy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OTNkNWQx
MzdjNDcxODMzMmY2OGYwMjkzMWE3ZTRkZGZlOWUyZjQxCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9ucy5weQpA
QCAtMCwwICsxLDE0MiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIwor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisj
IGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisj
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCByZQorZnJvbSBvcHRwYXJz
ZSBpbXBvcnQgbWFrZV9vcHRpb24KK2ltcG9ydCBwcHJpbnQKKworZnJvbSB3ZWJraXRweS50b29s
IGltcG9ydCBzdGVwcworCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcuY29tbWl0dGVycyBp
bXBvcnQgQ29tbWl0dGVyTGlzdAorZnJvbSB3ZWJraXRweS50b29sLm11bHRpY29tbWFuZHRvb2wg
aW1wb3J0IEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kCisKK2Zyb20gd2Via2l0cHkuY29tbW9u
LmNoZWNrb3V0LmNoYW5nZWxvZyBpbXBvcnQgQ2hhbmdlTG9nRW50cnkKK2Zyb20gd2Via2l0cHku
dG9vbC5ncmFtbWFyIGltcG9ydCBqb2luX3dpdGhfc2VwYXJhdG9ycworCisKK2NsYXNzIFN1Z2dl
c3ROb21pbmF0aW9ucyhBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CisgICAgbmFtZSA9ICJz
dWdnZXN0LW5vbWluYXRpb25zIgorICAgIGhlbHBfdGV4dCA9ICJTdWdnZXN0IGNvbnRyaWJ1dG9y
cyBmb3IgY29tbWl0dGVyL3Jldmlld2VyIG5vbWluYXRpb25zIgorCisgICAgZGVmIF9faW5pdF9f
KHNlbGYpOgorICAgICAgICBvcHRpb25zID0gWworICAgICAgICAgICAgc3RlcHMuT3B0aW9ucy5n
aXRfY29tbWl0LAorICAgICAgICBdCisgICAgICAgIEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5k
Ll9faW5pdF9fKHNlbGYsIG9wdGlvbnM9b3B0aW9ucykKKyAgICAgICAgIyBGSVhNRTogVGhpcyBz
aG91bGQgcHJvYmFibHkgYmUgb24gdGhlIHRvb2wgc29tZXdoZXJlLgorICAgICAgICBzZWxmLl9j
b21taXR0ZXJfbGlzdCA9IENvbW1pdHRlckxpc3QoKQorICAgICAgICBzZWxmLl9lbWFpbF90b19u
YW1lID0ge30KKworICAgIHJldmlld2VyX21pbmltdW0gPSA4MAorICAgIGNvbW1pdHRlcl9taW5p
bXVtID0gMTAKKworICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIG1vdmUgdG8gc2NtLnB5CisgICAg
ZGVmIF9yZWNlbnRfY29tbWl0X21lc3NhZ2VzKHNlbGYpOgorICAgICAgICAjIEZJWE1FOiBXZSBz
aG91bGQgbWFrZSB0aGlzIGxpbWl0IGNvbmZpZ3VyYWJsZS4KKyAgICAgICAgZ2l0X2xvZyA9IHNl
bGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ2xvZycsICctLXNpbmNlPSI5
IG1vbnRocyBhZ28iJ10pCisgICAgICAgIG1hdGNoX2dldF9sb2dfbGluZXMgPSByZS5jb21waWxl
KHIiXlxTLiokIiwgcmUuTVVMVElMSU5FKQorICAgICAgICBtYXRjaF9sZWFkaW5nX2luZGVudCA9
IHJlLmNvbXBpbGUociJeXHN7NH0iLCByZS5NVUxUSUxJTkUpCisgICAgICAgIG1hdGNoX2dpdF9z
dm5faWQgPSByZS5jb21waWxlKHIiXG5cbmdpdC1zdm4taWQ6LipcbiIsIHJlLk1VTFRJTElORSkg
ICMgVGhpcyBhc3N1bWVzIHdlJ3ZlIHVuaW5kZW50ZWQgYWxyZWFkeS4KKworICAgICAgICBmb3Ig
bWVzc2FnZSBpbiByZS5zcGxpdChyImNvbW1pdCBcd3s0MH0iLCBnaXRfbG9nKToKKyAgICAgICAg
ICAgICMgUmVtb3ZlIGFueSBsaW5lcyBmcm9tIGdpdCBhbmQgdW5pbmRlbnQgYWxsIHRoZSBsaW5l
cworICAgICAgICAgICAgKG1lc3NhZ2UsIF8pID0gbWF0Y2hfZ2V0X2xvZ19saW5lcy5zdWJuKCIi
LCBtZXNzYWdlKQorICAgICAgICAgICAgKG1lc3NhZ2UsIF8pID0gbWF0Y2hfbGVhZGluZ19pbmRl
bnQuc3VibigiIiwgbWVzc2FnZSkKKyAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9IG1hdGNoX2dp
dF9zdm5faWQuc3VibigiIiwgbWVzc2FnZSkKKyAgICAgICAgICAgIHlpZWxkIG1lc3NhZ2UKKwor
ICAgIGRlZiBfY291bnRfcmVjZW50X3BhdGNoZXMoc2VsZik6CisgICAgICAgIGF1dGhvcl9jb3Vu
dHMgPSB7fQorICAgICAgICAjIFRoaXMgZW50aXJlIGJsb2NrIGNvdWxkIGJlIHdyaXR0ZW4gYXMg
YSBtYXAvcmVkdWNlIG92ZXIgdGhlIG1lc3NhZ2VzLgorICAgICAgICBmb3IgbWVzc2FnZSBpbiBz
ZWxmLl9yZWNlbnRfY29tbWl0X21lc3NhZ2VzKCk6CisgICAgICAgICAgICAjIEZJWE1FOiBUaGlz
IHNob3VsZCB1c2UgQ2hhbmdlTG9nRW50cnkgdG8gZG8gdGhlIGVudGlyZSBwYXJzZSBpbnN0ZWFk
CisgICAgICAgICAgICAjIG9mIGdyYWJiaW5nIGF0IGl0cyByZWdleHBzLgorICAgICAgICAgICAg
ZGF0ZWxpbmVfbWF0Y2ggPSByZS5tYXRjaChDaGFuZ2VMb2dFbnRyeS5kYXRlX2xpbmVfcmVnZXhw
LCBtZXNzYWdlLCByZS5NVUxUSUxJTkUpCisgICAgICAgICAgICBpZiBub3QgZGF0ZWxpbmVfbWF0
Y2g6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgYXV0aG9yX2VtYWls
ID0gZGF0ZWxpbmVfbWF0Y2guZ3JvdXAoImVtYWlsIikKKyAgICAgICAgICAgIGlmIG5vdCBhdXRo
b3JfZW1haWw6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgIyBXZSBv
bmx5IGNhcmUgYWJvdXQgcmV2aWV3ZWQgcGF0Y2hlcywgc28gbWFrZSBzdXJlIGl0IGhhcyBhIHZh
bGlkIHJldmlld2VyIGxpbmUuCisgICAgICAgICAgICByZXZpZXdlcl9tYXRjaCA9IHJlLnNlYXJj
aChDaGFuZ2VMb2dFbnRyeS5yZXZpZXdlZF9ieV9yZWdleHAsIG1lc3NhZ2UsIHJlLk1VTFRJTElO
RSkKKyAgICAgICAgICAgICMgV2UgbWlnaHQgYWxzbyB3YW50IHRvIHZhbGlkYXRlIHRoZSByZXZp
ZXdlciBuYW1lIGFnYWluc3QgdGhlIGNvbW1pdHRlciBsaXN0LgorICAgICAgICAgICAgaWYgbm90
IHJldmlld2VyX21hdGNoIG9yIG5vdCByZXZpZXdlcl9tYXRjaC5ncm91cCgicmV2aWV3ZXIiKToK
KyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIEtlZXAgYSBzaWRlIGRp
Y3Rpb25hcnkgb2YgdGhlIGxhc3QgbmFtZSB3ZSBzYXcgZm9yIGFuIGVtYWlsIHNvIHdlIGNhbiB1
c2UgaXQgZm9yIGRpc3BsYXkgbGF0ZXIuCisgICAgICAgICAgICBzZWxmLl9lbWFpbF90b19uYW1l
W2F1dGhvcl9lbWFpbF0gPSBkYXRlbGluZV9tYXRjaC5ncm91cCgibmFtZSIpCisgICAgICAgICAg
ICBhdXRob3JfY291bnRzW2F1dGhvcl9lbWFpbF0gPSBhdXRob3JfY291bnRzLmdldChhdXRob3Jf
ZW1haWwsIDApICsgMQorICAgICAgICByZXR1cm4gYXV0aG9yX2NvdW50cworCisgICAgZGVmIF9j
b2xsZWN0X25vbWluYXRpb25zKHNlbGYsIHBhdGNoX2NvdW50c19ieV9lbWFpbCk6CisgICAgICAg
IG5vbWluYXRpb25zID0gW10KKyAgICAgICAgZm9yIGF1dGhvcl9lbWFpbCwgcGF0Y2hfY291bnQg
aW4gcGF0Y2hfY291bnRzX2J5X2VtYWlsLml0ZW1zKCk6CisgICAgICAgICAgICByb2xlcyA9IFtd
CisgICAgICAgICAgICBhdXRob3JfbmFtZSA9IHNlbGYuX2VtYWlsX3RvX25hbWUuZ2V0KGF1dGhv
cl9lbWFpbCkKKyAgICAgICAgICAgIGNvbnRyaWJ1dG9yID0gc2VsZi5fY29tbWl0dGVyX2xpc3Qu
Y29udHJpYnV0b3JfYnlfZW1haWwoYXV0aG9yX2VtYWlsKQorICAgICAgICAgICAgaWYgbm90IGNv
bnRyaWJ1dG9yOgorICAgICAgICAgICAgICAgIGNvbnRyaWJ1dG9yID0gc2VsZi5fY29tbWl0dGVy
X2xpc3QuY29udHJpYnV0b3JfYnlfbmFtZShhdXRob3JfbmFtZSkKKyAgICAgICAgICAgICAgICBp
ZiBjb250cmlidXRvcjoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgIldhcm5pbmc6ICVzIGlz
IG1pc3NpbmcgJyVzJyBmcm9tIGNvbW1pdHRlcnMucHkiICUgKGNvbnRyaWJ1dG9yLCBhdXRob3Jf
ZW1haWwpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGlmIHBh
dGNoX2NvdW50ID49IHNlbGYuY29tbWl0dGVyX21pbmltdW0gYW5kIChub3QgY29udHJpYnV0b3Ig
b3Igbm90IGNvbnRyaWJ1dG9yLmNhbl9jb21taXQpOgorICAgICAgICAgICAgICAgIHJvbGVzLmFw
cGVuZCgiY29tbWl0dGVyIikKKyAgICAgICAgICAgIGlmIHBhdGNoX2NvdW50ID49IHNlbGYucmV2
aWV3ZXJfbWluaW11bSAgYW5kIChub3QgY29udHJpYnV0b3Igb3Igbm90IGNvbnRyaWJ1dG9yLmNh
bl9yZXZpZXcpOgorICAgICAgICAgICAgICAgIHJvbGVzLmFwcGVuZCgicmV2aWV3ZXIiKQorICAg
ICAgICAgICAgaWYgcm9sZXM6CisgICAgICAgICAgICAgICAgbm9taW5hdGlvbnMuYXBwZW5kKHsK
KyAgICAgICAgICAgICAgICAgICAgJ3JvbGVzJzogcm9sZXMsCisgICAgICAgICAgICAgICAgICAg
ICdhdXRob3JfbmFtZSc6IGF1dGhvcl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAnYXV0aG9y
X2VtYWlsJzogYXV0aG9yX2VtYWlsLAorICAgICAgICAgICAgICAgICAgICAncGF0Y2hfY291bnQn
OiBwYXRjaF9jb3VudCwKKyAgICAgICAgICAgICAgICB9KQorICAgICAgICByZXR1cm4gbm9taW5h
dGlvbnMKKworICAgIGRlZiBfcHJpbnRfbm9taW5hdGlvbnMoc2VsZiwgbm9taW5hdGlvbnMpOgor
ICAgICAgICBkZWYgbm9taW5hdGlvbl9jbXAoYSwgYik6CisgICAgICAgICAgICByb2xlc19yZXN1
bHQgPSBjbXAoYVsncm9sZXMnXSwgYlsncm9sZXMnXSkKKyAgICAgICAgICAgIGlmIHJvbGVzX3Jl
c3VsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gLXJvbGVzX3Jlc3VsdAorICAgICAgICAgICAg
Y291bnRfcmVzdWx0ID0gY21wKGFbJ3BhdGNoX2NvdW50J10sIGJbJ3BhdGNoX2NvdW50J10pCisg
ICAgICAgICAgICBpZiBjb3VudF9yZXN1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIC1jb3Vu
dF9yZXN1bHQKKyAgICAgICAgICAgIHJldHVybiBjbXAoYVsnYXV0aG9yX25hbWUnXSwgYlsnYXV0
aG9yX25hbWUnXSkKKworICAgICAgICBmb3Igbm9taW5hdGlvbiBpbiBzb3J0ZWQobm9taW5hdGlv
bnMsIG5vbWluYXRpb25fY21wKToKKyAgICAgICAgICAgICMgVGhpcyBpcyBhIGxpdHRsZSBiaXQg
b2YgYSBoYWNrLCBidXQgaXRzIGNvbnZpZW5lbnQgdG8ganVzdCBwYXNzIHRoZSBub21pbmF0aW9u
IGRpY3Rpb25hcnkgdG8gdGhlIGZvcm1hdGluZyBvcGVyYXRvci4KKyAgICAgICAgICAgIG5vbWlu
YXRpb25bJ3JvbGVzX3N0cmluZyddID0gam9pbl93aXRoX3NlcGFyYXRvcnMobm9taW5hdGlvblsn
cm9sZXMnXSkudXBwZXIoKQorICAgICAgICAgICAgcHJpbnQgIiUocm9sZXNfc3RyaW5nKXM6ICUo
YXV0aG9yX25hbWUpcyAoJShhdXRob3JfZW1haWwpcykgaGFzICUocGF0Y2hfY291bnQpcyByZXZp
ZXdlZCBwYXRjaGVzIiAlIG5vbWluYXRpb24KKworICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlv
bnMsIGFyZ3MsIHRvb2wpOgorICAgICAgICBwYXRjaF9jb3VudHNfYnlfZW1haWwgPSBzZWxmLl9j
b3VudF9yZWNlbnRfcGF0Y2hlcygpCisgICAgICAgIG5vbWluYXRpb25zID0gc2VsZi5fY29sbGVj
dF9ub21pbmF0aW9ucyhwYXRjaF9jb3VudHNfYnlfZW1haWwpCisgICAgICAgIHNlbGYuX3ByaW50
X25vbWluYXRpb25zKG5vbWluYXRpb25zKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96156</attachid>
            <date>2011-06-06 17:08:30 -0700</date>
            <delta_ts>2011-09-15 14:23:18 -0700</delta_ts>
            <desc>sorted the includes</desc>
            <filename>bug-62166-20110606170829.patch</filename>
            <type>text/plain</type>
            <size>10384</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgxOTYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3OTdiNzg0Mzg1Zjk2YWMyYTAyNTJhMDkyN2Q5YjViYmI4
ZDIwYzg4Li5jZDBjMjFmZmIyOGIwOWEwMDE2NGM1MDhlY2I2MWM0NTIyZmZiYjk2IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTEtMDYtMDYgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHN1Z2dlc3Qtbm9t
aW5hdGlvbnMgY29tbWFuZCB0byB3ZWJraXQtcGF0Y2ggZm9yIGNvbXB1dGluZyBwb3RlbnRpYWwg
Y29tbWl0dGVyL3Jldmlld2VyIG5vbWluYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjE2NgorCisgICAgICAgIFRoZSBzY3JpcHQgc2hvd3Mg
YSBsaXN0IG9mIHBlb3BsZSB3aG8gaGF2ZSBleGNlZWRlZCB0aGUgcmVjb21tZW5kZWQKKyAgICAg
ICAgbWluaW11bSBudW1iZXIgb2YgKnJldmlld2VkKiBwYXRjaGVzIGZvciBjb21taXR0ZXIvcmV2
aWV3ZXIgc3RhdHVzCisgICAgICAgIHdpdGhpbiB0aGUgbGFzdCA5IG1vbnRocy4KKyAgICAgICAg
VGhpcyBtb3N0bHkgbWFrZXMgaXQgZWFzeSBmb3IgbWUgdG8gbWFrZSBzdXJlIHRoYXQgc29tZW9u
ZSB3aG8gaXMKKyAgICAgICAgcXVpZXRseSB1c2luZyB0aGUgY29tbWl0LXF1ZXVlIGRvZXNuJ3Qg
Z2V0IGZvcmdvdHRlbiBmb3IgZXZlbnR1YWwKKyAgICAgICAgY29tbWl0dGVyIG5vbWluYXRpb24u
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2cu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL19faW5pdF9fLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5h
dGlvbnMucHk6IEFkZGVkLgorCiAyMDExLTA2LTA2ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5z
b25AaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXggdGhlIEdUSysgYnVpbGQgYnkgZW5zdXJpbmcg
dGhhdCB0aGUgYXV0b2dlbmVyYXRlZCBzb3VyY2VzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2cucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2cucHkKaW5kZXggNmVlODMxNmI5NzUzMWU5
YTVmODRiM2JjNTMwOWI3ZjBhNzNiZDJmOS4uY2U2YzJiZGM0YzRlZjlhMDk4ZDI2Mzc5NjYxNzdi
ZWMxZWZhYWMyZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvY2hhbmdlbG9nLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L2NoYW5nZWxvZy5weQpAQCAtNzQsNiArNzQsMTAgQEAgY2xhc3MgQ2hhbmdlTG9nRW50
cnkob2JqZWN0KToKICAgICAjIGUuZy4gMjAwOS0wNi0wMyAgRXJpYyBTZWlkZWwgIDxlcmljQHdl
YmtpdC5vcmc+CiAgICAgZGF0ZV9saW5lX3JlZ2V4cCA9IHInXig/UDxkYXRlPlxkezR9LVxkezJ9
LVxkezJ9KVxzKyg/UDxuYW1lPi4rPylccys8KD9QPGVtYWlsPltePD5dKyk+JCcKIAorICAgICMg
ZS5nLiBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKyAgICAjIChEaXNjYXJkIGV2ZXJ5dGhpbmcg
YWZ0ZXIgdGhlIGZpcnN0IHBlcmlvZCB0byBtYXRjaCBtb3JlIGludmFsaWQgbGluZXMuKQorICAg
IHJldmlld2VkX2J5X3JlZ2V4cCA9IHInXlxzK1Jldmlld2VkIGJ5ICg/UDxyZXZpZXdlcj4uKj8p
W1wuLF0/XHMqJCcKKwogICAgICMgZS5nLiA9PSBSb2xsZWQgb3ZlciB0byBDaGFuZ2VMb2ctMjAx
MS0wMi0xNiA9PQogICAgIHJvbGxlZF9vdmVyX3JlZ2V4cCA9IHInXj09IFJvbGxlZCBvdmVyIHRv
IENoYW5nZUxvZy1cZHs0fS1cZHsyfS1cZHsyfSA9PSQnCiAKQEAgLTkxLDcgKzk1LDcgQEAgY2xh
c3MgQ2hhbmdlTG9nRW50cnkob2JqZWN0KToKICAgICAgICAgc2VsZi5fYXV0aG9yX25hbWUgPSBt
YXRjaC5ncm91cCgibmFtZSIpIGlmIG1hdGNoIGVsc2UgTm9uZQogICAgICAgICBzZWxmLl9hdXRo
b3JfZW1haWwgPSBtYXRjaC5ncm91cCgiZW1haWwiKSBpZiBtYXRjaCBlbHNlIE5vbmUKIAotICAg
ICAgICBtYXRjaCA9IHJlLnNlYXJjaCgiXlxzK1Jldmlld2VkIGJ5ICg/UDxyZXZpZXdlcj4uKj8p
W1wuLF0/XHMqJCIsIHNlbGYuX2NvbnRlbnRzLCByZS5NVUxUSUxJTkUpICMgRGlzY2FyZCBldmVy
eXRoaW5nIGFmdGVyIHRoZSBmaXJzdCBwZXJpb2QKKyAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2go
c2VsZi5yZXZpZXdlZF9ieV9yZWdleHAsIHNlbGYuX2NvbnRlbnRzLCByZS5NVUxUSUxJTkUpCiAg
ICAgICAgIHNlbGYuX3Jldmlld2VyX3RleHQgPSBtYXRjaC5ncm91cCgicmV2aWV3ZXIiKSBpZiBt
YXRjaCBlbHNlIE5vbmUKIAogICAgICAgICBzZWxmLl9yZXZpZXdlciA9IHNlbGYuX2NvbW1pdHRl
cl9saXN0LmNvbW1pdHRlcl9ieV9uYW1lKHNlbGYuX3Jldmlld2VyX3RleHQpCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvX19pbml0X18ucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvX19pbml0X18ucHkKaW5kZXggMjZiZDE5
NTZhNTVkODc4YTUzNjEyMTg5ZjljNTYwZjg5MWRlZDdlYy4uMzUyZTI5OWE3ZmE0YjYxMzc4YTk0
N2JhNjU0ODAyNzhhNjMyMjI5YyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL19faW5pdF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9fX2luaXRfXy5weQpAQCAtMTMsMyArMTMsNCBAQCBmcm9tIHdlYmtpdHB5LnRv
b2wuY29tbWFuZHMucmViYXNlbGluZXNlcnZlciBpbXBvcnQgUmViYXNlbGluZVNlcnZlcgogZnJv
bSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnJvbGwgaW1wb3J0ICoKIGZyb20gd2Via2l0cHkudG9v
bC5jb21tYW5kcy5zaGVyaWZmYm90IGltcG9ydCAqCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFu
ZHMudXBsb2FkIGltcG9ydCAqCitmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuc3VnZ2VzdG5v
bWluYXRpb25zIGltcG9ydCAqCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9ucy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MmJiYjAw
MTc2NGRjZTNjNWJkNmUwNzFhZTQ0ZGI3YWEyMWI0MTQwCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9ucy5weQpA
QCAtMCwwICsxLDEzOCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0Ogor
IworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gb3B0cGFyc2UgaW1wb3J0
IG1ha2Vfb3B0aW9uCitpbXBvcnQgcmUKKworZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQu
Y2hhbmdlbG9nIGltcG9ydCBDaGFuZ2VMb2dFbnRyeQorZnJvbSB3ZWJraXRweS5jb21tb24uY29u
ZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlckxpc3QKK2Zyb20gd2Via2l0cHkudG9vbCBp
bXBvcnQgc3RlcHMKK2Zyb20gd2Via2l0cHkudG9vbC5ncmFtbWFyIGltcG9ydCBqb2luX3dpdGhf
c2VwYXJhdG9ycworZnJvbSB3ZWJraXRweS50b29sLm11bHRpY29tbWFuZHRvb2wgaW1wb3J0IEFi
c3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kCisKKworY2xhc3MgU3VnZ2VzdE5vbWluYXRpb25zKEFi
c3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToKKyAgICBuYW1lID0gInN1Z2dlc3Qtbm9taW5hdGlv
bnMiCisgICAgaGVscF90ZXh0ID0gIlN1Z2dlc3QgY29udHJpYnV0b3JzIGZvciBjb21taXR0ZXIv
cmV2aWV3ZXIgbm9taW5hdGlvbnMiCisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAg
IG9wdGlvbnMgPSBbCisgICAgICAgICAgICBzdGVwcy5PcHRpb25zLmdpdF9jb21taXQsCisgICAg
ICAgIF0KKyAgICAgICAgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQuX19pbml0X18oc2VsZiwg
b3B0aW9ucz1vcHRpb25zKQorICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBi
ZSBvbiB0aGUgdG9vbCBzb21ld2hlcmUuCisgICAgICAgIHNlbGYuX2NvbW1pdHRlcl9saXN0ID0g
Q29tbWl0dGVyTGlzdCgpCisgICAgICAgIHNlbGYuX2VtYWlsX3RvX25hbWUgPSB7fQorCisgICAg
cmV2aWV3ZXJfbWluaW11bSA9IDgwCisgICAgY29tbWl0dGVyX21pbmltdW0gPSAxMAorCisgICAg
IyBGSVhNRTogVGhpcyBzaG91bGQgbW92ZSB0byBzY20ucHkKKyAgICBkZWYgX3JlY2VudF9jb21t
aXRfbWVzc2FnZXMoc2VsZik6CisgICAgICAgICMgRklYTUU6IFdlIHNob3VsZCBtYWtlIHRoaXMg
bGltaXQgY29uZmlndXJhYmxlLgorICAgICAgICBnaXRfbG9nID0gc2VsZi5fdG9vbC5leGVjdXRp
dmUucnVuX2NvbW1hbmQoWydnaXQnLCAnbG9nJywgJy0tc2luY2U9IjkgbW9udGhzIGFnbyInXSkK
KyAgICAgICAgbWF0Y2hfZ2V0X2xvZ19saW5lcyA9IHJlLmNvbXBpbGUociJeXFMuKiQiLCByZS5N
VUxUSUxJTkUpCisgICAgICAgIG1hdGNoX2xlYWRpbmdfaW5kZW50ID0gcmUuY29tcGlsZShyIl5c
c3s0fSIsIHJlLk1VTFRJTElORSkKKyAgICAgICAgbWF0Y2hfZ2l0X3N2bl9pZCA9IHJlLmNvbXBp
bGUociJcblxuZ2l0LXN2bi1pZDouKlxuIiwgcmUuTVVMVElMSU5FKSAgIyBUaGlzIGFzc3VtZXMg
d2UndmUgdW5pbmRlbnRlZCBhbHJlYWR5LgorCisgICAgICAgIGZvciBtZXNzYWdlIGluIHJlLnNw
bGl0KHIiY29tbWl0IFx3ezQwfSIsIGdpdF9sb2cpOgorICAgICAgICAgICAgIyBSZW1vdmUgYW55
IGxpbmVzIGZyb20gZ2l0IGFuZCB1bmluZGVudCBhbGwgdGhlIGxpbmVzCisgICAgICAgICAgICAo
bWVzc2FnZSwgXykgPSBtYXRjaF9nZXRfbG9nX2xpbmVzLnN1Ym4oIiIsIG1lc3NhZ2UpCisgICAg
ICAgICAgICAobWVzc2FnZSwgXykgPSBtYXRjaF9sZWFkaW5nX2luZGVudC5zdWJuKCIiLCBtZXNz
YWdlKQorICAgICAgICAgICAgKG1lc3NhZ2UsIF8pID0gbWF0Y2hfZ2l0X3N2bl9pZC5zdWJuKCIi
LCBtZXNzYWdlKQorICAgICAgICAgICAgeWllbGQgbWVzc2FnZQorCisgICAgZGVmIF9jb3VudF9y
ZWNlbnRfcGF0Y2hlcyhzZWxmKToKKyAgICAgICAgYXV0aG9yX2NvdW50cyA9IHt9CisgICAgICAg
ICMgVGhpcyBlbnRpcmUgYmxvY2sgY291bGQgYmUgd3JpdHRlbiBhcyBhIG1hcC9yZWR1Y2Ugb3Zl
ciB0aGUgbWVzc2FnZXMuCisgICAgICAgIGZvciBtZXNzYWdlIGluIHNlbGYuX3JlY2VudF9jb21t
aXRfbWVzc2FnZXMoKToKKyAgICAgICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHVzZSBDaGFu
Z2VMb2dFbnRyeSB0byBkbyB0aGUgZW50aXJlIHBhcnNlIGluc3RlYWQKKyAgICAgICAgICAgICMg
b2YgZ3JhYmJpbmcgYXQgaXRzIHJlZ2V4cHMuCisgICAgICAgICAgICBkYXRlbGluZV9tYXRjaCA9
IHJlLm1hdGNoKENoYW5nZUxvZ0VudHJ5LmRhdGVfbGluZV9yZWdleHAsIG1lc3NhZ2UsIHJlLk1V
TFRJTElORSkKKyAgICAgICAgICAgIGlmIG5vdCBkYXRlbGluZV9tYXRjaDoKKyAgICAgICAgICAg
ICAgICBjb250aW51ZQorCisgICAgICAgICAgICBhdXRob3JfZW1haWwgPSBkYXRlbGluZV9tYXRj
aC5ncm91cCgiZW1haWwiKQorICAgICAgICAgICAgaWYgbm90IGF1dGhvcl9lbWFpbDoKKyAgICAg
ICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIFdlIG9ubHkgY2FyZSBhYm91dCBy
ZXZpZXdlZCBwYXRjaGVzLCBzbyBtYWtlIHN1cmUgaXQgaGFzIGEgdmFsaWQgcmV2aWV3ZXIgbGlu
ZS4KKyAgICAgICAgICAgIHJldmlld2VyX21hdGNoID0gcmUuc2VhcmNoKENoYW5nZUxvZ0VudHJ5
LnJldmlld2VkX2J5X3JlZ2V4cCwgbWVzc2FnZSwgcmUuTVVMVElMSU5FKQorICAgICAgICAgICAg
IyBXZSBtaWdodCBhbHNvIHdhbnQgdG8gdmFsaWRhdGUgdGhlIHJldmlld2VyIG5hbWUgYWdhaW5z
dCB0aGUgY29tbWl0dGVyIGxpc3QuCisgICAgICAgICAgICBpZiBub3QgcmV2aWV3ZXJfbWF0Y2gg
b3Igbm90IHJldmlld2VyX21hdGNoLmdyb3VwKCJyZXZpZXdlciIpOgorICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgS2VlcCBhIHNpZGUgZGljdGlvbmFyeSBvZiB0aGUg
bGFzdCBuYW1lIHdlIHNhdyBmb3IgYW4gZW1haWwgc28gd2UgY2FuIHVzZSBpdCBmb3IgZGlzcGxh
eSBsYXRlci4KKyAgICAgICAgICAgIHNlbGYuX2VtYWlsX3RvX25hbWVbYXV0aG9yX2VtYWlsXSA9
IGRhdGVsaW5lX21hdGNoLmdyb3VwKCJuYW1lIikKKyAgICAgICAgICAgIGF1dGhvcl9jb3VudHNb
YXV0aG9yX2VtYWlsXSA9IGF1dGhvcl9jb3VudHMuZ2V0KGF1dGhvcl9lbWFpbCwgMCkgKyAxCisg
ICAgICAgIHJldHVybiBhdXRob3JfY291bnRzCisKKyAgICBkZWYgX2NvbGxlY3Rfbm9taW5hdGlv
bnMoc2VsZiwgcGF0Y2hfY291bnRzX2J5X2VtYWlsKToKKyAgICAgICAgbm9taW5hdGlvbnMgPSBb
XQorICAgICAgICBmb3IgYXV0aG9yX2VtYWlsLCBwYXRjaF9jb3VudCBpbiBwYXRjaF9jb3VudHNf
YnlfZW1haWwuaXRlbXMoKToKKyAgICAgICAgICAgIHJvbGVzID0gW10KKyAgICAgICAgICAgIGF1
dGhvcl9uYW1lID0gc2VsZi5fZW1haWxfdG9fbmFtZS5nZXQoYXV0aG9yX2VtYWlsKQorICAgICAg
ICAgICAgY29udHJpYnV0b3IgPSBzZWxmLl9jb21taXR0ZXJfbGlzdC5jb250cmlidXRvcl9ieV9l
bWFpbChhdXRob3JfZW1haWwpCisgICAgICAgICAgICBpZiBub3QgY29udHJpYnV0b3I6CisgICAg
ICAgICAgICAgICAgY29udHJpYnV0b3IgPSBzZWxmLl9jb21taXR0ZXJfbGlzdC5jb250cmlidXRv
cl9ieV9uYW1lKGF1dGhvcl9uYW1lKQorICAgICAgICAgICAgICAgIGlmIGNvbnRyaWJ1dG9yOgor
ICAgICAgICAgICAgICAgICAgICBwcmludCAiV2FybmluZzogJXMgaXMgbWlzc2luZyAnJXMnIGZy
b20gY29tbWl0dGVycy5weSIgJSAoY29udHJpYnV0b3IsIGF1dGhvcl9lbWFpbCkKKyAgICAgICAg
ICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgaWYgcGF0Y2hfY291bnQgPj0gc2Vs
Zi5jb21taXR0ZXJfbWluaW11bSBhbmQgKG5vdCBjb250cmlidXRvciBvciBub3QgY29udHJpYnV0
b3IuY2FuX2NvbW1pdCk6CisgICAgICAgICAgICAgICAgcm9sZXMuYXBwZW5kKCJjb21taXR0ZXIi
KQorICAgICAgICAgICAgaWYgcGF0Y2hfY291bnQgPj0gc2VsZi5yZXZpZXdlcl9taW5pbXVtICBh
bmQgKG5vdCBjb250cmlidXRvciBvciBub3QgY29udHJpYnV0b3IuY2FuX3Jldmlldyk6CisgICAg
ICAgICAgICAgICAgcm9sZXMuYXBwZW5kKCJyZXZpZXdlciIpCisgICAgICAgICAgICBpZiByb2xl
czoKKyAgICAgICAgICAgICAgICBub21pbmF0aW9ucy5hcHBlbmQoeworICAgICAgICAgICAgICAg
ICAgICAncm9sZXMnOiByb2xlcywKKyAgICAgICAgICAgICAgICAgICAgJ2F1dGhvcl9uYW1lJzog
YXV0aG9yX25hbWUsCisgICAgICAgICAgICAgICAgICAgICdhdXRob3JfZW1haWwnOiBhdXRob3Jf
ZW1haWwsCisgICAgICAgICAgICAgICAgICAgICdwYXRjaF9jb3VudCc6IHBhdGNoX2NvdW50LAor
ICAgICAgICAgICAgICAgIH0pCisgICAgICAgIHJldHVybiBub21pbmF0aW9ucworCisgICAgZGVm
IF9wcmludF9ub21pbmF0aW9ucyhzZWxmLCBub21pbmF0aW9ucyk6CisgICAgICAgIGRlZiBub21p
bmF0aW9uX2NtcChhLCBiKToKKyAgICAgICAgICAgIHJvbGVzX3Jlc3VsdCA9IGNtcChhWydyb2xl
cyddLCBiWydyb2xlcyddKQorICAgICAgICAgICAgaWYgcm9sZXNfcmVzdWx0OgorICAgICAgICAg
ICAgICAgIHJldHVybiAtcm9sZXNfcmVzdWx0CisgICAgICAgICAgICBjb3VudF9yZXN1bHQgPSBj
bXAoYVsncGF0Y2hfY291bnQnXSwgYlsncGF0Y2hfY291bnQnXSkKKyAgICAgICAgICAgIGlmIGNv
dW50X3Jlc3VsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gLWNvdW50X3Jlc3VsdAorICAgICAg
ICAgICAgcmV0dXJuIGNtcChhWydhdXRob3JfbmFtZSddLCBiWydhdXRob3JfbmFtZSddKQorCisg
ICAgICAgIGZvciBub21pbmF0aW9uIGluIHNvcnRlZChub21pbmF0aW9ucywgbm9taW5hdGlvbl9j
bXApOgorICAgICAgICAgICAgIyBUaGlzIGlzIGEgbGl0dGxlIGJpdCBvZiBhIGhhY2ssIGJ1dCBp
dHMgY29udmllbmVudCB0byBqdXN0IHBhc3MgdGhlIG5vbWluYXRpb24gZGljdGlvbmFyeSB0byB0
aGUgZm9ybWF0aW5nIG9wZXJhdG9yLgorICAgICAgICAgICAgbm9taW5hdGlvblsncm9sZXNfc3Ry
aW5nJ10gPSBqb2luX3dpdGhfc2VwYXJhdG9ycyhub21pbmF0aW9uWydyb2xlcyddKS51cHBlcigp
CisgICAgICAgICAgICBwcmludCAiJShyb2xlc19zdHJpbmcpczogJShhdXRob3JfbmFtZSlzICgl
KGF1dGhvcl9lbWFpbClzKSBoYXMgJShwYXRjaF9jb3VudClzIHJldmlld2VkIHBhdGNoZXMiICUg
bm9taW5hdGlvbgorCisgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6
CisgICAgICAgIHBhdGNoX2NvdW50c19ieV9lbWFpbCA9IHNlbGYuX2NvdW50X3JlY2VudF9wYXRj
aGVzKCkKKyAgICAgICAgbm9taW5hdGlvbnMgPSBzZWxmLl9jb2xsZWN0X25vbWluYXRpb25zKHBh
dGNoX2NvdW50c19ieV9lbWFpbCkKKyAgICAgICAgc2VsZi5fcHJpbnRfbm9taW5hdGlvbnMobm9t
aW5hdGlvbnMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107553</attachid>
            <date>2011-09-15 14:23:22 -0700</date>
            <delta_ts>2011-10-12 16:28:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62166-20110915142321.patch</filename>
            <type>text/plain</type>
            <size>15498</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUyMjEKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3ZTYwODA4NTM1MDg2NTE2ZjlkZmJjMzQwYWQ5NjNiNDE1
MDM3ZThjLi41YmIzYjViYThhMWE1Yjc1Njk4MWQ0NTYxNjBiOTYzMjFhNDkzNThmIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTEtMDYtMDYgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHN1Z2dlc3Qtbm9t
aW5hdGlvbnMgY29tbWFuZCB0byB3ZWJraXQtcGF0Y2ggZm9yIGNvbXB1dGluZyBwb3RlbnRpYWwg
Y29tbWl0dGVyL3Jldmlld2VyIG5vbWluYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjE2NgorCisgICAgICAgIFRoZSBzY3JpcHQgc2hvd3Mg
YSBsaXN0IG9mIHBlb3BsZSB3aG8gaGF2ZSBleGNlZWRlZCB0aGUgcmVjb21tZW5kZWQKKyAgICAg
ICAgbWluaW11bSBudW1iZXIgb2YgcmV2aWV3ZWQgcGF0Y2hlcyBmb3IgY29tbWl0dGVyL3Jldmll
d2VyIHN0YXR1cworICAgICAgICB3aXRoaW4gdGhlIGxhc3QgOSBtb250aHMuCisgICAgICAgIFRo
aXMgbW9zdGx5IG1ha2VzIGl0IGVhc3kgZm9yIG1lIHRvIG1ha2Ugc3VyZSB0aGF0IHNvbWVvbmUg
d2hvIGlzCisgICAgICAgIHF1aWV0bHkgdXNpbmcgdGhlIGNvbW1pdC1xdWV1ZSBkb2Vzbid0IGdl
dCBmb3Jnb3R0ZW4gZm9yIGV2ZW50dWFsCisgICAgICAgIGNvbW1pdHRlciBub21pbmF0aW9uLgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9fX2luaXRfXy5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRp
b25zLnB5OiBBZGRlZC4KKwogMjAxMS0wOS0xNSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRV9TVkdfQU5JTUFUSU9OIGFzIGFsbCBtYWpvciBw
b3J0cyBoYXZlIGl0IG9uIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZy5weQppbmRleCBmMDUwYzIwNGRkYzZkNzkzMDUy
MzhjOWM0ZjkwYzM2M2ViMjc1MWI0Li5hOGZmNDJmMWQ2NmNkOGJmODU2NGNmMjFhMDVkMjljMTdi
MjM5ZmZjIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291
dC9jaGFuZ2Vsb2cucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvY2hhbmdlbG9nLnB5CkBAIC03NCw2ICs3NCwxMCBAQCBjbGFzcyBDaGFuZ2VMb2dFbnRyeShv
YmplY3QpOgogICAgICMgZS5nLiAyMDA5LTA2LTAzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0
Lm9yZz4KICAgICBkYXRlX2xpbmVfcmVnZXhwID0gcideKD9QPGRhdGU+XGR7NH0tXGR7Mn0tXGR7
Mn0pXHMrKD9QPG5hbWU+Lis/KVxzKzwoP1A8ZW1haWw+W148Pl0rKT4kJwogCisgICAgIyBlLmcu
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorICAgICMgKERpc2NhcmQgZXZlcnl0aGluZyBhZnRl
ciB0aGUgZmlyc3QgcGVyaW9kIHRvIG1hdGNoIG1vcmUgaW52YWxpZCBsaW5lcy4pCisgICAgcmV2
aWV3ZWRfYnlfcmVnZXhwID0gcidSZXZpZXdlZCBieSAoP1A8cmV2aWV3ZXI+Lio/KVtcLixdP1xz
KiQnCisKICAgICAjIGUuZy4gPT0gUm9sbGVkIG92ZXIgdG8gQ2hhbmdlTG9nLTIwMTEtMDItMTYg
PT0KICAgICByb2xsZWRfb3Zlcl9yZWdleHAgPSByJ149PSBSb2xsZWQgb3ZlciB0byBDaGFuZ2VM
b2ctXGR7NH0tXGR7Mn0tXGR7Mn0gPT0kJwogCkBAIC05MSw3ICs5NSw3IEBAIGNsYXNzIENoYW5n
ZUxvZ0VudHJ5KG9iamVjdCk6CiAgICAgICAgIHNlbGYuX2F1dGhvcl9uYW1lID0gbWF0Y2guZ3Jv
dXAoIm5hbWUiKSBpZiBtYXRjaCBlbHNlIE5vbmUKICAgICAgICAgc2VsZi5fYXV0aG9yX2VtYWls
ID0gbWF0Y2guZ3JvdXAoImVtYWlsIikgaWYgbWF0Y2ggZWxzZSBOb25lCiAKLSAgICAgICAgbWF0
Y2ggPSByZS5zZWFyY2goIl5ccytSZXZpZXdlZCBieSAoP1A8cmV2aWV3ZXI+Lio/KVtcLixdP1xz
KiQiLCBzZWxmLl9jb250ZW50cywgcmUuTVVMVElMSU5FKSAjIERpc2NhcmQgZXZlcnl0aGluZyBh
ZnRlciB0aGUgZmlyc3QgcGVyaW9kCisgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKHNlbGYucmV2
aWV3ZWRfYnlfcmVnZXhwLCBzZWxmLl9jb250ZW50cywgcmUuTVVMVElMSU5FKQogICAgICAgICBz
ZWxmLl9yZXZpZXdlcl90ZXh0ID0gbWF0Y2guZ3JvdXAoInJldmlld2VyIikgaWYgbWF0Y2ggZWxz
ZSBOb25lCiAKICAgICAgICAgc2VsZi5fcmV2aWV3ZXIgPSBzZWxmLl9jb21taXR0ZXJfbGlzdC5j
b21taXR0ZXJfYnlfbmFtZShzZWxmLl9yZXZpZXdlcl90ZXh0KQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL19faW5pdF9fLnB5CmluZGV4IDAyY2JkZGYxOTZjNTA3
NjU4NzcxYWZmN2E3NWNiODllZDljODBiYmYuLmQ0NDBjOThlNzM0ZTg3YmFkZGMwYTRlNWY2NmI1
ZjhjMThlYTAyMzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9fX2luaXRfXy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvX19pbml0X18ucHkKQEAgLTE1LDMgKzE1LDQgQEAgZnJvbSB3ZWJraXRweS50b29sLmNvbW1h
bmRzLnJlYmFzZWxpbmVzZXJ2ZXIgaW1wb3J0IFJlYmFzZWxpbmVTZXJ2ZXIKIGZyb20gd2Via2l0
cHkudG9vbC5jb21tYW5kcy5yb2xsIGltcG9ydCAqCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFu
ZHMuc2hlcmlmZmJvdCBpbXBvcnQgKgogZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnVwbG9h
ZCBpbXBvcnQgKgorZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnN1Z2dlc3Rub21pbmF0aW9u
cyBpbXBvcnQgKgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL3N1Z2dlc3Rub21pbmF0aW9ucy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9zdWdnZXN0bm9taW5hdGlvbnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzY0NmUxNDAwOGVmNTIw
YmZhYjkyZjBmNDY5MTFiOTNkYWNmMDczZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlvbnMucHkKQEAgLTAsMCAr
MSwxNDUgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0
cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIG9wdHBhcnNlIGltcG9ydCBtYWtlX29w
dGlvbgoraW1wb3J0IHJlCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LmNoYW5nZWxv
ZyBpbXBvcnQgQ2hhbmdlTG9nRW50cnkKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21t
aXR0ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0Citmcm9tIHdlYmtpdHB5LnRvb2wgaW1wb3J0IHN0
ZXBzCitmcm9tIHdlYmtpdHB5LnRvb2wuZ3JhbW1hciBpbXBvcnQgam9pbl93aXRoX3NlcGFyYXRv
cnMKK2Zyb20gd2Via2l0cHkudG9vbC5tdWx0aWNvbW1hbmR0b29sIGltcG9ydCBBYnN0cmFjdERl
Y2xhcmF0aXZlQ29tbWFuZAorCisKK2NsYXNzIFN1Z2dlc3ROb21pbmF0aW9ucyhBYnN0cmFjdERl
Y2xhcmF0aXZlQ29tbWFuZCk6CisgICAgbmFtZSA9ICJzdWdnZXN0LW5vbWluYXRpb25zIgorICAg
IGhlbHBfdGV4dCA9ICJTdWdnZXN0IGNvbnRyaWJ1dG9ycyBmb3IgY29tbWl0dGVyL3Jldmlld2Vy
IG5vbWluYXRpb25zIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBvcHRpb25z
ID0gWworICAgICAgICAgICAgc3RlcHMuT3B0aW9ucy5naXRfY29tbWl0LAorICAgICAgICBdCisg
ICAgICAgIEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kLl9faW5pdF9fKHNlbGYsIG9wdGlvbnM9
b3B0aW9ucykKKyAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgb24gdGhl
IHRvb2wgc29tZXdoZXJlLgorICAgICAgICBzZWxmLl9jb21taXR0ZXJfbGlzdCA9IENvbW1pdHRl
ckxpc3QoKQorICAgICAgICBzZWxmLl9lbWFpbF90b19uYW1lID0ge30KKworICAgIHJldmlld2Vy
X21pbmltdW0gPSA4MAorICAgIGNvbW1pdHRlcl9taW5pbXVtID0gMTAKKworICAgICMgRklYTUU6
IFRoaXMgc2hvdWxkIG1vdmUgdG8gc2NtLnB5CisgICAgZGVmIF9yZWNlbnRfY29tbWl0X21lc3Nh
Z2VzKHNlbGYpOgorICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgbWFrZSB0aGlzIGxpbWl0IGNv
bmZpZ3VyYWJsZS4KKyAgICAgICAgZ2l0X2xvZyA9IHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9j
b21tYW5kKFsnZ2l0JywgJ2xvZycsICctLXNpbmNlPSI5IG1vbnRocyBhZ28iJ10pCisgICAgICAg
IG1hdGNoX2dpdF9zdm5faWQgPSByZS5jb21waWxlKHIiXG5cbiAgICBnaXQtc3ZuLWlkOi4qXG4i
LCByZS5NVUxUSUxJTkUpCisgICAgICAgIG1hdGNoX2dldF9sb2dfbGluZXMgPSByZS5jb21waWxl
KHIiXlxTLipcbiIsIHJlLk1VTFRJTElORSkKKyAgICAgICAgbWF0Y2hfbGVhZGluZ19pbmRlbnQg
PSByZS5jb21waWxlKHIiXlsgXXs0fSIsIHJlLk1VTFRJTElORSkKKworICAgICAgICBtZXNzYWdl
cyA9IHJlLnNwbGl0KHIiY29tbWl0IFx3ezQwfSIsIGdpdF9sb2cpWzE6XSAgIyBJZ25vcmUgdGhl
IGZpcnN0IG1lc3NhZ2Ugd2hpY2ggd2lsbCBiZSBlbXB0eS4KKyAgICAgICAgZm9yIG1lc3NhZ2Ug
aW4gbWVzc2FnZXM6CisgICAgICAgICAgICAjIFJlbW92ZSBhbnkgbGluZXMgZnJvbSBnaXQgYW5k
IHVuaW5kZW50IGFsbCB0aGUgbGluZXMKKyAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9IG1hdGNo
X2dpdF9zdm5faWQuc3VibigiIiwgbWVzc2FnZSkKKyAgICAgICAgICAgIChtZXNzYWdlLCBfKSA9
IG1hdGNoX2dldF9sb2dfbGluZXMuc3VibigiIiwgbWVzc2FnZSkKKyAgICAgICAgICAgIChtZXNz
YWdlLCBfKSA9IG1hdGNoX2xlYWRpbmdfaW5kZW50LnN1Ym4oIiIsIG1lc3NhZ2UpCisgICAgICAg
ICAgICB5aWVsZCBtZXNzYWdlLmxzdHJpcCgpICAjIFJlbW92ZSBhbnkgbGVhZGluZyBuZXdsaW5l
cyBmcm9tIHRoZSBsb2cgbWVzc2FnZS4KKworICAgICMgZS5nLiBQYXRjaCBieSBFcmljIFNlaWRl
bCA8ZXJpY0B3ZWJraXQub3JnPiBvbiAyMDExLTA5LTE1CisgICAgcGF0Y2hfYnlfcmVnZXhwID0g
cideUGF0Y2ggYnkgKD9QPG5hbWU+Lis/KSA8KD9QPGVtYWlsPltePD5dKyk+IG9uICg/UDxkYXRl
PlxkezR9LVxkezJ9LVxkezJ9KSQnCisKKyAgICBkZWYgX2NvdW50X3JlY2VudF9wYXRjaGVzKHNl
bGYpOgorICAgICAgICBhdXRob3JfY291bnRzID0ge30KKyAgICAgICAgIyBUaGlzIGVudGlyZSBi
bG9jayBjb3VsZCBiZSB3cml0dGVuIGFzIGEgbWFwL3JlZHVjZSBvdmVyIHRoZSBtZXNzYWdlcy4K
KyAgICAgICAgZm9yIG1lc3NhZ2UgaW4gc2VsZi5fcmVjZW50X2NvbW1pdF9tZXNzYWdlcygpOgor
ICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIENoYW5nZUxvZ0VudHJ5IHRvIGRv
IHRoZSBlbnRpcmUgcGFyc2UgaW5zdGVhZAorICAgICAgICAgICAgIyBvZiBncmFiYmluZyBhdCBp
dHMgcmVnZXhwcy4KKyAgICAgICAgICAgIGRhdGVsaW5lX21hdGNoID0gcmUubWF0Y2goQ2hhbmdl
TG9nRW50cnkuZGF0ZV9saW5lX3JlZ2V4cCwgbWVzc2FnZSwgcmUuTVVMVElMSU5FKQorICAgICAg
ICAgICAgaWYgbm90IGRhdGVsaW5lX21hdGNoOgorICAgICAgICAgICAgICAgICMgTW9kZXJuIGNv
bW1pdCBtZXNzYWdlcyBkb24ndCBqdXN0IGR1bXAgdGhlIENoYW5nZUxvZyBlbnRyeSwgYnV0IHJh
dGhlcgorICAgICAgICAgICAgICAgICMgaGF2ZSBhIHNwZWNpYWwgUGF0Y2ggYnkgbGluZSBmb3Ig
bm9uLWNvbW1pdHRlcnMuCisgICAgICAgICAgICAgICAgZGF0ZWxpbmVfbWF0Y2ggPSByZS5zZWFy
Y2goc2VsZi5wYXRjaF9ieV9yZWdleHAsIG1lc3NhZ2UsIHJlLk1VTFRJTElORSkKKyAgICAgICAg
ICAgICAgICBpZiBub3QgZGF0ZWxpbmVfbWF0Y2g6CisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlCisKKyAgICAgICAgICAgIGF1dGhvcl9lbWFpbCA9IGRhdGVsaW5lX21hdGNoLmdyb3VwKCJl
bWFpbCIpCisgICAgICAgICAgICBpZiBub3QgYXV0aG9yX2VtYWlsOgorICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgV2Ugb25seSBjYXJlIGFib3V0IHJldmlld2VkIHBh
dGNoZXMsIHNvIG1ha2Ugc3VyZSBpdCBoYXMgYSB2YWxpZCByZXZpZXdlciBsaW5lLgorICAgICAg
ICAgICAgcmV2aWV3ZXJfbWF0Y2ggPSByZS5zZWFyY2goQ2hhbmdlTG9nRW50cnkucmV2aWV3ZWRf
YnlfcmVnZXhwLCBtZXNzYWdlLCByZS5NVUxUSUxJTkUpCisgICAgICAgICAgICAjIFdlIG1pZ2h0
IGFsc28gd2FudCB0byB2YWxpZGF0ZSB0aGUgcmV2aWV3ZXIgbmFtZSBhZ2FpbnN0IHRoZSBjb21t
aXR0ZXIgbGlzdC4KKyAgICAgICAgICAgIGlmIG5vdCByZXZpZXdlcl9tYXRjaCBvciBub3QgcmV2
aWV3ZXJfbWF0Y2guZ3JvdXAoInJldmlld2VyIik6CisgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICAgICAgIyBLZWVwIGEgc2lkZSBkaWN0aW9uYXJ5IG9mIHRoZSBsYXN0IG5hbWUg
d2Ugc2F3IGZvciBhbiBlbWFpbCBzbyB3ZSBjYW4gdXNlIGl0IGZvciBkaXNwbGF5IGxhdGVyLgor
ICAgICAgICAgICAgc2VsZi5fZW1haWxfdG9fbmFtZVthdXRob3JfZW1haWxdID0gZGF0ZWxpbmVf
bWF0Y2guZ3JvdXAoIm5hbWUiKQorICAgICAgICAgICAgYXV0aG9yX2NvdW50c1thdXRob3JfZW1h
aWxdID0gYXV0aG9yX2NvdW50cy5nZXQoYXV0aG9yX2VtYWlsLCAwKSArIDEKKyAgICAgICAgcmV0
dXJuIGF1dGhvcl9jb3VudHMKKworICAgIGRlZiBfY29sbGVjdF9ub21pbmF0aW9ucyhzZWxmLCBw
YXRjaF9jb3VudHNfYnlfZW1haWwpOgorICAgICAgICBub21pbmF0aW9ucyA9IFtdCisgICAgICAg
IGZvciBhdXRob3JfZW1haWwsIHBhdGNoX2NvdW50IGluIHBhdGNoX2NvdW50c19ieV9lbWFpbC5p
dGVtcygpOgorICAgICAgICAgICAgcm9sZXMgPSBbXQorICAgICAgICAgICAgYXV0aG9yX25hbWUg
PSBzZWxmLl9lbWFpbF90b19uYW1lLmdldChhdXRob3JfZW1haWwpCisgICAgICAgICAgICBjb250
cmlidXRvciA9IHNlbGYuX2NvbW1pdHRlcl9saXN0LmNvbnRyaWJ1dG9yX2J5X2VtYWlsKGF1dGhv
cl9lbWFpbCkKKyAgICAgICAgICAgIGlmIG5vdCBjb250cmlidXRvcjoKKyAgICAgICAgICAgICAg
ICBjb250cmlidXRvciA9IHNlbGYuX2NvbW1pdHRlcl9saXN0LmNvbnRyaWJ1dG9yX2J5X25hbWUo
YXV0aG9yX25hbWUpCisgICAgICAgICAgICAgICAgaWYgY29udHJpYnV0b3I6CisgICAgICAgICAg
ICAgICAgICAgIHByaW50ICJXYXJuaW5nOiAlcyBpcyBtaXNzaW5nICclcycgZnJvbSBjb21taXR0
ZXJzLnB5IiAlIChjb250cmlidXRvciwgYXV0aG9yX2VtYWlsKQorCisgICAgICAgICAgICBpZiBw
YXRjaF9jb3VudCA+PSBzZWxmLmNvbW1pdHRlcl9taW5pbXVtIGFuZCAobm90IGNvbnRyaWJ1dG9y
IG9yIG5vdCBjb250cmlidXRvci5jYW5fY29tbWl0KToKKyAgICAgICAgICAgICAgICByb2xlcy5h
cHBlbmQoImNvbW1pdHRlciIpCisgICAgICAgICAgICBpZiBwYXRjaF9jb3VudCA+PSBzZWxmLnJl
dmlld2VyX21pbmltdW0gIGFuZCAobm90IGNvbnRyaWJ1dG9yIG9yIG5vdCBjb250cmlidXRvci5j
YW5fcmV2aWV3KToKKyAgICAgICAgICAgICAgICByb2xlcy5hcHBlbmQoInJldmlld2VyIikKKyAg
ICAgICAgICAgIGlmIHJvbGVzOgorICAgICAgICAgICAgICAgIG5vbWluYXRpb25zLmFwcGVuZCh7
CisgICAgICAgICAgICAgICAgICAgICdyb2xlcyc6IHJvbGVzLAorICAgICAgICAgICAgICAgICAg
ICAnYXV0aG9yX25hbWUnOiBhdXRob3JfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgJ2F1dGhv
cl9lbWFpbCc6IGF1dGhvcl9lbWFpbCwKKyAgICAgICAgICAgICAgICAgICAgJ3BhdGNoX2NvdW50
JzogcGF0Y2hfY291bnQsCisgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgcmV0dXJuIG5vbWlu
YXRpb25zCisKKyAgICBkZWYgX3ByaW50X25vbWluYXRpb25zKHNlbGYsIG5vbWluYXRpb25zKToK
KyAgICAgICAgZGVmIG5vbWluYXRpb25fY21wKGEsIGIpOgorICAgICAgICAgICAgcm9sZXNfcmVz
dWx0ID0gY21wKGFbJ3JvbGVzJ10sIGJbJ3JvbGVzJ10pCisgICAgICAgICAgICBpZiByb2xlc19y
ZXN1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIC1yb2xlc19yZXN1bHQKKyAgICAgICAgICAg
IGNvdW50X3Jlc3VsdCA9IGNtcChhWydwYXRjaF9jb3VudCddLCBiWydwYXRjaF9jb3VudCddKQor
ICAgICAgICAgICAgaWYgY291bnRfcmVzdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiAtY291
bnRfcmVzdWx0CisgICAgICAgICAgICByZXR1cm4gY21wKGFbJ2F1dGhvcl9uYW1lJ10sIGJbJ2F1
dGhvcl9uYW1lJ10pCisKKyAgICAgICAgZm9yIG5vbWluYXRpb24gaW4gc29ydGVkKG5vbWluYXRp
b25zLCBub21pbmF0aW9uX2NtcCk6CisgICAgICAgICAgICAjIFRoaXMgaXMgYSBsaXR0bGUgYml0
IG9mIGEgaGFjaywgYnV0IGl0cyBjb252aWVuZW50IHRvIGp1c3QgcGFzcyB0aGUgbm9taW5hdGlv
biBkaWN0aW9uYXJ5IHRvIHRoZSBmb3JtYXRpbmcgb3BlcmF0b3IuCisgICAgICAgICAgICBub21p
bmF0aW9uWydyb2xlc19zdHJpbmcnXSA9IGpvaW5fd2l0aF9zZXBhcmF0b3JzKG5vbWluYXRpb25b
J3JvbGVzJ10pLnVwcGVyKCkKKyAgICAgICAgICAgIHByaW50ICIlKHJvbGVzX3N0cmluZylzOiAl
KGF1dGhvcl9uYW1lKXMgKCUoYXV0aG9yX2VtYWlsKXMpIGhhcyAlKHBhdGNoX2NvdW50KXMgcmV2
aWV3ZWQgcGF0Y2hlcyIgJSBub21pbmF0aW9uCisKKyAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRp
b25zLCBhcmdzLCB0b29sKToKKyAgICAgICAgcGF0Y2hfY291bnRzX2J5X2VtYWlsID0gc2VsZi5f
Y291bnRfcmVjZW50X3BhdGNoZXMoKQorICAgICAgICBub21pbmF0aW9ucyA9IHNlbGYuX2NvbGxl
Y3Rfbm9taW5hdGlvbnMocGF0Y2hfY291bnRzX2J5X2VtYWlsKQorICAgICAgICBzZWxmLl9wcmlu
dF9ub21pbmF0aW9ucyhub21pbmF0aW9ucykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlvbnNfdW5pdHRlc3QucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zX3VuaXR0
ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQzMzA2Njk1MjkzOWQ2ZWIzYmM3YjIxMTM4ZWUxZWVlZDdiYjNi
ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvc3VnZ2VzdG5vbWluYXRpb25zX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNzQgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuY29tbWFuZHRlc3QgaW1wb3J0
IENvbW1hbmRzVGVzdAorZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnN1Z2dlc3Rub21pbmF0
aW9ucyBpbXBvcnQgU3VnZ2VzdE5vbWluYXRpb25zCitmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rv
b2wgaW1wb3J0IE1vY2tPcHRpb25zLCBNb2NrVG9vbAorCisKK2NsYXNzIFN1Z2dlc3ROb21pbmF0
aW9uc1Rlc3QoQ29tbWFuZHNUZXN0KToKKworICAgIG1vY2tfZ2l0X291dHB1dCA9ICIiImNvbW1p
dCA2MDgzMWRkZTViZWIyMmYzNWFlZjMwNWE4N2ZjYTdiNWYyODRjNjk4CitBdXRob3I6IGZwaXps
b0BhcHBsZS5jb20gPGZwaXpsb0BhcHBsZS5jb21AMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUy
NjkxYjRkYmZjPgorRGF0ZTogICBUaHUgU2VwIDE1IDE5OjU2OjIxIDIwMTEgKzAwMDAKKworICAg
IFZhbHVlIHByb2ZpbGVzIGNvbGxlY3Qgbm8gaW5mb3JtYXRpb24gZm9yIGdsb2JhbCB2YXJpYWJs
ZXMKKyAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgxNDMKKwor
ICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgZ2l0LXN2bi1pZDogaHR0cDov
L3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rQDk1MjE5IDI2OGY0NWNjLWNk
MDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYworIiIiCisgICAgbW9ja19zYW1lX2F1dGhvcl9jb21t
aXRfbWVzc2FnZSA9ICIiIlZhbHVlIHByb2ZpbGVzIGNvbGxlY3Qgbm8gaW5mb3JtYXRpb24gZm9y
IGdsb2JhbCB2YXJpYWJsZXMKK2h0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02ODE0MworCitSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4iIiIKKworICAgIGRlZiB0ZXN0
X3JlY2VudF9jb21taXRfbWVzc2FnZXMoc2VsZik6CisgICAgICAgIHRvb2wgPSBNb2NrVG9vbCgp
CisgICAgICAgIHN1Z2dlc3Rfbm9taW5hdGlvbnMgPSBTdWdnZXN0Tm9taW5hdGlvbnMoKQorICAg
ICAgICBzdWdnZXN0X25vbWluYXRpb25zLmJpbmRfdG9fdG9vbCh0b29sKQorCisgICAgICAgIHRv
b2wuZXhlY3V0aXZlLnJ1bl9jb21tYW5kID0gbGFtYmRhIGNvbW1hbmQ6IHNlbGYubW9ja19naXRf
b3V0cHV0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdWdnZXN0X25vbWluYXRpb25z
Ll9yZWNlbnRfY29tbWl0X21lc3NhZ2VzKCkpLCBbc2VsZi5tb2NrX3NhbWVfYXV0aG9yX2NvbW1p
dF9tZXNzYWdlXSkKKworICAgIG1vY2tfbm9uX2NvbW1pdHRlcl9jb21taXRfbWVzc2FnZSA9ICIi
IkxldCBUZXN0V2ViS2l0QVBJIHdvcmsgZm9yIGNocm9taXVtCitodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc3NTYKKworUGF0Y2ggYnkgWGlhbnpodSBXYW5nIDx3YW5n
eGlhbnpodUBjaHJvbWl1bS5vcmc+IG9uIDIwMTEtMDktMTUKK1Jldmlld2VkIGJ5IFNhbSBXZWlu
aWcuCisKK1NvdXJjZS9XZWJLaXQvY2hyb21pdW06CisKKyogV2ViS2l0Lmd5cDoiIiIKKworICAg
IGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgorICAgICAgICBleHBlY3RlZF9zdGRvdXQgPSAiQ09NTUlU
VEVSIEFORCBSRVZJRVdFUjogWGlhbnpodSBXYW5nICh3YW5neGlhbnpodUBjaHJvbWl1bS5vcmcp
IGhhcyA4OCByZXZpZXdlZCBwYXRjaGVzXG4iCisgICAgICAgIHN1Z2dlc3Rfbm9taW5hdGlvbnMg
PSBTdWdnZXN0Tm9taW5hdGlvbnMoKQorICAgICAgICBzdWdnZXN0X25vbWluYXRpb25zLl9yZWNl
bnRfY29tbWl0X21lc3NhZ2VzID0gbGFtYmRhOiBbc2VsZi5tb2NrX25vbl9jb21taXR0ZXJfY29t
bWl0X21lc3NhZ2UgZm9yIF8gaW4gcmFuZ2UoODgpXQorICAgICAgICBzZWxmLmFzc2VydF9leGVj
dXRlX291dHB1dHMoc3VnZ2VzdF9ub21pbmF0aW9ucywgW10sIGV4cGVjdGVkX3N0ZG91dD1leHBl
Y3RlZF9zdGRvdXQpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvdmFsaWRhdGVyZXZpZXdlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy92YWxpZGF0ZXJldmlld2VyLnB5CmluZGV4IGMyYTI3Yjk4MzZjNmFjZTI5NDI0MmQ3MTA3MTE0
Mjg1ODg2YzIzNDQuLjE2NDkxMjlmODJiNjY2NWNmZjc0MTJjZmY4Mjk2Y2Q2NTM2ZjVhYzQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZXJldmll
d2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZXJl
dmlld2VyLnB5CkBAIC0zNyw3ICszNyw2IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5k
ZXByZWNhdGVkX2xvZ2dpbmcgaW1wb3J0IGVycm9yLCBsb2cKIAogIyBGSVhNRTogU29tZSBvZiB0
aGlzIGxvZ2ljIHNob3VsZCBwcm9iYWJseSBiZSB1bmlmaWVkIHdpdGggQ29tbWl0dGVyVmFsaWRh
dG9yPwogY2xhc3MgVmFsaWRhdGVSZXZpZXdlcihBYnN0cmFjdFN0ZXApOgotICAgICMgRklYTUU6
IFRoaXMgc2hvdWxkIHByb2JhYmx5IG1vdmUgb250byBDaGFuZ2VMb2dFbnRyeQogICAgIGRlZiBf
aGFzX3ZhbGlkX3Jldmlld2VyKHNlbGYsIGNoYW5nZWxvZ19lbnRyeSk6CiAgICAgICAgIGlmIGNo
YW5nZWxvZ19lbnRyeS5yZXZpZXdlcigpOgogICAgICAgICAgICAgcmV0dXJuIFRydWUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110769</attachid>
            <date>2011-10-12 16:28:44 -0700</date>
            <delta_ts>2011-10-13 08:37:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62166-20111012162842.patch</filename>
            <type>text/plain</type>
            <size>24290</size>
            <attacher name="Tom Zakrajsek">tomz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTcyNzkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjZDA5ODhmNGFjODg5ZmYzZGMzMGM4ZWE2NGY0Zjg5NWU4
ZjExNWFjLi5lYzU5N2QyMDg2ODY5NTk4YWI4ODFkNzU1MDI5OTBhNDcwYmJhNzY5IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMTAtMTIgIFRvbSBaYWtyYWpzZWsgIDx0b216QGNvZGVhdXJvcmEub3JnPgorCisg
ICAgICAgIEFkZCBhIHN1Z2dlc3Qtbm9taW5hdGlvbnMgY29tbWFuZCB0byB3ZWJraXQtcGF0Y2gg
Zm9yIGNvbXB1dGluZyBwb3RlbnRpYWwgY29tbWl0dGVyL3Jldmlld2VyIG5vbWluYXRpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjE2NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9fX2luaXRfXy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zLnB5OiBBZGRlZC4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zX3Vu
aXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
b3B0aW9ucy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRh
dGVyZXZpZXdlci5weToKKwogMjAxMS0xMC0xMiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIHdlYmtpdHB5IHRlc3RzIGFyZSBmYWlsaW5nIG9uIE1hYyBib3RzCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vs
b2cucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2cu
cHkKaW5kZXggYTUyMWMzMmZjYjU5ZWNkZmVmNzJiOWMzNjBjZTNmYjRlNTAwNGQ0ZS4uNzlhY2Q3
MzFjM2VmYWRkMGY3ZDAxNTQyYTgxOTI3MGYxOTI3MmIxMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZy5weQpAQCAtNzcsOSArNzcs
MTYgQEAgY2xhc3MgQ2hhbmdlTG9nRW50cnkob2JqZWN0KToKICAgICAjIGUuZy4gKiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHA6IEltcGxlbWVudCBGb29CYXJRdXV4LgogICAg
IHRvdWNoZWRfZmlsZXNfcmVnZXhwID0gcidccypcKlxzKig/UDxmaWxlPi4rKVw6JwogCisgICAg
IyBlLmcuIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorICAgICMgKERpc2NhcmQgZXZlcnl0aGlu
ZyBhZnRlciB0aGUgZmlyc3QgcGVyaW9kIHRvIG1hdGNoIG1vcmUgaW52YWxpZCBsaW5lcy4pCisg
ICAgcmV2aWV3ZWRfYnlfcmVnZXhwID0gcidSZXZpZXdlZCBieSAoP1A8cmV2aWV3ZXI+Lio/KVtc
LixdP1xzKiQnCisKICAgICAjIGUuZy4gPT0gUm9sbGVkIG92ZXIgdG8gQ2hhbmdlTG9nLTIwMTEt
MDItMTYgPT0KICAgICByb2xsZWRfb3Zlcl9yZWdleHAgPSByJ149PSBSb2xsZWQgb3ZlciB0byBD
aGFuZ2VMb2ctXGR7NH0tXGR7Mn0tXGR7Mn0gPT0kJwogCisgICAgIyBlLmcuIGdpdC1zdm4taWQ6
IGh0dHA6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVua0A5NjE2MSAyNjhm
NDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMKKyAgICBzdm5faWRfcmVnZXhwID0gcidn
aXQtc3ZuLWlkOiBodHRwOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmtA
KD9QPHN2bmlkPlxkKykgJworCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbnRlbnRzLCBjb21t
aXR0ZXJfbGlzdD1Db21taXR0ZXJMaXN0KCkpOgogICAgICAgICBzZWxmLl9jb250ZW50cyA9IGNv
bnRlbnRzCiAgICAgICAgIHNlbGYuX2NvbW1pdHRlcl9saXN0ID0gY29tbWl0dGVyX2xpc3QKQEAg
LTk0LDcgKzEwMSw3IEBAIGNsYXNzIENoYW5nZUxvZ0VudHJ5KG9iamVjdCk6CiAgICAgICAgIHNl
bGYuX2F1dGhvcl9uYW1lID0gbWF0Y2guZ3JvdXAoIm5hbWUiKSBpZiBtYXRjaCBlbHNlIE5vbmUK
ICAgICAgICAgc2VsZi5fYXV0aG9yX2VtYWlsID0gbWF0Y2guZ3JvdXAoImVtYWlsIikgaWYgbWF0
Y2ggZWxzZSBOb25lCiAKLSAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goIl5ccytSZXZpZXdlZCBi
eSAoP1A8cmV2aWV3ZXI+Lio/KVtcLixdP1xzKiQiLCBzZWxmLl9jb250ZW50cywgcmUuTVVMVElM
SU5FKSAjIERpc2NhcmQgZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgcGVyaW9kCisgICAgICAg
IG1hdGNoID0gcmUuc2VhcmNoKHNlbGYucmV2aWV3ZWRfYnlfcmVnZXhwLCBzZWxmLl9jb250ZW50
cywgcmUuTVVMVElMSU5FKQogICAgICAgICBzZWxmLl9yZXZpZXdlcl90ZXh0ID0gbWF0Y2guZ3Jv
dXAoInJldmlld2VyIikgaWYgbWF0Y2ggZWxzZSBOb25lCiAKICAgICAgICAgc2VsZi5fcmV2aWV3
ZXIgPSBzZWxmLl9jb21taXR0ZXJfbGlzdC5jb21taXR0ZXJfYnlfbmFtZShzZWxmLl9yZXZpZXdl
cl90ZXh0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL19faW5p
dF9fLnB5CmluZGV4IDM4MzY5NDdmYWI4OGQ3YmQxODRlOWYwODRkODdhNGYzOGIzNzJhOGEuLjFh
OThkYjBkNDg2YTVkZWQ2ZjE4MWMzYjgxZDAxMTU0Y2NlZDg2NjUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9fX2luaXRfXy5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvX19pbml0X18ucHkKQEAgLTE4LDMgKzE4LDQg
QEAgZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnJlYmFzZWxpbmVzZXJ2ZXIgaW1wb3J0IFJl
YmFzZWxpbmVTZXJ2ZXIKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5yb2xsIGltcG9ydCAq
CiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuc2hlcmlmZmJvdCBpbXBvcnQgKgogZnJvbSB3
ZWJraXRweS50b29sLmNvbW1hbmRzLnVwbG9hZCBpbXBvcnQgKgorZnJvbSB3ZWJraXRweS50b29s
LmNvbW1hbmRzLnN1Z2dlc3Rub21pbmF0aW9ucyBpbXBvcnQgKgpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9ucy5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlvbnMucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTQxYWFjZTk2NTkxMDhkN2YyNjY4ZWQzODdhZGM5OGYwYTljNTNmMQotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdn
ZXN0bm9taW5hdGlvbnMucHkKQEAgLTAsMCArMSwyMzYgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxMSBD
b2RlIEF1cm9yYSBGb3J1bS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK2Zyb20gb3B0cGFyc2UgaW1wb3J0IG1ha2Vfb3B0aW9uCitpbXBvcnQgcmUKKworZnJvbSB3
ZWJraXRweS5jb21tb24uY2hlY2tvdXQuY2hhbmdlbG9nIGltcG9ydCBDaGFuZ2VMb2dFbnRyeQor
ZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlckxp
c3QKK2Zyb20gd2Via2l0cHkudG9vbCBpbXBvcnQgc3RlcHMKK2Zyb20gd2Via2l0cHkudG9vbC5n
cmFtbWFyIGltcG9ydCBqb2luX3dpdGhfc2VwYXJhdG9ycworZnJvbSB3ZWJraXRweS50b29sLm11
bHRpY29tbWFuZHRvb2wgaW1wb3J0IEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kCisKKworY2xh
c3MgU3VnZ2VzdE5vbWluYXRpb25zKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToKKyAgICBu
YW1lID0gInN1Z2dlc3Qtbm9taW5hdGlvbnMiCisgICAgaGVscF90ZXh0ID0gIlN1Z2dlc3QgY29u
dHJpYnV0b3JzIGZvciBjb21taXR0ZXIvcmV2aWV3ZXIgbm9taW5hdGlvbnMiCisKKyAgICBkZWYg
X19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuY29tbWl0dGVyX21pbmltdW0gPSBzdGVwcy5P
cHRpb25zLmNvbW1pdHRlcl9taW5pbXVtLmRlZmF1bHQKKyAgICAgICAgc2VsZi5yZXZpZXdlcl9t
aW5pbXVtID0gc3RlcHMuT3B0aW9ucy5yZXZpZXdlcl9taW5pbXVtLmRlZmF1bHQKKyAgICAgICAg
c2VsZi5tYXhfY29tbWl0X2FnZSA9IHN0ZXBzLk9wdGlvbnMubWF4X2NvbW1pdF9hZ2UuZGVmYXVs
dAorICAgICAgICBzZWxmLnNob3dfY29tbWl0cyA9IHN0ZXBzLk9wdGlvbnMuc2hvd19jb21taXRz
LmRlZmF1bHQKKyAgICAgICAgc2VsZi52ZXJib3NlID0gRmFsc2UKKworICAgICAgICBvcHRpb25z
ID0gWworICAgICAgICAgICAgc3RlcHMuT3B0aW9ucy5jb21taXR0ZXJfbWluaW11bSwKKyAgICAg
ICAgICAgIHN0ZXBzLk9wdGlvbnMucmV2aWV3ZXJfbWluaW11bSwKKyAgICAgICAgICAgIHN0ZXBz
Lk9wdGlvbnMubWF4X2NvbW1pdF9hZ2UsCisgICAgICAgICAgICBzdGVwcy5PcHRpb25zLnNob3df
Y29tbWl0cywKKyAgICAgICAgXQorCisgICAgICAgIEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5k
Ll9faW5pdF9fKHNlbGYsIG9wdGlvbnM9b3B0aW9ucykKKyAgICAgICAgIyBGSVhNRTogVGhpcyBz
aG91bGQgcHJvYmFibHkgYmUgb24gdGhlIHRvb2wgc29tZXdoZXJlLgorICAgICAgICBzZWxmLl9j
b21taXR0ZXJfbGlzdCA9IENvbW1pdHRlckxpc3QoKQorCisgICAgX2NvdW50ZXJzX2J5X25hbWUg
PSB7fQorICAgIF9jb3VudGVyc19ieV9lbWFpbCA9IHt9CisKKyAgICAjIEZJWE1FOiBUaGlzIHNo
b3VsZCBtb3ZlIHRvIHNjbS5weQorICAgIGRlZiBfcmVjZW50X2NvbW1pdF9tZXNzYWdlcyhzZWxm
KToKKyAgICAgICAgZ2l0X2xvZyA9IHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsn
Z2l0JywgJ2xvZycsICctLXNpbmNlPSIlcyBtb250aHMgYWdvIicgJSBzZWxmLm1heF9jb21taXRf
YWdlXSkKKyAgICAgICAgbWF0Y2hfZ2l0X3N2bl9pZCA9IHJlLmNvbXBpbGUociJcblxuICAgIGdp
dC1zdm4taWQ6LipcbiIsIHJlLk1VTFRJTElORSkKKyAgICAgICAgbWF0Y2hfZ2V0X2xvZ19saW5l
cyA9IHJlLmNvbXBpbGUociJeXFMuKlxuIiwgcmUuTVVMVElMSU5FKQorICAgICAgICBtYXRjaF9s
ZWFkaW5nX2luZGVudCA9IHJlLmNvbXBpbGUociJeWyBdezR9IiwgcmUuTVVMVElMSU5FKQorCisg
ICAgICAgIG1lc3NhZ2VzID0gcmUuc3BsaXQociJjb21taXQgXHd7NDB9IiwgZ2l0X2xvZylbMTpd
ICAjIElnbm9yZSB0aGUgZmlyc3QgbWVzc2FnZSB3aGljaCB3aWxsIGJlIGVtcHR5LgorICAgICAg
ICBmb3IgbWVzc2FnZSBpbiBtZXNzYWdlczoKKyAgICAgICAgICAgICMgUmVtb3ZlIGFueSBsaW5l
cyBmcm9tIGdpdCBhbmQgdW5pbmRlbnQgYWxsIHRoZSBsaW5lcworICAgICAgICAgICAgKG1lc3Nh
Z2UsIF8pID0gbWF0Y2hfZ2l0X3N2bl9pZC5zdWJuKCIiLCBtZXNzYWdlKQorICAgICAgICAgICAg
KG1lc3NhZ2UsIF8pID0gbWF0Y2hfZ2V0X2xvZ19saW5lcy5zdWJuKCIiLCBtZXNzYWdlKQorICAg
ICAgICAgICAgKG1lc3NhZ2UsIF8pID0gbWF0Y2hfbGVhZGluZ19pbmRlbnQuc3VibigiIiwgbWVz
c2FnZSkKKyAgICAgICAgICAgIHlpZWxkIG1lc3NhZ2UubHN0cmlwKCkgICMgUmVtb3ZlIGFueSBs
ZWFkaW5nIG5ld2xpbmVzIGZyb20gdGhlIGxvZyBtZXNzYWdlLgorCisgICAgIyBlLmcuIFBhdGNo
IGJ5IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+IG9uIDIwMTEtMDktMTUKKyAgICBwYXRj
aF9ieV9yZWdleHAgPSByJ15QYXRjaCBieSAoP1A8bmFtZT4uKz8pXHMrPCg/UDxlbWFpbD5bXjw+
XSspPiBvbiAoP1A8ZGF0ZT5cZHs0fS1cZHsyfS1cZHsyfSkkJworCisgICAgZGVmIF9jb3VudF9y
ZWNlbnRfcGF0Y2hlcyhzZWxmKToKKyAgICAgICAgIyBUaGlzIGVudGlyZSBibG9jayBjb3VsZCBi
ZSB3cml0dGVuIGFzIGEgbWFwL3JlZHVjZSBvdmVyIHRoZSBtZXNzYWdlcy4KKyAgICAgICAgZm9y
IG1lc3NhZ2UgaW4gc2VsZi5fcmVjZW50X2NvbW1pdF9tZXNzYWdlcygpOgorICAgICAgICAgICAg
IyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIENoYW5nZUxvZ0VudHJ5IHRvIGRvIHRoZSBlbnRpcmUg
cGFyc2UgaW5zdGVhZAorICAgICAgICAgICAgIyBvZiBncmFiYmluZyBhdCBpdHMgcmVnZXhwcy4K
KyAgICAgICAgICAgIGRhdGVsaW5lX21hdGNoID0gcmUubWF0Y2goQ2hhbmdlTG9nRW50cnkuZGF0
ZV9saW5lX3JlZ2V4cCwgbWVzc2FnZSwgcmUuTVVMVElMSU5FKQorICAgICAgICAgICAgaWYgbm90
IGRhdGVsaW5lX21hdGNoOgorICAgICAgICAgICAgICAgICMgTW9kZXJuIGNvbW1pdCBtZXNzYWdl
cyBkb24ndCBqdXN0IGR1bXAgdGhlIENoYW5nZUxvZyBlbnRyeSwgYnV0IHJhdGhlcgorICAgICAg
ICAgICAgICAgICMgaGF2ZSBhIHNwZWNpYWwgUGF0Y2ggYnkgbGluZSBmb3Igbm9uLWNvbW1pdHRl
cnMuCisgICAgICAgICAgICAgICAgZGF0ZWxpbmVfbWF0Y2ggPSByZS5zZWFyY2goc2VsZi5wYXRj
aF9ieV9yZWdleHAsIG1lc3NhZ2UsIHJlLk1VTFRJTElORSkKKyAgICAgICAgICAgICAgICBpZiBu
b3QgZGF0ZWxpbmVfbWF0Y2g6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAg
ICAgICAgIGF1dGhvcl9lbWFpbCA9IGRhdGVsaW5lX21hdGNoLmdyb3VwKCJlbWFpbCIpCisgICAg
ICAgICAgICBpZiBub3QgYXV0aG9yX2VtYWlsOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisK
KyAgICAgICAgICAgICMgV2Ugb25seSBjYXJlIGFib3V0IHJldmlld2VkIHBhdGNoZXMsIHNvIG1h
a2Ugc3VyZSBpdCBoYXMgYSB2YWxpZCByZXZpZXdlciBsaW5lLgorICAgICAgICAgICAgcmV2aWV3
ZXJfbWF0Y2ggPSByZS5zZWFyY2goQ2hhbmdlTG9nRW50cnkucmV2aWV3ZWRfYnlfcmVnZXhwLCBt
ZXNzYWdlLCByZS5NVUxUSUxJTkUpCisgICAgICAgICAgICAjIFdlIG1pZ2h0IGFsc28gd2FudCB0
byB2YWxpZGF0ZSB0aGUgcmV2aWV3ZXIgbmFtZSBhZ2FpbnN0IHRoZSBjb21taXR0ZXIgbGlzdC4K
KyAgICAgICAgICAgIGlmIG5vdCByZXZpZXdlcl9tYXRjaCBvciBub3QgcmV2aWV3ZXJfbWF0Y2gu
Z3JvdXAoInJldmlld2VyIik6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAg
ICAgYXV0aG9yX25hbWUgPSBkYXRlbGluZV9tYXRjaC5ncm91cCgibmFtZSIpCisgICAgICAgICAg
ICBpZiBub3QgYXV0aG9yX25hbWU6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAg
ICAgICAgaWYgcmUuc2VhcmNoKCIoW15hLXpBLVpdYW5kW15hLXpBLVpdKXwoLCl8KEApIiwgYXV0
aG9yX25hbWUpOgorICAgICAgICAgICAgICAgICMgVGhpcyBlbnRyeSBzZWVtcyB0byBoYXZlIG11
bHRpcGxlIHJldmlld2Vycywgb3IgaW52YWxpZCBjaGFyYWN0ZXJzLCBzbyByZWplY3QgaXQuCisg
ICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgc3ZuX2lkX21hdGNoID0gcmUu
c2VhcmNoKENoYW5nZUxvZ0VudHJ5LnN2bl9pZF9yZWdleHAsIG1lc3NhZ2UsIHJlLk1VTFRJTElO
RSkKKyAgICAgICAgICAgIGlmIHN2bl9pZF9tYXRjaDoKKyAgICAgICAgICAgICAgICBzdm5faWQg
PSBzdm5faWRfbWF0Y2guZ3JvdXAoInN2bmlkIikKKyAgICAgICAgICAgIGlmIG5vdCBzdm5faWRf
bWF0Y2ggb3Igbm90IHN2bl9pZDoKKyAgICAgICAgICAgICAgICBzdm5faWQgPSAidW5rbm93biIK
KyAgICAgICAgICAgIGNvbW1pdF9kYXRlID0gZGF0ZWxpbmVfbWF0Y2guZ3JvdXAoImRhdGUiKQor
CisgICAgICAgICAgICAjIFNlZSBpZiB3ZSBhbHJlYWR5IGhhdmUgYSBjb250cmlidXRvciB3aXRo
IHRoaXMgbmFtZSBvciBlbWFpbAorICAgICAgICAgICAgY291bnRlcl9ieV9uYW1lID0gc2VsZi5f
Y291bnRlcnNfYnlfbmFtZS5nZXQoYXV0aG9yX25hbWUpCisgICAgICAgICAgICBjb3VudGVyX2J5
X2VtYWlsID0gc2VsZi5fY291bnRlcnNfYnlfZW1haWwuZ2V0KGF1dGhvcl9lbWFpbCkKKyAgICAg
ICAgICAgIGlmIGNvdW50ZXJfYnlfbmFtZToKKyAgICAgICAgICAgICAgICBpZiBjb3VudGVyX2J5
X2VtYWlsOgorICAgICAgICAgICAgICAgICAgICBpZiBjb3VudGVyX2J5X25hbWUgIT0gY291bnRl
cl9ieV9lbWFpbDoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgTWVyZ2UgdGhlc2UgdHdvIGNv
dW50ZXJzICBUaGlzIGlzIGZvciB0aGUgY2FzZSB3aGVyZSB3ZSBoYWQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICMgSm9uIFNtaXRoIChqc21pdGhAZ21haWwuY29tKSBhbmQgSm9uYXRoYW4gU21p
dGggKGpzbWl0aEBhcHBsZS5jb20pCisgICAgICAgICAgICAgICAgICAgICAgICAjIGFuZCBqdXN0
IGZvdW5kIGEgSm9obiBTbWl0aCAoanNtaXRoQGFwcGxlLmNvbSkuICBOb3cgd2Uga25vdyB0aGUK
KyAgICAgICAgICAgICAgICAgICAgICAgICMgdHdvIG5hbWVzIGFyZSB0aGUgc2FtZSBwZXJzb24K
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfYnlfbmFtZVsnbmFtZXMnXSB8PSBjb3Vu
dGVyX2J5X2VtYWlsWyduYW1lcyddCisgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyX2J5
X25hbWVbJ2VtYWlscyddIHw9IGNvdW50ZXJfYnlfZW1haWxbJ2VtYWlscyddCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb3VudGVyX2J5X25hbWVbJ2NvdW50J10gKz0gY291bnRlcl9ieV9lbWFp
bC5nZXQoJ2NvdW50JywgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvdW50ZXJz
X2J5X2VtYWlsW2F1dGhvcl9lbWFpbF0gPSBjb3VudGVyX2J5X25hbWUKKyAgICAgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIEFkZCBlbWFpbCB0byB0aGUgZXhpc3Rpbmcg
Y291bnRlcgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb3VudGVyc19ieV9lbWFpbFthdXRo
b3JfZW1haWxdID0gY291bnRlcl9ieV9uYW1lCisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJf
YnlfbmFtZVsnZW1haWxzJ10gfD0gc2V0KFthdXRob3JfZW1haWxdKQorICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICBpZiBjb3VudGVyX2J5X2VtYWlsOgorICAgICAgICAgICAgICAg
ICAgICAjIEFkZCBuYW1lIHRvIHRoZSBleGlzdGluZyBjb3VudGVyCisgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX2NvdW50ZXJzX2J5X25hbWVbYXV0aG9yX25hbWVdID0gY291bnRlcl9ieV9lbWFp
bAorICAgICAgICAgICAgICAgICAgICBjb3VudGVyX2J5X2VtYWlsWyduYW1lcyddIHw9IHNldChb
YXV0aG9yX25hbWVdKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAg
ICMgQ3JlYXRlIG5ldyBjb3VudGVyCisgICAgICAgICAgICAgICAgICAgIG5ld19jb3VudGVyID0g
eyduYW1lcyc6IHNldChbYXV0aG9yX25hbWVdKSwgJ2VtYWlscyc6IHNldChbYXV0aG9yX2VtYWls
XSksICdtcnVfbmFtZSc6IGF1dGhvcl9uYW1lLCAnbXJ1X2VtYWlsJzogYXV0aG9yX2VtYWlsLCAn
Y29tbWl0cyc6ICIifQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb3VudGVyc19ieV9uYW1l
W2F1dGhvcl9uYW1lXSA9IG5ld19jb3VudGVyCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nv
dW50ZXJzX2J5X2VtYWlsW2F1dGhvcl9lbWFpbF0gPSBuZXdfY291bnRlcgorCisgICAgICAgICAg
ICBhc3NlcnQoc2VsZi5fY291bnRlcnNfYnlfbmFtZVthdXRob3JfbmFtZV0gPT0gc2VsZi5fY291
bnRlcnNfYnlfZW1haWxbYXV0aG9yX2VtYWlsXSkKKyAgICAgICAgICAgIGN1cnJfY291bnRlciA9
IHNlbGYuX2NvdW50ZXJzX2J5X25hbWVbYXV0aG9yX25hbWVdCisgICAgICAgICAgICBjdXJyX2Nv
dW50ZXJbJ2NvdW50J10gPSBjdXJyX2NvdW50ZXIuZ2V0KCdjb3VudCcsIDApICsgMQorCisgICAg
ICAgICAgICBpZiBzdm5faWQuaXNkaWdpdCgpOgorICAgICAgICAgICAgICAgIHN2bl9pZCA9ICJo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8iICsgc3ZuX2lkCisgICAgICAgICAgICBj
dXJyX2NvdW50ZXJbJ2NvbW1pdHMnXSArPSAiICBjb21taXQ6ICVzIG9uICVzIGJ5ICVzICglcylc
biIgJSAoc3ZuX2lkLCBjb21taXRfZGF0ZSwgYXV0aG9yX25hbWUsIGF1dGhvcl9lbWFpbCkKKwor
ICAgICAgICByZXR1cm4gc2VsZi5fY291bnRlcnNfYnlfZW1haWwKKworICAgIGRlZiBfY29sbGVj
dF9ub21pbmF0aW9ucyhzZWxmLCBjb3VudGVyc19ieV9lbWFpbCk6CisgICAgICAgIG5vbWluYXRp
b25zID0gW10KKyAgICAgICAgZm9yIGF1dGhvcl9lbWFpbCwgY3Vycl9jb3VudGVyIGluIGNvdW50
ZXJzX2J5X2VtYWlsLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBhdXRob3JfZW1haWwgIT0gY3Vy
cl9jb3VudGVyWydtcnVfZW1haWwnXToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgcm9sZXMgPSBbXQorCisgICAgICAgICAgICBjb250cmlidXRvciA9IHNlbGYuX2NvbW1p
dHRlcl9saXN0LmNvbnRyaWJ1dG9yX2J5X2VtYWlsKGF1dGhvcl9lbWFpbCkKKworICAgICAgICAg
ICAgYXV0aG9yX25hbWUgPSBjdXJyX2NvdW50ZXJbJ21ydV9uYW1lJ10KKyAgICAgICAgICAgIHBh
dGNoX2NvdW50ID0gY3Vycl9jb3VudGVyWydjb3VudCddCisKKyAgICAgICAgICAgIGlmIHBhdGNo
X2NvdW50ID49IHNlbGYuY29tbWl0dGVyX21pbmltdW0gYW5kIChub3QgY29udHJpYnV0b3Igb3Ig
bm90IGNvbnRyaWJ1dG9yLmNhbl9jb21taXQpOgorICAgICAgICAgICAgICAgIHJvbGVzLmFwcGVu
ZCgiY29tbWl0dGVyIikKKyAgICAgICAgICAgIGlmIHBhdGNoX2NvdW50ID49IHNlbGYucmV2aWV3
ZXJfbWluaW11bSAgYW5kIChub3QgY29udHJpYnV0b3Igb3Igbm90IGNvbnRyaWJ1dG9yLmNhbl9y
ZXZpZXcpOgorICAgICAgICAgICAgICAgIHJvbGVzLmFwcGVuZCgicmV2aWV3ZXIiKQorICAgICAg
ICAgICAgaWYgcm9sZXM6CisgICAgICAgICAgICAgICAgbm9taW5hdGlvbnMuYXBwZW5kKHsKKyAg
ICAgICAgICAgICAgICAgICAgJ3JvbGVzJzogcm9sZXMsCisgICAgICAgICAgICAgICAgICAgICdh
dXRob3JfbmFtZSc6IGF1dGhvcl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAnYXV0aG9yX2Vt
YWlsJzogYXV0aG9yX2VtYWlsLAorICAgICAgICAgICAgICAgICAgICAncGF0Y2hfY291bnQnOiBw
YXRjaF9jb3VudCwKKyAgICAgICAgICAgICAgICB9KQorICAgICAgICByZXR1cm4gbm9taW5hdGlv
bnMKKworICAgIGRlZiBfcHJpbnRfbm9taW5hdGlvbnMoc2VsZiwgbm9taW5hdGlvbnMpOgorICAg
ICAgICBkZWYgbm9taW5hdGlvbl9jbXAoYSwgYik6CisgICAgICAgICAgICByb2xlc19yZXN1bHQg
PSBjbXAoYVsncm9sZXMnXSwgYlsncm9sZXMnXSkKKyAgICAgICAgICAgIGlmIHJvbGVzX3Jlc3Vs
dDoKKyAgICAgICAgICAgICAgICByZXR1cm4gLXJvbGVzX3Jlc3VsdAorICAgICAgICAgICAgY291
bnRfcmVzdWx0ID0gY21wKGFbJ3BhdGNoX2NvdW50J10sIGJbJ3BhdGNoX2NvdW50J10pCisgICAg
ICAgICAgICBpZiBjb3VudF9yZXN1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIC1jb3VudF9y
ZXN1bHQKKyAgICAgICAgICAgIHJldHVybiBjbXAoYVsnYXV0aG9yX25hbWUnXSwgYlsnYXV0aG9y
X25hbWUnXSkKKworICAgICAgICBmb3Igbm9taW5hdGlvbiBpbiBzb3J0ZWQobm9taW5hdGlvbnMs
IG5vbWluYXRpb25fY21wKToKKyAgICAgICAgICAgICMgVGhpcyBpcyBhIGxpdHRsZSBiaXQgb2Yg
YSBoYWNrLCBidXQgaXRzIGNvbnZpZW5lbnQgdG8ganVzdCBwYXNzIHRoZSBub21pbmF0aW9uIGRp
Y3Rpb25hcnkgdG8gdGhlIGZvcm1hdGluZyBvcGVyYXRvci4KKyAgICAgICAgICAgIG5vbWluYXRp
b25bJ3JvbGVzX3N0cmluZyddID0gam9pbl93aXRoX3NlcGFyYXRvcnMobm9taW5hdGlvblsncm9s
ZXMnXSkudXBwZXIoKQorICAgICAgICAgICAgcHJpbnQgIiUocm9sZXNfc3RyaW5nKXM6ICUoYXV0
aG9yX25hbWUpcyAoJShhdXRob3JfZW1haWwpcykgaGFzICUocGF0Y2hfY291bnQpcyByZXZpZXdl
ZCBwYXRjaGVzIiAlIG5vbWluYXRpb24KKyAgICAgICAgICAgIGN1cnJfY291bnRlciA9IHNlbGYu
X2NvdW50ZXJzX2J5X2VtYWlsW25vbWluYXRpb25bJ2F1dGhvcl9lbWFpbCddXQorCisgICAgICAg
ICAgICBpZiBzZWxmLnNob3dfY29tbWl0czoKKyAgICAgICAgICAgICAgICBwcmludCBjdXJyX2Nv
dW50ZXJbJ2NvbW1pdHMnXQorCisgICAgZGVmIF9wcmludF9jb3VudHMoc2VsZiwgY291bnRlcnNf
YnlfZW1haWwpOgorICAgICAgICAjIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIHNvcnRlZC4gIEJ5
IG5hbWUgb3IgYnkgY291bnQgdGhlbiBuYW1lPworICAgICAgICBmb3IgYXV0aG9yX2VtYWlsLCBj
dXJyX2NvdW50ZXIgaW4gY291bnRlcnNfYnlfZW1haWwuaXRlbXMoKToKKyAgICAgICAgICAgIGlm
IGF1dGhvcl9lbWFpbCAhPSBjdXJyX2NvdW50ZXJbJ21ydV9lbWFpbCddOgorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCisgICAgICAgICAgICBjb250cmlidXRvciA9IHNlbGYuX2NvbW1pdHRlcl9s
aXN0LmNvbnRyaWJ1dG9yX2J5X2VtYWlsKGF1dGhvcl9lbWFpbCkKKyAgICAgICAgICAgIGF1dGhv
cl9uYW1lID0gY3Vycl9jb3VudGVyWydtcnVfbmFtZSddCisgICAgICAgICAgICBwYXRjaF9jb3Vu
dCA9IGN1cnJfY291bnRlclsnY291bnQnXQorICAgICAgICAgICAgY3Vycl9jb3VudGVyWyduYW1l
cyddID0gY3Vycl9jb3VudGVyWyduYW1lcyddIC0gc2V0KFthdXRob3JfbmFtZV0pCisgICAgICAg
ICAgICBjdXJyX2NvdW50ZXJbJ2VtYWlscyddID0gY3Vycl9jb3VudGVyWydlbWFpbHMnXSAtIHNl
dChbYXV0aG9yX2VtYWlsXSkKKworICAgICAgICAgICAgcHJpbnQgIkNvbnRyaWJ1dG9yOiAlcyAo
JXMpIGhhcyAlZCByZXZpZXdlZCBwYXRjaGVzIiAlIChhdXRob3JfbmFtZSwgYXV0aG9yX2VtYWls
LCBwYXRjaF9jb3VudCkKKyAgICAgICAgICAgIGZvciBha2EgaW4gY3Vycl9jb3VudGVyWyduYW1l
cyddOgorICAgICAgICAgICAgICAgIHByaW50ICIgICAgICAgICAgICAgYWx0IG5hbWU6ICclcyci
ICUgYWthCisgICAgICAgICAgICBmb3IgYWthIGluIGN1cnJfY291bnRlclsnZW1haWxzJ106Cisg
ICAgICAgICAgICAgICAgcHJpbnQgIiAgICAgICAgICAgICBhbHQgbWFpbDogJyVzJyIgJSBha2EK
KyAgICAgICAgcmV0dXJuCisKKyAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0
b29sKToKKyAgICAgICAgc2VsZi5jb21taXR0ZXJfbWluaW11bSA9IG9wdGlvbnMuY29tbWl0dGVy
X21pbmltdW0KKyAgICAgICAgc2VsZi5yZXZpZXdlcl9taW5pbXVtID0gb3B0aW9ucy5yZXZpZXdl
cl9taW5pbXVtCisgICAgICAgIHNlbGYubWF4X2NvbW1pdF9hZ2UgPSBvcHRpb25zLm1heF9jb21t
aXRfYWdlCisgICAgICAgIHNlbGYuc2hvd19jb21taXRzID0gb3B0aW9ucy5zaG93X2NvbW1pdHMK
KyAgICAgICAgc2VsZi52ZXJib3NlID0gb3B0aW9ucy52ZXJib3NlCisKKyAgICAgICAgcGF0Y2hf
Y291bnRzID0gc2VsZi5fY291bnRfcmVjZW50X3BhdGNoZXMoKQorICAgICAgICBub21pbmF0aW9u
cyA9IHNlbGYuX2NvbGxlY3Rfbm9taW5hdGlvbnMocGF0Y2hfY291bnRzKQorICAgICAgICBzZWxm
Ll9wcmludF9ub21pbmF0aW9ucyhub21pbmF0aW9ucykKKyAgICAgICAgaWYgc2VsZi52ZXJib3Nl
OgorICAgICAgICAgICAgc2VsZi5fcHJpbnRfY291bnRzKHBhdGNoX2NvdW50cykKKworaWYgX19u
YW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBTdWdnZXN0Tm9taW5hdGlvbnMoKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9u
c191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdn
ZXN0bm9taW5hdGlvbnNfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjRlOTdmZGU5NzAyZWY5OWRi
OTRiZDI1NzgyNjBjZTlkNGZiYzg0OAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlvbnNfdW5pdHRlc3QucHkKQEAg
LTAsMCArMSw3NCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIwor
IyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gd2Via2l0cHkudG9vbC5jb21tYW5k
cy5jb21tYW5kdGVzdCBpbXBvcnQgQ29tbWFuZHNUZXN0Citmcm9tIHdlYmtpdHB5LnRvb2wuY29t
bWFuZHMuc3VnZ2VzdG5vbWluYXRpb25zIGltcG9ydCBTdWdnZXN0Tm9taW5hdGlvbnMKK2Zyb20g
d2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMsIE1vY2tUb29sCisKKwor
Y2xhc3MgU3VnZ2VzdE5vbWluYXRpb25zVGVzdChDb21tYW5kc1Rlc3QpOgorCisgICAgbW9ja19n
aXRfb3V0cHV0ID0gIiIiY29tbWl0IDYwODMxZGRlNWJlYjIyZjM1YWVmMzA1YTg3ZmNhN2I1ZjI4
NGM2OTgKK0F1dGhvcjogZnBpemxvQGFwcGxlLmNvbSA8ZnBpemxvQGFwcGxlLmNvbUAyNjhmNDVj
Yy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmM+CitEYXRlOiAgIFRodSBTZXAgMTUgMTk6NTY6
MjEgMjAxMSArMDAwMAorCisgICAgVmFsdWUgcHJvZmlsZXMgY29sbGVjdCBubyBpbmZvcm1hdGlv
biBmb3IgZ2xvYmFsIHZhcmlhYmxlcworICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02ODE0MworCisgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAg
ICBnaXQtc3ZuLWlkOiBodHRwOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1
bmtAOTUyMTkgMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjCisiIiIKKyAgICBt
b2NrX3NhbWVfYXV0aG9yX2NvbW1pdF9tZXNzYWdlID0gIiIiVmFsdWUgcHJvZmlsZXMgY29sbGVj
dCBubyBpbmZvcm1hdGlvbiBmb3IgZ2xvYmFsIHZhcmlhYmxlcworaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MTQzCisKK1Jldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVu
LiIiIgorCisgICAgZGVmIHRlc3RfcmVjZW50X2NvbW1pdF9tZXNzYWdlcyhzZWxmKToKKyAgICAg
ICAgdG9vbCA9IE1vY2tUb29sKCkKKyAgICAgICAgc3VnZ2VzdF9ub21pbmF0aW9ucyA9IFN1Z2dl
c3ROb21pbmF0aW9ucygpCisgICAgICAgIHN1Z2dlc3Rfbm9taW5hdGlvbnMuYmluZF90b190b29s
KHRvb2wpCisKKyAgICAgICAgdG9vbC5leGVjdXRpdmUucnVuX2NvbW1hbmQgPSBsYW1iZGEgY29t
bWFuZDogc2VsZi5tb2NrX2dpdF9vdXRwdXQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0
KHN1Z2dlc3Rfbm9taW5hdGlvbnMuX3JlY2VudF9jb21taXRfbWVzc2FnZXMoKSksIFtzZWxmLm1v
Y2tfc2FtZV9hdXRob3JfY29tbWl0X21lc3NhZ2VdKQorCisgICAgbW9ja19ub25fY29tbWl0dGVy
X2NvbW1pdF9tZXNzYWdlID0gIiIiTGV0IFRlc3RXZWJLaXRBUEkgd29yayBmb3IgY2hyb21pdW0K
K2h0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Nzc1NgorCitQYXRjaCBi
eSBYaWFuemh1IFdhbmcgPHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4gb24gMjAxMS0wOS0xNQor
UmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworU291cmNlL1dlYktpdC9jaHJvbWl1bToKKworKiBX
ZWJLaXQuZ3lwOiIiIgorCisgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgIGV4cGVj
dGVkX3N0ZG91dCA9ICJDT01NSVRURVIgQU5EIFJFVklFV0VSOiBYaWFuemh1IFdhbmcgKHdhbmd4
aWFuemh1QGNocm9taXVtLm9yZykgaGFzIDg4IHJldmlld2VkIHBhdGNoZXNcbiIKKyAgICAgICAg
c3VnZ2VzdF9ub21pbmF0aW9ucyA9IFN1Z2dlc3ROb21pbmF0aW9ucygpCisgICAgICAgIHN1Z2dl
c3Rfbm9taW5hdGlvbnMuX3JlY2VudF9jb21taXRfbWVzc2FnZXMgPSBsYW1iZGE6IFtzZWxmLm1v
Y2tfbm9uX2NvbW1pdHRlcl9jb21taXRfbWVzc2FnZSBmb3IgXyBpbiByYW5nZSg4OCldCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2V4ZWN1dGVfb3V0cHV0cyhzdWdnZXN0X25vbWluYXRpb25zLCBbXSwg
ZXhwZWN0ZWRfc3Rkb3V0PWV4cGVjdGVkX3N0ZG91dCwgb3B0aW9ucz1Nb2NrT3B0aW9ucyhyZXZp
ZXdlcl9taW5pbXVtPTgwLCBjb21taXR0ZXJfbWluaW11bT0xMCwgbWF4X2NvbW1pdF9hZ2U9OSwg
c2hvd19jb21taXRzPUZhbHNlLCB2ZXJib3NlPUZhbHNlKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9vcHRpb25zLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL29wdGlvbnMucHkKaW5kZXggMTg2YzlkMzU1MTI3MjAwNzliMjI5MWUx
MTlkZDYxN2UzZTY4NzUwNC4uYzM0OWJkM2Q5YzE0MDVhZTcxZTJlN2UyYTJlYzQ4MjQ4NWE2YmIz
OCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL29wdGlvbnMu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL29wdGlvbnMucHkKQEAg
LTM4LDYgKzM4LDcgQEAgY2xhc3MgT3B0aW9ucyhvYmplY3QpOgogICAgIGNsZWFuID0gbWFrZV9v
cHRpb24oIi0tbm8tY2xlYW4iLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0iY2xlYW4iLCBk
ZWZhdWx0PVRydWUsIGhlbHA9IkRvbid0IGNoZWNrIGlmIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBp
cyBjbGVhbiBiZWZvcmUgYXBwbHlpbmcgcGF0Y2hlcyIpCiAgICAgY2xvc2VfYnVnID0gbWFrZV9v
cHRpb24oIi0tbm8tY2xvc2UiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0iY2xvc2VfYnVn
IiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJMZWF2ZSBidWcgb3BlbiBhZnRlciBsYW5kaW5nLiIpCiAg
ICAgY29tbWVudCA9IG1ha2Vfb3B0aW9uKCItLWNvbW1lbnQiLCBhY3Rpb249InN0b3JlIiwgdHlw
ZT0ic3RyaW5nIiwgZGVzdD0iY29tbWVudCIsIGhlbHA9IkNvbW1lbnQgdG8gcG9zdCB0byBidWcu
IikKKyAgICBjb21taXR0ZXJfbWluaW11bSA9IG1ha2Vfb3B0aW9uKCItLWNvbW1pdHRlci1taW5p
bXVtIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImNvbW1pdHRlcl9taW5pbXVtIiwgdHlwZT0iaW50
IiwgZGVmYXVsdD0xMCwgaGVscD0iU3BlY2lmeSBtaW5pbXVtIHBhdGNoIGNvdW50IGZvciBDb21t
aXR0ZXIgbm9taW5hdGlvbnMuIikKICAgICBjb21wb25lbnQgPSBtYWtlX29wdGlvbigiLS1jb21w
b25lbnQiLCBhY3Rpb249InN0b3JlIiwgdHlwZT0ic3RyaW5nIiwgZGVzdD0iY29tcG9uZW50Iiwg
aGVscD0iQ29tcG9uZW50IGZvciB0aGUgbmV3IGJ1Zy4iKQogICAgIGNvbmZpcm0gPSBtYWtlX29w
dGlvbigiLS1uby1jb25maXJtIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9ImNvbmZpcm0i
LCBkZWZhdWx0PVRydWUsIGhlbHA9IlNraXAgY29uZmlybWF0aW9uIHN0ZXBzLiIpCiAgICAgZGVz
Y3JpcHRpb24gPSBtYWtlX29wdGlvbigiLW0iLCAiLS1kZXNjcmlwdGlvbiIsIGFjdGlvbj0ic3Rv
cmUiLCB0eXBlPSJzdHJpbmciLCBkZXN0PSJkZXNjcmlwdGlvbiIsIGhlbHA9IkRlc2NyaXB0aW9u
IHN0cmluZyBmb3IgdGhlIGF0dGFjaG1lbnQiKQpAQCAtNDYsNiArNDcsNyBAQCBjbGFzcyBPcHRp
b25zKG9iamVjdCk6CiAgICAgZm9yY2VfcGF0Y2ggPSBtYWtlX29wdGlvbigiLS1mb3JjZS1wYXRj
aCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImZvcmNlX3BhdGNoIiwgZGVmYXVsdD1GYWxz
ZSwgaGVscD0iRm9yY2VmdWxseSBhcHBsaWVzIHRoZSBwYXRjaCwgY29udGludWluZyBwYXN0IGVy
cm9ycy4iKQogICAgIGdpdF9jb21taXQgPSBtYWtlX29wdGlvbigiLWciLCAiLS1naXQtY29tbWl0
IiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImdpdF9jb21taXQiLCBoZWxwPSJPcGVyYXRlIG9uIGEg
bG9jYWwgY29tbWl0LiBJZiBhIHJhbmdlLCB0aGUgY29tbWl0cyBhcmUgc3F1YXNoZWQgaW50byBv
bmUuIEhFQUQuLiBvcGVyYXRlcyBvbiB3b3JraW5nIGNvcHkgY2hhbmdlcyBvbmx5LiIpCiAgICAg
bG9jYWxfY29tbWl0ID0gbWFrZV9vcHRpb24oIi0tbG9jYWwtY29tbWl0IiwgYWN0aW9uPSJzdG9y
ZV90cnVlIiwgZGVzdD0ibG9jYWxfY29tbWl0IiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iTWFrZSBh
IGxvY2FsIGNvbW1pdCBmb3IgZWFjaCBhcHBsaWVkIHBhdGNoIikKKyAgICBtYXhfY29tbWl0X2Fn
ZSA9IG1ha2Vfb3B0aW9uKCItLW1heC1jb21taXQtYWdlIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9
Im1heF9jb21taXRfYWdlIiwgdHlwZT0iaW50IiwgZGVmYXVsdD05LCBoZWxwPSJTcGVjaWZ5IG1h
eCBjb21taXQgYWdlIHRvIGNvbnNpZGVyIGZvciBub21pbmF0aW9ucyAoaW4gbW9udGhzKS4iKQog
ICAgIG5vbl9pbnRlcmFjdGl2ZSA9IG1ha2Vfb3B0aW9uKCItLW5vbi1pbnRlcmFjdGl2ZSIsIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9Im5vbl9pbnRlcmFjdGl2ZSIsIGRlZmF1bHQ9RmFsc2Us
IGhlbHA9Ik5ldmVyIHByb21wdCB0aGUgdXNlciwgZmFpbCBhcyBmYXN0IGFzIHBvc3NpYmxlLiIp
CiAgICAgb2Jzb2xldGVfcGF0Y2hlcyA9IG1ha2Vfb3B0aW9uKCItLW5vLW9ic29sZXRlIiwgYWN0
aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9Im9ic29sZXRlX3BhdGNoZXMiLCBkZWZhdWx0PVRydWUs
IGhlbHA9IkRvIG5vdCBvYnNvbGV0ZSBvbGQgcGF0Y2hlcyBiZWZvcmUgcG9zdGluZyB0aGlzIG9u
ZS4iKQogICAgIG9wZW5fYnVnID0gbWFrZV9vcHRpb24oIi0tb3Blbi1idWciLCBhY3Rpb249InN0
b3JlX3RydWUiLCBkZXN0PSJvcGVuX2J1ZyIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9Ik9wZW5zIHRo
ZSBhc3NvY2lhdGVkIGJ1ZyBpbiBhIGJyb3dzZXIuIikKQEAgLTU0LDYgKzU2LDggQEAgY2xhc3Mg
T3B0aW9ucyhvYmplY3QpOgogICAgIHJlcXVlc3RfY29tbWl0ID0gbWFrZV9vcHRpb24oIi0tcmVx
dWVzdC1jb21taXQiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJyZXF1ZXN0X2NvbW1pdCIs
IGRlZmF1bHQ9RmFsc2UsIGhlbHA9Ik1hcmsgdGhlIHBhdGNoIGFzIG5lZWRpbmcgYXV0by1jb21t
aXQgYWZ0ZXIgcmV2aWV3LiIpCiAgICAgcmV2aWV3ID0gbWFrZV9vcHRpb24oIi0tbm8tcmV2aWV3
IiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9InJldmlldyIsIGRlZmF1bHQ9VHJ1ZSwgaGVs
cD0iRG8gbm90IG1hcmsgdGhlIHBhdGNoIGZvciByZXZpZXcuIikKICAgICByZXZpZXdlciA9IG1h
a2Vfb3B0aW9uKCItciIsICItLXJldmlld2VyIiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9InN0cmlu
ZyIsIGRlc3Q9InJldmlld2VyIiwgaGVscD0iVXBkYXRlIENoYW5nZUxvZ3MgdG8gc2F5IFJldmll
d2VkIGJ5IFJFVklFV0VSLiIpCi0gICAgc3VnZ2VzdF9yZXZpZXdlcnMgPSBtYWtlX29wdGlvbigi
LS1zdWdnZXN0LXJldmlld2VycyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2Us
IGhlbHA9Ik9mZmVyIHRvIENDIGFwcHJvcHJpYXRlIHJldmlld2Vycy4iKQorICAgIHJldmlld2Vy
X21pbmltdW0gPSBtYWtlX29wdGlvbigiLS1yZXZpZXdlci1taW5pbXVtIiwgYWN0aW9uPSJzdG9y
ZSIsIGRlc3Q9InJldmlld2VyX21pbmltdW0iLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTgwLCBoZWxw
PSJTcGVjaWZ5IG1pbmltdW0gcGF0Y2ggY291bnQgZm9yIFJldmlld2VyIG5vbWluYXRpb25zLiIp
CisgICAgc2hvd19jb21taXRzID0gbWFrZV9vcHRpb24oIi0tc2hvdy1jb21taXRzIiwgYWN0aW9u
PSJzdG9yZV90cnVlIiwgZGVzdD0ic2hvd19jb21taXRzIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0i
U2hvdyBjb21taXQgaGlzdG9yeSB3aXRoIG5vbWluYXRpb24gc3VnZ2VzdGlvbnMuIikKKyAgICBz
dWdnZXN0X3Jldmlld2VycyA9IG1ha2Vfb3B0aW9uKCItLXN1Z2dlc3QtcmV2aWV3ZXJzIiwgYWN0
aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0ic3VnZ2VzdF9yZXZpZXdlcnMiLCBkZWZhdWx0PUZhbHNl
LCBoZWxwPSJPZmZlciB0byBDQyBhcHByb3ByaWF0ZSByZXZpZXdlcnMuIikKICAgICB0ZXN0ID0g
bWFrZV9vcHRpb24oIi0tdGVzdCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InRlc3QiLCBk
ZWZhdWx0PUZhbHNlLCBoZWxwPSJSdW4gcnVuLXdlYmtpdC10ZXN0cyBiZWZvcmUgY29tbWl0dGlu
Zy4iKQogICAgIHVwZGF0ZSA9IG1ha2Vfb3B0aW9uKCItLW5vLXVwZGF0ZSIsIGFjdGlvbj0ic3Rv
cmVfZmFsc2UiLCBkZXN0PSJ1cGRhdGUiLCBkZWZhdWx0PVRydWUsIGhlbHA9IkRvbid0IHVwZGF0
ZSB0aGUgd29ya2luZyBkaXJlY3RvcnkuIikKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZXJldmlld2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL3ZhbGlkYXRlcmV2aWV3ZXIucHkKaW5kZXggYzJhMjdiOTgzNmM2YWNl
Mjk0MjQyZDcxMDcxMTQyODU4ODZjMjM0NC4uMTY0OTEyOWY4MmI2NjY1Y2ZmNzQxMmNmZjgyOTZj
ZDY1MzZmNWFjNCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L3ZhbGlkYXRlcmV2aWV3ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL3ZhbGlkYXRlcmV2aWV3ZXIucHkKQEAgLTM3LDcgKzM3LDYgQEAgZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQgZXJyb3IsIGxvZwogCiAjIEZJ
WE1FOiBTb21lIG9mIHRoaXMgbG9naWMgc2hvdWxkIHByb2JhYmx5IGJlIHVuaWZpZWQgd2l0aCBD
b21taXR0ZXJWYWxpZGF0b3I/CiBjbGFzcyBWYWxpZGF0ZVJldmlld2VyKEFic3RyYWN0U3RlcCk6
Ci0gICAgIyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgbW92ZSBvbnRvIENoYW5nZUxvZ0Vu
dHJ5CiAgICAgZGVmIF9oYXNfdmFsaWRfcmV2aWV3ZXIoc2VsZiwgY2hhbmdlbG9nX2VudHJ5KToK
ICAgICAgICAgaWYgY2hhbmdlbG9nX2VudHJ5LnJldmlld2VyKCk6CiAgICAgICAgICAgICByZXR1
cm4gVHJ1ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110850</attachid>
            <date>2011-10-13 08:38:00 -0700</date>
            <delta_ts>2011-10-14 09:01:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62166-20111013083756.patch</filename>
            <type>text/plain</type>
            <size>25167</size>
            <attacher name="Tom Zakrajsek">tomz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTcyNzkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjZDA5ODhmNGFjODg5ZmYzZGMzMGM4ZWE2NGY0Zjg5NWU4
ZjExNWFjLi4wOTMzYTM1NjI5MzAwOWRmYjZjNDNjMjNiZDBiZDhmMWE0MDI4YTIxIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTEtMTAtMTMgIFRvbSBaYWtyYWpzZWsgIDx0b216QGNvZGVhdXJvcmEub3JnPgorCisg
ICAgICAgIEFkZCBhIHN1Z2dlc3Qtbm9taW5hdGlvbnMgY29tbWFuZCB0byB3ZWJraXQtcGF0Y2gg
Zm9yIGNvbXB1dGluZyBwb3RlbnRpYWwgY29tbWl0dGVyL3Jldmlld2VyIG5vbWluYXRpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjE2NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsc28gYWRkZWQg
c2V2ZXJhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW5jbHVkaW5nIC0tc2hvdy1jb21taXRzIHRv
IGxpc3QgdGhlIGNvbW1pdHMgYmFja2luZworICAgICAgICB1cCB0aGUgbm9taW5hdGlvbnMgYW5k
IC0tdmVyYm9zZSB0byBsaXN0IGNvdW50cyAoYW5kIGFsaWFzZXMpIGZvciBhbGwgY29udHJpYnV0
b3JzLgorCisgICAgICAgIFRoZSBkZWZhdWx0IGJlaGF2aW9yIG9ubHkgY29uc2lkZXJzIGNvbW1p
dHMgd2l0aGluIHRoZSBsYXN0IDkgbW9udGhzLiAgVGhpcyBjYW4gIGJlIG92ZXJyaWRkZW4KKyAg
ICAgICAgd2l0aCB0aGUgLS1tYXgtY29tbWl0LWFnZSBmbGFnLgorCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5OgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9fX2luaXRfXy5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zLnB5OiBBZGRlZC4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25z
X3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvb3B0aW9ucy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFs
aWRhdGVyZXZpZXdlci5weToKKwogMjAxMS0xMC0xMiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIHdlYmtpdHB5IHRlc3RzIGFyZSBmYWlsaW5nIG9uIE1hYyBib3Rz
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFu
Z2Vsb2cucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vs
b2cucHkKaW5kZXggYTUyMWMzMmZjYjU5ZWNkZmVmNzJiOWMzNjBjZTNmYjRlNTAwNGQ0ZS4uNzlh
Y2Q3MzFjM2VmYWRkMGY3ZDAxNTQyYTgxOTI3MGYxOTI3MmIxMCAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZy5weQpAQCAtNzcsOSAr
NzcsMTYgQEAgY2xhc3MgQ2hhbmdlTG9nRW50cnkob2JqZWN0KToKICAgICAjIGUuZy4gKiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHA6IEltcGxlbWVudCBGb29CYXJRdXV4Lgog
ICAgIHRvdWNoZWRfZmlsZXNfcmVnZXhwID0gcidccypcKlxzKig/UDxmaWxlPi4rKVw6JwogCisg
ICAgIyBlLmcuIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorICAgICMgKERpc2NhcmQgZXZlcnl0
aGluZyBhZnRlciB0aGUgZmlyc3QgcGVyaW9kIHRvIG1hdGNoIG1vcmUgaW52YWxpZCBsaW5lcy4p
CisgICAgcmV2aWV3ZWRfYnlfcmVnZXhwID0gcidSZXZpZXdlZCBieSAoP1A8cmV2aWV3ZXI+Lio/
KVtcLixdP1xzKiQnCisKICAgICAjIGUuZy4gPT0gUm9sbGVkIG92ZXIgdG8gQ2hhbmdlTG9nLTIw
MTEtMDItMTYgPT0KICAgICByb2xsZWRfb3Zlcl9yZWdleHAgPSByJ149PSBSb2xsZWQgb3ZlciB0
byBDaGFuZ2VMb2ctXGR7NH0tXGR7Mn0tXGR7Mn0gPT0kJwogCisgICAgIyBlLmcuIGdpdC1zdm4t
aWQ6IGh0dHA6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVua0A5NjE2MSAy
NjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMKKyAgICBzdm5faWRfcmVnZXhwID0g
cidnaXQtc3ZuLWlkOiBodHRwOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1
bmtAKD9QPHN2bmlkPlxkKykgJworCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbnRlbnRzLCBj
b21taXR0ZXJfbGlzdD1Db21taXR0ZXJMaXN0KCkpOgogICAgICAgICBzZWxmLl9jb250ZW50cyA9
IGNvbnRlbnRzCiAgICAgICAgIHNlbGYuX2NvbW1pdHRlcl9saXN0ID0gY29tbWl0dGVyX2xpc3QK
QEAgLTk0LDcgKzEwMSw3IEBAIGNsYXNzIENoYW5nZUxvZ0VudHJ5KG9iamVjdCk6CiAgICAgICAg
IHNlbGYuX2F1dGhvcl9uYW1lID0gbWF0Y2guZ3JvdXAoIm5hbWUiKSBpZiBtYXRjaCBlbHNlIE5v
bmUKICAgICAgICAgc2VsZi5fYXV0aG9yX2VtYWlsID0gbWF0Y2guZ3JvdXAoImVtYWlsIikgaWYg
bWF0Y2ggZWxzZSBOb25lCiAKLSAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goIl5ccytSZXZpZXdl
ZCBieSAoP1A8cmV2aWV3ZXI+Lio/KVtcLixdP1xzKiQiLCBzZWxmLl9jb250ZW50cywgcmUuTVVM
VElMSU5FKSAjIERpc2NhcmQgZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgcGVyaW9kCisgICAg
ICAgIG1hdGNoID0gcmUuc2VhcmNoKHNlbGYucmV2aWV3ZWRfYnlfcmVnZXhwLCBzZWxmLl9jb250
ZW50cywgcmUuTVVMVElMSU5FKQogICAgICAgICBzZWxmLl9yZXZpZXdlcl90ZXh0ID0gbWF0Y2gu
Z3JvdXAoInJldmlld2VyIikgaWYgbWF0Y2ggZWxzZSBOb25lCiAKICAgICAgICAgc2VsZi5fcmV2
aWV3ZXIgPSBzZWxmLl9jb21taXR0ZXJfbGlzdC5jb21taXR0ZXJfYnlfbmFtZShzZWxmLl9yZXZp
ZXdlcl90ZXh0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL19f
aW5pdF9fLnB5CmluZGV4IDM4MzY5NDdmYWI4OGQ3YmQxODRlOWYwODRkODdhNGYzOGIzNzJhOGEu
LjFhOThkYjBkNDg2YTVkZWQ2ZjE4MWMzYjgxZDAxMTU0Y2NlZDg2NjUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9fX2luaXRfXy5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvX19pbml0X18ucHkKQEAgLTE4LDMgKzE4
LDQgQEAgZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnJlYmFzZWxpbmVzZXJ2ZXIgaW1wb3J0
IFJlYmFzZWxpbmVTZXJ2ZXIKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5yb2xsIGltcG9y
dCAqCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuc2hlcmlmZmJvdCBpbXBvcnQgKgogZnJv
bSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnVwbG9hZCBpbXBvcnQgKgorZnJvbSB3ZWJraXRweS50
b29sLmNvbW1hbmRzLnN1Z2dlc3Rub21pbmF0aW9ucyBpbXBvcnQgKgpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9ucy5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlvbnMu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDkyMDhkOWNmNjg1NGRmYjhiMTEwZjIyNjY5N2I0NzY2ZTMxMTJmNwot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9z
dWdnZXN0bm9taW5hdGlvbnMucHkKQEAgLTAsMCArMSwyNTAgQEAKKyMgQ29weXJpZ2h0IChjKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAx
MSBDb2RlIEF1cm9yYSBGb3J1bS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK2Zyb20gb3B0cGFyc2UgaW1wb3J0IG1ha2Vfb3B0aW9uCitpbXBvcnQgcmUKKworZnJv
bSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuY2hhbmdlbG9nIGltcG9ydCBDaGFuZ2VMb2dFbnRy
eQorZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRl
ckxpc3QKK2Zyb20gd2Via2l0cHkudG9vbCBpbXBvcnQgc3RlcHMKK2Zyb20gd2Via2l0cHkudG9v
bC5ncmFtbWFyIGltcG9ydCBqb2luX3dpdGhfc2VwYXJhdG9ycworZnJvbSB3ZWJraXRweS50b29s
Lm11bHRpY29tbWFuZHRvb2wgaW1wb3J0IEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kCisKKwor
Y2xhc3MgU3VnZ2VzdE5vbWluYXRpb25zKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToKKyAg
ICBuYW1lID0gInN1Z2dlc3Qtbm9taW5hdGlvbnMiCisgICAgaGVscF90ZXh0ID0gIlN1Z2dlc3Qg
Y29udHJpYnV0b3JzIGZvciBjb21taXR0ZXIvcmV2aWV3ZXIgbm9taW5hdGlvbnMiCisKKyAgICBk
ZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuY29tbWl0dGVyX21pbmltdW0gPSBzdGVw
cy5PcHRpb25zLmNvbW1pdHRlcl9taW5pbXVtLmRlZmF1bHQKKyAgICAgICAgc2VsZi5yZXZpZXdl
cl9taW5pbXVtID0gc3RlcHMuT3B0aW9ucy5yZXZpZXdlcl9taW5pbXVtLmRlZmF1bHQKKyAgICAg
ICAgc2VsZi5tYXhfY29tbWl0X2FnZSA9IHN0ZXBzLk9wdGlvbnMubWF4X2NvbW1pdF9hZ2UuZGVm
YXVsdAorICAgICAgICBzZWxmLnNob3dfY29tbWl0cyA9IHN0ZXBzLk9wdGlvbnMuc2hvd19jb21t
aXRzLmRlZmF1bHQKKyAgICAgICAgc2VsZi52ZXJib3NlID0gRmFsc2UKKworICAgICAgICBvcHRp
b25zID0gWworICAgICAgICAgICAgc3RlcHMuT3B0aW9ucy5jb21taXR0ZXJfbWluaW11bSwKKyAg
ICAgICAgICAgIHN0ZXBzLk9wdGlvbnMucmV2aWV3ZXJfbWluaW11bSwKKyAgICAgICAgICAgIHN0
ZXBzLk9wdGlvbnMubWF4X2NvbW1pdF9hZ2UsCisgICAgICAgICAgICBzdGVwcy5PcHRpb25zLnNo
b3dfY29tbWl0cywKKyAgICAgICAgXQorCisgICAgICAgIEFic3RyYWN0RGVjbGFyYXRpdmVDb21t
YW5kLl9faW5pdF9fKHNlbGYsIG9wdGlvbnM9b3B0aW9ucykKKyAgICAgICAgIyBGSVhNRTogVGhp
cyBzaG91bGQgcHJvYmFibHkgYmUgb24gdGhlIHRvb2wgc29tZXdoZXJlLgorICAgICAgICBzZWxm
Ll9jb21taXR0ZXJfbGlzdCA9IENvbW1pdHRlckxpc3QoKQorCisgICAgX2NvdW50ZXJzX2J5X25h
bWUgPSB7fQorICAgIF9jb3VudGVyc19ieV9lbWFpbCA9IHt9CisKKyAgICAjIEZJWE1FOiBUaGlz
IHNob3VsZCBtb3ZlIHRvIHNjbS5weQorICAgIGRlZiBfcmVjZW50X2NvbW1pdF9tZXNzYWdlcyhz
ZWxmKToKKyAgICAgICAgZ2l0X2xvZyA9IHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9jb21tYW5k
KFsnZ2l0JywgJ2xvZycsICctLXNpbmNlPSIlcyBtb250aHMgYWdvIicgJSBzZWxmLm1heF9jb21t
aXRfYWdlXSkKKyAgICAgICAgbWF0Y2hfZ2l0X3N2bl9pZCA9IHJlLmNvbXBpbGUociJcblxuICAg
IGdpdC1zdm4taWQ6LipcbiIsIHJlLk1VTFRJTElORSkKKyAgICAgICAgbWF0Y2hfZ2V0X2xvZ19s
aW5lcyA9IHJlLmNvbXBpbGUociJeXFMuKlxuIiwgcmUuTVVMVElMSU5FKQorICAgICAgICBtYXRj
aF9sZWFkaW5nX2luZGVudCA9IHJlLmNvbXBpbGUociJeWyBdezR9IiwgcmUuTVVMVElMSU5FKQor
CisgICAgICAgIG1lc3NhZ2VzID0gcmUuc3BsaXQociJjb21taXQgXHd7NDB9IiwgZ2l0X2xvZylb
MTpdICAjIElnbm9yZSB0aGUgZmlyc3QgbWVzc2FnZSB3aGljaCB3aWxsIGJlIGVtcHR5LgorICAg
ICAgICBmb3IgbWVzc2FnZSBpbiBtZXNzYWdlczoKKyAgICAgICAgICAgICMgUmVtb3ZlIGFueSBs
aW5lcyBmcm9tIGdpdCBhbmQgdW5pbmRlbnQgYWxsIHRoZSBsaW5lcworICAgICAgICAgICAgKG1l
c3NhZ2UsIF8pID0gbWF0Y2hfZ2l0X3N2bl9pZC5zdWJuKCIiLCBtZXNzYWdlKQorICAgICAgICAg
ICAgKG1lc3NhZ2UsIF8pID0gbWF0Y2hfZ2V0X2xvZ19saW5lcy5zdWJuKCIiLCBtZXNzYWdlKQor
ICAgICAgICAgICAgKG1lc3NhZ2UsIF8pID0gbWF0Y2hfbGVhZGluZ19pbmRlbnQuc3VibigiIiwg
bWVzc2FnZSkKKyAgICAgICAgICAgIHlpZWxkIG1lc3NhZ2UubHN0cmlwKCkgICMgUmVtb3ZlIGFu
eSBsZWFkaW5nIG5ld2xpbmVzIGZyb20gdGhlIGxvZyBtZXNzYWdlLgorCisgICAgIyBlLmcuIFBh
dGNoIGJ5IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+IG9uIDIwMTEtMDktMTUKKyAgICBw
YXRjaF9ieV9yZWdleHAgPSByJ15QYXRjaCBieSAoP1A8bmFtZT4uKz8pXHMrPCg/UDxlbWFpbD5b
Xjw+XSspPiBvbiAoP1A8ZGF0ZT5cZHs0fS1cZHsyfS1cZHsyfSkkJworCisgICAgZGVmIF9jb3Vu
dF9yZWNlbnRfcGF0Y2hlcyhzZWxmKToKKyAgICAgICAgIyBUaGlzIGVudGlyZSBibG9jayBjb3Vs
ZCBiZSB3cml0dGVuIGFzIGEgbWFwL3JlZHVjZSBvdmVyIHRoZSBtZXNzYWdlcy4KKyAgICAgICAg
Zm9yIG1lc3NhZ2UgaW4gc2VsZi5fcmVjZW50X2NvbW1pdF9tZXNzYWdlcygpOgorICAgICAgICAg
ICAgIyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIENoYW5nZUxvZ0VudHJ5IHRvIGRvIHRoZSBlbnRp
cmUgcGFyc2UgaW5zdGVhZAorICAgICAgICAgICAgIyBvZiBncmFiYmluZyBhdCBpdHMgcmVnZXhw
cy4KKyAgICAgICAgICAgIGRhdGVsaW5lX21hdGNoID0gcmUubWF0Y2goQ2hhbmdlTG9nRW50cnku
ZGF0ZV9saW5lX3JlZ2V4cCwgbWVzc2FnZSwgcmUuTVVMVElMSU5FKQorICAgICAgICAgICAgaWYg
bm90IGRhdGVsaW5lX21hdGNoOgorICAgICAgICAgICAgICAgICMgTW9kZXJuIGNvbW1pdCBtZXNz
YWdlcyBkb24ndCBqdXN0IGR1bXAgdGhlIENoYW5nZUxvZyBlbnRyeSwgYnV0IHJhdGhlcgorICAg
ICAgICAgICAgICAgICMgaGF2ZSBhIHNwZWNpYWwgUGF0Y2ggYnkgbGluZSBmb3Igbm9uLWNvbW1p
dHRlcnMuCisgICAgICAgICAgICAgICAgZGF0ZWxpbmVfbWF0Y2ggPSByZS5zZWFyY2goc2VsZi5w
YXRjaF9ieV9yZWdleHAsIG1lc3NhZ2UsIHJlLk1VTFRJTElORSkKKyAgICAgICAgICAgICAgICBp
ZiBub3QgZGF0ZWxpbmVfbWF0Y2g6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAg
ICAgICAgICAgIGF1dGhvcl9lbWFpbCA9IGRhdGVsaW5lX21hdGNoLmdyb3VwKCJlbWFpbCIpCisg
ICAgICAgICAgICBpZiBub3QgYXV0aG9yX2VtYWlsOgorICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisKKyAgICAgICAgICAgICMgV2Ugb25seSBjYXJlIGFib3V0IHJldmlld2VkIHBhdGNoZXMsIHNv
IG1ha2Ugc3VyZSBpdCBoYXMgYSB2YWxpZCByZXZpZXdlciBsaW5lLgorICAgICAgICAgICAgcmV2
aWV3ZXJfbWF0Y2ggPSByZS5zZWFyY2goQ2hhbmdlTG9nRW50cnkucmV2aWV3ZWRfYnlfcmVnZXhw
LCBtZXNzYWdlLCByZS5NVUxUSUxJTkUpCisgICAgICAgICAgICAjIFdlIG1pZ2h0IGFsc28gd2Fu
dCB0byB2YWxpZGF0ZSB0aGUgcmV2aWV3ZXIgbmFtZSBhZ2FpbnN0IHRoZSBjb21taXR0ZXIgbGlz
dC4KKyAgICAgICAgICAgIGlmIG5vdCByZXZpZXdlcl9tYXRjaCBvciBub3QgcmV2aWV3ZXJfbWF0
Y2guZ3JvdXAoInJldmlld2VyIik6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAg
ICAgICAgYXV0aG9yX25hbWUgPSBkYXRlbGluZV9tYXRjaC5ncm91cCgibmFtZSIpCisgICAgICAg
ICAgICBpZiBub3QgYXV0aG9yX25hbWU6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAg
ICAgICAgICAgaWYgcmUuc2VhcmNoKCIoW15hLXpBLVpdYW5kW15hLXpBLVpdKXwoLCl8KEApIiwg
YXV0aG9yX25hbWUpOgorICAgICAgICAgICAgICAgICMgVGhpcyBlbnRyeSBzZWVtcyB0byBoYXZl
IG11bHRpcGxlIHJldmlld2Vycywgb3IgaW52YWxpZCBjaGFyYWN0ZXJzLCBzbyByZWplY3QgaXQu
CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgc3ZuX2lkX21hdGNoID0g
cmUuc2VhcmNoKENoYW5nZUxvZ0VudHJ5LnN2bl9pZF9yZWdleHAsIG1lc3NhZ2UsIHJlLk1VTFRJ
TElORSkKKyAgICAgICAgICAgIGlmIHN2bl9pZF9tYXRjaDoKKyAgICAgICAgICAgICAgICBzdm5f
aWQgPSBzdm5faWRfbWF0Y2guZ3JvdXAoInN2bmlkIikKKyAgICAgICAgICAgIGlmIG5vdCBzdm5f
aWRfbWF0Y2ggb3Igbm90IHN2bl9pZDoKKyAgICAgICAgICAgICAgICBzdm5faWQgPSAidW5rbm93
biIKKyAgICAgICAgICAgIGNvbW1pdF9kYXRlID0gZGF0ZWxpbmVfbWF0Y2guZ3JvdXAoImRhdGUi
KQorCisgICAgICAgICAgICAjIFNlZSBpZiB3ZSBhbHJlYWR5IGhhdmUgYSBjb250cmlidXRvciB3
aXRoIHRoaXMgbmFtZSBvciBlbWFpbAorICAgICAgICAgICAgY291bnRlcl9ieV9uYW1lID0gc2Vs
Zi5fY291bnRlcnNfYnlfbmFtZS5nZXQoYXV0aG9yX25hbWUpCisgICAgICAgICAgICBjb3VudGVy
X2J5X2VtYWlsID0gc2VsZi5fY291bnRlcnNfYnlfZW1haWwuZ2V0KGF1dGhvcl9lbWFpbCkKKyAg
ICAgICAgICAgIGlmIGNvdW50ZXJfYnlfbmFtZToKKyAgICAgICAgICAgICAgICBpZiBjb3VudGVy
X2J5X2VtYWlsOgorICAgICAgICAgICAgICAgICAgICBpZiBjb3VudGVyX2J5X25hbWUgIT0gY291
bnRlcl9ieV9lbWFpbDoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgTWVyZ2UgdGhlc2UgdHdv
IGNvdW50ZXJzICBUaGlzIGlzIGZvciB0aGUgY2FzZSB3aGVyZSB3ZSBoYWQKKyAgICAgICAgICAg
ICAgICAgICAgICAgICMgSm9uIFNtaXRoIChqc21pdGhAZ21haWwuY29tKSBhbmQgSm9uYXRoYW4g
U21pdGggKGpzbWl0aEBhcHBsZS5jb20pCisgICAgICAgICAgICAgICAgICAgICAgICAjIGFuZCBq
dXN0IGZvdW5kIGEgSm9obiBTbWl0aCAoanNtaXRoQGFwcGxlLmNvbSkuICBOb3cgd2Uga25vdyB0
aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdHdvIG5hbWVzIGFyZSB0aGUgc2FtZSBwZXJz
b24KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfYnlfbmFtZVsnbmFtZXMnXSB8PSBj
b3VudGVyX2J5X2VtYWlsWyduYW1lcyddCisgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVy
X2J5X25hbWVbJ2VtYWlscyddIHw9IGNvdW50ZXJfYnlfZW1haWxbJ2VtYWlscyddCisgICAgICAg
ICAgICAgICAgICAgICAgICBjb3VudGVyX2J5X25hbWVbJ2NvdW50J10gKz0gY291bnRlcl9ieV9l
bWFpbC5nZXQoJ2NvdW50JywgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvdW50
ZXJzX2J5X2VtYWlsW2F1dGhvcl9lbWFpbF0gPSBjb3VudGVyX2J5X25hbWUKKyAgICAgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIEFkZCBlbWFpbCB0byB0aGUgZXhpc3Rp
bmcgY291bnRlcgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb3VudGVyc19ieV9lbWFpbFth
dXRob3JfZW1haWxdID0gY291bnRlcl9ieV9uYW1lCisgICAgICAgICAgICAgICAgICAgIGNvdW50
ZXJfYnlfbmFtZVsnZW1haWxzJ10gfD0gc2V0KFthdXRob3JfZW1haWxdKQorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICBpZiBjb3VudGVyX2J5X2VtYWlsOgorICAgICAgICAgICAg
ICAgICAgICAjIEFkZCBuYW1lIHRvIHRoZSBleGlzdGluZyBjb3VudGVyCisgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX2NvdW50ZXJzX2J5X25hbWVbYXV0aG9yX25hbWVdID0gY291bnRlcl9ieV9l
bWFpbAorICAgICAgICAgICAgICAgICAgICBjb3VudGVyX2J5X2VtYWlsWyduYW1lcyddIHw9IHNl
dChbYXV0aG9yX25hbWVdKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
ICAgICMgQ3JlYXRlIG5ldyBjb3VudGVyCisgICAgICAgICAgICAgICAgICAgIG5ld19jb3VudGVy
ID0geyduYW1lcyc6IHNldChbYXV0aG9yX25hbWVdKSwgJ2VtYWlscyc6IHNldChbYXV0aG9yX2Vt
YWlsXSksICdtcnVfbmFtZSc6IGF1dGhvcl9uYW1lLCAnbXJ1X2VtYWlsJzogYXV0aG9yX2VtYWls
LCAnY29tbWl0cyc6ICIifQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb3VudGVyc19ieV9u
YW1lW2F1dGhvcl9uYW1lXSA9IG5ld19jb3VudGVyCisgICAgICAgICAgICAgICAgICAgIHNlbGYu
X2NvdW50ZXJzX2J5X2VtYWlsW2F1dGhvcl9lbWFpbF0gPSBuZXdfY291bnRlcgorCisgICAgICAg
ICAgICBhc3NlcnQoc2VsZi5fY291bnRlcnNfYnlfbmFtZVthdXRob3JfbmFtZV0gPT0gc2VsZi5f
Y291bnRlcnNfYnlfZW1haWxbYXV0aG9yX2VtYWlsXSkKKyAgICAgICAgICAgIGN1cnJfY291bnRl
ciA9IHNlbGYuX2NvdW50ZXJzX2J5X25hbWVbYXV0aG9yX25hbWVdCisgICAgICAgICAgICBjdXJy
X2NvdW50ZXJbJ2NvdW50J10gPSBjdXJyX2NvdW50ZXIuZ2V0KCdjb3VudCcsIDApICsgMQorCisg
ICAgICAgICAgICBpZiBzdm5faWQuaXNkaWdpdCgpOgorICAgICAgICAgICAgICAgIHN2bl9pZCA9
ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8iICsgc3ZuX2lkCisgICAgICAgICAg
ICBjdXJyX2NvdW50ZXJbJ2NvbW1pdHMnXSArPSAiICBjb21taXQ6ICVzIG9uICVzIGJ5ICVzICgl
cylcbiIgJSAoc3ZuX2lkLCBjb21taXRfZGF0ZSwgYXV0aG9yX25hbWUsIGF1dGhvcl9lbWFpbCkK
KworICAgICAgICByZXR1cm4gc2VsZi5fY291bnRlcnNfYnlfZW1haWwKKworICAgIGRlZiBfY29s
bGVjdF9ub21pbmF0aW9ucyhzZWxmLCBjb3VudGVyc19ieV9lbWFpbCk6CisgICAgICAgIG5vbWlu
YXRpb25zID0gW10KKyAgICAgICAgZm9yIGF1dGhvcl9lbWFpbCwgY3Vycl9jb3VudGVyIGluIGNv
dW50ZXJzX2J5X2VtYWlsLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBhdXRob3JfZW1haWwgIT0g
Y3Vycl9jb3VudGVyWydtcnVfZW1haWwnXToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAg
ICAgICAgICAgcm9sZXMgPSBbXQorCisgICAgICAgICAgICBjb250cmlidXRvciA9IHNlbGYuX2Nv
bW1pdHRlcl9saXN0LmNvbnRyaWJ1dG9yX2J5X2VtYWlsKGF1dGhvcl9lbWFpbCkKKworICAgICAg
ICAgICAgYXV0aG9yX25hbWUgPSBjdXJyX2NvdW50ZXJbJ21ydV9uYW1lJ10KKyAgICAgICAgICAg
IHBhdGNoX2NvdW50ID0gY3Vycl9jb3VudGVyWydjb3VudCddCisKKyAgICAgICAgICAgIGlmIHBh
dGNoX2NvdW50ID49IHNlbGYuY29tbWl0dGVyX21pbmltdW0gYW5kIChub3QgY29udHJpYnV0b3Ig
b3Igbm90IGNvbnRyaWJ1dG9yLmNhbl9jb21taXQpOgorICAgICAgICAgICAgICAgIHJvbGVzLmFw
cGVuZCgiY29tbWl0dGVyIikKKyAgICAgICAgICAgIGlmIHBhdGNoX2NvdW50ID49IHNlbGYucmV2
aWV3ZXJfbWluaW11bSAgYW5kIChub3QgY29udHJpYnV0b3Igb3Igbm90IGNvbnRyaWJ1dG9yLmNh
bl9yZXZpZXcpOgorICAgICAgICAgICAgICAgIHJvbGVzLmFwcGVuZCgicmV2aWV3ZXIiKQorICAg
ICAgICAgICAgaWYgcm9sZXM6CisgICAgICAgICAgICAgICAgbm9taW5hdGlvbnMuYXBwZW5kKHsK
KyAgICAgICAgICAgICAgICAgICAgJ3JvbGVzJzogcm9sZXMsCisgICAgICAgICAgICAgICAgICAg
ICdhdXRob3JfbmFtZSc6IGF1dGhvcl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAnYXV0aG9y
X2VtYWlsJzogYXV0aG9yX2VtYWlsLAorICAgICAgICAgICAgICAgICAgICAncGF0Y2hfY291bnQn
OiBwYXRjaF9jb3VudCwKKyAgICAgICAgICAgICAgICB9KQorICAgICAgICByZXR1cm4gbm9taW5h
dGlvbnMKKworICAgIGRlZiBfcHJpbnRfbm9taW5hdGlvbnMoc2VsZiwgbm9taW5hdGlvbnMpOgor
ICAgICAgICBkZWYgbm9taW5hdGlvbl9jbXAoYSwgYik6CisgICAgICAgICAgICByb2xlc19yZXN1
bHQgPSBjbXAoYVsncm9sZXMnXSwgYlsncm9sZXMnXSkKKyAgICAgICAgICAgIGlmIHJvbGVzX3Jl
c3VsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gLXJvbGVzX3Jlc3VsdAorICAgICAgICAgICAg
Y291bnRfcmVzdWx0ID0gY21wKGFbJ3BhdGNoX2NvdW50J10sIGJbJ3BhdGNoX2NvdW50J10pCisg
ICAgICAgICAgICBpZiBjb3VudF9yZXN1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIC1jb3Vu
dF9yZXN1bHQKKyAgICAgICAgICAgIHJldHVybiBjbXAoYVsnYXV0aG9yX25hbWUnXSwgYlsnYXV0
aG9yX25hbWUnXSkKKworICAgICAgICBmb3Igbm9taW5hdGlvbiBpbiBzb3J0ZWQobm9taW5hdGlv
bnMsIG5vbWluYXRpb25fY21wKToKKyAgICAgICAgICAgICMgVGhpcyBpcyBhIGxpdHRsZSBiaXQg
b2YgYSBoYWNrLCBidXQgaXRzIGNvbnZpZW5lbnQgdG8ganVzdCBwYXNzIHRoZSBub21pbmF0aW9u
IGRpY3Rpb25hcnkgdG8gdGhlIGZvcm1hdGluZyBvcGVyYXRvci4KKyAgICAgICAgICAgIG5vbWlu
YXRpb25bJ3JvbGVzX3N0cmluZyddID0gam9pbl93aXRoX3NlcGFyYXRvcnMobm9taW5hdGlvblsn
cm9sZXMnXSkudXBwZXIoKQorICAgICAgICAgICAgcHJpbnQgIiUocm9sZXNfc3RyaW5nKXM6ICUo
YXV0aG9yX25hbWUpcyAoJShhdXRob3JfZW1haWwpcykgaGFzICUocGF0Y2hfY291bnQpcyByZXZp
ZXdlZCBwYXRjaGVzIiAlIG5vbWluYXRpb24KKyAgICAgICAgICAgIGN1cnJfY291bnRlciA9IHNl
bGYuX2NvdW50ZXJzX2J5X2VtYWlsW25vbWluYXRpb25bJ2F1dGhvcl9lbWFpbCddXQorCisgICAg
ICAgICAgICBpZiBzZWxmLnNob3dfY29tbWl0czoKKyAgICAgICAgICAgICAgICBwcmludCBjdXJy
X2NvdW50ZXJbJ2NvbW1pdHMnXQorCisgICAgZGVmIF9wcmludF9jb3VudHMoc2VsZiwgY291bnRl
cnNfYnlfZW1haWwpOgorICAgICAgICBkZWYgY291bnRlcl9jbXAoYV90dXBsZSwgYl90dXBsZSk6
CisgICAgICAgICAgICAjIHNwbGl0IHRoZSB0dXBsZXMKKyAgICAgICAgICAgICMgdGhlIHNlY29u
ZCBlbGVtZW50IGlzIHRoZSAiY291bnRlciIgc3RydWN0dXJlCisgICAgICAgICAgICBpYSwgYSA9
IGFfdHVwbGUKKyAgICAgICAgICAgIGliLCBiID0gYl90dXBsZQorCisgICAgICAgICAgICBjb3Vu
dF9yZXN1bHQgPSBjbXAoYVsnY291bnQnXSwgYlsnY291bnQnXSkKKyAgICAgICAgICAgIGlmIGNv
dW50X3Jlc3VsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gLWNvdW50X3Jlc3VsdAorICAgICAg
ICAgICAgcmV0dXJuIGNtcChhWydtcnVfbmFtZSddLmxvd2VyKCksIGJbJ21ydV9uYW1lJ10ubG93
ZXIoKSkKKworICAgICAgICBmb3IgYXV0aG9yX2VtYWlsLCBjdXJyX2NvdW50ZXIgaW4gc29ydGVk
KGNvdW50ZXJzX2J5X2VtYWlsLml0ZW1zKCksIGNvdW50ZXJfY21wKToKKyAgICAgICAgICAgIGlm
IGF1dGhvcl9lbWFpbCAhPSBjdXJyX2NvdW50ZXJbJ21ydV9lbWFpbCddOgorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCisgICAgICAgICAgICBjb250cmlidXRvciA9IHNlbGYuX2NvbW1pdHRlcl9s
aXN0LmNvbnRyaWJ1dG9yX2J5X2VtYWlsKGF1dGhvcl9lbWFpbCkKKyAgICAgICAgICAgIGF1dGhv
cl9uYW1lID0gY3Vycl9jb3VudGVyWydtcnVfbmFtZSddCisgICAgICAgICAgICBwYXRjaF9jb3Vu
dCA9IGN1cnJfY291bnRlclsnY291bnQnXQorICAgICAgICAgICAgY3Vycl9jb3VudGVyWyduYW1l
cyddID0gY3Vycl9jb3VudGVyWyduYW1lcyddIC0gc2V0KFthdXRob3JfbmFtZV0pCisgICAgICAg
ICAgICBjdXJyX2NvdW50ZXJbJ2VtYWlscyddID0gY3Vycl9jb3VudGVyWydlbWFpbHMnXSAtIHNl
dChbYXV0aG9yX2VtYWlsXSkKKworICAgICAgICAgICAgYWthX2xpc3QgPSBbXQorICAgICAgICAg
ICAgZm9yIGFrYSBpbiBjdXJyX2NvdW50ZXJbJ25hbWVzJ106CisgICAgICAgICAgICAgICAgYWth
X2xpc3QuYXBwZW5kKGFrYSkKKyAgICAgICAgICAgIGZvciBha2EgaW4gY3Vycl9jb3VudGVyWydl
bWFpbHMnXToKKyAgICAgICAgICAgICAgICBha2FfbGlzdC5hcHBlbmQoYWthKQorICAgICAgICAg
ICAgaWYgbGVuKGFrYV9saXN0KToKKyAgICAgICAgICAgICAgICBwcmludCAiQ09OVFJJQlVUT1I6
ICVzICglcykgaGFzICVkIHJldmlld2VkIHBhdGNoZXMgJXMiICUgKGF1dGhvcl9uYW1lLCBhdXRo
b3JfZW1haWwsIHBhdGNoX2NvdW50LCAiKGFrYTogIiArICIsICIuam9pbihha2FfbGlzdCkgKyAi
KSIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHByaW50ICJDT05UUklCVVRP
UjogJXMgKCVzKSBoYXMgJWQgcmV2aWV3ZWQgcGF0Y2hlcyIgJSAoYXV0aG9yX25hbWUsIGF1dGhv
cl9lbWFpbCwgcGF0Y2hfY291bnQpCisgICAgICAgIHJldHVybgorCisgICAgZGVmIGV4ZWN1dGUo
c2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CisgICAgICAgIHNlbGYuY29tbWl0dGVyX21pbmlt
dW0gPSBvcHRpb25zLmNvbW1pdHRlcl9taW5pbXVtCisgICAgICAgIHNlbGYucmV2aWV3ZXJfbWlu
aW11bSA9IG9wdGlvbnMucmV2aWV3ZXJfbWluaW11bQorICAgICAgICBzZWxmLm1heF9jb21taXRf
YWdlID0gb3B0aW9ucy5tYXhfY29tbWl0X2FnZQorICAgICAgICBzZWxmLnNob3dfY29tbWl0cyA9
IG9wdGlvbnMuc2hvd19jb21taXRzCisgICAgICAgIHNlbGYudmVyYm9zZSA9IG9wdGlvbnMudmVy
Ym9zZQorCisgICAgICAgIHBhdGNoX2NvdW50cyA9IHNlbGYuX2NvdW50X3JlY2VudF9wYXRjaGVz
KCkKKyAgICAgICAgbm9taW5hdGlvbnMgPSBzZWxmLl9jb2xsZWN0X25vbWluYXRpb25zKHBhdGNo
X2NvdW50cykKKyAgICAgICAgc2VsZi5fcHJpbnRfbm9taW5hdGlvbnMobm9taW5hdGlvbnMpCisg
ICAgICAgIGlmIHNlbGYudmVyYm9zZToKKyAgICAgICAgICAgIHNlbGYuX3ByaW50X2NvdW50cyhw
YXRjaF9jb3VudHMpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgU3VnZ2VzdE5v
bWluYXRpb25zKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9zdWdnZXN0bm9taW5hdGlvbnNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zX3VuaXR0ZXN0LnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI0ZTk3ZmRlOTcwMmVmOTlkYjk0YmQyNTc4MjYwY2U5ZDRmYmM4NDgKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWlu
YXRpb25zX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNzQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9t
IHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuY29tbWFuZHRlc3QgaW1wb3J0IENvbW1hbmRzVGVzdAor
ZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnN1Z2dlc3Rub21pbmF0aW9ucyBpbXBvcnQgU3Vn
Z2VzdE5vbWluYXRpb25zCitmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tP
cHRpb25zLCBNb2NrVG9vbAorCisKK2NsYXNzIFN1Z2dlc3ROb21pbmF0aW9uc1Rlc3QoQ29tbWFu
ZHNUZXN0KToKKworICAgIG1vY2tfZ2l0X291dHB1dCA9ICIiImNvbW1pdCA2MDgzMWRkZTViZWIy
MmYzNWFlZjMwNWE4N2ZjYTdiNWYyODRjNjk4CitBdXRob3I6IGZwaXpsb0BhcHBsZS5jb20gPGZw
aXpsb0BhcHBsZS5jb21AMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjPgorRGF0
ZTogICBUaHUgU2VwIDE1IDE5OjU2OjIxIDIwMTEgKzAwMDAKKworICAgIFZhbHVlIHByb2ZpbGVz
IGNvbGxlY3Qgbm8gaW5mb3JtYXRpb24gZm9yIGdsb2JhbCB2YXJpYWJsZXMKKyAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgxNDMKKworICAgIFJldmlld2VkIGJ5
IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgZ2l0LXN2bi1pZDogaHR0cDovL3N2bi53ZWJraXQub3Jn
L3JlcG9zaXRvcnkvd2Via2l0L3RydW5rQDk1MjE5IDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1
MjY5MWI0ZGJmYworIiIiCisgICAgbW9ja19zYW1lX2F1dGhvcl9jb21taXRfbWVzc2FnZSA9ICIi
IlZhbHVlIHByb2ZpbGVzIGNvbGxlY3Qgbm8gaW5mb3JtYXRpb24gZm9yIGdsb2JhbCB2YXJpYWJs
ZXMKK2h0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODE0MworCitSZXZp
ZXdlZCBieSBHZW9mZnJleSBHYXJlbi4iIiIKKworICAgIGRlZiB0ZXN0X3JlY2VudF9jb21taXRf
bWVzc2FnZXMoc2VsZik6CisgICAgICAgIHRvb2wgPSBNb2NrVG9vbCgpCisgICAgICAgIHN1Z2dl
c3Rfbm9taW5hdGlvbnMgPSBTdWdnZXN0Tm9taW5hdGlvbnMoKQorICAgICAgICBzdWdnZXN0X25v
bWluYXRpb25zLmJpbmRfdG9fdG9vbCh0b29sKQorCisgICAgICAgIHRvb2wuZXhlY3V0aXZlLnJ1
bl9jb21tYW5kID0gbGFtYmRhIGNvbW1hbmQ6IHNlbGYubW9ja19naXRfb3V0cHV0CisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdWdnZXN0X25vbWluYXRpb25zLl9yZWNlbnRfY29tbWl0
X21lc3NhZ2VzKCkpLCBbc2VsZi5tb2NrX3NhbWVfYXV0aG9yX2NvbW1pdF9tZXNzYWdlXSkKKwor
ICAgIG1vY2tfbm9uX2NvbW1pdHRlcl9jb21taXRfbWVzc2FnZSA9ICIiIkxldCBUZXN0V2ViS2l0
QVBJIHdvcmsgZm9yIGNocm9taXVtCitodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Njc3NTYKKworUGF0Y2ggYnkgWGlhbnpodSBXYW5nIDx3YW5neGlhbnpodUBjaHJvbWl1
bS5vcmc+IG9uIDIwMTEtMDktMTUKK1Jldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKK1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW06CisKKyogV2ViS2l0Lmd5cDoiIiIKKworICAgIGRlZiB0ZXN0X2Jhc2lj
KHNlbGYpOgorICAgICAgICBleHBlY3RlZF9zdGRvdXQgPSAiQ09NTUlUVEVSIEFORCBSRVZJRVdF
UjogWGlhbnpodSBXYW5nICh3YW5neGlhbnpodUBjaHJvbWl1bS5vcmcpIGhhcyA4OCByZXZpZXdl
ZCBwYXRjaGVzXG4iCisgICAgICAgIHN1Z2dlc3Rfbm9taW5hdGlvbnMgPSBTdWdnZXN0Tm9taW5h
dGlvbnMoKQorICAgICAgICBzdWdnZXN0X25vbWluYXRpb25zLl9yZWNlbnRfY29tbWl0X21lc3Nh
Z2VzID0gbGFtYmRhOiBbc2VsZi5tb2NrX25vbl9jb21taXR0ZXJfY29tbWl0X21lc3NhZ2UgZm9y
IF8gaW4gcmFuZ2UoODgpXQorICAgICAgICBzZWxmLmFzc2VydF9leGVjdXRlX291dHB1dHMoc3Vn
Z2VzdF9ub21pbmF0aW9ucywgW10sIGV4cGVjdGVkX3N0ZG91dD1leHBlY3RlZF9zdGRvdXQsIG9w
dGlvbnM9TW9ja09wdGlvbnMocmV2aWV3ZXJfbWluaW11bT04MCwgY29tbWl0dGVyX21pbmltdW09
MTAsIG1heF9jb21taXRfYWdlPTksIHNob3dfY29tbWl0cz1GYWxzZSwgdmVyYm9zZT1GYWxzZSkp
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvb3B0aW9ucy5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9vcHRpb25zLnB5CmluZGV4IDE4
NmM5ZDM1NTEyNzIwMDc5YjIyOTFlMTE5ZGQ2MTdlM2U2ODc1MDQuLmMzNDliZDNkOWMxNDA1YWU3
MWUyZTdlMmEyZWM0ODI0ODVhNmJiMzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9vcHRpb25zLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9vcHRpb25zLnB5CkBAIC0zOCw2ICszOCw3IEBAIGNsYXNzIE9wdGlvbnMob2JqZWN0
KToKICAgICBjbGVhbiA9IG1ha2Vfb3B0aW9uKCItLW5vLWNsZWFuIiwgYWN0aW9uPSJzdG9yZV9m
YWxzZSIsIGRlc3Q9ImNsZWFuIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJEb24ndCBjaGVjayBpZiB0
aGUgd29ya2luZyBkaXJlY3RvcnkgaXMgY2xlYW4gYmVmb3JlIGFwcGx5aW5nIHBhdGNoZXMiKQog
ICAgIGNsb3NlX2J1ZyA9IG1ha2Vfb3B0aW9uKCItLW5vLWNsb3NlIiwgYWN0aW9uPSJzdG9yZV9m
YWxzZSIsIGRlc3Q9ImNsb3NlX2J1ZyIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iTGVhdmUgYnVnIG9w
ZW4gYWZ0ZXIgbGFuZGluZy4iKQogICAgIGNvbW1lbnQgPSBtYWtlX29wdGlvbigiLS1jb21tZW50
IiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9InN0cmluZyIsIGRlc3Q9ImNvbW1lbnQiLCBoZWxwPSJD
b21tZW50IHRvIHBvc3QgdG8gYnVnLiIpCisgICAgY29tbWl0dGVyX21pbmltdW0gPSBtYWtlX29w
dGlvbigiLS1jb21taXR0ZXItbWluaW11bSIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJjb21taXR0
ZXJfbWluaW11bSIsIHR5cGU9ImludCIsIGRlZmF1bHQ9MTAsIGhlbHA9IlNwZWNpZnkgbWluaW11
bSBwYXRjaCBjb3VudCBmb3IgQ29tbWl0dGVyIG5vbWluYXRpb25zLiIpCiAgICAgY29tcG9uZW50
ID0gbWFrZV9vcHRpb24oIi0tY29tcG9uZW50IiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9InN0cmlu
ZyIsIGRlc3Q9ImNvbXBvbmVudCIsIGhlbHA9IkNvbXBvbmVudCBmb3IgdGhlIG5ldyBidWcuIikK
ICAgICBjb25maXJtID0gbWFrZV9vcHRpb24oIi0tbm8tY29uZmlybSIsIGFjdGlvbj0ic3RvcmVf
ZmFsc2UiLCBkZXN0PSJjb25maXJtIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJTa2lwIGNvbmZpcm1h
dGlvbiBzdGVwcy4iKQogICAgIGRlc2NyaXB0aW9uID0gbWFrZV9vcHRpb24oIi1tIiwgIi0tZGVz
Y3JpcHRpb24iLCBhY3Rpb249InN0b3JlIiwgdHlwZT0ic3RyaW5nIiwgZGVzdD0iZGVzY3JpcHRp
b24iLCBoZWxwPSJEZXNjcmlwdGlvbiBzdHJpbmcgZm9yIHRoZSBhdHRhY2htZW50IikKQEAgLTQ2
LDYgKzQ3LDcgQEAgY2xhc3MgT3B0aW9ucyhvYmplY3QpOgogICAgIGZvcmNlX3BhdGNoID0gbWFr
ZV9vcHRpb24oIi0tZm9yY2UtcGF0Y2giLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJmb3Jj
ZV9wYXRjaCIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9IkZvcmNlZnVsbHkgYXBwbGllcyB0aGUgcGF0
Y2gsIGNvbnRpbnVpbmcgcGFzdCBlcnJvcnMuIikKICAgICBnaXRfY29tbWl0ID0gbWFrZV9vcHRp
b24oIi1nIiwgIi0tZ2l0LWNvbW1pdCIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJnaXRfY29tbWl0
IiwgaGVscD0iT3BlcmF0ZSBvbiBhIGxvY2FsIGNvbW1pdC4gSWYgYSByYW5nZSwgdGhlIGNvbW1p
dHMgYXJlIHNxdWFzaGVkIGludG8gb25lLiBIRUFELi4gb3BlcmF0ZXMgb24gd29ya2luZyBjb3B5
IGNoYW5nZXMgb25seS4iKQogICAgIGxvY2FsX2NvbW1pdCA9IG1ha2Vfb3B0aW9uKCItLWxvY2Fs
LWNvbW1pdCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImxvY2FsX2NvbW1pdCIsIGRlZmF1
bHQ9RmFsc2UsIGhlbHA9Ik1ha2UgYSBsb2NhbCBjb21taXQgZm9yIGVhY2ggYXBwbGllZCBwYXRj
aCIpCisgICAgbWF4X2NvbW1pdF9hZ2UgPSBtYWtlX29wdGlvbigiLS1tYXgtY29tbWl0LWFnZSIs
IGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJtYXhfY29tbWl0X2FnZSIsIHR5cGU9ImludCIsIGRlZmF1
bHQ9OSwgaGVscD0iU3BlY2lmeSBtYXggY29tbWl0IGFnZSB0byBjb25zaWRlciBmb3Igbm9taW5h
dGlvbnMgKGluIG1vbnRocykuIikKICAgICBub25faW50ZXJhY3RpdmUgPSBtYWtlX29wdGlvbigi
LS1ub24taW50ZXJhY3RpdmUiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJub25faW50ZXJh
Y3RpdmUiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJOZXZlciBwcm9tcHQgdGhlIHVzZXIsIGZhaWwg
YXMgZmFzdCBhcyBwb3NzaWJsZS4iKQogICAgIG9ic29sZXRlX3BhdGNoZXMgPSBtYWtlX29wdGlv
bigiLS1uby1vYnNvbGV0ZSIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJvYnNvbGV0ZV9w
YXRjaGVzIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJEbyBub3Qgb2Jzb2xldGUgb2xkIHBhdGNoZXMg
YmVmb3JlIHBvc3RpbmcgdGhpcyBvbmUuIikKICAgICBvcGVuX2J1ZyA9IG1ha2Vfb3B0aW9uKCIt
LW9wZW4tYnVnIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0ib3Blbl9idWciLCBkZWZhdWx0
PUZhbHNlLCBoZWxwPSJPcGVucyB0aGUgYXNzb2NpYXRlZCBidWcgaW4gYSBicm93c2VyLiIpCkBA
IC01NCw2ICs1Niw4IEBAIGNsYXNzIE9wdGlvbnMob2JqZWN0KToKICAgICByZXF1ZXN0X2NvbW1p
dCA9IG1ha2Vfb3B0aW9uKCItLXJlcXVlc3QtY29tbWl0IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwg
ZGVzdD0icmVxdWVzdF9jb21taXQiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJNYXJrIHRoZSBwYXRj
aCBhcyBuZWVkaW5nIGF1dG8tY29tbWl0IGFmdGVyIHJldmlldy4iKQogICAgIHJldmlldyA9IG1h
a2Vfb3B0aW9uKCItLW5vLXJldmlldyIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJyZXZp
ZXciLCBkZWZhdWx0PVRydWUsIGhlbHA9IkRvIG5vdCBtYXJrIHRoZSBwYXRjaCBmb3IgcmV2aWV3
LiIpCiAgICAgcmV2aWV3ZXIgPSBtYWtlX29wdGlvbigiLXIiLCAiLS1yZXZpZXdlciIsIGFjdGlv
bj0ic3RvcmUiLCB0eXBlPSJzdHJpbmciLCBkZXN0PSJyZXZpZXdlciIsIGhlbHA9IlVwZGF0ZSBD
aGFuZ2VMb2dzIHRvIHNheSBSZXZpZXdlZCBieSBSRVZJRVdFUi4iKQotICAgIHN1Z2dlc3RfcmV2
aWV3ZXJzID0gbWFrZV9vcHRpb24oIi0tc3VnZ2VzdC1yZXZpZXdlcnMiLCBhY3Rpb249InN0b3Jl
X3RydWUiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJPZmZlciB0byBDQyBhcHByb3ByaWF0ZSByZXZp
ZXdlcnMuIikKKyAgICByZXZpZXdlcl9taW5pbXVtID0gbWFrZV9vcHRpb24oIi0tcmV2aWV3ZXIt
bWluaW11bSIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJyZXZpZXdlcl9taW5pbXVtIiwgdHlwZT0i
aW50IiwgZGVmYXVsdD04MCwgaGVscD0iU3BlY2lmeSBtaW5pbXVtIHBhdGNoIGNvdW50IGZvciBS
ZXZpZXdlciBub21pbmF0aW9ucy4iKQorICAgIHNob3dfY29tbWl0cyA9IG1ha2Vfb3B0aW9uKCIt
LXNob3ctY29tbWl0cyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InNob3dfY29tbWl0cyIs
IGRlZmF1bHQ9RmFsc2UsIGhlbHA9IlNob3cgY29tbWl0IGhpc3Rvcnkgd2l0aCBub21pbmF0aW9u
IHN1Z2dlc3Rpb25zLiIpCisgICAgc3VnZ2VzdF9yZXZpZXdlcnMgPSBtYWtlX29wdGlvbigiLS1z
dWdnZXN0LXJldmlld2VycyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InN1Z2dlc3RfcmV2
aWV3ZXJzIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iT2ZmZXIgdG8gQ0MgYXBwcm9wcmlhdGUgcmV2
aWV3ZXJzLiIpCiAgICAgdGVzdCA9IG1ha2Vfb3B0aW9uKCItLXRlc3QiLCBhY3Rpb249InN0b3Jl
X3RydWUiLCBkZXN0PSJ0ZXN0IiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iUnVuIHJ1bi13ZWJraXQt
dGVzdHMgYmVmb3JlIGNvbW1pdHRpbmcuIikKICAgICB1cGRhdGUgPSBtYWtlX29wdGlvbigiLS1u
by11cGRhdGUiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0idXBkYXRlIiwgZGVmYXVsdD1U
cnVlLCBoZWxwPSJEb24ndCB1cGRhdGUgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LiIpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZpZXdlci5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZXJldmlld2VyLnB5
CmluZGV4IGMyYTI3Yjk4MzZjNmFjZTI5NDI0MmQ3MTA3MTE0Mjg1ODg2YzIzNDQuLjE2NDkxMjlm
ODJiNjY2NWNmZjc0MTJjZmY4Mjk2Y2Q2NTM2ZjVhYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZXJldmlld2VyLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZXJldmlld2VyLnB5CkBAIC0zNyw3ICsz
Nyw2IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5kZXByZWNhdGVkX2xvZ2dpbmcgaW1w
b3J0IGVycm9yLCBsb2cKIAogIyBGSVhNRTogU29tZSBvZiB0aGlzIGxvZ2ljIHNob3VsZCBwcm9i
YWJseSBiZSB1bmlmaWVkIHdpdGggQ29tbWl0dGVyVmFsaWRhdG9yPwogY2xhc3MgVmFsaWRhdGVS
ZXZpZXdlcihBYnN0cmFjdFN0ZXApOgotICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5
IG1vdmUgb250byBDaGFuZ2VMb2dFbnRyeQogICAgIGRlZiBfaGFzX3ZhbGlkX3Jldmlld2VyKHNl
bGYsIGNoYW5nZWxvZ19lbnRyeSk6CiAgICAgICAgIGlmIGNoYW5nZWxvZ19lbnRyeS5yZXZpZXdl
cigpOgogICAgICAgICAgICAgcmV0dXJuIFRydWUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111021</attachid>
            <date>2011-10-14 09:02:01 -0700</date>
            <delta_ts>2011-10-19 16:24:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62166-20111014090200.patch</filename>
            <type>text/plain</type>
            <size>20867</size>
            <attacher name="Tom Zakrajsek">tomz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc0NjcKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4NzE5OWM3MTY3ZWU0NTUxZTFkZGFiMTgyODU1ZDg0YWU3
Nzk1YjU2Li4zYmY3ZWNlZTBkMGIyMDVmNTQ1MzJlYWZlMDEzODViMmI3Nzk3MzA0IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTEtMTAtMTQgIFRvbSBaYWtyYWpzZWsgIDx0b216QGNvZGVhdXJvcmEub3JnPgorCisg
ICAgICAgIEFkZCBhIHN1Z2dlc3Qtbm9taW5hdGlvbnMgY29tbWFuZCB0byB3ZWJraXQtcGF0Y2gg
Zm9yIGNvbXB1dGluZyBwb3RlbnRpYWwgY29tbWl0dGVyL3Jldmlld2VyIG5vbWluYXRpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjE2NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluY2x1ZGVkIG9w
dGlvbnMgdG8gY29udHJvbCBjb21taXR0ZXIvcmV2aWV3ZXIgcGF0Y2ggY291bnQgcmVxdWlyZW1l
bnRzLAorICAgICAgICBhbiBhZ2UtbGltaXQgb24gcGF0Y2hlcywgYW5kIHZlcmJvc2Ugb3V0cHV0
IGZvciBtb3JlIGluLWRlcHRoIGFuYWx5c2lzLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9fX2luaXRfXy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zLnB5OiBBZGRlZC4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zX3VuaXR0ZXN0
LnB5OiBBZGRlZC4KKwogMjAxMS0xMC0xNCAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bw
cm9mdXNpb24ubW9iaT4KIAogICAgICAgICBbRUZMXSBBZGQgRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9j
aGFuZ2Vsb2cucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFu
Z2Vsb2cucHkKaW5kZXggYTUyMWMzMmZjYjU5ZWNkZmVmNzJiOWMzNjBjZTNmYjRlNTAwNGQ0ZS4u
NzlhY2Q3MzFjM2VmYWRkMGY3ZDAxNTQyYTgxOTI3MGYxOTI3MmIxMCAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hhbmdlbG9nLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZy5weQpAQCAtNzcs
OSArNzcsMTYgQEAgY2xhc3MgQ2hhbmdlTG9nRW50cnkob2JqZWN0KToKICAgICAjIGUuZy4gKiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHA6IEltcGxlbWVudCBGb29CYXJRdXV4
LgogICAgIHRvdWNoZWRfZmlsZXNfcmVnZXhwID0gcidccypcKlxzKig/UDxmaWxlPi4rKVw6Jwog
CisgICAgIyBlLmcuIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorICAgICMgKERpc2NhcmQgZXZl
cnl0aGluZyBhZnRlciB0aGUgZmlyc3QgcGVyaW9kIHRvIG1hdGNoIG1vcmUgaW52YWxpZCBsaW5l
cy4pCisgICAgcmV2aWV3ZWRfYnlfcmVnZXhwID0gcidSZXZpZXdlZCBieSAoP1A8cmV2aWV3ZXI+
Lio/KVtcLixdP1xzKiQnCisKICAgICAjIGUuZy4gPT0gUm9sbGVkIG92ZXIgdG8gQ2hhbmdlTG9n
LTIwMTEtMDItMTYgPT0KICAgICByb2xsZWRfb3Zlcl9yZWdleHAgPSByJ149PSBSb2xsZWQgb3Zl
ciB0byBDaGFuZ2VMb2ctXGR7NH0tXGR7Mn0tXGR7Mn0gPT0kJwogCisgICAgIyBlLmcuIGdpdC1z
dm4taWQ6IGh0dHA6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVua0A5NjE2
MSAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMKKyAgICBzdm5faWRfcmVnZXhw
ID0gcidnaXQtc3ZuLWlkOiBodHRwOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQv
dHJ1bmtAKD9QPHN2bmlkPlxkKykgJworCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbnRlbnRz
LCBjb21taXR0ZXJfbGlzdD1Db21taXR0ZXJMaXN0KCkpOgogICAgICAgICBzZWxmLl9jb250ZW50
cyA9IGNvbnRlbnRzCiAgICAgICAgIHNlbGYuX2NvbW1pdHRlcl9saXN0ID0gY29tbWl0dGVyX2xp
c3QKQEAgLTk0LDcgKzEwMSw3IEBAIGNsYXNzIENoYW5nZUxvZ0VudHJ5KG9iamVjdCk6CiAgICAg
ICAgIHNlbGYuX2F1dGhvcl9uYW1lID0gbWF0Y2guZ3JvdXAoIm5hbWUiKSBpZiBtYXRjaCBlbHNl
IE5vbmUKICAgICAgICAgc2VsZi5fYXV0aG9yX2VtYWlsID0gbWF0Y2guZ3JvdXAoImVtYWlsIikg
aWYgbWF0Y2ggZWxzZSBOb25lCiAKLSAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goIl5ccytSZXZp
ZXdlZCBieSAoP1A8cmV2aWV3ZXI+Lio/KVtcLixdP1xzKiQiLCBzZWxmLl9jb250ZW50cywgcmUu
TVVMVElMSU5FKSAjIERpc2NhcmQgZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgcGVyaW9kCisg
ICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKHNlbGYucmV2aWV3ZWRfYnlfcmVnZXhwLCBzZWxmLl9j
b250ZW50cywgcmUuTVVMVElMSU5FKQogICAgICAgICBzZWxmLl9yZXZpZXdlcl90ZXh0ID0gbWF0
Y2guZ3JvdXAoInJldmlld2VyIikgaWYgbWF0Y2ggZWxzZSBOb25lCiAKICAgICAgICAgc2VsZi5f
cmV2aWV3ZXIgPSBzZWxmLl9jb21taXR0ZXJfbGlzdC5jb21taXR0ZXJfYnlfbmFtZShzZWxmLl9y
ZXZpZXdlcl90ZXh0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2Nv
bW1hbmRzL19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L19faW5pdF9fLnB5CmluZGV4IDM4MzY5NDdmYWI4OGQ3YmQxODRlOWYwODRkODdhNGYzOGIzNzJh
OGEuLjFhOThkYjBkNDg2YTVkZWQ2ZjE4MWMzYjgxZDAxMTU0Y2NlZDg2NjUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9fX2luaXRfXy5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvX19pbml0X18ucHkKQEAgLTE4LDMg
KzE4LDQgQEAgZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnJlYmFzZWxpbmVzZXJ2ZXIgaW1w
b3J0IFJlYmFzZWxpbmVTZXJ2ZXIKIGZyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5yb2xsIGlt
cG9ydCAqCiBmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuc2hlcmlmZmJvdCBpbXBvcnQgKgog
ZnJvbSB3ZWJraXRweS50b29sLmNvbW1hbmRzLnVwbG9hZCBpbXBvcnQgKgorZnJvbSB3ZWJraXRw
eS50b29sLmNvbW1hbmRzLnN1Z2dlc3Rub21pbmF0aW9ucyBpbXBvcnQgKgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3N1Z2dlc3Rub21pbmF0aW9ucy5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlv
bnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzE5N2ExMTE2MDJlZWM3NGI1ZDU0NWRmNTZhMTJlZGY1NGMyN2Zh
ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9zdWdnZXN0bm9taW5hdGlvbnMucHkKQEAgLTAsMCArMSwyNDcgQEAKKyMgQ29weXJpZ2h0IChj
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykg
MjAxMSBDb2RlIEF1cm9yYSBGb3J1bS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK2Zyb20gb3B0cGFyc2UgaW1wb3J0IG1ha2Vfb3B0aW9uCitpbXBvcnQgcmUKKwor
ZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuY2hhbmdlbG9nIGltcG9ydCBDaGFuZ2VMb2dF
bnRyeQorZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1p
dHRlckxpc3QKK2Zyb20gd2Via2l0cHkudG9vbCBpbXBvcnQgc3RlcHMKK2Zyb20gd2Via2l0cHku
dG9vbC5ncmFtbWFyIGltcG9ydCBqb2luX3dpdGhfc2VwYXJhdG9ycworZnJvbSB3ZWJraXRweS50
b29sLm11bHRpY29tbWFuZHRvb2wgaW1wb3J0IEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kCisK
KworY2xhc3MgU3VnZ2VzdE5vbWluYXRpb25zKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToK
KyAgICBuYW1lID0gInN1Z2dlc3Qtbm9taW5hdGlvbnMiCisgICAgaGVscF90ZXh0ID0gIlN1Z2dl
c3QgY29udHJpYnV0b3JzIGZvciBjb21taXR0ZXIvcmV2aWV3ZXIgbm9taW5hdGlvbnMiCisKKyAg
ICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIG9wdGlvbnMgPSBbCisgICAgICAgICAgICBt
YWtlX29wdGlvbigiLS1jb21taXR0ZXItbWluaW11bSIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJj
b21taXR0ZXJfbWluaW11bSIsIHR5cGU9ImludCIsIGRlZmF1bHQ9MTAsIGhlbHA9IlNwZWNpZnkg
bWluaW11bSBwYXRjaCBjb3VudCBmb3IgQ29tbWl0dGVyIG5vbWluYXRpb25zLiIpLAorICAgICAg
ICAgICAgbWFrZV9vcHRpb24oIi0tcmV2aWV3ZXItbWluaW11bSIsIGFjdGlvbj0ic3RvcmUiLCBk
ZXN0PSJyZXZpZXdlcl9taW5pbXVtIiwgdHlwZT0iaW50IiwgZGVmYXVsdD04MCwgaGVscD0iU3Bl
Y2lmeSBtaW5pbXVtIHBhdGNoIGNvdW50IGZvciBSZXZpZXdlciBub21pbmF0aW9ucy4iKSwKKyAg
ICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLW1heC1jb21taXQtYWdlIiwgYWN0aW9uPSJzdG9yZSIs
IGRlc3Q9Im1heF9jb21taXRfYWdlIiwgdHlwZT0iaW50IiwgZGVmYXVsdD05LCBoZWxwPSJTcGVj
aWZ5IG1heCBjb21taXQgYWdlIHRvIGNvbnNpZGVyIGZvciBub21pbmF0aW9ucyAoaW4gbW9udGhz
KS4iKSwKKyAgICAgICAgICAgIG1ha2Vfb3B0aW9uKCItLXNob3ctY29tbWl0cyIsIGFjdGlvbj0i
c3RvcmVfdHJ1ZSIsIGRlc3Q9InNob3dfY29tbWl0cyIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9IlNo
b3cgY29tbWl0IGhpc3Rvcnkgd2l0aCBub21pbmF0aW9uIHN1Z2dlc3Rpb25zLiIpLAorICAgICAg
ICBdCisKKyAgICAgICAgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQuX19pbml0X18oc2VsZiwg
b3B0aW9ucz1vcHRpb25zKQorICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBi
ZSBvbiB0aGUgdG9vbCBzb21ld2hlcmUuCisgICAgICAgIHNlbGYuX2NvbW1pdHRlcl9saXN0ID0g
Q29tbWl0dGVyTGlzdCgpCisKKyAgICBfY291bnRlcnNfYnlfbmFtZSA9IHt9CisgICAgX2NvdW50
ZXJzX2J5X2VtYWlsID0ge30KKworICAgIGRlZiBfaW5pdF9vcHRpb25zKHNlbGYsIG9wdGlvbnMp
OgorICAgICAgICBzZWxmLmNvbW1pdHRlcl9taW5pbXVtID0gb3B0aW9ucy5jb21taXR0ZXJfbWlu
aW11bQorICAgICAgICBzZWxmLnJldmlld2VyX21pbmltdW0gPSBvcHRpb25zLnJldmlld2VyX21p
bmltdW0KKyAgICAgICAgc2VsZi5tYXhfY29tbWl0X2FnZSA9IG9wdGlvbnMubWF4X2NvbW1pdF9h
Z2UKKyAgICAgICAgc2VsZi5zaG93X2NvbW1pdHMgPSBvcHRpb25zLnNob3dfY29tbWl0cworICAg
ICAgICBzZWxmLnZlcmJvc2UgPSBvcHRpb25zLnZlcmJvc2UKKworICAgICMgRklYTUU6IFRoaXMg
c2hvdWxkIG1vdmUgdG8gc2NtLnB5CisgICAgZGVmIF9yZWNlbnRfY29tbWl0X21lc3NhZ2VzKHNl
bGYpOgorICAgICAgICBnaXRfbG9nID0gc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2NvbW1hbmQo
WydnaXQnLCAnbG9nJywgJy0tc2luY2U9IiVzIG1vbnRocyBhZ28iJyAlIHNlbGYubWF4X2NvbW1p
dF9hZ2VdKQorICAgICAgICBtYXRjaF9naXRfc3ZuX2lkID0gcmUuY29tcGlsZShyIlxuXG4gICAg
Z2l0LXN2bi1pZDouKlxuIiwgcmUuTVVMVElMSU5FKQorICAgICAgICBtYXRjaF9nZXRfbG9nX2xp
bmVzID0gcmUuY29tcGlsZShyIl5cUy4qXG4iLCByZS5NVUxUSUxJTkUpCisgICAgICAgIG1hdGNo
X2xlYWRpbmdfaW5kZW50ID0gcmUuY29tcGlsZShyIl5bIF17NH0iLCByZS5NVUxUSUxJTkUpCisK
KyAgICAgICAgbWVzc2FnZXMgPSByZS5zcGxpdChyImNvbW1pdCBcd3s0MH0iLCBnaXRfbG9nKVsx
Ol0gICMgSWdub3JlIHRoZSBmaXJzdCBtZXNzYWdlIHdoaWNoIHdpbGwgYmUgZW1wdHkuCisgICAg
ICAgIGZvciBtZXNzYWdlIGluIG1lc3NhZ2VzOgorICAgICAgICAgICAgIyBSZW1vdmUgYW55IGxp
bmVzIGZyb20gZ2l0IGFuZCB1bmluZGVudCBhbGwgdGhlIGxpbmVzCisgICAgICAgICAgICAobWVz
c2FnZSwgXykgPSBtYXRjaF9naXRfc3ZuX2lkLnN1Ym4oIiIsIG1lc3NhZ2UpCisgICAgICAgICAg
ICAobWVzc2FnZSwgXykgPSBtYXRjaF9nZXRfbG9nX2xpbmVzLnN1Ym4oIiIsIG1lc3NhZ2UpCisg
ICAgICAgICAgICAobWVzc2FnZSwgXykgPSBtYXRjaF9sZWFkaW5nX2luZGVudC5zdWJuKCIiLCBt
ZXNzYWdlKQorICAgICAgICAgICAgeWllbGQgbWVzc2FnZS5sc3RyaXAoKSAgIyBSZW1vdmUgYW55
IGxlYWRpbmcgbmV3bGluZXMgZnJvbSB0aGUgbG9nIG1lc3NhZ2UuCisKKyAgICAjIGUuZy4gUGF0
Y2ggYnkgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4gb24gMjAxMS0wOS0xNQorICAgIHBh
dGNoX2J5X3JlZ2V4cCA9IHInXlBhdGNoIGJ5ICg/UDxuYW1lPi4rPylccys8KD9QPGVtYWlsPlte
PD5dKyk+IG9uICg/UDxkYXRlPlxkezR9LVxkezJ9LVxkezJ9KSQnCisKKyAgICBkZWYgX2NvdW50
X3JlY2VudF9wYXRjaGVzKHNlbGYpOgorICAgICAgICAjIFRoaXMgZW50aXJlIGJsb2NrIGNvdWxk
IGJlIHdyaXR0ZW4gYXMgYSBtYXAvcmVkdWNlIG92ZXIgdGhlIG1lc3NhZ2VzLgorICAgICAgICBm
b3IgbWVzc2FnZSBpbiBzZWxmLl9yZWNlbnRfY29tbWl0X21lc3NhZ2VzKCk6CisgICAgICAgICAg
ICAjIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgQ2hhbmdlTG9nRW50cnkgdG8gZG8gdGhlIGVudGly
ZSBwYXJzZSBpbnN0ZWFkCisgICAgICAgICAgICAjIG9mIGdyYWJiaW5nIGF0IGl0cyByZWdleHBz
LgorICAgICAgICAgICAgZGF0ZWxpbmVfbWF0Y2ggPSByZS5tYXRjaChDaGFuZ2VMb2dFbnRyeS5k
YXRlX2xpbmVfcmVnZXhwLCBtZXNzYWdlLCByZS5NVUxUSUxJTkUpCisgICAgICAgICAgICBpZiBu
b3QgZGF0ZWxpbmVfbWF0Y2g6CisgICAgICAgICAgICAgICAgIyBNb2Rlcm4gY29tbWl0IG1lc3Nh
Z2VzIGRvbid0IGp1c3QgZHVtcCB0aGUgQ2hhbmdlTG9nIGVudHJ5LCBidXQgcmF0aGVyCisgICAg
ICAgICAgICAgICAgIyBoYXZlIGEgc3BlY2lhbCBQYXRjaCBieSBsaW5lIGZvciBub24tY29tbWl0
dGVycy4KKyAgICAgICAgICAgICAgICBkYXRlbGluZV9tYXRjaCA9IHJlLnNlYXJjaChzZWxmLnBh
dGNoX2J5X3JlZ2V4cCwgbWVzc2FnZSwgcmUuTVVMVElMSU5FKQorICAgICAgICAgICAgICAgIGlm
IG5vdCBkYXRlbGluZV9tYXRjaDoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAg
ICAgICAgICAgYXV0aG9yX2VtYWlsID0gZGF0ZWxpbmVfbWF0Y2guZ3JvdXAoImVtYWlsIikKKyAg
ICAgICAgICAgIGlmIG5vdCBhdXRob3JfZW1haWw6CisgICAgICAgICAgICAgICAgY29udGludWUK
KworICAgICAgICAgICAgIyBXZSBvbmx5IGNhcmUgYWJvdXQgcmV2aWV3ZWQgcGF0Y2hlcywgc28g
bWFrZSBzdXJlIGl0IGhhcyBhIHZhbGlkIHJldmlld2VyIGxpbmUuCisgICAgICAgICAgICByZXZp
ZXdlcl9tYXRjaCA9IHJlLnNlYXJjaChDaGFuZ2VMb2dFbnRyeS5yZXZpZXdlZF9ieV9yZWdleHAs
IG1lc3NhZ2UsIHJlLk1VTFRJTElORSkKKyAgICAgICAgICAgICMgV2UgbWlnaHQgYWxzbyB3YW50
IHRvIHZhbGlkYXRlIHRoZSByZXZpZXdlciBuYW1lIGFnYWluc3QgdGhlIGNvbW1pdHRlciBsaXN0
LgorICAgICAgICAgICAgaWYgbm90IHJldmlld2VyX21hdGNoIG9yIG5vdCByZXZpZXdlcl9tYXRj
aC5ncm91cCgicmV2aWV3ZXIiKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAg
ICAgICBhdXRob3JfbmFtZSA9IGRhdGVsaW5lX21hdGNoLmdyb3VwKCJuYW1lIikKKyAgICAgICAg
ICAgIGlmIG5vdCBhdXRob3JfbmFtZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAg
ICAgICAgICBpZiByZS5zZWFyY2goIihbXmEtekEtWl1hbmRbXmEtekEtWl0pfCgsKXwoQCkiLCBh
dXRob3JfbmFtZSk6CisgICAgICAgICAgICAgICAgIyBUaGlzIGVudHJ5IHNlZW1zIHRvIGhhdmUg
bXVsdGlwbGUgcmV2aWV3ZXJzLCBvciBpbnZhbGlkIGNoYXJhY3RlcnMsIHNvIHJlamVjdCBpdC4K
KyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBzdm5faWRfbWF0Y2ggPSBy
ZS5zZWFyY2goQ2hhbmdlTG9nRW50cnkuc3ZuX2lkX3JlZ2V4cCwgbWVzc2FnZSwgcmUuTVVMVElM
SU5FKQorICAgICAgICAgICAgaWYgc3ZuX2lkX21hdGNoOgorICAgICAgICAgICAgICAgIHN2bl9p
ZCA9IHN2bl9pZF9tYXRjaC5ncm91cCgic3ZuaWQiKQorICAgICAgICAgICAgaWYgbm90IHN2bl9p
ZF9tYXRjaCBvciBub3Qgc3ZuX2lkOgorICAgICAgICAgICAgICAgIHN2bl9pZCA9ICJ1bmtub3du
IgorICAgICAgICAgICAgY29tbWl0X2RhdGUgPSBkYXRlbGluZV9tYXRjaC5ncm91cCgiZGF0ZSIp
CisKKyAgICAgICAgICAgICMgU2VlIGlmIHdlIGFscmVhZHkgaGF2ZSBhIGNvbnRyaWJ1dG9yIHdp
dGggdGhpcyBuYW1lIG9yIGVtYWlsCisgICAgICAgICAgICBjb3VudGVyX2J5X25hbWUgPSBzZWxm
Ll9jb3VudGVyc19ieV9uYW1lLmdldChhdXRob3JfbmFtZSkKKyAgICAgICAgICAgIGNvdW50ZXJf
YnlfZW1haWwgPSBzZWxmLl9jb3VudGVyc19ieV9lbWFpbC5nZXQoYXV0aG9yX2VtYWlsKQorICAg
ICAgICAgICAgaWYgY291bnRlcl9ieV9uYW1lOgorICAgICAgICAgICAgICAgIGlmIGNvdW50ZXJf
YnlfZW1haWw6CisgICAgICAgICAgICAgICAgICAgIGlmIGNvdW50ZXJfYnlfbmFtZSAhPSBjb3Vu
dGVyX2J5X2VtYWlsOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBNZXJnZSB0aGVzZSB0d28g
Y291bnRlcnMgIFRoaXMgaXMgZm9yIHRoZSBjYXNlIHdoZXJlIHdlIGhhZAorICAgICAgICAgICAg
ICAgICAgICAgICAgIyBKb2huIFNtaXRoIChqc21pdGhAZ21haWwuY29tKSBhbmQgSm9uYXRoYW4g
U21pdGggKGpzbWl0aEBhcHBsZS5jb20pCisgICAgICAgICAgICAgICAgICAgICAgICAjIGFuZCBq
dXN0IGZvdW5kIGEgSm9obiBTbWl0aCAoanNtaXRoQGFwcGxlLmNvbSkuICBOb3cgd2Uga25vdyB0
aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdHdvIG5hbWVzIGFyZSB0aGUgc2FtZSBwZXJz
b24KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfYnlfbmFtZVsnbmFtZXMnXSB8PSBj
b3VudGVyX2J5X2VtYWlsWyduYW1lcyddCisgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVy
X2J5X25hbWVbJ2VtYWlscyddIHw9IGNvdW50ZXJfYnlfZW1haWxbJ2VtYWlscyddCisgICAgICAg
ICAgICAgICAgICAgICAgICBjb3VudGVyX2J5X25hbWVbJ2NvdW50J10gKz0gY291bnRlcl9ieV9l
bWFpbC5nZXQoJ2NvdW50JywgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvdW50
ZXJzX2J5X2VtYWlsW2F1dGhvcl9lbWFpbF0gPSBjb3VudGVyX2J5X25hbWUKKyAgICAgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIEFkZCBlbWFpbCB0byB0aGUgZXhpc3Rp
bmcgY291bnRlcgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb3VudGVyc19ieV9lbWFpbFth
dXRob3JfZW1haWxdID0gY291bnRlcl9ieV9uYW1lCisgICAgICAgICAgICAgICAgICAgIGNvdW50
ZXJfYnlfbmFtZVsnZW1haWxzJ10gfD0gc2V0KFthdXRob3JfZW1haWxdKQorICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICBpZiBjb3VudGVyX2J5X2VtYWlsOgorICAgICAgICAgICAg
ICAgICAgICAjIEFkZCBuYW1lIHRvIHRoZSBleGlzdGluZyBjb3VudGVyCisgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX2NvdW50ZXJzX2J5X25hbWVbYXV0aG9yX25hbWVdID0gY291bnRlcl9ieV9l
bWFpbAorICAgICAgICAgICAgICAgICAgICBjb3VudGVyX2J5X2VtYWlsWyduYW1lcyddIHw9IHNl
dChbYXV0aG9yX25hbWVdKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
ICAgICMgQ3JlYXRlIG5ldyBjb3VudGVyCisgICAgICAgICAgICAgICAgICAgIG5ld19jb3VudGVy
ID0geyduYW1lcyc6IHNldChbYXV0aG9yX25hbWVdKSwgJ2VtYWlscyc6IHNldChbYXV0aG9yX2Vt
YWlsXSksICdsYXRlc3RfbmFtZSc6IGF1dGhvcl9uYW1lLCAnbGF0ZXN0X2VtYWlsJzogYXV0aG9y
X2VtYWlsLCAnY29tbWl0cyc6ICIifQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb3VudGVy
c19ieV9uYW1lW2F1dGhvcl9uYW1lXSA9IG5ld19jb3VudGVyCisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX2NvdW50ZXJzX2J5X2VtYWlsW2F1dGhvcl9lbWFpbF0gPSBuZXdfY291bnRlcgorCisg
ICAgICAgICAgICBhc3NlcnQoc2VsZi5fY291bnRlcnNfYnlfbmFtZVthdXRob3JfbmFtZV0gPT0g
c2VsZi5fY291bnRlcnNfYnlfZW1haWxbYXV0aG9yX2VtYWlsXSkKKyAgICAgICAgICAgIGNvdW50
ZXIgPSBzZWxmLl9jb3VudGVyc19ieV9uYW1lW2F1dGhvcl9uYW1lXQorICAgICAgICAgICAgY291
bnRlclsnY291bnQnXSA9IGNvdW50ZXIuZ2V0KCdjb3VudCcsIDApICsgMQorCisgICAgICAgICAg
ICBpZiBzdm5faWQuaXNkaWdpdCgpOgorICAgICAgICAgICAgICAgIHN2bl9pZCA9ICJodHRwOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8iICsgc3ZuX2lkCisgICAgICAgICAgICBjb3VudGVy
Wydjb21taXRzJ10gKz0gIiAgY29tbWl0OiAlcyBvbiAlcyBieSAlcyAoJXMpXG4iICUgKHN2bl9p
ZCwgY29tbWl0X2RhdGUsIGF1dGhvcl9uYW1lLCBhdXRob3JfZW1haWwpCisKKyAgICAgICAgcmV0
dXJuIHNlbGYuX2NvdW50ZXJzX2J5X2VtYWlsCisKKyAgICBkZWYgX2NvbGxlY3Rfbm9taW5hdGlv
bnMoc2VsZiwgY291bnRlcnNfYnlfZW1haWwpOgorICAgICAgICBub21pbmF0aW9ucyA9IFtdCisg
ICAgICAgIGZvciBhdXRob3JfZW1haWwsIGNvdW50ZXIgaW4gY291bnRlcnNfYnlfZW1haWwuaXRl
bXMoKToKKyAgICAgICAgICAgIGlmIGF1dGhvcl9lbWFpbCAhPSBjb3VudGVyWydsYXRlc3RfZW1h
aWwnXToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcm9sZXMgPSBbXQor
CisgICAgICAgICAgICBjb250cmlidXRvciA9IHNlbGYuX2NvbW1pdHRlcl9saXN0LmNvbnRyaWJ1
dG9yX2J5X2VtYWlsKGF1dGhvcl9lbWFpbCkKKworICAgICAgICAgICAgYXV0aG9yX25hbWUgPSBj
b3VudGVyWydsYXRlc3RfbmFtZSddCisgICAgICAgICAgICBwYXRjaF9jb3VudCA9IGNvdW50ZXJb
J2NvdW50J10KKworICAgICAgICAgICAgaWYgcGF0Y2hfY291bnQgPj0gc2VsZi5jb21taXR0ZXJf
bWluaW11bSBhbmQgKG5vdCBjb250cmlidXRvciBvciBub3QgY29udHJpYnV0b3IuY2FuX2NvbW1p
dCk6CisgICAgICAgICAgICAgICAgcm9sZXMuYXBwZW5kKCJjb21taXR0ZXIiKQorICAgICAgICAg
ICAgaWYgcGF0Y2hfY291bnQgPj0gc2VsZi5yZXZpZXdlcl9taW5pbXVtICBhbmQgKG5vdCBjb250
cmlidXRvciBvciBub3QgY29udHJpYnV0b3IuY2FuX3Jldmlldyk6CisgICAgICAgICAgICAgICAg
cm9sZXMuYXBwZW5kKCJyZXZpZXdlciIpCisgICAgICAgICAgICBpZiByb2xlczoKKyAgICAgICAg
ICAgICAgICBub21pbmF0aW9ucy5hcHBlbmQoeworICAgICAgICAgICAgICAgICAgICAncm9sZXMn
OiByb2xlcywKKyAgICAgICAgICAgICAgICAgICAgJ2F1dGhvcl9uYW1lJzogYXV0aG9yX25hbWUs
CisgICAgICAgICAgICAgICAgICAgICdhdXRob3JfZW1haWwnOiBhdXRob3JfZW1haWwsCisgICAg
ICAgICAgICAgICAgICAgICdwYXRjaF9jb3VudCc6IHBhdGNoX2NvdW50LAorICAgICAgICAgICAg
ICAgIH0pCisgICAgICAgIHJldHVybiBub21pbmF0aW9ucworCisgICAgZGVmIF9wcmludF9ub21p
bmF0aW9ucyhzZWxmLCBub21pbmF0aW9ucyk6CisgICAgICAgIGRlZiBub21pbmF0aW9uX2NtcChh
X25vbWluYXRpb24sIGJfbm9taW5hdGlvbik6CisgICAgICAgICAgICByb2xlc19yZXN1bHQgPSBj
bXAoYV9ub21pbmF0aW9uWydyb2xlcyddLCBiX25vbWluYXRpb25bJ3JvbGVzJ10pCisgICAgICAg
ICAgICBpZiByb2xlc19yZXN1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIC1yb2xlc19yZXN1
bHQKKyAgICAgICAgICAgIGNvdW50X3Jlc3VsdCA9IGNtcChhX25vbWluYXRpb25bJ3BhdGNoX2Nv
dW50J10sIGJfbm9taW5hdGlvblsncGF0Y2hfY291bnQnXSkKKyAgICAgICAgICAgIGlmIGNvdW50
X3Jlc3VsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gLWNvdW50X3Jlc3VsdAorICAgICAgICAg
ICAgcmV0dXJuIGNtcChhX25vbWluYXRpb25bJ2F1dGhvcl9uYW1lJ10sIGJfbm9taW5hdGlvblsn
YXV0aG9yX25hbWUnXSkKKworICAgICAgICBmb3Igbm9taW5hdGlvbiBpbiBzb3J0ZWQobm9taW5h
dGlvbnMsIG5vbWluYXRpb25fY21wKToKKyAgICAgICAgICAgICMgVGhpcyBpcyBhIGxpdHRsZSBi
aXQgb2YgYSBoYWNrLCBidXQgaXRzIGNvbnZpZW5lbnQgdG8ganVzdCBwYXNzIHRoZSBub21pbmF0
aW9uIGRpY3Rpb25hcnkgdG8gdGhlIGZvcm1hdGluZyBvcGVyYXRvci4KKyAgICAgICAgICAgIG5v
bWluYXRpb25bJ3JvbGVzX3N0cmluZyddID0gam9pbl93aXRoX3NlcGFyYXRvcnMobm9taW5hdGlv
blsncm9sZXMnXSkudXBwZXIoKQorICAgICAgICAgICAgcHJpbnQgIiUocm9sZXNfc3RyaW5nKXM6
ICUoYXV0aG9yX25hbWUpcyAoJShhdXRob3JfZW1haWwpcykgaGFzICUocGF0Y2hfY291bnQpcyBy
ZXZpZXdlZCBwYXRjaGVzIiAlIG5vbWluYXRpb24KKyAgICAgICAgICAgIGNvdW50ZXIgPSBzZWxm
Ll9jb3VudGVyc19ieV9lbWFpbFtub21pbmF0aW9uWydhdXRob3JfZW1haWwnXV0KKworICAgICAg
ICAgICAgaWYgc2VsZi5zaG93X2NvbW1pdHM6CisgICAgICAgICAgICAgICAgcHJpbnQgY291bnRl
clsnY29tbWl0cyddCisKKyAgICBkZWYgX3ByaW50X2NvdW50cyhzZWxmLCBjb3VudGVyc19ieV9l
bWFpbCk6CisgICAgICAgIGRlZiBjb3VudGVyX2NtcChhX3R1cGxlLCBiX3R1cGxlKToKKyAgICAg
ICAgICAgICMgc3BsaXQgdGhlIHR1cGxlcworICAgICAgICAgICAgIyB0aGUgc2Vjb25kIGVsZW1l
bnQgaXMgdGhlICJjb3VudGVyIiBzdHJ1Y3R1cmUKKyAgICAgICAgICAgIF8sIGFfY291bnRlciA9
IGFfdHVwbGUKKyAgICAgICAgICAgIF8sIGJfY291bnRlciA9IGJfdHVwbGUKKworICAgICAgICAg
ICAgY291bnRfcmVzdWx0ID0gY21wKGFfY291bnRlclsnY291bnQnXSwgYl9jb3VudGVyWydjb3Vu
dCddKQorICAgICAgICAgICAgaWYgY291bnRfcmVzdWx0OgorICAgICAgICAgICAgICAgIHJldHVy
biAtY291bnRfcmVzdWx0CisgICAgICAgICAgICByZXR1cm4gY21wKGFfY291bnRlclsnbGF0ZXN0
X25hbWUnXS5sb3dlcigpLCBiX2NvdW50ZXJbJ2xhdGVzdF9uYW1lJ10ubG93ZXIoKSkKKworICAg
ICAgICBmb3IgYXV0aG9yX2VtYWlsLCBjb3VudGVyIGluIHNvcnRlZChjb3VudGVyc19ieV9lbWFp
bC5pdGVtcygpLCBjb3VudGVyX2NtcCk6CisgICAgICAgICAgICBpZiBhdXRob3JfZW1haWwgIT0g
Y291bnRlclsnbGF0ZXN0X2VtYWlsJ106CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAg
ICAgICAgIGNvbnRyaWJ1dG9yID0gc2VsZi5fY29tbWl0dGVyX2xpc3QuY29udHJpYnV0b3JfYnlf
ZW1haWwoYXV0aG9yX2VtYWlsKQorICAgICAgICAgICAgYXV0aG9yX25hbWUgPSBjb3VudGVyWyds
YXRlc3RfbmFtZSddCisgICAgICAgICAgICBwYXRjaF9jb3VudCA9IGNvdW50ZXJbJ2NvdW50J10K
KyAgICAgICAgICAgIGNvdW50ZXJbJ25hbWVzJ10gPSBjb3VudGVyWyduYW1lcyddIC0gc2V0KFth
dXRob3JfbmFtZV0pCisgICAgICAgICAgICBjb3VudGVyWydlbWFpbHMnXSA9IGNvdW50ZXJbJ2Vt
YWlscyddIC0gc2V0KFthdXRob3JfZW1haWxdKQorCisgICAgICAgICAgICBhbGlhc19saXN0ID0g
W10KKyAgICAgICAgICAgIGZvciBhbGlhcyBpbiBjb3VudGVyWyduYW1lcyddOgorICAgICAgICAg
ICAgICAgIGFsaWFzX2xpc3QuYXBwZW5kKGFsaWFzKQorICAgICAgICAgICAgZm9yIGFsaWFzIGlu
IGNvdW50ZXJbJ2VtYWlscyddOgorICAgICAgICAgICAgICAgIGFsaWFzX2xpc3QuYXBwZW5kKGFs
aWFzKQorICAgICAgICAgICAgaWYgYWxpYXNfbGlzdDoKKyAgICAgICAgICAgICAgICBwcmludCAi
Q09OVFJJQlVUT1I6ICVzICglcykgaGFzICVkIHJldmlld2VkIHBhdGNoZXMgJXMiICUgKGF1dGhv
cl9uYW1lLCBhdXRob3JfZW1haWwsIHBhdGNoX2NvdW50LCAiKGFsaWFzZXM6ICIgKyAiLCAiLmpv
aW4oYWxpYXNfbGlzdCkgKyAiKSIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
IHByaW50ICJDT05UUklCVVRPUjogJXMgKCVzKSBoYXMgJWQgcmV2aWV3ZWQgcGF0Y2hlcyIgJSAo
YXV0aG9yX25hbWUsIGF1dGhvcl9lbWFpbCwgcGF0Y2hfY291bnQpCisgICAgICAgIHJldHVybgor
CisgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CisgICAgICAgIHNl
bGYuX2luaXRfb3B0aW9ucyhvcHRpb25zKQorICAgICAgICBwYXRjaF9jb3VudHMgPSBzZWxmLl9j
b3VudF9yZWNlbnRfcGF0Y2hlcygpCisgICAgICAgIG5vbWluYXRpb25zID0gc2VsZi5fY29sbGVj
dF9ub21pbmF0aW9ucyhwYXRjaF9jb3VudHMpCisgICAgICAgIHNlbGYuX3ByaW50X25vbWluYXRp
b25zKG5vbWluYXRpb25zKQorICAgICAgICBpZiBzZWxmLnZlcmJvc2U6CisgICAgICAgICAgICBz
ZWxmLl9wcmludF9jb3VudHMocGF0Y2hfY291bnRzKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21h
aW5fXyI6CisgICAgU3VnZ2VzdE5vbWluYXRpb25zKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9zdWdnZXN0bm9taW5hdGlvbnNfdW5pdHRlc3QucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25z
X3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiMTU3ZjFiYWJhMDZiYzkxZWY3YmU5YmU4MWQ1M2Ey
MDM1ZTE4M2MKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvc3VnZ2VzdG5vbWluYXRpb25zX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNzcgQEAK
KyMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IENvcHlyaWdodCAoQykgMjAxMSBDb2RlIEF1cm9yYSBGb3J1bS4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRp
b24uCisjICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5jb21tYW5k
dGVzdCBpbXBvcnQgQ29tbWFuZHNUZXN0Citmcm9tIHdlYmtpdHB5LnRvb2wuY29tbWFuZHMuc3Vn
Z2VzdG5vbWluYXRpb25zIGltcG9ydCBTdWdnZXN0Tm9taW5hdGlvbnMKK2Zyb20gd2Via2l0cHku
dG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMsIE1vY2tUb29sCisKKworY2xhc3MgU3Vn
Z2VzdE5vbWluYXRpb25zVGVzdChDb21tYW5kc1Rlc3QpOgorCisgICAgbW9ja19naXRfb3V0cHV0
ID0gIiIiY29tbWl0IDYwODMxZGRlNWJlYjIyZjM1YWVmMzA1YTg3ZmNhN2I1ZjI4NGM2OTgKK0F1
dGhvcjogZnBpemxvQGFwcGxlLmNvbSA8ZnBpemxvQGFwcGxlLmNvbUAyNjhmNDVjYy1jZDA5LTA0
MTAtYWIzYy1kNTI2OTFiNGRiZmM+CitEYXRlOiAgIFRodSBTZXAgMTUgMTk6NTY6MjEgMjAxMSAr
MDAwMAorCisgICAgVmFsdWUgcHJvZmlsZXMgY29sbGVjdCBubyBpbmZvcm1hdGlvbiBmb3IgZ2xv
YmFsIHZhcmlhYmxlcworICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02ODE0MworCisgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICBnaXQtc3Zu
LWlkOiBodHRwOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmtAOTUyMTkg
MjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjCisiIiIKKyAgICBtb2NrX3NhbWVf
YXV0aG9yX2NvbW1pdF9tZXNzYWdlID0gIiIiVmFsdWUgcHJvZmlsZXMgY29sbGVjdCBubyBpbmZv
cm1hdGlvbiBmb3IgZ2xvYmFsIHZhcmlhYmxlcworaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY4MTQzCisKK1Jldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLiIiIgorCisg
ICAgZGVmIHRlc3RfcmVjZW50X2NvbW1pdF9tZXNzYWdlcyhzZWxmKToKKyAgICAgICAgdG9vbCA9
IE1vY2tUb29sKCkKKyAgICAgICAgc3VnZ2VzdF9ub21pbmF0aW9ucyA9IFN1Z2dlc3ROb21pbmF0
aW9ucygpCisgICAgICAgIHN1Z2dlc3Rfbm9taW5hdGlvbnMuX2luaXRfb3B0aW9ucyhvcHRpb25z
PU1vY2tPcHRpb25zKHJldmlld2VyX21pbmltdW09ODAsIGNvbW1pdHRlcl9taW5pbXVtPTEwLCBt
YXhfY29tbWl0X2FnZT05LCBzaG93X2NvbW1pdHM9RmFsc2UsIHZlcmJvc2U9RmFsc2UpKQorICAg
ICAgICBzdWdnZXN0X25vbWluYXRpb25zLmJpbmRfdG9fdG9vbCh0b29sKQorCisgICAgICAgIHRv
b2wuZXhlY3V0aXZlLnJ1bl9jb21tYW5kID0gbGFtYmRhIGNvbW1hbmQ6IHNlbGYubW9ja19naXRf
b3V0cHV0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdWdnZXN0X25vbWluYXRpb25z
Ll9yZWNlbnRfY29tbWl0X21lc3NhZ2VzKCkpLCBbc2VsZi5tb2NrX3NhbWVfYXV0aG9yX2NvbW1p
dF9tZXNzYWdlXSkKKworICAgIG1vY2tfbm9uX2NvbW1pdHRlcl9jb21taXRfbWVzc2FnZSA9ICIi
IkxldCBUZXN0V2ViS2l0QVBJIHdvcmsgZm9yIGNocm9taXVtCitodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc3NTYKKworUGF0Y2ggYnkgWGlhbnpodSBXYW5nIDx3YW5n
eGlhbnpodUBjaHJvbWl1bS5vcmc+IG9uIDIwMTEtMDktMTUKK1Jldmlld2VkIGJ5IFNhbSBXZWlu
aWcuCisKK1NvdXJjZS9XZWJLaXQvY2hyb21pdW06CisKKyogV2ViS2l0Lmd5cDoiIiIKKworICAg
IGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgorICAgICAgICBleHBlY3RlZF9zdGRvdXQgPSAiQ09NTUlU
VEVSIEFORCBSRVZJRVdFUjogWGlhbnpodSBXYW5nICh3YW5neGlhbnpodUBjaHJvbWl1bS5vcmcp
IGhhcyA4OCByZXZpZXdlZCBwYXRjaGVzXG4iCisgICAgICAgIHN1Z2dlc3Rfbm9taW5hdGlvbnMg
PSBTdWdnZXN0Tm9taW5hdGlvbnMoKQorICAgICAgICBzdWdnZXN0X25vbWluYXRpb25zLl9pbml0
X29wdGlvbnMob3B0aW9ucz1Nb2NrT3B0aW9ucyhyZXZpZXdlcl9taW5pbXVtPTgwLCBjb21taXR0
ZXJfbWluaW11bT0xMCwgbWF4X2NvbW1pdF9hZ2U9OSwgc2hvd19jb21taXRzPUZhbHNlLCB2ZXJi
b3NlPUZhbHNlKSkKKyAgICAgICAgc3VnZ2VzdF9ub21pbmF0aW9ucy5fcmVjZW50X2NvbW1pdF9t
ZXNzYWdlcyA9IGxhbWJkYTogW3NlbGYubW9ja19ub25fY29tbWl0dGVyX2NvbW1pdF9tZXNzYWdl
IGZvciBfIGluIHJhbmdlKDg4KV0KKyAgICAgICAgc2VsZi5hc3NlcnRfZXhlY3V0ZV9vdXRwdXRz
KHN1Z2dlc3Rfbm9taW5hdGlvbnMsIFtdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRfc3Rkb3V0
LCBvcHRpb25zPU1vY2tPcHRpb25zKHJldmlld2VyX21pbmltdW09ODAsIGNvbW1pdHRlcl9taW5p
bXVtPTEwLCBtYXhfY29tbWl0X2FnZT05LCBzaG93X2NvbW1pdHM9RmFsc2UsIHZlcmJvc2U9RmFs
c2UpKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>