<?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>44081</bug_id>
          
          <creation_ts>2010-08-16 16:12:42 -0700</creation_ts>
          <short_desc>Add standalone script that filters the output of build-webkit to be more human-readable</short_desc>
          <delta_ts>2011-09-08 09:19:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>67523</blocked>
    
    <blocked>67529</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Paul Knight">pknight</reporter>
          <assigned_to name="Matthew Delaney">mdelaney7</assigned_to>
          <cc>aroben</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dev+webkit</cc>
    
    <cc>eric</cc>
    
    <cc>evan</cc>
    
    <cc>joepeck</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>mrowe</cc>
    
    <cc>pknight</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>265280</commentid>
    <comment_count>0</comment_count>
    <who name="Paul Knight">pknight</who>
    <bug_when>2010-08-16 16:12:42 -0700</bug_when>
    <thetext>The output of the build-webkit script can be a bit difficult to read. It would be nice if there was some way to make it easer to scan for build errors and remove some of the often unnecessarily verbose output.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265284</commentid>
    <comment_count>1</comment_count>
      <attachid>64532</attachid>
    <who name="Paul Knight">pknight</who>
    <bug_when>2010-08-16 16:16:43 -0700</bug_when>
    <thetext>Created attachment 64532
Work in progress patch that adds a filter-build-webkit script</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265285</commentid>
    <comment_count>2</comment_count>
      <attachid>64533</attachid>
    <who name="Paul Knight">pknight</who>
    <bug_when>2010-08-16 16:17:56 -0700</bug_when>
    <thetext>Created attachment 64533
Example of output from filter-build-webkit script

Filtering SnowLeopard Intel buildbot output, http://build.webkit.org/builders/SnowLeopard%20Intel%20Release%20%28Build%29/builds/15626/steps/compile-webkit/logs/stdio/text</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265306</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-08-16 17:25:09 -0700</bug_when>
    <thetext>I’m ok with hiding parts of the output so long as they’re available behind a disclosure triangle or similar.  The “unnecessarily versbose” output is vital for tracking down certain types of build issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267776</commentid>
    <comment_count>4</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2010-08-23 00:06:29 -0700</bug_when>
    <thetext>Actually, I like our output... It&apos;s easy to solve build issues, because you see what was the command, you can just copy-paste and try it. In my opinion, this filtering can be an extra option e.g. --simple-build-output or --filtered-build-output to build-webkit instead of making a new file for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297145</commentid>
    <comment_count>5</comment_count>
    <who name="Paul Knight">pknight</who>
    <bug_when>2010-10-20 17:00:42 -0700</bug_when>
    <thetext>The advantage of having it as a separate step is it can be used to filter the build output after the fact, for example, from a buildbot or console log. Of course, that doesn&apos;t mean build-webkit couldn&apos;t have a flag to enable filtering.

Mark, I like the idea of a disclosure triangle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461520</commentid>
    <comment_count>6</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-09-02 14:20:47 -0700</bug_when>
    <thetext>*** Bug 67513 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461526</commentid>
    <comment_count>7</comment_count>
      <attachid>106200</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-09-02 14:27:02 -0700</bug_when>
    <thetext>Created attachment 106200
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461529</commentid>
    <comment_count>8</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-09-02 14:31:11 -0700</bug_when>
    <thetext>This patch is the latest version of what Paul had a year ago. I find it incredibly useful for building for myself on the command line. 

I think there are at least 2 good reason to have it be its own file:
1) It provides a nice way to filter old build logs
2) Build scripts other than build-webkit can benefit from it.

I&apos;ve filed https://bugs.webkit.org/show_bug.cgi?id=67523 as a followup for getting an option for build-webkit to use this script.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461544</commentid>
    <comment_count>9</comment_count>
      <attachid>106200</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-02 14:51:34 -0700</bug_when>
    <thetext>Comment on attachment 106200
Patch

Looks sane enough to me.  Adam Roben or Dan Bates are better perl reviewers than I.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461546</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-02 14:52:05 -0700</bug_when>
    <thetext>Adam Roben, Dan Bates, and Darin Adler all speak perl much better than I.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462430</commentid>
    <comment_count>11</comment_count>
      <attachid>106200</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2011-09-06 02:11:23 -0700</bug_when>
    <thetext>Comment on attachment 106200
Patch

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

&gt; Tools/Scripts/filter-build-webkit:1
&gt; +#! /usr/bin/env perl -w

Please remove extra space, and env!
#!/usr/bin/perl -w

&gt; Tools/Scripts/filter-build-webkit:118
&gt; +if (!$getOptionsResult || $showHelp) {

$showHelp is undefined if you haven&apos;t given -h/--help parameter, so please use defined($showHelp)

Now, if you execute the standalone script without input and you don&apos;t give parameter neither it will wait for standard input in line 130 since the script won&apos;t call usageAndExit(). ($getOptionsResult will be always true since GetOptions hasn&apos;t got problem with parameter processing and $showHelp is undefined =&gt; it will be interpreted as false)

I think it would be nice to diplay the help and exit in this case.


For Qt-port this script paints the build output as red (even for simple make) and paints WebKit is now built... green. I know you did it for mac port for first, but in the future it will be good to support other ports also.

By the way, with the first two change that I suggested the patch looks okay to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462434</commentid>
    <comment_count>12</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2011-09-06 02:31:31 -0700</bug_when>
    <thetext>(In reply to comment #11)

&gt; I think it would be nice to diplay the help and exit in this case.

For example use  -t STDIN:
if ( -t STDIN || defined($showHelp) || !$getOptionsResult)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462677</commentid>
    <comment_count>13</comment_count>
      <attachid>106446</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-09-06 11:12:53 -0700</bug_when>
    <thetext>Created attachment 106446
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463140</commentid>
    <comment_count>14</comment_count>
      <attachid>106446</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-09-06 21:59:54 -0700</bug_when>
    <thetext>Comment on attachment 106446
Patch

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

I wish there was a better way to do the filtering. The blacklist approach that this script implements seems fragile. This change looks good. I have some suggestions.

&gt; Tools/Scripts/filter-build-webkit:14
&gt; +# 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of

Apple Computer, Inc. =&gt; Apple, Inc.

This license appears to be outdated both in its reference to Apple Computer, Inc. as well as the presence of this third clause. The preferred license block for new files is &lt;http://trac.webkit.org/browser/trunk/Source/WebKit/LICENSE&gt;. That being said, you would know best as to which license block Apple uses.

&gt; Tools/Scripts/filter-build-webkit:51
&gt; +    ANSI_BLUE =&gt; &quot;\033[34m&quot;,
&gt; +    ANSI_GREEN =&gt; &quot;\033[32m&quot;,
&gt; +    ANSI_RED =&gt; &quot;\033[31m&quot;,
&gt; +    ANSI_PLAIN =&gt; &quot;\033[0m&quot;,

Can we use Term::ANSIColor instead of hardcoding the ANSI escape sequences?

One example of using this module and outputting colored output can be seen in the script run-api-tests. In particular, see possiblyColored() &lt;http://trac.webkit.org/browser/trunk/Tools/Scripts/run-api-tests?rev=93240#L294&gt; and one example call site is &lt;http://trac.webkit.org/browser/trunk/Tools/Scripts/run-api-tests?rev=93240#L186&gt;.

Also, see &lt;http://search.cpan.org/~rra/Term-ANSIColor-3.01/ANSIColor.pm&gt; for more details on Term::ANSIColor.

&gt; Tools/Scripts/filter-build-webkit:69
&gt; +    HTML_HEADER =&gt;&lt;&lt;HTMLHEADER
&gt; +&lt;html&gt;
&gt; +    &lt;head&gt;
&gt; +        &lt;title&gt;Build Log&lt;/title&gt;
&gt; +        &lt;style&gt;
&gt; +            body { font-family: Monaco, monospace; font-size: 10px; color: #666; line-height: 1.5em; }
&gt; +            h2 { margin: 1.5em 0 0 0; font-size: 1.0em; font-weight: bold; color: blue; }
&gt; +            p { margin: 0; padding-left: 1.5em; border-left: 3px solid #fff; }
&gt; +            p.alert { border-left-color: red; color: red; margin: 1.5em 0 0 0; }
&gt; +            p.alert + p { margin: 1.5em 0 0 0; }
&gt; +            p.alert + p.alert { margin: 0; }
&gt; +            p.success { color: green; }
&gt; +        &lt;/style&gt;
&gt; +    &lt;/head&gt;
&gt; +    &lt;body&gt;
&gt; +HTMLHEADER
&gt; +    ,   

For your consideration, I suggest moving the comma (line 69) after the &quot;&lt;&lt;HTMLHEADER&quot; so as to remove the need for placing the comma on a line of its own:

HTML_HEADER =&gt;&lt;&lt;HTMLHEADER,
&lt;html&gt;
        &lt;head&gt;
....
        &lt;body&gt;
HTML_HEADER

&gt; Tools/Scripts/filter-build-webkit:75
&gt; +    HTML_FOOTER =&gt;&lt;&lt;HTMLFOOTER
&gt; +    &lt;/body&gt;
&gt; +&lt;/html&gt;
&gt; +HTMLFOOTER
&gt; +    ,

Similarly, you can move the comma (line 75) to the end of line 71.

&gt; Tools/Scripts/filter-build-webkit:93
&gt; +Usage: @{[ basename($0) ]} [options] [buildlog]

From my understanding square brackets indicate something that is optional. For the first usage option, it seems that having at least one build log is necessary to get anything meaningful out of this script. Moreover, this script can process multiple build logs files because because you used the diamond operator (&lt;&gt;): &lt;http://docstore.mik.ua/orelly/perl/learn/ch06_02.htm&gt;. I suggest conveying this information in the usage message like:

Usage: @{[ basename($0) ]} [options] buildlog1 buildlog2 ...

&gt; Tools/Scripts/filter-build-webkit:97
&gt; +  -o|--output   Path for output (default is standard out)

&quot;(default is standard out)&quot; is inconsistent with the formatting you&apos;ve used below for default values. In particular, the format used below is: &quot;default: ...&quot;. I suggest using the &quot;default:&quot; notation to be consistent with other WebKit scripts, including build-webkit and run-javascriptcore-tests.

&gt; Tools/Scripts/filter-build-webkit:98
&gt; +  -f|--format   Output format (default)

You don&apos;t seem to mention that the default output format is text. I take it that you meant to write &quot;... Output format (default: $outputFormat)&quot;

&gt; Tools/Scripts/filter-build-webkit:100
&gt; +                  html: Standalone html document

Nit: Standalone html document =&gt; Standalone HTML document

(since HTML is an abbreviation)

&gt; Tools/Scripts/filter-build-webkit:101
&gt; +  --[no-]color  ANSI color output for text (default: auto)

Instead of hardcoding &quot;auto&quot; here I suggest somehow incorporating the value of $colorMode into this line so as to ensure that this usage message is in sync with the default behavior.

Also, it seems extraneous to explicitly have a state for COLORMODE_AUTO. It seems sufficient to just have $colorMode be a boolean value that is initialized to the value of -t STDOUT instead of COLORMODE_AUTO.

&gt; Tools/Scripts/filter-build-webkit:118
&gt; +if ( -t STDIN || defined($showHelp) || !$getOptionsResult) {

An undefined value evaluates to false. So we can substitute $showHelp for defined($showHelp) in this statement.

&gt; Tools/Scripts/filter-build-webkit:124
&gt; +open(OUTPUT_HANDLE, &quot;&gt;$outputPath&quot;);

We should die with a error if we can&apos;t open the file specified by $outputPath.

&gt; Tools/Scripts/filter-build-webkit:125
&gt; +open(LOG_HANDLE, &quot;&gt;$unfilteredOutputPath&quot;) if $logUnfilteredOutput;

Similarly, we should die with an error if we can&apos;t open the file specified by $unfilteredOutputPath.

Additionally, the name of the handle (LOG_HANDLE) isn&apos;t consistent with the name of the value $unfilteredOutputPath. Maybe name the handle UNFILTERED_OUTPUT? or UNFILTERED_OUTPUT_HANDLE?

&gt; Tools/Scripts/filter-build-webkit:129
&gt; +my $buildFinished = 0;

It&apos;s unnecessary to explicitly initialize a variable to 0 when it will be used as a boolean since an undefined value evaluates to false. I would write this line as:

my $buildFinished;

&gt; Tools/Scripts/filter-build-webkit:133
&gt; +    chomp($line);

Do we need to concern ourselves with CRLF line feeds? What are the line endings output under Cygwin when building a Visual Studio project with VCExpress or Visual Studio?

&gt; Tools/Scripts/filter-build-webkit:138
&gt; +    }
&gt; +    elsif ($line =~ /^===/) {

We tend to follow the WebKit Code Style Guidelines for Perl code.  So, the elsif statement should be on the same line as the closing brace.

&gt; Tools/Scripts/filter-build-webkit:141
&gt; +    }
&gt; +    elsif ($line =~ /Checking Dependencies|Check dependencies/) {

Ditto.

&gt; Tools/Scripts/filter-build-webkit:144
&gt; +    }
&gt; +    elsif ($line =~ /\*\* BUILD SUCCEEDED \*\*/) {

Ditto.

&gt; Tools/Scripts/filter-build-webkit:148
&gt; +        (my $command, my $path) = ($1, basename($2));

I would write this as:

my ($command, $path) = ($1, basename($2));

&gt; Tools/Scripts/filter-build-webkit:164
&gt; +    elsif ($line =~ /^\s*$/) {} # ignore
&gt; +    elsif ($line =~ /^Build settings from command line:/) {} #ignore
&gt; +    elsif ($line =~ /make: Nothing to be done for `all&apos;\./) {} # ignore
&gt; +    elsif ($line =~ /^JavaScriptCore\/create_hash_table/) {} # ignore
&gt; +    elsif ($line =~ /JavaScriptCore.framework\/PrivateHeaders\/create_hash_table/) {} # ignore
&gt; +    elsif ($line =~ /^JavaScriptCore\/pcre\/dftables/) {} # ignore
&gt; +    elsif ($line =~ /^Creating hashtable for /) {} # ignore
&gt; +    elsif ($line =~ /^Wrote output to /) {} #ignore
&gt; +    elsif ($line =~ /^(touch|perl|cat|rm -f|bison|flex|python|\/usr\/bin\/g\+\+|gperf|echo|sed|if \[ \-f|WebCore\/generate-export-file) /) {} # ignore
&gt; +    elsif ($line =~ /^UNDOCUMENTED: /) {} # ignore
&gt; +    elsif ($line =~ /libtool.*has no symbols/) {} # ignore
&gt; +    elsif ($line =~ /^# Lower case all the values, as CSS values are case-insensitive$/) {} # ignore
&gt; +    elsif ($line =~ /^if sort /) {} # ignore
&gt; +    elsif ($line =~ /^    /) {} # ignore

I would write these as:

next if $line =~ /^\s*$/;
next if $line =~ /^Build settings from command line:/;
next if $line =~ /make: Nothing to be done for `all&apos;\./;
...
next if $line =~ /^if sort /;
next if $line =~ /^    /;

Also, it would be nice if there was an inline comment to explain the regular expression, especially for some of the less obvious ones like /^    /. I take it that /^    / matches the indent used in the setenv and build settings lines that xcodebuild writes out?

&gt; Tools/Scripts/filter-build-webkit:198
&gt; +    my ($opt,$value) = @_;

Nit: Missing a space between $opt and $value.

Also, I sugest renaming $opt to $option.

&gt; Tools/Scripts/filter-build-webkit:205
&gt; +    my ($opt,$value) = @_;

Ditto.

&gt; Tools/Scripts/filter-build-webkit:207
&gt; +    unless ($value eq &quot;html&quot; or $value eq &quot;text&quot;) {

Using &quot;unless&quot;/negating expressions  tends to be more difficult to read that pushing the negation through. I suggest we push the negation through and write this as:

if ($value ne &quot;html&quot;  &amp;&amp; $value ne &quot;text&quot;) {
    die &quot;The $option option must be either \&quot;html\&quot; or \&quot;text\&quot;&quot;;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463149</commentid>
    <comment_count>15</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-09-06 22:20:11 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; [...]
&gt; &gt; Tools/Scripts/filter-build-webkit:118
&gt; &gt; +if (!$getOptionsResult || $showHelp) {
&gt; 
&gt; $showHelp is undefined if you haven&apos;t given -h/--help parameter, so please use defined($showHelp)
&gt; 

$showHelp is being used as a boolean variable throughout this script. By &lt;http://perldoc.perl.org/perlsyn.html#Truth-and-Falsehood&gt;, an undefined value has the same truth value as 0. Hence, it&apos;s sufficient to leave this variable undefined and use boolean operations to determine its truth value. That is, we don&apos;t need to use defined().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463169</commentid>
    <comment_count>16</comment_count>
      <attachid>106446</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2011-09-06 22:49:39 -0700</bug_when>
    <thetext>Comment on attachment 106446
Patch

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

&gt;&gt; Tools/Scripts/filter-build-webkit:14
&gt;&gt; +# 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
&gt; 
&gt; Apple Computer, Inc. =&gt; Apple, Inc.
&gt; 
&gt; This license appears to be outdated both in its reference to Apple Computer, Inc. as well as the presence of this third clause. The preferred license block for new files is &lt;http://trac.webkit.org/browser/trunk/Source/WebKit/LICENSE&gt;. That being said, you would know best as to which license block Apple uses.

Apparently he doesn’t.  I told him a few days ago that he’s using the wrong license file but he seems to have decided not to update it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463180</commentid>
    <comment_count>17</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2011-09-06 23:42:09 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #11)
&gt; &gt; [...]
&gt; &gt; &gt; Tools/Scripts/filter-build-webkit:118
&gt; &gt; &gt; +if (!$getOptionsResult || $showHelp) {
&gt; &gt; 
&gt; &gt; $showHelp is undefined if you haven&apos;t given -h/--help parameter, so please use defined($showHelp)
&gt; &gt; 
&gt; 
&gt; $showHelp is being used as a boolean variable throughout this script. By &lt;http://perldoc.perl.org/perlsyn.html#Truth-and-Falsehood&gt;, an undefined value has the same truth value as 0. Hence, it&apos;s sufficient to leave this variable undefined and use boolean operations to determine its truth value. That is, we don&apos;t need to use defined().

You&apos;re absolutely right! I like defined() because it is suggesting that the variable can be undefined and that fact can be useful for later usages. :) I&apos;m okay with boolean operations here, since we don&apos;t need $showHelp after.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463608</commentid>
    <comment_count>18</comment_count>
      <attachid>106626</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-09-07 13:27:50 -0700</bug_when>
    <thetext>Created attachment 106626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463609</commentid>
    <comment_count>19</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-09-07 13:30:18 -0700</bug_when>
    <thetext>Thanks for all the good stuff, Daniel! Here&apos;s a new patch up for review that incorporates all the input (including that missed from elsewhere).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463780</commentid>
    <comment_count>20</comment_count>
      <attachid>106626</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-09-07 16:59:51 -0700</bug_when>
    <thetext>Comment on attachment 106626
Patch

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

This patch looks even better. I have a few more remarks.

&gt; Tools/Scripts/filter-build-webkit:57
&gt; +    HTML_FOOTER =&gt;&lt;&lt;HTMLFOOTER,

Nit: I would add an empty line before this line to help visually separate these constants and make clear where one constant ends and another begins (since both the here-document ending line, HTMLHEADER, and HTML_FOOTER are capitalized and have a prefix of HTML).

&gt; Tools/Scripts/filter-build-webkit:111
&gt; +open(OUTPUT_HANDLE, &quot;&gt;$outputPath&quot;) or die &quot;Failed to open $outputPath&quot;;
&gt; +if ($logUnfilteredOutput) {
&gt; +    open(UNFILTERED_OUTPUT_HANDLE, &quot;&gt;$unfilteredOutputPath&quot;) or die &quot;Failed to open $unfilteredOutputPath&quot;;
&gt; +}

Nit: Even though you only have two file handles and Perl will automatically close them on exit, I suggest adding a corresponding close() call for each open() for good form.

&gt; Tools/Scripts/filter-build-webkit:119
&gt; +    chomp($line);

Does this still give us pretty output for VCExpress and Visual Studio builds? Do we need to strip CRLFs?

&gt; Tools/Scripts/filter-build-webkit:146
&gt; +        next if $line =~ /^\s*$/;
&gt; +        next if $line =~ /^Build settings from command line:/;
&gt; +        next if $line =~ /make: Nothing to be done for `all&apos;\./;
&gt; +        next if $line =~ /^JavaScriptCore\/create_hash_table/;
&gt; +        next if $line =~ /JavaScriptCore.framework\/PrivateHeaders\/create_hash_table/;
&gt; +        next if $line =~ /^JavaScriptCore\/pcre\/dftables/;
&gt; +        next if $line =~ /^Creating hashtable for /;
&gt; +        next if $line =~ /^Wrote output to /;
&gt; +        next if $line =~ /^(touch|perl|cat|rm -f|bison|flex|python|\/usr\/bin\/g\+\+|gperf|echo|sed|if \[ \-f|WebCore\/generate-export-file) /;
&gt; +        next if $line =~ /^UNDOCUMENTED: /;
&gt; +        next if $line =~ /libtool.*has no symbols/;
&gt; +        next if $line =~ /^# Lower case all the values, as CSS values are case-insensitive$/;
&gt; +        next if $line =~ /^if sort /;
&gt; +        next if $line =~ /^    /;

For your consideration, I would move these &quot;next if&quot; lines so that they come after &quot;chomp($line)&quot; (line 119) so as to make it a bit easier to see the control flow of this function.

&gt; Tools/Scripts/filter-build-webkit:165
&gt; +sub possiblyColored($$)
&gt; +{
&gt; +    my ($colors, $string) = @_;
&gt; +
&gt; +    if (-t STDOUT) {
&gt; +        return colored([$colors], $string);
&gt; +    } else {
&gt; +        return $string;
&gt; +    }
&gt; +}

This code is identical to code in run-api-tests. Can we share this code instead of duplicating it? We tend to use VCSUtils.pm as a bit of a dumping ground for such functions even though it primarily encapsulates the version control functionality.

Ultimately we may want to consider either renaming VCSUtils.pm or defining a new module for such utility functions. This can be done in a separate bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463812</commentid>
    <comment_count>21</comment_count>
      <attachid>106679</attachid>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-09-07 18:52:12 -0700</bug_when>
    <thetext>Created attachment 106679
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463821</commentid>
    <comment_count>22</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-09-07 19:01:16 -0700</bug_when>
    <thetext>
&gt; Nit: I would add an empty line before this line to help visually separate these constants and make clear where one constant ends and another begins (since both the here-document ending line, HTMLHEADER, and HTML_FOOTER are capitalized and have a prefix of HTML).

Done.

&gt; 
&gt; &gt; Tools/Scripts/filter-build-webkit:111
&gt; &gt; +open(OUTPUT_HANDLE, &quot;&gt;$outputPath&quot;) or die &quot;Failed to open $outputPath&quot;;
&gt; &gt; +if ($logUnfilteredOutput) {
&gt; &gt; +    open(UNFILTERED_OUTPUT_HANDLE, &quot;&gt;$unfilteredOutputPath&quot;) or die &quot;Failed to open $unfilteredOutputPath&quot;;
&gt; &gt; +}
&gt; 
&gt; Nit: Even though you only have two file handles and Perl will automatically close them on exit, I suggest adding a corresponding close() call for each open() for good form.

Done.

&gt; &gt; Tools/Scripts/filter-build-webkit:119
&gt; &gt; +    chomp($line);
&gt; 
&gt; Does this still give us pretty output for VCExpress and Visual Studio builds? Do we need to strip CRLFs?

I&apos;m not sure; I don&apos;t have a windows build on hand to test. Though, I imagine this script will benefit from many improvements for use on windows and other platforms/ports. Not trying to be lazy, but I&apos;d prefer to just &quot;get it out there&quot; right now for immediate use on cleaning up the build output of at least the mac build bots. I can file follow up bugs for any ideas for improvements.

&gt; 
&gt; &gt; Tools/Scripts/filter-build-webkit:146
&gt; &gt; +        next if $line =~ /^\s*$/;
&gt; &gt; +        next if $line =~ /^Build settings from command line:/;
&gt; &gt; +        next if $line =~ /make: Nothing to be done for `all&apos;\./;
&gt; &gt; +        next if $line =~ /^JavaScriptCore\/create_hash_table/;
&gt; &gt; +        next if $line =~ /JavaScriptCore.framework\/PrivateHeaders\/create_hash_table/;
&gt; &gt; +        next if $line =~ /^JavaScriptCore\/pcre\/dftables/;
&gt; &gt; +        next if $line =~ /^Creating hashtable for /;
&gt; &gt; +        next if $line =~ /^Wrote output to /;
&gt; &gt; +        next if $line =~ /^(touch|perl|cat|rm -f|bison|flex|python|\/usr\/bin\/g\+\+|gperf|echo|sed|if \[ \-f|WebCore\/generate-export-file) /;
&gt; &gt; +        next if $line =~ /^UNDOCUMENTED: /;
&gt; &gt; +        next if $line =~ /libtool.*has no symbols/;
&gt; &gt; +        next if $line =~ /^# Lower case all the values, as CSS values are case-insensitive$/;
&gt; &gt; +        next if $line =~ /^if sort /;
&gt; &gt; +        next if $line =~ /^    /;
&gt; 
&gt; For your consideration, I would move these &quot;next if&quot; lines so that they come after &quot;chomp($line)&quot; (line 119) so as to make it a bit easier to see the control flow of this function.

Done.

&gt; 
&gt; &gt; Tools/Scripts/filter-build-webkit:165
&gt; &gt; +sub possiblyColored($$)
&gt; &gt; +{
&gt; &gt; +    my ($colors, $string) = @_;
&gt; &gt; +
&gt; &gt; +    if (-t STDOUT) {
&gt; &gt; +        return colored([$colors], $string);
&gt; &gt; +    } else {
&gt; &gt; +        return $string;
&gt; &gt; +    }
&gt; &gt; +}
&gt; 
&gt; This code is identical to code in run-api-tests. Can we share this code instead of duplicating it? We tend to use VCSUtils.pm as a bit of a dumping ground for such functions even though it primarily encapsulates the version control functionality.
&gt; 

Done.

&gt; Ultimately we may want to consider either renaming VCSUtils.pm or defining a new module for such utility functions. This can be done in a separate bug.

https://bugs.webkit.org/show_bug.cgi?id=67753</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463879</commentid>
    <comment_count>23</comment_count>
      <attachid>106679</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-09-07 21:30:27 -0700</bug_when>
    <thetext>Comment on attachment 106679
Patch

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

Colors in the air. Oh, everywhere. It comes in colors!

&gt; Tools/Scripts/filter-build-webkit:113
&gt; +open(OUTPUT_HANDLE, &quot;&gt;$outputPath&quot;) or die &quot;Failed to open $outputPath&quot;;

Nit: I suggest appending the error message (in $!) to the die() message so as to provide a more descriptive reason for the failure. So, I would write this line as:

open(OUTPUT_HANDLE, &quot;&gt;$outputPath&quot;) or die &quot;Failed to open $outputPath: $!&quot;;

&gt; Tools/Scripts/filter-build-webkit:115
&gt; +    open(UNFILTERED_OUTPUT_HANDLE, &quot;&gt;$unfilteredOutputPath&quot;) or die &quot;Failed to open $unfilteredOutputPath&quot;;

Nit: Similarly, I would append the error message (in $!) to the die() message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464088</commentid>
    <comment_count>24</comment_count>
    <who name="Matthew Delaney">mdelaney7</who>
    <bug_when>2011-09-08 09:19:54 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/94746</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64532</attachid>
            <date>2010-08-16 16:16:43 -0700</date>
            <delta_ts>2011-09-02 14:26:56 -0700</delta_ts>
            <desc>Work in progress patch that adds a filter-build-webkit script</desc>
            <filename>44081.patch</filename>
            <type>text/plain</type>
            <size>7815</size>
            <attacher name="Paul Knight">pknight</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvZmlsdGVyLWJ1aWxkLXdlYmtpdAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL2ZpbHRlci1idWlsZC13ZWJraXQJKHJldmlzaW9uIDAp
CisrKyBXZWJLaXRUb29scy9TY3JpcHRzL2ZpbHRlci1idWlsZC13ZWJraXQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjA0IEBACisjISAvdXNyL2Jpbi9lbnYgcGVybCAtdworCisjIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIAorIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjIAorIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5n
czsKKwordXNlIENHSSBxdyhlc2NhcGVIVE1MKTsKK3VzZSBGaWxlOjpCYXNlbmFtZTsKK3VzZSBH
ZXRvcHQ6Okxvbmc7CisKK3VzZSBjb25zdGFudCB7CisgICAgQ09MT1JNT0RFX05PICAgPT4gMCwK
KyAgICBDT0xPUk1PREVfWUVTICA9PiAxLAorICAgIENPTE9STU9ERV9BVVRPID0+IDIsCisgICAg
CisgICAgU1RZTEVfUExBSU4gPT4gMCwKKyAgICBTVFlMRV9IRUFERVIgPT4gMSwKKyAgICBTVFlM
RV9TVUNDRVNTID0+IDIsCisgICAgU1RZTEVfQUxFUlQgPT4gMywKKyAgICAKKyAgICBBTlNJX0JM
VUUgPT4gIlwwMzNbMzRtIiwKKyAgICBBTlNJX0dSRUVOID0+ICJcMDMzWzMybSIsCisgICAgQU5T
SV9SRUQgPT4gIlwwMzNbMzFtIiwKKyAgICBBTlNJX1BMQUlOID0+ICJcMDMzWzBtIiwKKyAgICAK
KyAgICBIVE1MX0hFQURFUiA9Pjw8SFRNTEhFQURFUgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAg
ICAgIDx0aXRsZT5CdWlsZCBMb2c8L3RpdGxlPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAg
ICBib2R5IHsgZm9udC1mYW1pbHk6IE1vbmFjbywgbW9ub3NwYWNlOyBmb250LXNpemU6IDEwcHg7
IGNvbG9yOiAjNjY2OyBsaW5lLWhlaWdodDogMS41ZW07IH0KKyAgICAgICAgICAgIGgyIHsgbWFy
Z2luOiAxLjVlbSAwIDAgMDsgZm9udC1zaXplOiAxLjBlbTsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNv
bG9yOiBibHVlOyB9CisgICAgICAgICAgICBwIHsgbWFyZ2luOiAwOyBwYWRkaW5nLWxlZnQ6IDEu
NWVtOyBib3JkZXItbGVmdDogM3B4IHNvbGlkICNmZmY7IH0KKyAgICAgICAgICAgIHAuYWxlcnQg
eyBib3JkZXItbGVmdC1jb2xvcjogcmVkOyBjb2xvcjogcmVkOyBtYXJnaW46IDEuNWVtIDAgMCAw
OyB9CisgICAgICAgICAgICBwLmFsZXJ0ICsgcCB7IG1hcmdpbjogMS41ZW0gMCAwIDA7IH0KKyAg
ICAgICAgICAgIHAuYWxlcnQgKyBwLmFsZXJ0IHsgbWFyZ2luOiAwOyB9CisgICAgICAgICAgICBw
LnN1Y2Nlc3MgeyBjb2xvcjogZ3JlZW47IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICA8L2hlYWQ+
CisgICAgPGJvZHk+CitIVE1MSEVBREVSCisgICAgLCAgIAorICAgIAorICAgIEhUTUxfRk9PVEVS
ID0+PDxIVE1MRk9PVEVSCisgICAgPC9ib2R5PgorPC9odG1sPgorSFRNTEZPT1RFUgorICAgICwK
K307CisKK3N1YiBwcmludExpbmUoJCQpOworc3ViIHNldExvZ2ZpbGVPcHRpb24oJCQpOworc3Vi
IHNldE91dHB1dEZvcm1hdE9wdGlvbigkJCk7CitzdWIgdXNhZ2VBbmRFeGl0KCk7CisKK215ICRz
aG93SGVscDsKK215ICRvdXRwdXRQYXRoID0gIiZTVERPVVQiOworbXkgJG91dHB1dEZvcm1hdCA9
ICJ0ZXh0IjsKK215ICRjb2xvck1vZGUgPSBDT0xPUk1PREVfQVVUTzsKK215ICR1bmZpbHRlcmVk
T3V0cHV0UGF0aCA9ICJidWlsZC5sb2ciOworbXkgJGxvZ1VuZmlsdGVyZWRPdXRwdXQ7CisKK3N1
YiB1c2FnZUFuZEV4aXQoKQoreworICAgIHByaW50IFNUREVSUiA8PF9fRU5EX187CitVc2FnZTog
QHtbIGJhc2VuYW1lKCQwKSBdfSBbb3B0aW9uc10gW2J1aWxkbG9nXQorICAgICAgIGJ1aWxkLXdl
YmtpdCB8IEB7WyBiYXNlbmFtZSgkMCkgXX0gW29wdGlvbnNdCisgIC1ofC0taGVscCAgICAgU2hv
dyB0aGlzIGhlbHAgbWVzc2FnZQorT3V0cHV0IE9wdGlvbnM6CisgIC1vfC0tb3V0cHV0ICAgUGF0
aCBmb3Igb3V0cHV0IChkZWZhdWx0IGlzIHN0YW5kYXJkIG91dCkKKyAgLWZ8LS1mb3JtYXQgICBP
dXRwdXQgZm9ybWF0IChkZWZhdWx0KQorICAgICAgICAgICAgICAgICAgdGV4dDogUGxhaW4gdGV4
dAorICAgICAgICAgICAgICAgICAgaHRtbDogU3RhbmRhbG9uZSBodG1sIGRvY3VtZW50CisgIC0t
W25vLV1jb2xvciAgQU5TSSBjb2xvciBvdXRwdXQgZm9yIHRleHQgKGRlZmF1bHQ6IGF1dG8pCitV
bmZpbHRlcmVkIExvZ2dpbmcgT3B0aW9uczoKKyAgLWx8LS1sb2cgICAgICBTYXZlIHVuZmlsdGVy
ZWQgb3V0cHV0IHRvIGZpbGUgKHNlZSAtLWxvZy1maWxlKQorICAtLWxvZ2ZpbGUgICAgIFBhdGgg
dG8gc2F2ZSB1bmZpbHRlcmVkIG91dHB1dCAoaW1wbGllcyAtLWxvZywgZGVmYXVsdDogJHVuZmls
dGVyZWRPdXRwdXRQYXRoKQorX19FTkRfXworICAgIGV4aXQgMTsKK30KKworbXkgJGdldE9wdGlv
bnNSZXN1bHQgPSBHZXRPcHRpb25zKAorICAgICdofGhlbHAnICAgICAgICAgICAgICAgID0+IFwk
c2hvd0hlbHAsCisgICAgJ298b3V0cHV0PXMnICAgICAgICAgICAgPT4gXCRvdXRwdXRQYXRoLAor
ICAgICdmfGZvcm1hdD1zJyAgICAgICAgICAgID0+IFwmc2V0T3V0cHV0Rm9ybWF0T3B0aW9uLAor
ICAgICdjb2xvciEnICAgICAgICAgICAgICAgID0+IFwkY29sb3JNb2RlLAorICAgICdsfGxvZycg
ICAgICAgICAgICAgICAgID0+IFwkbG9nVW5maWx0ZXJlZE91dHB1dCwKKyAgICAnbG9nZmlsZT1z
JyAgICAgICAgICAgICA9PiBcJnNldExvZ2ZpbGVPcHRpb24sCispOworCitpZiAoISRnZXRPcHRp
b25zUmVzdWx0IHx8ICRzaG93SGVscCkgeworICAgIHVzYWdlQW5kRXhpdCgpOworfQorCitteSAk
Y29sb3JFbmFibGVkID0gKCRjb2xvck1vZGUgPT0gQ09MT1JNT0RFX0FVVE8gJiYgLXQgU1RET1VU
KSB8fCAkY29sb3JNb2RlID09IENPTE9STU9ERV9ZRVM7CisKK29wZW4oT1VUUFVUX0hBTkRMRSwg
Ij4kb3V0cHV0UGF0aCIpOworb3BlbihMT0dfSEFORExFLCAiPiR1bmZpbHRlcmVkT3V0cHV0UGF0
aCIpIGlmICRsb2dVbmZpbHRlcmVkT3V0cHV0OworCitwcmludCBPVVRQVVRfSEFORExFIEhUTUxf
SEVBREVSIGlmICgkb3V0cHV0Rm9ybWF0IGVxICJodG1sIik7CisKK215ICRidWlsZEZpbmlzaGVk
ID0gMDsKK3doaWxlIChteSAkbGluZSA9IDw+KSB7CisgICAgcHJpbnQgTE9HX0hBTkRMRSAkbGlu
ZSBpZiAkbG9nVW5maWx0ZXJlZE91dHB1dDsKKyAgICAKKyAgICBjaG9tcCgkbGluZSk7CisgICAg
aWYgKCRsaW5lID1+IC9ePXsxMH0vKSB7CisgICAgICAgIHByaW50TGluZSgkbGluZSwgU1RZTEVf
U1VDQ0VTUyk7CisgICAgICAgICRidWlsZEZpbmlzaGVkID0gMTsKKyAgICB9CisgICAgZWxzaWYg
KCRsaW5lID1+IC9ePT09LykgeworICAgICAgICBwcmludExpbmUoJGxpbmUsIFNUWUxFX0hFQURF
Uik7CisgICAgfQorICAgIGVsc2lmICgkbGluZSA9fiAvQ2hlY2tpbmcgRGVwZW5kZW5jaWVzfENo
ZWNrIGRlcGVuZGVuY2llcy8pIHsKKyAgICAgICAgcHJpbnRMaW5lKCRsaW5lLCAwKTsKKyAgICB9
CisgICAgZWxzaWYgKCRsaW5lID1+IC9cKlwqIEJVSUxEIFNVQ0NFRURFRCBcKlwqLykgeworICAg
ICAgICBwcmludExpbmUoIkJ1aWxkIFN1Y2NlZWRlZCIsIFNUWUxFX1NVQ0NFU1MpOworICAgIH0K
KyAgICBlbHNpZiAoJGxpbmUgPX4gL14oUGhhc2VTY3JpcHRFeGVjdXRpb258Q29tcGlsZUN8TGR8
UEJYQ3B8Q3BSZXNvdXJjZXxDb3B5UE5HRmlsZXxDb3B5VGlmZkZpbGV8Q3BIZWFkZXJ8UHJvY2Vz
c2luZ3xQcm9jZXNzSW5mb1BsaXN0RmlsZXxQcm9jZXNzUENIfFByb2Nlc3NQQ0hcK1wrfFRvdWNo
fExpYnRvb2x8Q29weVN0cmluZ3NGaWxlfE1pZ3xDcmVhdGVVbml2ZXJzYWxCaW5hcnkpICgiW14i
XSsifFxTKykvKSB7CisgICAgICAgIChteSAkY29tbWFuZCwgbXkgJHBhdGgpID0gKCQxLCBiYXNl
bmFtZSgkMikpOworICAgICAgICBwcmludExpbmUoIiRjb21tYW5kICRwYXRoIiwgMCk7CisgICAg
fSAKKyAgICBlbHNpZiAoJGxpbmUgPX4gL15ccyokLykge30gIyBpZ25vcmUKKyAgICBlbHNpZiAo
JGxpbmUgPX4gL15CdWlsZCBzZXR0aW5ncyBmcm9tIGNvbW1hbmQgbGluZTovKSB7fSAjaWdub3Jl
CisgICAgZWxzaWYgKCRsaW5lID1+IC9tYWtlOiBOb3RoaW5nIHRvIGJlIGRvbmUgZm9yIGBhbGwn
XC4vKSB7fSAjIGlnbm9yZQorICAgIGVsc2lmICgkbGluZSA9fiAvXkphdmFTY3JpcHRDb3JlXC9j
cmVhdGVfaGFzaF90YWJsZS8pIHt9ICMgaWdub3JlCisgICAgZWxzaWYgKCRsaW5lID1+IC9KYXZh
U2NyaXB0Q29yZS5mcmFtZXdvcmtcL1ByaXZhdGVIZWFkZXJzXC9jcmVhdGVfaGFzaF90YWJsZS8p
IHt9ICMgaWdub3JlCisgICAgZWxzaWYgKCRsaW5lID1+IC9eSmF2YVNjcmlwdENvcmVcL3BjcmVc
L2RmdGFibGVzLykge30gIyBpZ25vcmUKKyAgICBlbHNpZiAoJGxpbmUgPX4gL15DcmVhdGluZyBo
YXNodGFibGUgZm9yIC8pIHt9ICMgaWdub3JlCisgICAgZWxzaWYgKCRsaW5lID1+IC9eKHRvdWNo
fHBlcmx8Y2F0fHJtIC1mfGJpc29ufGZsZXh8XC91c3JcL2JpblwvZ1wrXCt8Z3BlcmZ8ZWNob3xz
ZWQpIC8pIHt9ICMgaWdub3JlCisgICAgZWxzaWYgKCRsaW5lID1+IC9eVU5ET0NVTUVOVEVEOiAv
KSB7fSAjIGlnbm9yZQorICAgIGVsc2lmICgkbGluZSA9fiAvbGlidG9vbC4qaGFzIG5vIHN5bWJv
bHMvKSB7fSAjIGlnbm9yZQorICAgIGVsc2lmICgkbGluZSA9fiAvXiMgTG93ZXIgY2FzZSBhbGwg
dGhlIHZhbHVlcywgYXMgQ1NTIHZhbHVlcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSQvKSB7fSAjIGln
bm9yZQorICAgIGVsc2lmICgkbGluZSA9fiAvXmlmIHNvcnQgLykge30gIyBpZ25vcmUKKyAgICBl
bHNpZiAoJGxpbmUgPX4gL14gICAgLykge30gIyBpZ25vcmUKKyAgICBlbHNlIHsKKyAgICAgICAg
cHJpbnRMaW5lKCRsaW5lLCAkYnVpbGRGaW5pc2hlZCA/IFNUWUxFX1NVQ0NFU1MgOiBTVFlMRV9B
TEVSVCk7CisgICAgfQorfQorCitwcmludCBPVVRQVVRfSEFORExFIEhUTUxfRk9PVEVSIGlmICgk
b3V0cHV0Rm9ybWF0IGVxICJodG1sIik7CisKK2V4aXQgMDsKKworc3ViIHByaW50TGluZSgkJCkK
K3sKKyAgICBteSAoJGxpbmUsICRzdHlsZSkgPSBAXzsKKyAgICAKKyAgICBpZiAoJG91dHB1dEZv
cm1hdCBlcSAiaHRtbCIpIHsKKyAgICAgICAgJGxpbmUgPSBlc2NhcGVIVE1MKCRsaW5lKTsKKyAg
ICAgICAgaWYgICAgKCRzdHlsZSA9PSBTVFlMRV9IRUFERVIpICB7IHByaW50IE9VVFBVVF9IQU5E
TEUgIjxoMj4kbGluZTwvaDI+IjsgfQorICAgICAgICBlbHNpZiAoJHN0eWxlID09IFNUWUxFX1NV
Q0NFU1MpIHsgcHJpbnQgT1VUUFVUX0hBTkRMRSAiPHAgY2xhc3M9XCJzdWNjZXNzXCI+JGxpbmU8
L3A+IjsgfQorICAgICAgICBlbHNpZiAoJHN0eWxlID09IFNUWUxFX0FMRVJUKSAgIHsgcHJpbnQg
T1VUUFVUX0hBTkRMRSAiPHAgY2xhc3M9XCJhbGVydFwiPiRsaW5lPC9wPiI7IH0KKyAgICAgICAg
ZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHByaW50IE9VVFBVVF9IQU5ETEUgIjxw
PiRsaW5lPC9wPiI7IH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoJGNvbG9yRW5hYmxlZCkg
eworICAgICAgICAgICAgaWYgKCRzdHlsZSA9PSBTVFlMRV9IRUFERVIpICB7IHByaW50IE9VVFBV
VF9IQU5ETEUgQU5TSV9CTFVFOyB9CisgICAgICAgICAgICBpZiAoJHN0eWxlID09IFNUWUxFX1NV
Q0NFU1MpIHsgcHJpbnQgT1VUUFVUX0hBTkRMRSBBTlNJX0dSRUVOOyB9CisgICAgICAgICAgICBp
ZiAoJHN0eWxlID09IFNUWUxFX0FMRVJUKSAgIHsgcHJpbnQgT1VUUFVUX0hBTkRMRSBBTlNJX1JF
RDsgfQorICAgICAgICB9CisgICAgICAgIHByaW50IE9VVFBVVF9IQU5ETEUgJGxpbmU7CisgICAg
ICAgIHByaW50IE9VVFBVVF9IQU5ETEUgQU5TSV9QTEFJTiBpZiAkY29sb3JFbmFibGVkOworICAg
IH0KKyAgICBwcmludCBPVVRQVVRfSEFORExFICJcbiI7Cit9CisKK3N1YiBzZXRMb2dpbGVPcHRp
b24oJCQpCit7CisgICAgbXkgKCRvcHQsJHZhbHVlKSA9IEBfOworICAgICR1bmZpbHRlcmVkT3V0
cHV0UGF0aCA9ICR2YWx1ZTsKKyAgICAkbG9nVW5maWx0ZXJlZE91dHB1dCA9IDE7Cit9CisKK3N1
YiBzZXRPdXRwdXRGb3JtYXRPcHRpb24oJCQpCit7CisgICAgbXkgKCRvcHQsJHZhbHVlKSA9IEBf
OworICAgICR2YWx1ZSA9IGxjKCR2YWx1ZSk7CisgICAgdW5sZXNzICgkdmFsdWUgZXEgImh0bWwi
IG9yICR2YWx1ZSBlcSAidGV4dCIpIHsKKyAgICAgICAgZGllICJUaGUgJG9wdCBvcHRpb24gbXVz
dCBiZSBlaXRoZXIgXCJodG1sXCIgb3IgXCJ0ZXh0XCIiOworICAgIH0KKyAgICAkb3V0cHV0Rm9y
bWF0ID0gJHZhbHVlOworfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0VG9vbHMvU2NyaXB0
cy9maWx0ZXItYnVpbGQtd2Via2l0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAg
ICsgKgoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>64533</attachid>
            <date>2010-08-16 16:17:56 -0700</date>
            <delta_ts>2010-08-16 16:17:56 -0700</delta_ts>
            <desc>Example of output from filter-build-webkit script</desc>
            <filename>buildlog.html</filename>
            <type>text/html</type>
            <size>4569</size>
            <attacher name="Paul Knight">pknight</attacher>
            
              <data encoding="base64">PGh0bWw+CiAgICA8aGVhZD4KICAgICAgICA8dGl0bGU+QnVpbGQgTG9nPC90aXRsZT4KICAgICAg
ICA8c3R5bGU+CiAgICAgICAgICAgIGJvZHkgeyBmb250LWZhbWlseTogTW9uYWNvLCBtb25vc3Bh
Y2U7IGZvbnQtc2l6ZTogMTBweDsgY29sb3I6ICM2NjY7IGxpbmUtaGVpZ2h0OiAxLjVlbTsgfQog
ICAgICAgICAgICBoMiB7IG1hcmdpbjogMS41ZW0gMCAwIDA7IGZvbnQtc2l6ZTogMS4wZW07IGZv
bnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogYmx1ZTsgfQogICAgICAgICAgICBwIHsgbWFyZ2luOiAw
OyBwYWRkaW5nLWxlZnQ6IDEuNWVtOyBib3JkZXItbGVmdDogM3B4IHNvbGlkICNmZmY7IH0KICAg
ICAgICAgICAgcC5hbGVydCB7IGJvcmRlci1sZWZ0LWNvbG9yOiByZWQ7IGNvbG9yOiByZWQ7IG1h
cmdpbjogMS41ZW0gMCAwIDA7IH0KICAgICAgICAgICAgcC5hbGVydCArIHAgeyBtYXJnaW46IDEu
NWVtIDAgMCAwOyB9CiAgICAgICAgICAgIHAuYWxlcnQgKyBwLmFsZXJ0IHsgbWFyZ2luOiAwOyB9
CiAgICAgICAgICAgIHAuc3VjY2VzcyB7IGNvbG9yOiBncmVlbjsgfQogICAgICAgIDwvc3R5bGU+
CiAgICA8L2hlYWQ+CiAgICA8Ym9keT4KPGgyPj09PSBCVUlMRCBOQVRJVkUgVEFSR0VUIEFOR0xF
IE9GIFBST0pFQ1QgQU5HTEUgV0lUSCBDT05GSUdVUkFUSU9OIFJlbGVhc2UgPT09PC9oMj4KPHA+
Q2hlY2sgZGVwZW5kZW5jaWVzPC9wPgo8cCBjbGFzcz0ic3VjY2VzcyI+QnVpbGQgU3VjY2VlZGVk
PC9wPgo8aDI+PT09IEJVSUxEIEFHR1JFR0FURSBUQVJHRVQgRGVyaXZlZCBTb3VyY2VzIE9GIFBS
T0pFQ1QgSmF2YVNjcmlwdENvcmUgV0lUSCBDT05GSUdVUkFUSU9OIFJlbGVhc2UgPT09PC9oMj4K
PHA+Q2hlY2sgZGVwZW5kZW5jaWVzPC9wPgo8cD5QaGFzZVNjcmlwdEV4ZWN1dGlvbiAmcXVvdDtH
ZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMmcXVvdDs8L3A+CjxoMj49PT0gQlVJTEQgTkFUSVZFIFRB
UkdFVCBKYXZhU2NyaXB0Q29yZSBPRiBQUk9KRUNUIEphdmFTY3JpcHRDb3JlIFdJVEggQ09ORklH
VVJBVElPTiBSZWxlYXNlID09PTwvaDI+CjxwPkNoZWNrIGRlcGVuZGVuY2llczwvcD4KPHA+UGhh
c2VTY3JpcHRFeGVjdXRpb24gJnF1b3Q7Q2hlY2sgRm9yIEdsb2JhbCBJbml0aWFsaXplcnMmcXVv
dDs8L3A+CjxwPlBoYXNlU2NyaXB0RXhlY3V0aW9uICZxdW90O0NoZWNrIEZvciBFeGl0IFRpbWUg
RGVzdHJ1Y3RvcnMmcXVvdDs8L3A+CjxwPlBoYXNlU2NyaXB0RXhlY3V0aW9uICZxdW90O0NoZWNr
IEZvciBXZWFrIFZUYWJsZXMgYW5kIEV4dGVybmFscyZxdW90OzwvcD4KPGgyPj09PSBCVUlMRCBO
QVRJVkUgVEFSR0VUIG1pbmlkb20gT0YgUFJPSkVDVCBKYXZhU2NyaXB0Q29yZSBXSVRIIENPTkZJ
R1VSQVRJT04gUmVsZWFzZSA9PT08L2gyPgo8cD5DaGVjayBkZXBlbmRlbmNpZXM8L3A+CjxwPlBo
YXNlU2NyaXB0RXhlY3V0aW9uICZxdW90O1J1biBTY3JpcHQmcXVvdDs8L3A+CjxoMj49PT0gQlVJ
TEQgTkFUSVZFIFRBUkdFVCBqc2MgT0YgUFJPSkVDVCBKYXZhU2NyaXB0Q29yZSBXSVRIIENPTkZJ
R1VSQVRJT04gUmVsZWFzZSA9PT08L2gyPgo8cD5DaGVjayBkZXBlbmRlbmNpZXM8L3A+CjxwPlBo
YXNlU2NyaXB0RXhlY3V0aW9uICZxdW90O0ZpeCBGcmFtZXdvcmsgUmVmZXJlbmNlJnF1b3Q7PC9w
Pgo8aDI+PT09IEJVSUxEIE5BVElWRSBUQVJHRVQgdGVzdGFwaSBPRiBQUk9KRUNUIEphdmFTY3Jp
cHRDb3JlIFdJVEggQ09ORklHVVJBVElPTiBSZWxlYXNlID09PTwvaDI+CjxwPkNoZWNrIGRlcGVu
ZGVuY2llczwvcD4KPHA+UGhhc2VTY3JpcHRFeGVjdXRpb24gJnF1b3Q7UnVuIFNjcmlwdCZxdW90
OzwvcD4KPGgyPj09PSBCVUlMRCBBR0dSRUdBVEUgVEFSR0VUIEFsbCBPRiBQUk9KRUNUIEphdmFT
Y3JpcHRDb3JlIFdJVEggQ09ORklHVVJBVElPTiBSZWxlYXNlID09PTwvaDI+CjxwPkNoZWNrIGRl
cGVuZGVuY2llczwvcD4KPHAgY2xhc3M9InN1Y2Nlc3MiPkJ1aWxkIFN1Y2NlZWRlZDwvcD4KPGgy
Pj09PSBCVUlMRCBOQVRJVkUgVEFSR0VUIEphdmFTY3JpcHRHbHVlIE9GIFBST0pFQ1QgSmF2YVNj
cmlwdEdsdWUgV0lUSCBDT05GSUdVUkFUSU9OIFJlbGVhc2UgPT09PC9oMj4KPHA+Q2hlY2sgZGVw
ZW5kZW5jaWVzPC9wPgo8cD5DcEhlYWRlciBKYXZhU2NyaXB0R2x1ZS5oPC9wPgo8cD5QaGFzZVNj
cmlwdEV4ZWN1dGlvbiAmcXVvdDtDaGVjayBGb3IgR2xvYmFsIEluaXRpYWxpemVycyZxdW90Ozwv
cD4KPHA+UGhhc2VTY3JpcHRFeGVjdXRpb24gJnF1b3Q7Q2hlY2sgRm9yIFdlYWsgVlRhYmxlcyBh
bmQgRXh0ZXJuYWxzJnF1b3Q7PC9wPgo8cD5QaGFzZVNjcmlwdEV4ZWN1dGlvbiAmcXVvdDtSZW1v
dmUgSGVhZGVycyBJZiBOZWVkZWQmcXVvdDs8L3A+CjxwPlRvdWNoIEphdmFTY3JpcHRHbHVlLmZy
YW1ld29yazwvcD4KPGgyPj09PSBCVUlMRCBOQVRJVkUgVEFSR0VUIHRlc3Rqc2dsdWUgT0YgUFJP
SkVDVCBKYXZhU2NyaXB0R2x1ZSBXSVRIIENPTkZJR1VSQVRJT04gUmVsZWFzZSA9PT08L2gyPgo8
cD5DaGVjayBkZXBlbmRlbmNpZXM8L3A+CjxoMj49PT0gQlVJTEQgQUdHUkVHQVRFIFRBUkdFVCBB
bGwgT0YgUFJPSkVDVCBKYXZhU2NyaXB0R2x1ZSBXSVRIIENPTkZJR1VSQVRJT04gUmVsZWFzZSA9
PT08L2gyPgo8cD5DaGVjayBkZXBlbmRlbmNpZXM8L3A+CjxwIGNsYXNzPSJzdWNjZXNzIj5CdWls
ZCBTdWNjZWVkZWQ8L3A+CjxoMj49PT0gQlVJTEQgQUdHUkVHQVRFIFRBUkdFVCBXZWJDb3JlRXhw
b3J0RmlsZUdlbmVyYXRvciBHZW5lcmF0b3IgT0YgUFJPSkVDVCBXZWJDb3JlIFdJVEggQ09ORklH
VVJBVElPTiBSZWxlYXNlID09PTwvaDI+CjxwPkNoZWNrIGRlcGVuZGVuY2llczwvcD4KPGgyPj09
PSBCVUlMRCBOQVRJVkUgVEFSR0VUIFdlYkNvcmVFeHBvcnRGaWxlR2VuZXJhdG9yIE9GIFBST0pF
Q1QgV2ViQ29yZSBXSVRIIENPTkZJR1VSQVRJT04gUmVsZWFzZSA9PT08L2gyPgo8cD5DaGVjayBk
ZXBlbmRlbmNpZXM8L3A+CjxoMj49PT0gQlVJTEQgQUdHUkVHQVRFIFRBUkdFVCBEZXJpdmVkIFNv
dXJjZXMgT0YgUFJPSkVDVCBXZWJDb3JlIFdJVEggQ09ORklHVVJBVElPTiBSZWxlYXNlID09PTwv
aDI+CjxwPkNoZWNrIGRlcGVuZGVuY2llczwvcD4KPHA+UGhhc2VTY3JpcHRFeGVjdXRpb24gJnF1
b3Q7R2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzJnF1b3Q7PC9wPgo8aDI+PT09IEJVSUxEIE5BVElW
RSBUQVJHRVQgV2ViQ29yZSBPRiBQUk9KRUNUIFdlYkNvcmUgV0lUSCBDT05GSUdVUkFUSU9OIFJl
bGVhc2UgPT09PC9oMj4KPHA+Q2hlY2sgZGVwZW5kZW5jaWVzPC9wPgo8cD5QaGFzZVNjcmlwdEV4
ZWN1dGlvbiAmcXVvdDtDb3B5IEZvcndhcmRpbmcgYW5kIElDVSBIZWFkZXJzJnF1b3Q7PC9wPgo8
cD5Db21waWxlQyBBTkdMRVdlYktpdEJyaWRnZS5vPC9wPgo8cCBjbGFzcz0iYWxlcnQiPmNjMXBs
dXM6IHdhcm5pbmdzIGJlaW5nIHRyZWF0ZWQgYXMgZXJyb3JzPC9wPgo8cCBjbGFzcz0iYWxlcnQi
Pi9Wb2x1bWVzL0RhdGEvV2ViS2l0LUJ1aWxkU2xhdmUvc25vd2xlb3BhcmQtaW50ZWwtcmVsZWFz
ZS9idWlsZC9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcDog
SW4gbWVtYmVyIGZ1bmN0aW9uICYjMzk7Ym9vbCBXZWJDb3JlOjpBTkdMRVdlYktpdEJyaWRnZTo6
dmFsaWRhdGVTaGFkZXJTb3VyY2UoY29uc3QgY2hhciosIFdlYkNvcmU6OkFOR0xFU2hhZGVyVHlw
ZSwgV1RGOjpTdHJpbmcmYW1wOywgV1RGOjpTdHJpbmcmYW1wOykmIzM5Ozo8L3A+CjxwIGNsYXNz
PSJhbGVydCI+L1ZvbHVtZXMvRGF0YS9XZWJLaXQtQnVpbGRTbGF2ZS9zbm93bGVvcGFyZC1pbnRl
bC1yZWxlYXNlL2J1aWxkL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlk
Z2UuY3BwOjYwOiB3YXJuaW5nOiAmIzM5O2NvbXBpbGVyJiMzOTsgbWF5IGJlIHVzZWQgdW5pbml0
aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uPC9wPgo8cD5QaGFzZVNjcmlwdEV4ZWN1dGlvbiAmcXVv
dDtDaGVjayBGb3IgSW5hcHByb3ByaWF0ZSBGaWxlcyBJbiBGcmFtZXdvcmsmcXVvdDs8L3A+Cjxw
IGNsYXNzPSJhbGVydCI+KiogQlVJTEQgRkFJTEVEICoqPC9wPgo8cCBjbGFzcz0iYWxlcnQiPlRo
ZSBmb2xsb3dpbmcgYnVpbGQgY29tbWFuZHMgZmFpbGVkOjwvcD4KPHAgY2xhc3M9ImFsZXJ0Ij5X
ZWJDb3JlOjwvcD4KPHAgY2xhc3M9ImFsZXJ0Ij4JQ29tcGlsZUMgL1ZvbHVtZXMvRGF0YS9XZWJL
aXQtQnVpbGRTbGF2ZS9zbm93bGVvcGFyZC1pbnRlbC1yZWxlYXNlL2J1aWxkL1dlYktpdEJ1aWxk
L1dlYkNvcmUuYnVpbGQvUmVsZWFzZS9XZWJDb3JlLmJ1aWxkL09iamVjdHMtbm9ybWFsL3g4Nl82
NC9BTkdMRVdlYktpdEJyaWRnZS5vIC9Wb2x1bWVzL0RhdGEvV2ViS2l0LUJ1aWxkU2xhdmUvc25v
d2xlb3BhcmQtaW50ZWwtcmVsZWFzZS9idWlsZC9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FO
R0xFV2ViS2l0QnJpZGdlLmNwcCBub3JtYWwgeDg2XzY0IGMrKyBjb20uYXBwbGUuY29tcGlsZXJz
LmdjYy40XzI8L3A+CjxwIGNsYXNzPSJhbGVydCI+KDEgZmFpbHVyZSk8L3A+CiAgICA8L2JvZHk+
CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106200</attachid>
            <date>2011-09-02 14:27:02 -0700</date>
            <delta_ts>2011-09-06 11:12:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44081-20110902142701.patch</filename>
            <type>text/plain</type>
            <size>8901</size>
            <attacher name="Matthew Delaney">mdelaney7</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk0NDQ3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTEtMDktMDIgIE1hdHRoZXcgRGVsYW5leSAgPG1kZWxhbmV5QGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgc3RhbmRhbG9uZSBzY3JpcHQgdGhhdCBmaWx0ZXJzIHRoZSBvdXRw
dXQgb2YgYnVpbGQtd2Via2l0IHRvIGJlIG1vcmUgaHVtYW4tcmVhZGFibGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MDgxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2ZpbHRlci1idWls
ZC13ZWJraXQ6IEFkZGVkLiBKdXN0IG5lZWQgdG8gZmVlZCBpdCB0aGUgb3V0cHV0IG9mCisgICAg
ICAgIGEgYnVpbGQgc2NyaXB0IChlLmcuIGJ1aWxkLXdlYmtpdCkgYW5kIGl0IHNwaXRzIG91dCBh
IHByZXR0aWVyIHZlcnNpb24uCisKIDIwMTEtMDktMDIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZGVkIFN1YnZlcnNpb24gaWdub3JlIGZvciAucHljIGdlbmVy
YXRlZCBmaWxlcy4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvZmlsdGVyLWJ1aWxkLXdlYmtpdAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2ZpbHRlci1idWlsZC13ZWJraXQJKHJldmlzaW9uIDAp
CisrKyBUb29scy9TY3JpcHRzL2ZpbHRlci1idWlsZC13ZWJraXQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjExIEBACisjISAvdXNyL2Jpbi9lbnYgcGVybCAtdworCisjIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorIyAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorIyAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyMgRmlsdGVycyB0aGUgb3V0cHV0IG9mIGJ1aWxkLXdlYmtpdCBpbnRvIGEgbW9y
ZSBodW1hbi1yZWFkYWJsZSBmb3JtYXQuCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisK
K3VzZSBDR0kgcXcoZXNjYXBlSFRNTCk7Cit1c2UgRmlsZTo6QmFzZW5hbWU7Cit1c2UgR2V0b3B0
OjpMb25nOworCit1c2UgY29uc3RhbnQgeworICAgIENPTE9STU9ERV9OTyAgID0+IDAsCisgICAg
Q09MT1JNT0RFX1lFUyAgPT4gMSwKKyAgICBDT0xPUk1PREVfQVVUTyA9PiAyLAorICAgIAorICAg
IFNUWUxFX1BMQUlOID0+IDAsCisgICAgU1RZTEVfSEVBREVSID0+IDEsCisgICAgU1RZTEVfU1VD
Q0VTUyA9PiAyLAorICAgIFNUWUxFX0FMRVJUID0+IDMsCisgICAgCisgICAgQU5TSV9CTFVFID0+
ICJcMDMzWzM0bSIsCisgICAgQU5TSV9HUkVFTiA9PiAiXDAzM1szMm0iLAorICAgIEFOU0lfUkVE
ID0+ICJcMDMzWzMxbSIsCisgICAgQU5TSV9QTEFJTiA9PiAiXDAzM1swbSIsCisgICAgCisgICAg
SFRNTF9IRUFERVIgPT48PEhUTUxIRUFERVIKKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
dGl0bGU+QnVpbGQgTG9nPC90aXRsZT4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgYm9k
eSB7IGZvbnQtZmFtaWx5OiBNb25hY28sIG1vbm9zcGFjZTsgZm9udC1zaXplOiAxMHB4OyBjb2xv
cjogIzY2NjsgbGluZS1oZWlnaHQ6IDEuNWVtOyB9CisgICAgICAgICAgICBoMiB7IG1hcmdpbjog
MS41ZW0gMCAwIDA7IGZvbnQtc2l6ZTogMS4wZW07IGZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjog
Ymx1ZTsgfQorICAgICAgICAgICAgcCB7IG1hcmdpbjogMDsgcGFkZGluZy1sZWZ0OiAxLjVlbTsg
Ym9yZGVyLWxlZnQ6IDNweCBzb2xpZCAjZmZmOyB9CisgICAgICAgICAgICBwLmFsZXJ0IHsgYm9y
ZGVyLWxlZnQtY29sb3I6IHJlZDsgY29sb3I6IHJlZDsgbWFyZ2luOiAxLjVlbSAwIDAgMDsgfQor
ICAgICAgICAgICAgcC5hbGVydCArIHAgeyBtYXJnaW46IDEuNWVtIDAgMCAwOyB9CisgICAgICAg
ICAgICBwLmFsZXJ0ICsgcC5hbGVydCB7IG1hcmdpbjogMDsgfQorICAgICAgICAgICAgcC5zdWNj
ZXNzIHsgY29sb3I6IGdyZWVuOyB9CisgICAgICAgIDwvc3R5bGU+CisgICAgPC9oZWFkPgorICAg
IDxib2R5PgorSFRNTEhFQURFUgorICAgICwgICAKKyAgICAKKyAgICBIVE1MX0ZPT1RFUiA9Pjw8
SFRNTEZPT1RFUgorICAgIDwvYm9keT4KKzwvaHRtbD4KK0hUTUxGT09URVIKKyAgICAsCit9Owor
CitzdWIgcHJpbnRMaW5lKCQkKTsKK3N1YiBzZXRMb2dmaWxlT3B0aW9uKCQkKTsKK3N1YiBzZXRP
dXRwdXRGb3JtYXRPcHRpb24oJCQpOworc3ViIHVzYWdlQW5kRXhpdCgpOworCitteSAkc2hvd0hl
bHA7CitteSAkb3V0cHV0UGF0aCA9ICImU1RET1VUIjsKK215ICRvdXRwdXRGb3JtYXQgPSAidGV4
dCI7CitteSAkY29sb3JNb2RlID0gQ09MT1JNT0RFX0FVVE87CitteSAkdW5maWx0ZXJlZE91dHB1
dFBhdGggPSAiYnVpbGQubG9nIjsKK215ICRsb2dVbmZpbHRlcmVkT3V0cHV0OworCitzdWIgdXNh
Z2VBbmRFeGl0KCkKK3sKKyAgICBwcmludCBTVERFUlIgPDxfX0VORF9fOworVXNhZ2U6IEB7WyBi
YXNlbmFtZSgkMCkgXX0gW29wdGlvbnNdIFtidWlsZGxvZ10KKyAgICAgICBidWlsZC13ZWJraXQg
fCBAe1sgYmFzZW5hbWUoJDApIF19IFtvcHRpb25zXQorICAtaHwtLWhlbHAgICAgIFNob3cgdGhp
cyBoZWxwIG1lc3NhZ2UKK091dHB1dCBPcHRpb25zOgorICAtb3wtLW91dHB1dCAgIFBhdGggZm9y
IG91dHB1dCAoZGVmYXVsdCBpcyBzdGFuZGFyZCBvdXQpCisgIC1mfC0tZm9ybWF0ICAgT3V0cHV0
IGZvcm1hdCAoZGVmYXVsdCkKKyAgICAgICAgICAgICAgICAgIHRleHQ6IFBsYWluIHRleHQKKyAg
ICAgICAgICAgICAgICAgIGh0bWw6IFN0YW5kYWxvbmUgaHRtbCBkb2N1bWVudAorICAtLVtuby1d
Y29sb3IgIEFOU0kgY29sb3Igb3V0cHV0IGZvciB0ZXh0IChkZWZhdWx0OiBhdXRvKQorVW5maWx0
ZXJlZCBMb2dnaW5nIE9wdGlvbnM6CisgIC1sfC0tbG9nICAgICAgU2F2ZSB1bmZpbHRlcmVkIG91
dHB1dCB0byBmaWxlIChzZWUgLS1sb2ctZmlsZSkKKyAgLS1sb2dmaWxlICAgICBQYXRoIHRvIHNh
dmUgdW5maWx0ZXJlZCBvdXRwdXQgKGltcGxpZXMgLS1sb2csIGRlZmF1bHQ6ICR1bmZpbHRlcmVk
T3V0cHV0UGF0aCkKK19fRU5EX18KKyAgICBleGl0IDE7Cit9CisKK215ICRnZXRPcHRpb25zUmVz
dWx0ID0gR2V0T3B0aW9ucygKKyAgICAnaHxoZWxwJyAgICAgICAgICAgICAgICA9PiBcJHNob3dI
ZWxwLAorICAgICdvfG91dHB1dD1zJyAgICAgICAgICAgID0+IFwkb3V0cHV0UGF0aCwKKyAgICAn
Znxmb3JtYXQ9cycgICAgICAgICAgICA9PiBcJnNldE91dHB1dEZvcm1hdE9wdGlvbiwKKyAgICAn
Y29sb3IhJyAgICAgICAgICAgICAgICA9PiBcJGNvbG9yTW9kZSwKKyAgICAnbHxsb2cnICAgICAg
ICAgICAgICAgICA9PiBcJGxvZ1VuZmlsdGVyZWRPdXRwdXQsCisgICAgJ2xvZ2ZpbGU9cycgICAg
ICAgICAgICAgPT4gXCZzZXRMb2dmaWxlT3B0aW9uLAorKTsKKworaWYgKCEkZ2V0T3B0aW9uc1Jl
c3VsdCB8fCAkc2hvd0hlbHApIHsKKyAgICB1c2FnZUFuZEV4aXQoKTsKK30KKworbXkgJGNvbG9y
RW5hYmxlZCA9ICgkY29sb3JNb2RlID09IENPTE9STU9ERV9BVVRPICYmIC10IFNURE9VVCkgfHwg
JGNvbG9yTW9kZSA9PSBDT0xPUk1PREVfWUVTOworCitvcGVuKE9VVFBVVF9IQU5ETEUsICI+JG91
dHB1dFBhdGgiKTsKK29wZW4oTE9HX0hBTkRMRSwgIj4kdW5maWx0ZXJlZE91dHB1dFBhdGgiKSBp
ZiAkbG9nVW5maWx0ZXJlZE91dHB1dDsKKworcHJpbnQgT1VUUFVUX0hBTkRMRSBIVE1MX0hFQURF
UiBpZiAoJG91dHB1dEZvcm1hdCBlcSAiaHRtbCIpOworCitteSAkYnVpbGRGaW5pc2hlZCA9IDA7
Cit3aGlsZSAobXkgJGxpbmUgPSA8PikgeworICAgIHByaW50IExPR19IQU5ETEUgJGxpbmUgaWYg
JGxvZ1VuZmlsdGVyZWRPdXRwdXQ7CisgICAgCisgICAgY2hvbXAoJGxpbmUpOworICAgIGlmICgk
bGluZSA9fiAvXj17MTB9LykgeworICAgICAgICBwcmludExpbmUoJGxpbmUsIFNUWUxFX1NVQ0NF
U1MpOworICAgICAgICAkYnVpbGRGaW5pc2hlZCA9IDE7CisgICAgfQorICAgIGVsc2lmICgkbGlu
ZSA9fiAvXj09PS8pIHsKKyAgICAgICAgcHJpbnRMaW5lKCRsaW5lLCBTVFlMRV9IRUFERVIpOwor
ICAgIH0KKyAgICBlbHNpZiAoJGxpbmUgPX4gL0NoZWNraW5nIERlcGVuZGVuY2llc3xDaGVjayBk
ZXBlbmRlbmNpZXMvKSB7CisgICAgICAgIHByaW50TGluZSgkbGluZSwgU1RZTEVfUExBSU4pOwor
ICAgIH0KKyAgICBlbHNpZiAoJGxpbmUgPX4gL1wqXCogQlVJTEQgU1VDQ0VFREVEIFwqXCovKSB7
CisgICAgICAgIHByaW50TGluZSgiQnVpbGQgU3VjY2VlZGVkIiwgU1RZTEVfU1VDQ0VTUyk7Cisg
ICAgfQorICAgIGVsc2lmICgkbGluZSA9fiAvXihQaGFzZVNjcmlwdEV4ZWN1dGlvbnxDb21waWxl
Q3xMZHxQQlhDcHxDcFJlc291cmNlfENvcHlQTkdGaWxlfENvcHlUaWZmRmlsZXxDcEhlYWRlcnxQ
cm9jZXNzaW5nfFByb2Nlc3NJbmZvUGxpc3RGaWxlfFByb2Nlc3NQQ0h8UHJvY2Vzc1BDSFwrXCt8
VG91Y2h8TGlidG9vbHxDb3B5U3RyaW5nc0ZpbGV8TWlnfENyZWF0ZVVuaXZlcnNhbEJpbmFyeXxB
bmFseXplKSAoIlteIl0rInxcUyspLykgeworICAgICAgICAobXkgJGNvbW1hbmQsIG15ICRwYXRo
KSA9ICgkMSwgYmFzZW5hbWUoJDIpKTsKKyAgICAgICAgcHJpbnRMaW5lKCIkY29tbWFuZCAkcGF0
aCIsIFNUWUxFX1BMQUlOKTsKKyAgICB9CisgICAgZWxzaWYgKCRsaW5lID1+IC9eXHMqJC8pIHt9
ICMgaWdub3JlCisgICAgZWxzaWYgKCRsaW5lID1+IC9eQnVpbGQgc2V0dGluZ3MgZnJvbSBjb21t
YW5kIGxpbmU6Lykge30gI2lnbm9yZQorICAgIGVsc2lmICgkbGluZSA9fiAvbWFrZTogTm90aGlu
ZyB0byBiZSBkb25lIGZvciBgYWxsJ1wuLykge30gIyBpZ25vcmUKKyAgICBlbHNpZiAoJGxpbmUg
PX4gL15KYXZhU2NyaXB0Q29yZVwvY3JlYXRlX2hhc2hfdGFibGUvKSB7fSAjIGlnbm9yZQorICAg
IGVsc2lmICgkbGluZSA9fiAvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrXC9Qcml2YXRlSGVhZGVy
c1wvY3JlYXRlX2hhc2hfdGFibGUvKSB7fSAjIGlnbm9yZQorICAgIGVsc2lmICgkbGluZSA9fiAv
XkphdmFTY3JpcHRDb3JlXC9wY3JlXC9kZnRhYmxlcy8pIHt9ICMgaWdub3JlCisgICAgZWxzaWYg
KCRsaW5lID1+IC9eQ3JlYXRpbmcgaGFzaHRhYmxlIGZvciAvKSB7fSAjIGlnbm9yZQorICAgIGVs
c2lmICgkbGluZSA9fiAvXldyb3RlIG91dHB1dCB0byAvKSB7fSAjaWdub3JlCisgICAgZWxzaWYg
KCRsaW5lID1+IC9eKHRvdWNofHBlcmx8Y2F0fHJtIC1mfGJpc29ufGZsZXh8cHl0aG9ufFwvdXNy
XC9iaW5cL2dcK1wrfGdwZXJmfGVjaG98c2VkfGlmIFxbIFwtZnxXZWJDb3JlXC9nZW5lcmF0ZS1l
eHBvcnQtZmlsZSkgLykge30gIyBpZ25vcmUKKyAgICBlbHNpZiAoJGxpbmUgPX4gL15VTkRPQ1VN
RU5URUQ6IC8pIHt9ICMgaWdub3JlCisgICAgZWxzaWYgKCRsaW5lID1+IC9saWJ0b29sLipoYXMg
bm8gc3ltYm9scy8pIHt9ICMgaWdub3JlCisgICAgZWxzaWYgKCRsaW5lID1+IC9eIyBMb3dlciBj
YXNlIGFsbCB0aGUgdmFsdWVzLCBhcyBDU1MgdmFsdWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlJC8p
IHt9ICMgaWdub3JlCisgICAgZWxzaWYgKCRsaW5lID1+IC9eaWYgc29ydCAvKSB7fSAjIGlnbm9y
ZQorICAgIGVsc2lmICgkbGluZSA9fiAvXiAgICAvKSB7fSAjIGlnbm9yZQorICAgIGVsc2Ugewor
ICAgICAgICBwcmludExpbmUoJGxpbmUsICRidWlsZEZpbmlzaGVkID8gU1RZTEVfU1VDQ0VTUyA6
IFNUWUxFX0FMRVJUKTsKKyAgICB9Cit9CisKK3ByaW50IE9VVFBVVF9IQU5ETEUgSFRNTF9GT09U
RVIgaWYgKCRvdXRwdXRGb3JtYXQgZXEgImh0bWwiKTsKKworZXhpdCAwOworCitzdWIgcHJpbnRM
aW5lKCQkKQoreworICAgIG15ICgkbGluZSwgJHN0eWxlKSA9IEBfOworICAgIAorICAgIGlmICgk
b3V0cHV0Rm9ybWF0IGVxICJodG1sIikgeworICAgICAgICAkbGluZSA9IGVzY2FwZUhUTUwoJGxp
bmUpOworICAgICAgICBpZiAgICAoJHN0eWxlID09IFNUWUxFX0hFQURFUikgIHsgcHJpbnQgT1VU
UFVUX0hBTkRMRSAiPGgyPiRsaW5lPC9oMj4iOyB9CisgICAgICAgIGVsc2lmICgkc3R5bGUgPT0g
U1RZTEVfU1VDQ0VTUykgeyBwcmludCBPVVRQVVRfSEFORExFICI8cCBjbGFzcz1cInN1Y2Nlc3Nc
Ij4kbGluZTwvcD4iOyB9CisgICAgICAgIGVsc2lmICgkc3R5bGUgPT0gU1RZTEVfQUxFUlQpICAg
eyBwcmludCBPVVRQVVRfSEFORExFICI8cCBjbGFzcz1cImFsZXJ0XCI+JGxpbmU8L3A+IjsgfQor
ICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcHJpbnQgT1VUUFVUX0hB
TkRMRSAiPHA+JGxpbmU8L3A+IjsgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmICgkY29sb3JF
bmFibGVkKSB7CisgICAgICAgICAgICBpZiAoJHN0eWxlID09IFNUWUxFX0hFQURFUikgIHsgcHJp
bnQgT1VUUFVUX0hBTkRMRSBBTlNJX0JMVUU7IH0KKyAgICAgICAgICAgIGlmICgkc3R5bGUgPT0g
U1RZTEVfU1VDQ0VTUykgeyBwcmludCBPVVRQVVRfSEFORExFIEFOU0lfR1JFRU47IH0KKyAgICAg
ICAgICAgIGlmICgkc3R5bGUgPT0gU1RZTEVfQUxFUlQpICAgeyBwcmludCBPVVRQVVRfSEFORExF
IEFOU0lfUkVEOyB9CisgICAgICAgIH0KKyAgICAgICAgcHJpbnQgT1VUUFVUX0hBTkRMRSAkbGlu
ZTsKKyAgICAgICAgcHJpbnQgT1VUUFVUX0hBTkRMRSBBTlNJX1BMQUlOIGlmICRjb2xvckVuYWJs
ZWQ7CisgICAgfQorICAgIHByaW50IE9VVFBVVF9IQU5ETEUgIlxuIjsKK30KKworc3ViIHNldExv
Z2ZpbGVPcHRpb24oJCQpCit7CisgICAgbXkgKCRvcHQsJHZhbHVlKSA9IEBfOworICAgICR1bmZp
bHRlcmVkT3V0cHV0UGF0aCA9ICR2YWx1ZTsKKyAgICAkbG9nVW5maWx0ZXJlZE91dHB1dCA9IDE7
Cit9CisKK3N1YiBzZXRPdXRwdXRGb3JtYXRPcHRpb24oJCQpCit7CisgICAgbXkgKCRvcHQsJHZh
bHVlKSA9IEBfOworICAgICR2YWx1ZSA9IGxjKCR2YWx1ZSk7CisgICAgdW5sZXNzICgkdmFsdWUg
ZXEgImh0bWwiIG9yICR2YWx1ZSBlcSAidGV4dCIpIHsKKyAgICAgICAgZGllICJUaGUgJG9wdCBv
cHRpb24gbXVzdCBiZSBlaXRoZXIgXCJodG1sXCIgb3IgXCJ0ZXh0XCIiOworICAgIH0KKyAgICAk
b3V0cHV0Rm9ybWF0ID0gJHZhbHVlOworfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvU2Ny
aXB0cy9maWx0ZXItYnVpbGQtd2Via2l0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxl
CiAgICsgKgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106446</attachid>
            <date>2011-09-06 11:12:53 -0700</date>
            <delta_ts>2011-09-07 13:27:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44081-20110906111252.patch</filename>
            <type>text/plain</type>
            <size>8933</size>
            <attacher name="Matthew Delaney">mdelaney7</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk0NTgwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTEtMDktMDYgIE1hdHRoZXcgRGVsYW5leSAgPG1kZWxhbmV5QGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgc3RhbmRhbG9uZSBzY3JpcHQgdGhhdCBmaWx0ZXJzIHRoZSBvdXRw
dXQgb2YgYnVpbGQtd2Via2l0IHRvIGJlIG1vcmUgaHVtYW4tcmVhZGFibGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MDgxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2ZpbHRlci1idWls
ZC13ZWJraXQ6IEFkZGVkLiBKdXN0IG5lZWQgdG8gZmVlZCBpdCB0aGUgb3V0cHV0IG9mCisgICAg
ICAgIGEgYnVpbGQgc2NyaXB0IChlLmcuIGJ1aWxkLXdlYmtpdCkgYW5kIGl0IHNwaXRzIG91dCBh
IHByZXR0aWVyIHZlcnNpb24uCisKIDIwMTEtMDktMDYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVc2UgYSBoaWVyYXJjaGlhbCBzdHJ1Y3R1cmUgZm9yIHRoZSBn
YXJkZW4tby1tYXRpYyByZXN1bHRzIHZpZXcKSW5kZXg6IFRvb2xzL1NjcmlwdHMvZmlsdGVyLWJ1
aWxkLXdlYmtpdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2ZpbHRlci1idWlsZC13ZWJr
aXQJKHJldmlzaW9uIDApCisrKyBUb29scy9TY3JpcHRzL2ZpbHRlci1idWlsZC13ZWJraXQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjExIEBACisjIS91c3IvYmluL3BlcmwgLXcKKworIyBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LiAKKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAK
KyMgMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyMgICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyMgICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisjIEZpbHRlcnMgdGhlIG91dHB1dCBvZiBidWlsZC13ZWJraXQg
aW50byBhIG1vcmUgaHVtYW4tcmVhZGFibGUgZm9ybWF0LgorCit1c2Ugc3RyaWN0OwordXNlIHdh
cm5pbmdzOworCit1c2UgQ0dJIHF3KGVzY2FwZUhUTUwpOwordXNlIEZpbGU6OkJhc2VuYW1lOwor
dXNlIEdldG9wdDo6TG9uZzsKKwordXNlIGNvbnN0YW50IHsKKyAgICBDT0xPUk1PREVfTk8gICA9
PiAwLAorICAgIENPTE9STU9ERV9ZRVMgID0+IDEsCisgICAgQ09MT1JNT0RFX0FVVE8gPT4gMiwK
KyAgICAKKyAgICBTVFlMRV9QTEFJTiA9PiAwLAorICAgIFNUWUxFX0hFQURFUiA9PiAxLAorICAg
IFNUWUxFX1NVQ0NFU1MgPT4gMiwKKyAgICBTVFlMRV9BTEVSVCA9PiAzLAorICAgIAorICAgIEFO
U0lfQkxVRSA9PiAiXDAzM1szNG0iLAorICAgIEFOU0lfR1JFRU4gPT4gIlwwMzNbMzJtIiwKKyAg
ICBBTlNJX1JFRCA9PiAiXDAzM1szMW0iLAorICAgIEFOU0lfUExBSU4gPT4gIlwwMzNbMG0iLAor
ICAgIAorICAgIEhUTUxfSEVBREVSID0+PDxIVE1MSEVBREVSCis8aHRtbD4KKyAgICA8aGVhZD4K
KyAgICAgICAgPHRpdGxlPkJ1aWxkIExvZzwvdGl0bGU+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgICAgIGJvZHkgeyBmb250LWZhbWlseTogTW9uYWNvLCBtb25vc3BhY2U7IGZvbnQtc2l6ZTog
MTBweDsgY29sb3I6ICM2NjY7IGxpbmUtaGVpZ2h0OiAxLjVlbTsgfQorICAgICAgICAgICAgaDIg
eyBtYXJnaW46IDEuNWVtIDAgMCAwOyBmb250LXNpemU6IDEuMGVtOyBmb250LXdlaWdodDogYm9s
ZDsgY29sb3I6IGJsdWU7IH0KKyAgICAgICAgICAgIHAgeyBtYXJnaW46IDA7IHBhZGRpbmctbGVm
dDogMS41ZW07IGJvcmRlci1sZWZ0OiAzcHggc29saWQgI2ZmZjsgfQorICAgICAgICAgICAgcC5h
bGVydCB7IGJvcmRlci1sZWZ0LWNvbG9yOiByZWQ7IGNvbG9yOiByZWQ7IG1hcmdpbjogMS41ZW0g
MCAwIDA7IH0KKyAgICAgICAgICAgIHAuYWxlcnQgKyBwIHsgbWFyZ2luOiAxLjVlbSAwIDAgMDsg
fQorICAgICAgICAgICAgcC5hbGVydCArIHAuYWxlcnQgeyBtYXJnaW46IDA7IH0KKyAgICAgICAg
ICAgIHAuc3VjY2VzcyB7IGNvbG9yOiBncmVlbjsgfQorICAgICAgICA8L3N0eWxlPgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keT4KK0hUTUxIRUFERVIKKyAgICAsICAgCisgICAgCisgICAgSFRNTF9G
T09URVIgPT48PEhUTUxGT09URVIKKyAgICA8L2JvZHk+Cis8L2h0bWw+CitIVE1MRk9PVEVSCisg
ICAgLAorfTsKKworc3ViIHByaW50TGluZSgkJCk7CitzdWIgc2V0TG9nZmlsZU9wdGlvbigkJCk7
CitzdWIgc2V0T3V0cHV0Rm9ybWF0T3B0aW9uKCQkKTsKK3N1YiB1c2FnZUFuZEV4aXQoKTsKKwor
bXkgJHNob3dIZWxwOworbXkgJG91dHB1dFBhdGggPSAiJlNURE9VVCI7CitteSAkb3V0cHV0Rm9y
bWF0ID0gInRleHQiOworbXkgJGNvbG9yTW9kZSA9IENPTE9STU9ERV9BVVRPOworbXkgJHVuZmls
dGVyZWRPdXRwdXRQYXRoID0gImJ1aWxkLmxvZyI7CitteSAkbG9nVW5maWx0ZXJlZE91dHB1dDsK
Kworc3ViIHVzYWdlQW5kRXhpdCgpCit7CisgICAgcHJpbnQgU1RERVJSIDw8X19FTkRfXzsKK1Vz
YWdlOiBAe1sgYmFzZW5hbWUoJDApIF19IFtvcHRpb25zXSBbYnVpbGRsb2ddCisgICAgICAgYnVp
bGQtd2Via2l0IHwgQHtbIGJhc2VuYW1lKCQwKSBdfSBbb3B0aW9uc10KKyAgLWh8LS1oZWxwICAg
ICBTaG93IHRoaXMgaGVscCBtZXNzYWdlCitPdXRwdXQgT3B0aW9uczoKKyAgLW98LS1vdXRwdXQg
ICBQYXRoIGZvciBvdXRwdXQgKGRlZmF1bHQgaXMgc3RhbmRhcmQgb3V0KQorICAtZnwtLWZvcm1h
dCAgIE91dHB1dCBmb3JtYXQgKGRlZmF1bHQpCisgICAgICAgICAgICAgICAgICB0ZXh0OiBQbGFp
biB0ZXh0CisgICAgICAgICAgICAgICAgICBodG1sOiBTdGFuZGFsb25lIGh0bWwgZG9jdW1lbnQK
KyAgLS1bbm8tXWNvbG9yICBBTlNJIGNvbG9yIG91dHB1dCBmb3IgdGV4dCAoZGVmYXVsdDogYXV0
bykKK1VuZmlsdGVyZWQgTG9nZ2luZyBPcHRpb25zOgorICAtbHwtLWxvZyAgICAgIFNhdmUgdW5m
aWx0ZXJlZCBvdXRwdXQgdG8gZmlsZSAoc2VlIC0tbG9nLWZpbGUpCisgIC0tbG9nZmlsZSAgICAg
UGF0aCB0byBzYXZlIHVuZmlsdGVyZWQgb3V0cHV0IChpbXBsaWVzIC0tbG9nLCBkZWZhdWx0OiAk
dW5maWx0ZXJlZE91dHB1dFBhdGgpCitfX0VORF9fCisgICAgZXhpdCAxOworfQorCitteSAkZ2V0
T3B0aW9uc1Jlc3VsdCA9IEdldE9wdGlvbnMoCisgICAgJ2h8aGVscCcgICAgICAgICAgICAgICAg
PT4gXCRzaG93SGVscCwKKyAgICAnb3xvdXRwdXQ9cycgICAgICAgICAgICA9PiBcJG91dHB1dFBh
dGgsCisgICAgJ2Z8Zm9ybWF0PXMnICAgICAgICAgICAgPT4gXCZzZXRPdXRwdXRGb3JtYXRPcHRp
b24sCisgICAgJ2NvbG9yIScgICAgICAgICAgICAgICAgPT4gXCRjb2xvck1vZGUsCisgICAgJ2x8
bG9nJyAgICAgICAgICAgICAgICAgPT4gXCRsb2dVbmZpbHRlcmVkT3V0cHV0LAorICAgICdsb2dm
aWxlPXMnICAgICAgICAgICAgID0+IFwmc2V0TG9nZmlsZU9wdGlvbiwKKyk7CisKK2lmICggLXQg
U1RESU4gfHwgZGVmaW5lZCgkc2hvd0hlbHApIHx8ICEkZ2V0T3B0aW9uc1Jlc3VsdCkgeworICAg
IHVzYWdlQW5kRXhpdCgpOworfQorCitteSAkY29sb3JFbmFibGVkID0gKCRjb2xvck1vZGUgPT0g
Q09MT1JNT0RFX0FVVE8gJiYgLXQgU1RET1VUKSB8fCAkY29sb3JNb2RlID09IENPTE9STU9ERV9Z
RVM7CisKK29wZW4oT1VUUFVUX0hBTkRMRSwgIj4kb3V0cHV0UGF0aCIpOworb3BlbihMT0dfSEFO
RExFLCAiPiR1bmZpbHRlcmVkT3V0cHV0UGF0aCIpIGlmICRsb2dVbmZpbHRlcmVkT3V0cHV0Owor
CitwcmludCBPVVRQVVRfSEFORExFIEhUTUxfSEVBREVSIGlmICgkb3V0cHV0Rm9ybWF0IGVxICJo
dG1sIik7CisKK215ICRidWlsZEZpbmlzaGVkID0gMDsKK3doaWxlIChteSAkbGluZSA9IDw+KSB7
CisgICAgcHJpbnQgTE9HX0hBTkRMRSAkbGluZSBpZiAkbG9nVW5maWx0ZXJlZE91dHB1dDsKKyAg
ICAKKyAgICBjaG9tcCgkbGluZSk7CisgICAgaWYgKCRsaW5lID1+IC9ePXsxMH0vKSB7CisgICAg
ICAgIHByaW50TGluZSgkbGluZSwgU1RZTEVfU1VDQ0VTUyk7CisgICAgICAgICRidWlsZEZpbmlz
aGVkID0gMTsKKyAgICB9CisgICAgZWxzaWYgKCRsaW5lID1+IC9ePT09LykgeworICAgICAgICBw
cmludExpbmUoJGxpbmUsIFNUWUxFX0hFQURFUik7CisgICAgfQorICAgIGVsc2lmICgkbGluZSA9
fiAvQ2hlY2tpbmcgRGVwZW5kZW5jaWVzfENoZWNrIGRlcGVuZGVuY2llcy8pIHsKKyAgICAgICAg
cHJpbnRMaW5lKCRsaW5lLCBTVFlMRV9QTEFJTik7CisgICAgfQorICAgIGVsc2lmICgkbGluZSA9
fiAvXCpcKiBCVUlMRCBTVUNDRUVERUQgXCpcKi8pIHsKKyAgICAgICAgcHJpbnRMaW5lKCJCdWls
ZCBTdWNjZWVkZWQiLCBTVFlMRV9TVUNDRVNTKTsKKyAgICB9CisgICAgZWxzaWYgKCRsaW5lID1+
IC9eKFBoYXNlU2NyaXB0RXhlY3V0aW9ufENvbXBpbGVDfExkfFBCWENwfENwUmVzb3VyY2V8Q29w
eVBOR0ZpbGV8Q29weVRpZmZGaWxlfENwSGVhZGVyfFByb2Nlc3Npbmd8UHJvY2Vzc0luZm9QbGlz
dEZpbGV8UHJvY2Vzc1BDSHxQcm9jZXNzUENIXCtcK3xUb3VjaHxMaWJ0b29sfENvcHlTdHJpbmdz
RmlsZXxNaWd8Q3JlYXRlVW5pdmVyc2FsQmluYXJ5fEFuYWx5emUpICgiW14iXSsifFxTKykvKSB7
CisgICAgICAgIChteSAkY29tbWFuZCwgbXkgJHBhdGgpID0gKCQxLCBiYXNlbmFtZSgkMikpOwor
ICAgICAgICBwcmludExpbmUoIiRjb21tYW5kICRwYXRoIiwgU1RZTEVfUExBSU4pOworICAgIH0K
KyAgICBlbHNpZiAoJGxpbmUgPX4gL15ccyokLykge30gIyBpZ25vcmUKKyAgICBlbHNpZiAoJGxp
bmUgPX4gL15CdWlsZCBzZXR0aW5ncyBmcm9tIGNvbW1hbmQgbGluZTovKSB7fSAjaWdub3JlCisg
ICAgZWxzaWYgKCRsaW5lID1+IC9tYWtlOiBOb3RoaW5nIHRvIGJlIGRvbmUgZm9yIGBhbGwnXC4v
KSB7fSAjIGlnbm9yZQorICAgIGVsc2lmICgkbGluZSA9fiAvXkphdmFTY3JpcHRDb3JlXC9jcmVh
dGVfaGFzaF90YWJsZS8pIHt9ICMgaWdub3JlCisgICAgZWxzaWYgKCRsaW5lID1+IC9KYXZhU2Ny
aXB0Q29yZS5mcmFtZXdvcmtcL1ByaXZhdGVIZWFkZXJzXC9jcmVhdGVfaGFzaF90YWJsZS8pIHt9
ICMgaWdub3JlCisgICAgZWxzaWYgKCRsaW5lID1+IC9eSmF2YVNjcmlwdENvcmVcL3BjcmVcL2Rm
dGFibGVzLykge30gIyBpZ25vcmUKKyAgICBlbHNpZiAoJGxpbmUgPX4gL15DcmVhdGluZyBoYXNo
dGFibGUgZm9yIC8pIHt9ICMgaWdub3JlCisgICAgZWxzaWYgKCRsaW5lID1+IC9eV3JvdGUgb3V0
cHV0IHRvIC8pIHt9ICNpZ25vcmUKKyAgICBlbHNpZiAoJGxpbmUgPX4gL14odG91Y2h8cGVybHxj
YXR8cm0gLWZ8Ymlzb258ZmxleHxweXRob258XC91c3JcL2JpblwvZ1wrXCt8Z3BlcmZ8ZWNob3xz
ZWR8aWYgXFsgXC1mfFdlYkNvcmVcL2dlbmVyYXRlLWV4cG9ydC1maWxlKSAvKSB7fSAjIGlnbm9y
ZQorICAgIGVsc2lmICgkbGluZSA9fiAvXlVORE9DVU1FTlRFRDogLykge30gIyBpZ25vcmUKKyAg
ICBlbHNpZiAoJGxpbmUgPX4gL2xpYnRvb2wuKmhhcyBubyBzeW1ib2xzLykge30gIyBpZ25vcmUK
KyAgICBlbHNpZiAoJGxpbmUgPX4gL14jIExvd2VyIGNhc2UgYWxsIHRoZSB2YWx1ZXMsIGFzIENT
UyB2YWx1ZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUkLykge30gIyBpZ25vcmUKKyAgICBlbHNpZiAo
JGxpbmUgPX4gL15pZiBzb3J0IC8pIHt9ICMgaWdub3JlCisgICAgZWxzaWYgKCRsaW5lID1+IC9e
ICAgIC8pIHt9ICMgaWdub3JlCisgICAgZWxzZSB7CisgICAgICAgIHByaW50TGluZSgkbGluZSwg
JGJ1aWxkRmluaXNoZWQgPyBTVFlMRV9TVUNDRVNTIDogU1RZTEVfQUxFUlQpOworICAgIH0KK30K
KworcHJpbnQgT1VUUFVUX0hBTkRMRSBIVE1MX0ZPT1RFUiBpZiAoJG91dHB1dEZvcm1hdCBlcSAi
aHRtbCIpOworCitleGl0IDA7CisKK3N1YiBwcmludExpbmUoJCQpCit7CisgICAgbXkgKCRsaW5l
LCAkc3R5bGUpID0gQF87CisgICAgCisgICAgaWYgKCRvdXRwdXRGb3JtYXQgZXEgImh0bWwiKSB7
CisgICAgICAgICRsaW5lID0gZXNjYXBlSFRNTCgkbGluZSk7CisgICAgICAgIGlmICAgICgkc3R5
bGUgPT0gU1RZTEVfSEVBREVSKSAgeyBwcmludCBPVVRQVVRfSEFORExFICI8aDI+JGxpbmU8L2gy
PiI7IH0KKyAgICAgICAgZWxzaWYgKCRzdHlsZSA9PSBTVFlMRV9TVUNDRVNTKSB7IHByaW50IE9V
VFBVVF9IQU5ETEUgIjxwIGNsYXNzPVwic3VjY2Vzc1wiPiRsaW5lPC9wPiI7IH0KKyAgICAgICAg
ZWxzaWYgKCRzdHlsZSA9PSBTVFlMRV9BTEVSVCkgICB7IHByaW50IE9VVFBVVF9IQU5ETEUgIjxw
IGNsYXNzPVwiYWxlcnRcIj4kbGluZTwvcD4iOyB9CisgICAgICAgIGVsc2UgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeyBwcmludCBPVVRQVVRfSEFORExFICI8cD4kbGluZTwvcD4iOyB9Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCRjb2xvckVuYWJsZWQpIHsKKyAgICAgICAgICAgIGlm
ICgkc3R5bGUgPT0gU1RZTEVfSEVBREVSKSAgeyBwcmludCBPVVRQVVRfSEFORExFIEFOU0lfQkxV
RTsgfQorICAgICAgICAgICAgaWYgKCRzdHlsZSA9PSBTVFlMRV9TVUNDRVNTKSB7IHByaW50IE9V
VFBVVF9IQU5ETEUgQU5TSV9HUkVFTjsgfQorICAgICAgICAgICAgaWYgKCRzdHlsZSA9PSBTVFlM
RV9BTEVSVCkgICB7IHByaW50IE9VVFBVVF9IQU5ETEUgQU5TSV9SRUQ7IH0KKyAgICAgICAgfQor
ICAgICAgICBwcmludCBPVVRQVVRfSEFORExFICRsaW5lOworICAgICAgICBwcmludCBPVVRQVVRf
SEFORExFIEFOU0lfUExBSU4gaWYgJGNvbG9yRW5hYmxlZDsKKyAgICB9CisgICAgcHJpbnQgT1VU
UFVUX0hBTkRMRSAiXG4iOworfQorCitzdWIgc2V0TG9nZmlsZU9wdGlvbigkJCkKK3sKKyAgICBt
eSAoJG9wdCwkdmFsdWUpID0gQF87CisgICAgJHVuZmlsdGVyZWRPdXRwdXRQYXRoID0gJHZhbHVl
OworICAgICRsb2dVbmZpbHRlcmVkT3V0cHV0ID0gMTsKK30KKworc3ViIHNldE91dHB1dEZvcm1h
dE9wdGlvbigkJCkKK3sKKyAgICBteSAoJG9wdCwkdmFsdWUpID0gQF87CisgICAgJHZhbHVlID0g
bGMoJHZhbHVlKTsKKyAgICB1bmxlc3MgKCR2YWx1ZSBlcSAiaHRtbCIgb3IgJHZhbHVlIGVxICJ0
ZXh0IikgeworICAgICAgICBkaWUgIlRoZSAkb3B0IG9wdGlvbiBtdXN0IGJlIGVpdGhlciBcImh0
bWxcIiBvciBcInRleHRcIiI7CisgICAgfQorICAgICRvdXRwdXRGb3JtYXQgPSAkdmFsdWU7Cit9
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9TY3JpcHRzL2ZpbHRlci1idWlsZC13ZWJraXQK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106626</attachid>
            <date>2011-09-07 13:27:50 -0700</date>
            <delta_ts>2011-09-07 18:52:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44081-20110907132749.patch</filename>
            <type>text/plain</type>
            <size>8616</size>
            <attacher name="Matthew Delaney">mdelaney7</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk0NzAzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTEtMDktMDcgIE1hdHRoZXcgRGVsYW5leSAgPG1kZWxhbmV5QGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgc3RhbmRhbG9uZSBzY3JpcHQgdGhhdCBmaWx0ZXJzIHRoZSBvdXRw
dXQgb2YgYnVpbGQtd2Via2l0IHRvIGJlIG1vcmUgaHVtYW4tcmVhZGFibGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MDgxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2ZpbHRlci1idWls
ZC13ZWJraXQ6IEFkZGVkLiBKdXN0IG5lZWQgdG8gZmVlZCBpdCB0aGUgb3V0cHV0IG9mCisgICAg
ICAgIGEgYnVpbGQgc2NyaXB0IChlLmcuIGJ1aWxkLXdlYmtpdCkgYW5kIGl0IHNwaXRzIG91dCBh
IHByZXR0aWVyIHZlcnNpb24uCisKIDIwMTEtMDktMDcgIEVsbGlvdCBQb2dlciAgPGVwb2dlckBn
b29nbGUuY29tPgogCiAgICAgICAgIGZpbHRlciB0ZXN0X2V4cGVjdGF0aW9ucyBwcm9wZXJseSBm
b3IgY2hyb21pdW0tbWFjIHZzIGNocm9taXVtLWNnLW1hYwpJbmRleDogVG9vbHMvU2NyaXB0cy9m
aWx0ZXItYnVpbGQtd2Via2l0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvZmlsdGVyLWJ1
aWxkLXdlYmtpdAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1NjcmlwdHMvZmlsdGVyLWJ1aWxkLXdl
YmtpdAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMDQgQEAKKyMhL3Vzci9iaW4vcGVybCAtdwor
CisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IAorIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorIyBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworIyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBGaWx0ZXJzIHRo
ZSBvdXRwdXQgb2YgYnVpbGQtd2Via2l0IGludG8gYSBtb3JlIGh1bWFuLXJlYWRhYmxlIGZvcm1h
dC4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIENHSSBxdyhlc2NhcGVIVE1M
KTsKK3VzZSBGaWxlOjpCYXNlbmFtZTsKK3VzZSBHZXRvcHQ6Okxvbmc7Cit1c2UgVGVybTo6QU5T
SUNvbG9yIHF3KGNvbG9yZWQpOworCit1c2UgY29uc3RhbnQgeyAgICAKKyAgICBTVFlMRV9QTEFJ
TiA9PiAwLAorICAgIFNUWUxFX0hFQURFUiA9PiAxLAorICAgIFNUWUxFX1NVQ0NFU1MgPT4gMiwK
KyAgICBTVFlMRV9BTEVSVCA9PiAzLAorICAgIAorICAgIEhUTUxfSEVBREVSID0+PDxIVE1MSEVB
REVSLAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT5CdWlsZCBMb2c8L3RpdGxl
PgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICBib2R5IHsgZm9udC1mYW1pbHk6IE1vbmFj
bywgbW9ub3NwYWNlOyBmb250LXNpemU6IDEwcHg7IGNvbG9yOiAjNjY2OyBsaW5lLWhlaWdodDog
MS41ZW07IH0KKyAgICAgICAgICAgIGgyIHsgbWFyZ2luOiAxLjVlbSAwIDAgMDsgZm9udC1zaXpl
OiAxLjBlbTsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiBibHVlOyB9CisgICAgICAgICAgICBw
IHsgbWFyZ2luOiAwOyBwYWRkaW5nLWxlZnQ6IDEuNWVtOyBib3JkZXItbGVmdDogM3B4IHNvbGlk
ICNmZmY7IH0KKyAgICAgICAgICAgIHAuYWxlcnQgeyBib3JkZXItbGVmdC1jb2xvcjogcmVkOyBj
b2xvcjogcmVkOyBtYXJnaW46IDEuNWVtIDAgMCAwOyB9CisgICAgICAgICAgICBwLmFsZXJ0ICsg
cCB7IG1hcmdpbjogMS41ZW0gMCAwIDA7IH0KKyAgICAgICAgICAgIHAuYWxlcnQgKyBwLmFsZXJ0
IHsgbWFyZ2luOiAwOyB9CisgICAgICAgICAgICBwLnN1Y2Nlc3MgeyBjb2xvcjogZ3JlZW47IH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CitIVE1MSEVBREVSCisg
ICAgSFRNTF9GT09URVIgPT48PEhUTUxGT09URVIsCisgICAgPC9ib2R5PgorPC9odG1sPgorSFRN
TEZPT1RFUgorfTsKKworc3ViIHBvc3NpYmx5Q29sb3JlZCgkJCk7CitzdWIgcHJpbnRMaW5lKCQk
KTsKK3N1YiBzZXRMb2dmaWxlT3B0aW9uKCQkKTsKK3N1YiBzZXRPdXRwdXRGb3JtYXRPcHRpb24o
JCQpOworc3ViIHVzYWdlQW5kRXhpdCgpOworCitteSAkc2hvd0hlbHA7CitteSAkb3V0cHV0UGF0
aCA9ICImU1RET1VUIjsKK215ICRvdXRwdXRGb3JtYXQgPSAidGV4dCI7CitteSAkdXNlQ29sb3Ig
PSAtdCBTVERPVVQ7CitteSAkdW5maWx0ZXJlZE91dHB1dFBhdGggPSAiYnVpbGQubG9nIjsKK215
ICRsb2dVbmZpbHRlcmVkT3V0cHV0OworCitzdWIgdXNhZ2VBbmRFeGl0KCkKK3sKKyAgICBwcmlu
dCBTVERFUlIgPDxfX0VORF9fOworVXNhZ2U6IEB7WyBiYXNlbmFtZSgkMCkgXX0gW29wdGlvbnNd
IGJ1aWxkbG9nMSBbYnVpbGRsb2cyIC4uLl0KKyAgICAgICBidWlsZC13ZWJraXQgfCBAe1sgYmFz
ZW5hbWUoJDApIF19IFtvcHRpb25zXQorICAtaHwtLWhlbHAgICAgIFNob3cgdGhpcyBoZWxwIG1l
c3NhZ2UKK091dHB1dCBPcHRpb25zOgorICAtb3wtLW91dHB1dCAgIFBhdGggZm9yIG91dHB1dCAo
ZGVmYXVsdDogU1RET1VUKQorICAtZnwtLWZvcm1hdCAgIE91dHB1dCBmb3JtYXQgKGRlZmF1bHQ6
ICRvdXRwdXRGb3JtYXQpCisgICAgICAgICAgICAgICAgICB0ZXh0OiBQbGFpbiB0ZXh0CisgICAg
ICAgICAgICAgICAgICBodG1sOiBTdGFuZGFsb25lIEhUTUwgZG9jdW1lbnQKKyAgLS1bbm8tXWNv
bG9yICBBTlNJIGNvbG9yIG91dHB1dCBmb3IgdGV4dCAoZGVmYXVsdDogb24sIGlmIC1vIGlzIFNU
RE9VVCkKK1VuZmlsdGVyZWQgTG9nZ2luZyBPcHRpb25zOgorICAtbHwtLWxvZyAgICAgIFNhdmUg
dW5maWx0ZXJlZCBvdXRwdXQgdG8gZmlsZSAoc2VlIC0tbG9nLWZpbGUpCisgIC0tbG9nZmlsZSAg
ICAgUGF0aCB0byBzYXZlIHVuZmlsdGVyZWQgb3V0cHV0IChpbXBsaWVzIC0tbG9nLCBkZWZhdWx0
OiAkdW5maWx0ZXJlZE91dHB1dFBhdGgpCitfX0VORF9fCisgICAgZXhpdCAxOworfQorCitteSAk
Z2V0T3B0aW9uc1Jlc3VsdCA9IEdldE9wdGlvbnMoCisgICAgJ2h8aGVscCcgICAgICAgICAgICAg
ICAgPT4gXCRzaG93SGVscCwKKyAgICAnb3xvdXRwdXQ9cycgICAgICAgICAgICA9PiBcJG91dHB1
dFBhdGgsCisgICAgJ2Z8Zm9ybWF0PXMnICAgICAgICAgICAgPT4gXCZzZXRPdXRwdXRGb3JtYXRP
cHRpb24sCisgICAgJ2NvbG9yIScgICAgICAgICAgICAgICAgPT4gXCR1c2VDb2xvciwKKyAgICAn
bHxsb2cnICAgICAgICAgICAgICAgICA9PiBcJGxvZ1VuZmlsdGVyZWRPdXRwdXQsCisgICAgJ2xv
Z2ZpbGU9cycgICAgICAgICAgICAgPT4gXCZzZXRMb2dmaWxlT3B0aW9uLAorKTsKKworaWYgKC10
IFNURElOIHx8ICRzaG93SGVscCB8fCAhJGdldE9wdGlvbnNSZXN1bHQpIHsKKyAgICB1c2FnZUFu
ZEV4aXQoKTsKK30KKworb3BlbihPVVRQVVRfSEFORExFLCAiPiRvdXRwdXRQYXRoIikgb3IgZGll
ICJGYWlsZWQgdG8gb3BlbiAkb3V0cHV0UGF0aCI7CitpZiAoJGxvZ1VuZmlsdGVyZWRPdXRwdXQp
IHsKKyAgICBvcGVuKFVORklMVEVSRURfT1VUUFVUX0hBTkRMRSwgIj4kdW5maWx0ZXJlZE91dHB1
dFBhdGgiKSBvciBkaWUgIkZhaWxlZCB0byBvcGVuICR1bmZpbHRlcmVkT3V0cHV0UGF0aCI7Cit9
CisKK3ByaW50IE9VVFBVVF9IQU5ETEUgSFRNTF9IRUFERVIgaWYgKCRvdXRwdXRGb3JtYXQgZXEg
Imh0bWwiKTsKKworbXkgJGJ1aWxkRmluaXNoZWQ7Cit3aGlsZSAobXkgJGxpbmUgPSA8Pikgewor
ICAgIHByaW50IFVORklMVEVSRURfT1VUUFVUX0hBTkRMRSAkbGluZSBpZiAkbG9nVW5maWx0ZXJl
ZE91dHB1dDsKKyAgICAKKyAgICBjaG9tcCgkbGluZSk7CisgICAgaWYgKCRsaW5lID1+IC9ePXsx
MH0vKSB7CisgICAgICAgIHByaW50TGluZSgkbGluZSwgU1RZTEVfU1VDQ0VTUyk7CisgICAgICAg
ICRidWlsZEZpbmlzaGVkID0gMTsKKyAgICB9IGVsc2lmICgkbGluZSA9fiAvXj09PS8pIHsKKyAg
ICAgICAgcHJpbnRMaW5lKCRsaW5lLCBTVFlMRV9IRUFERVIpOworICAgIH0gZWxzaWYgKCRsaW5l
ID1+IC9DaGVja2luZyBEZXBlbmRlbmNpZXN8Q2hlY2sgZGVwZW5kZW5jaWVzLykgeworICAgICAg
ICBwcmludExpbmUoJGxpbmUsIFNUWUxFX1BMQUlOKTsKKyAgICB9IGVsc2lmICgkbGluZSA9fiAv
XCpcKiBCVUlMRCBTVUNDRUVERUQgXCpcKi8pIHsKKyAgICAgICAgcHJpbnRMaW5lKCJCdWlsZCBT
dWNjZWVkZWQiLCBTVFlMRV9TVUNDRVNTKTsKKyAgICB9IGVsc2lmICgkbGluZSA9fiAvXihQaGFz
ZVNjcmlwdEV4ZWN1dGlvbnxDb21waWxlQ3xMZHxQQlhDcHxDcFJlc291cmNlfENvcHlQTkdGaWxl
fENvcHlUaWZmRmlsZXxDcEhlYWRlcnxQcm9jZXNzaW5nfFByb2Nlc3NJbmZvUGxpc3RGaWxlfFBy
b2Nlc3NQQ0h8UHJvY2Vzc1BDSFwrXCt8VG91Y2h8TGlidG9vbHxDb3B5U3RyaW5nc0ZpbGV8TWln
fENyZWF0ZVVuaXZlcnNhbEJpbmFyeXxBbmFseXplKSAoIlteIl0rInxcUyspLykgeworICAgICAg
ICBteSAoJGNvbW1hbmQsICRwYXRoKSA9ICgkMSwgYmFzZW5hbWUoJDIpKTsKKyAgICAgICAgcHJp
bnRMaW5lKCIkY29tbWFuZCAkcGF0aCIsIFNUWUxFX1BMQUlOKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBuZXh0IGlmICRsaW5lID1+IC9eXHMqJC87CisgICAgICAgIG5leHQgaWYgJGxpbmUgPX4g
L15CdWlsZCBzZXR0aW5ncyBmcm9tIGNvbW1hbmQgbGluZTovOworICAgICAgICBuZXh0IGlmICRs
aW5lID1+IC9tYWtlOiBOb3RoaW5nIHRvIGJlIGRvbmUgZm9yIGBhbGwnXC4vOworICAgICAgICBu
ZXh0IGlmICRsaW5lID1+IC9eSmF2YVNjcmlwdENvcmVcL2NyZWF0ZV9oYXNoX3RhYmxlLzsKKyAg
ICAgICAgbmV4dCBpZiAkbGluZSA9fiAvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrXC9Qcml2YXRl
SGVhZGVyc1wvY3JlYXRlX2hhc2hfdGFibGUvOworICAgICAgICBuZXh0IGlmICRsaW5lID1+IC9e
SmF2YVNjcmlwdENvcmVcL3BjcmVcL2RmdGFibGVzLzsKKyAgICAgICAgbmV4dCBpZiAkbGluZSA9
fiAvXkNyZWF0aW5nIGhhc2h0YWJsZSBmb3IgLzsKKyAgICAgICAgbmV4dCBpZiAkbGluZSA9fiAv
Xldyb3RlIG91dHB1dCB0byAvOworICAgICAgICBuZXh0IGlmICRsaW5lID1+IC9eKHRvdWNofHBl
cmx8Y2F0fHJtIC1mfGJpc29ufGZsZXh8cHl0aG9ufFwvdXNyXC9iaW5cL2dcK1wrfGdwZXJmfGVj
aG98c2VkfGlmIFxbIFwtZnxXZWJDb3JlXC9nZW5lcmF0ZS1leHBvcnQtZmlsZSkgLzsKKyAgICAg
ICAgbmV4dCBpZiAkbGluZSA9fiAvXlVORE9DVU1FTlRFRDogLzsKKyAgICAgICAgbmV4dCBpZiAk
bGluZSA9fiAvbGlidG9vbC4qaGFzIG5vIHN5bWJvbHMvOworICAgICAgICBuZXh0IGlmICRsaW5l
ID1+IC9eIyBMb3dlciBjYXNlIGFsbCB0aGUgdmFsdWVzLCBhcyBDU1MgdmFsdWVzIGFyZSBjYXNl
LWluc2Vuc2l0aXZlJC87CisgICAgICAgIG5leHQgaWYgJGxpbmUgPX4gL15pZiBzb3J0IC87Cisg
ICAgICAgIG5leHQgaWYgJGxpbmUgPX4gL14gICAgLzsKKworICAgICAgICBwcmludExpbmUoJGxp
bmUsICRidWlsZEZpbmlzaGVkID8gU1RZTEVfU1VDQ0VTUyA6IFNUWUxFX0FMRVJUKTsKKyAgICB9
Cit9CisKK3ByaW50IE9VVFBVVF9IQU5ETEUgSFRNTF9GT09URVIgaWYgKCRvdXRwdXRGb3JtYXQg
ZXEgImh0bWwiKTsKKworZXhpdCAwOworCitzdWIgcG9zc2libHlDb2xvcmVkKCQkKQoreworICAg
IG15ICgkY29sb3JzLCAkc3RyaW5nKSA9IEBfOworCisgICAgaWYgKC10IFNURE9VVCkgeworICAg
ICAgICByZXR1cm4gY29sb3JlZChbJGNvbG9yc10sICRzdHJpbmcpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIHJldHVybiAkc3RyaW5nOworICAgIH0KK30KKworc3ViIHByaW50TGluZSgkJCkKK3sK
KyAgICBteSAoJGxpbmUsICRzdHlsZSkgPSBAXzsKKyAgICAKKyAgICBpZiAoJG91dHB1dEZvcm1h
dCBlcSAiaHRtbCIpIHsKKyAgICAgICAgJGxpbmUgPSBlc2NhcGVIVE1MKCRsaW5lKTsKKyAgICAg
ICAgaWYgICAgKCRzdHlsZSA9PSBTVFlMRV9IRUFERVIpICB7IHByaW50IE9VVFBVVF9IQU5ETEUg
IjxoMj4kbGluZTwvaDI+IjsgfQorICAgICAgICBlbHNpZiAoJHN0eWxlID09IFNUWUxFX1NVQ0NF
U1MpIHsgcHJpbnQgT1VUUFVUX0hBTkRMRSAiPHAgY2xhc3M9XCJzdWNjZXNzXCI+JGxpbmU8L3A+
IjsgfQorICAgICAgICBlbHNpZiAoJHN0eWxlID09IFNUWUxFX0FMRVJUKSAgIHsgcHJpbnQgT1VU
UFVUX0hBTkRMRSAiPHAgY2xhc3M9XCJhbGVydFwiPiRsaW5lPC9wPiI7IH0KKyAgICAgICAgZWxz
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHByaW50IE9VVFBVVF9IQU5ETEUgIjxwPiRs
aW5lPC9wPiI7IH0KKyAgICB9IGVsc2UgeworICAgICAgICBteSAkY29sb3JzID0gInJlc2V0IjsK
KyAgICAgICAgaWYgKCR1c2VDb2xvcikgeworICAgICAgICAgICAgaWYgKCRzdHlsZSA9PSBTVFlM
RV9IRUFERVIpICB7ICRjb2xvcnMgPSAiYmx1ZSI7IH0KKyAgICAgICAgICAgIGlmICgkc3R5bGUg
PT0gU1RZTEVfU1VDQ0VTUykgeyAkY29sb3JzID0gImdyZWVuIjsgfQorICAgICAgICAgICAgaWYg
KCRzdHlsZSA9PSBTVFlMRV9BTEVSVCkgICB7ICRjb2xvcnMgPSAicmVkIjsgfQorICAgICAgICB9
CisgICAgICAgIHByaW50IE9VVFBVVF9IQU5ETEUgcG9zc2libHlDb2xvcmVkKCRjb2xvcnMsICRs
aW5lKTsKKyAgICB9CisgICAgcHJpbnQgT1VUUFVUX0hBTkRMRSAiXG4iOworfQorCitzdWIgc2V0
TG9nZmlsZU9wdGlvbigkJCkKK3sKKyAgICBteSAoJG9wdCwgJHZhbHVlKSA9IEBfOworICAgICR1
bmZpbHRlcmVkT3V0cHV0UGF0aCA9ICR2YWx1ZTsKKyAgICAkbG9nVW5maWx0ZXJlZE91dHB1dCA9
IDE7Cit9CisKK3N1YiBzZXRPdXRwdXRGb3JtYXRPcHRpb24oJCQpCit7CisgICAgbXkgKCRvcHQs
ICR2YWx1ZSkgPSBAXzsKKyAgICAkdmFsdWUgPSBsYygkdmFsdWUpOworICAgIGlmICgkdmFsdWUg
bmUgImh0bWwiICYmICR2YWx1ZSBuZSAidGV4dCIpIHsKKyAgICAgICAgZGllICJUaGUgJG9wdCBv
cHRpb24gbXVzdCBiZSBlaXRoZXIgXCJodG1sXCIgb3IgXCJ0ZXh0XCIiOworICAgIH0KKyAgICAk
b3V0cHV0Rm9ybWF0ID0gJHZhbHVlOworfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvU2Ny
aXB0cy9maWx0ZXItYnVpbGQtd2Via2l0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxl
CiAgICsgKgoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106679</attachid>
            <date>2011-09-07 18:52:12 -0700</date>
            <delta_ts>2011-09-07 21:30:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44081-20110907185211.patch</filename>
            <type>text/plain</type>
            <size>10641</size>
            <attacher name="Matthew Delaney">mdelaney7</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk0NzQxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTEtMDktMDcgIE1hdHRoZXcgRGVsYW5leSAgPG1kZWxhbmV5QGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgc3RhbmRhbG9uZSBzY3JpcHQgdGhhdCBmaWx0ZXJzIHRoZSBvdXRw
dXQgb2YgYnVpbGQtd2Via2l0IHRvIGJlIG1vcmUgaHVtYW4tcmVhZGFibGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MDgxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2ZpbHRlci1idWls
ZC13ZWJraXQ6IEFkZGVkLiBKdXN0IG5lZWQgdG8gZmVlZCBpdCB0aGUgb3V0cHV0IG9mCisgICAg
ICAgIGEgYnVpbGQgc2NyaXB0IChlLmcuIGJ1aWxkLXdlYmtpdCkgYW5kIGl0IHNwaXRzIG91dCBh
IHByZXR0aWVyIHZlcnNpb24uCisgICAgICAgICogU2NyaXB0cy9WQ1NVdGlscy5wbTogUmVmYWN0
b3JlZCAicG9zc2libHlDb2xvcmVkIiBvdXQgb2YgcnVuLWFwaS10ZXN0cyBpbnRvIFZDU1V0aWxz
LgorICAgICAgICAqIFNjcmlwdHMvcnVuLWFwaS10ZXN0czogTm93IGluY2x1ZGVzIFZDU1V0aWxz
IHRvIHVzZSAicG9zc2libHlDb2xvcmVkIgorCiAyMDExLTA5LTA3ICBBZGFtIEJhcnRoICA8YWJh
cnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgcmViYXNlbGluZSBidXR0b24gaW4gZ2FyZGVuLW8t
bWF0aWMgZGV0YWlscyB2aWV3IHNob3VsZCB3b3JrCkluZGV4OiBUb29scy9TY3JpcHRzL1ZDU1V0
aWxzLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvVkNTVXRpbHMucG0JKHJldmlzaW9u
IDk0NzAzKQorKysgVG9vbHMvU2NyaXB0cy9WQ1NVdGlscy5wbQkod29ya2luZyBjb3B5KQpAQCAt
MzcsNiArMzcsNyBAQCB1c2UgRW5nbGlzaDsgIyBmb3IgJFBPU1RNQVRDSCwgZXRjLgogdXNlIEZp
bGU6OkJhc2VuYW1lOwogdXNlIEZpbGU6OlNwZWM7CiB1c2UgUE9TSVg7Cit1c2UgVGVybTo6QU5T
SUNvbG9yIHF3KGNvbG9yZWQpOwogCiBCRUdJTiB7CiAgICAgdXNlIEV4cG9ydGVyICAgKCk7CkBA
IC03Miw2ICs3Myw3IEBAIEJFR0lOIHsKICAgICAgICAgJnBhcnNlRmlyc3RFT0wKICAgICAgICAg
JnBhcnNlUGF0Y2gKICAgICAgICAgJnBhdGhSZWxhdGl2ZVRvU1ZOUmVwb3NpdG9yeVJvb3RGb3JQ
YXRoCisgICAgICAgICZwb3NzaWJseUNvbG9yZWQKICAgICAgICAgJnByZXBhcmVQYXJzZWRQYXRj
aAogICAgICAgICAmcmVtb3ZlRU9MCiAgICAgICAgICZydW5QYXRjaENvbW1hbmQKQEAgLTQxMCw2
ICs0MTIsMTcgQEAgc3ViIG5vcm1hbGl6ZVBhdGgoJCkKICAgICByZXR1cm4gJHBhdGg7CiB9CiAK
K3N1YiBwb3NzaWJseUNvbG9yZWQoJCQpCit7CisgICAgbXkgKCRjb2xvcnMsICRzdHJpbmcpID0g
QF87CisKKyAgICBpZiAoLXQgU1RET1VUKSB7CisgICAgICAgIHJldHVybiBjb2xvcmVkKFskY29s
b3JzXSwgJHN0cmluZyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuICRzdHJpbmc7Cisg
ICAgfQorfQorCiBzdWIgYWRqdXN0UGF0aEZvclJlY2VudFJlbmFtaW5ncygkKQogewogICAgIG15
ICgkZnVsbFBhdGgpID0gQF87CkluZGV4OiBUb29scy9TY3JpcHRzL2ZpbHRlci1idWlsZC13ZWJr
aXQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9maWx0ZXItYnVpbGQtd2Via2l0CShyZXZp
c2lvbiAwKQorKysgVG9vbHMvU2NyaXB0cy9maWx0ZXItYnVpbGQtd2Via2l0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDIwMiBAQAorIyEvdXNyL2Jpbi9wZXJsIC13CisKKyMgQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMgCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIEZpbHRlcnMgdGhlIG91dHB1dCBvZiBidWls
ZC13ZWJraXQgaW50byBhIG1vcmUgaHVtYW4tcmVhZGFibGUgZm9ybWF0LgorCit1c2Ugc3RyaWN0
OwordXNlIHdhcm5pbmdzOworCit1c2UgQ0dJIHF3KGVzY2FwZUhUTUwpOwordXNlIEZpbGU6OkJh
c2VuYW1lOwordXNlIEZpbmRCaW47Cit1c2UgbGliICRGaW5kQmluOjpCaW47Cit1c2UgR2V0b3B0
OjpMb25nOwordXNlIFZDU1V0aWxzOworCit1c2UgY29uc3RhbnQgeyAgICAKKyAgICBTVFlMRV9Q
TEFJTiA9PiAwLAorICAgIFNUWUxFX0hFQURFUiA9PiAxLAorICAgIFNUWUxFX1NVQ0NFU1MgPT4g
MiwKKyAgICBTVFlMRV9BTEVSVCA9PiAzLAorICAgIAorICAgIEhUTUxfSEVBREVSID0+PDxIVE1M
SEVBREVSLAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRsZT5CdWlsZCBMb2c8L3Rp
dGxlPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICBib2R5IHsgZm9udC1mYW1pbHk6IE1v
bmFjbywgbW9ub3NwYWNlOyBmb250LXNpemU6IDEwcHg7IGNvbG9yOiAjNjY2OyBsaW5lLWhlaWdo
dDogMS41ZW07IH0KKyAgICAgICAgICAgIGgyIHsgbWFyZ2luOiAxLjVlbSAwIDAgMDsgZm9udC1z
aXplOiAxLjBlbTsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiBibHVlOyB9CisgICAgICAgICAg
ICBwIHsgbWFyZ2luOiAwOyBwYWRkaW5nLWxlZnQ6IDEuNWVtOyBib3JkZXItbGVmdDogM3B4IHNv
bGlkICNmZmY7IH0KKyAgICAgICAgICAgIHAuYWxlcnQgeyBib3JkZXItbGVmdC1jb2xvcjogcmVk
OyBjb2xvcjogcmVkOyBtYXJnaW46IDEuNWVtIDAgMCAwOyB9CisgICAgICAgICAgICBwLmFsZXJ0
ICsgcCB7IG1hcmdpbjogMS41ZW0gMCAwIDA7IH0KKyAgICAgICAgICAgIHAuYWxlcnQgKyBwLmFs
ZXJ0IHsgbWFyZ2luOiAwOyB9CisgICAgICAgICAgICBwLnN1Y2Nlc3MgeyBjb2xvcjogZ3JlZW47
IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CitIVE1MSEVBREVS
CisKKyAgICBIVE1MX0ZPT1RFUiA9Pjw8SFRNTEZPT1RFUiwKKyAgICA8L2JvZHk+Cis8L2h0bWw+
CitIVE1MRk9PVEVSCit9OworCitzdWIgcHJpbnRMaW5lKCQkKTsKK3N1YiBzZXRMb2dmaWxlT3B0
aW9uKCQkKTsKK3N1YiBzZXRPdXRwdXRGb3JtYXRPcHRpb24oJCQpOworc3ViIHVzYWdlQW5kRXhp
dCgpOworCisjIERlZmluZWQgaW4gVkNTVXRpbHMuCitzdWIgcG9zc2libHlDb2xvcmVkKCQkKTsK
KworbXkgJHNob3dIZWxwOworbXkgJG91dHB1dFBhdGggPSAiJlNURE9VVCI7CitteSAkb3V0cHV0
Rm9ybWF0ID0gInRleHQiOworbXkgJHVzZUNvbG9yID0gLXQgU1RET1VUOworbXkgJHVuZmlsdGVy
ZWRPdXRwdXRQYXRoID0gImJ1aWxkLmxvZyI7CitteSAkbG9nVW5maWx0ZXJlZE91dHB1dDsKKwor
c3ViIHVzYWdlQW5kRXhpdCgpCit7CisgICAgcHJpbnQgU1RERVJSIDw8X19FTkRfXzsKK1VzYWdl
OiBAe1sgYmFzZW5hbWUoJDApIF19IFtvcHRpb25zXSBidWlsZGxvZzEgW2J1aWxkbG9nMiAuLi5d
CisgICAgICAgYnVpbGQtd2Via2l0IHwgQHtbIGJhc2VuYW1lKCQwKSBdfSBbb3B0aW9uc10KKyAg
LWh8LS1oZWxwICAgICBTaG93IHRoaXMgaGVscCBtZXNzYWdlCitPdXRwdXQgT3B0aW9uczoKKyAg
LW98LS1vdXRwdXQgICBQYXRoIGZvciBvdXRwdXQgKGRlZmF1bHQ6IFNURE9VVCkKKyAgLWZ8LS1m
b3JtYXQgICBPdXRwdXQgZm9ybWF0IChkZWZhdWx0OiAkb3V0cHV0Rm9ybWF0KQorICAgICAgICAg
ICAgICAgICAgdGV4dDogUGxhaW4gdGV4dAorICAgICAgICAgICAgICAgICAgaHRtbDogU3RhbmRh
bG9uZSBIVE1MIGRvY3VtZW50CisgIC0tW25vLV1jb2xvciAgQU5TSSBjb2xvciBvdXRwdXQgZm9y
IHRleHQgKGRlZmF1bHQ6IG9uLCBpZiAtbyBpcyBTVERPVVQpCitVbmZpbHRlcmVkIExvZ2dpbmcg
T3B0aW9uczoKKyAgLWx8LS1sb2cgICAgICBTYXZlIHVuZmlsdGVyZWQgb3V0cHV0IHRvIGZpbGUg
KHNlZSAtLWxvZy1maWxlKQorICAtLWxvZ2ZpbGUgICAgIFBhdGggdG8gc2F2ZSB1bmZpbHRlcmVk
IG91dHB1dCAoaW1wbGllcyAtLWxvZywgZGVmYXVsdDogJHVuZmlsdGVyZWRPdXRwdXRQYXRoKQor
X19FTkRfXworICAgIGV4aXQgMTsKK30KKworbXkgJGdldE9wdGlvbnNSZXN1bHQgPSBHZXRPcHRp
b25zKAorICAgICdofGhlbHAnICAgICAgICAgICAgICAgID0+IFwkc2hvd0hlbHAsCisgICAgJ298
b3V0cHV0PXMnICAgICAgICAgICAgPT4gXCRvdXRwdXRQYXRoLAorICAgICdmfGZvcm1hdD1zJyAg
ICAgICAgICAgID0+IFwmc2V0T3V0cHV0Rm9ybWF0T3B0aW9uLAorICAgICdjb2xvciEnICAgICAg
ICAgICAgICAgID0+IFwkdXNlQ29sb3IsCisgICAgJ2x8bG9nJyAgICAgICAgICAgICAgICAgPT4g
XCRsb2dVbmZpbHRlcmVkT3V0cHV0LAorICAgICdsb2dmaWxlPXMnICAgICAgICAgICAgID0+IFwm
c2V0TG9nZmlsZU9wdGlvbiwKKyk7CisKK2lmICgtdCBTVERJTiB8fCAkc2hvd0hlbHAgfHwgISRn
ZXRPcHRpb25zUmVzdWx0KSB7CisgICAgdXNhZ2VBbmRFeGl0KCk7Cit9CisKK29wZW4oT1VUUFVU
X0hBTkRMRSwgIj4kb3V0cHV0UGF0aCIpIG9yIGRpZSAiRmFpbGVkIHRvIG9wZW4gJG91dHB1dFBh
dGgiOworaWYgKCRsb2dVbmZpbHRlcmVkT3V0cHV0KSB7CisgICAgb3BlbihVTkZJTFRFUkVEX09V
VFBVVF9IQU5ETEUsICI+JHVuZmlsdGVyZWRPdXRwdXRQYXRoIikgb3IgZGllICJGYWlsZWQgdG8g
b3BlbiAkdW5maWx0ZXJlZE91dHB1dFBhdGgiOworfQorCitwcmludCBPVVRQVVRfSEFORExFIEhU
TUxfSEVBREVSIGlmICgkb3V0cHV0Rm9ybWF0IGVxICJodG1sIik7CisKK215ICRidWlsZEZpbmlz
aGVkOword2hpbGUgKG15ICRsaW5lID0gPD4pIHsKKyAgICBwcmludCBVTkZJTFRFUkVEX09VVFBV
VF9IQU5ETEUgJGxpbmUgaWYgJGxvZ1VuZmlsdGVyZWRPdXRwdXQ7CisgICAgCisgICAgY2hvbXAo
JGxpbmUpOworCisgICAgbmV4dCBpZiAkbGluZSA9fiAvXlxzKiQvOworICAgIG5leHQgaWYgJGxp
bmUgPX4gL15CdWlsZCBzZXR0aW5ncyBmcm9tIGNvbW1hbmQgbGluZTovOworICAgIG5leHQgaWYg
JGxpbmUgPX4gL21ha2U6IE5vdGhpbmcgdG8gYmUgZG9uZSBmb3IgYGFsbCdcLi87CisgICAgbmV4
dCBpZiAkbGluZSA9fiAvXkphdmFTY3JpcHRDb3JlXC9jcmVhdGVfaGFzaF90YWJsZS87CisgICAg
bmV4dCBpZiAkbGluZSA9fiAvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrXC9Qcml2YXRlSGVhZGVy
c1wvY3JlYXRlX2hhc2hfdGFibGUvOworICAgIG5leHQgaWYgJGxpbmUgPX4gL15KYXZhU2NyaXB0
Q29yZVwvcGNyZVwvZGZ0YWJsZXMvOworICAgIG5leHQgaWYgJGxpbmUgPX4gL15DcmVhdGluZyBo
YXNodGFibGUgZm9yIC87CisgICAgbmV4dCBpZiAkbGluZSA9fiAvXldyb3RlIG91dHB1dCB0byAv
OworICAgIG5leHQgaWYgJGxpbmUgPX4gL14odG91Y2h8cGVybHxjYXR8cm0gLWZ8Ymlzb258Zmxl
eHxweXRob258XC91c3JcL2JpblwvZ1wrXCt8Z3BlcmZ8ZWNob3xzZWR8aWYgXFsgXC1mfFdlYkNv
cmVcL2dlbmVyYXRlLWV4cG9ydC1maWxlKSAvOworICAgIG5leHQgaWYgJGxpbmUgPX4gL15VTkRP
Q1VNRU5URUQ6IC87CisgICAgbmV4dCBpZiAkbGluZSA9fiAvbGlidG9vbC4qaGFzIG5vIHN5bWJv
bHMvOworICAgIG5leHQgaWYgJGxpbmUgPX4gL14jIExvd2VyIGNhc2UgYWxsIHRoZSB2YWx1ZXMs
IGFzIENTUyB2YWx1ZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUkLzsKKyAgICBuZXh0IGlmICRsaW5l
ID1+IC9eaWYgc29ydCAvOworICAgIG5leHQgaWYgJGxpbmUgPX4gL14gICAgLzsKKworICAgIGlm
ICgkbGluZSA9fiAvXj17MTB9LykgeworICAgICAgICBwcmludExpbmUoJGxpbmUsIFNUWUxFX1NV
Q0NFU1MpOworICAgICAgICAkYnVpbGRGaW5pc2hlZCA9IDE7CisgICAgfSBlbHNpZiAoJGxpbmUg
PX4gL149PT0vKSB7CisgICAgICAgIHByaW50TGluZSgkbGluZSwgU1RZTEVfSEVBREVSKTsKKyAg
ICB9IGVsc2lmICgkbGluZSA9fiAvQ2hlY2tpbmcgRGVwZW5kZW5jaWVzfENoZWNrIGRlcGVuZGVu
Y2llcy8pIHsKKyAgICAgICAgcHJpbnRMaW5lKCRsaW5lLCBTVFlMRV9QTEFJTik7CisgICAgfSBl
bHNpZiAoJGxpbmUgPX4gL1wqXCogQlVJTEQgU1VDQ0VFREVEIFwqXCovKSB7CisgICAgICAgIHBy
aW50TGluZSgiQnVpbGQgU3VjY2VlZGVkIiwgU1RZTEVfU1VDQ0VTUyk7CisgICAgfSBlbHNpZiAo
JGxpbmUgPX4gL14oUGhhc2VTY3JpcHRFeGVjdXRpb258Q29tcGlsZUN8TGR8UEJYQ3B8Q3BSZXNv
dXJjZXxDb3B5UE5HRmlsZXxDb3B5VGlmZkZpbGV8Q3BIZWFkZXJ8UHJvY2Vzc2luZ3xQcm9jZXNz
SW5mb1BsaXN0RmlsZXxQcm9jZXNzUENIfFByb2Nlc3NQQ0hcK1wrfFRvdWNofExpYnRvb2x8Q29w
eVN0cmluZ3NGaWxlfE1pZ3xDcmVhdGVVbml2ZXJzYWxCaW5hcnl8QW5hbHl6ZSkgKCJbXiJdKyJ8
XFMrKS8pIHsKKyAgICAgICAgbXkgKCRjb21tYW5kLCAkcGF0aCkgPSAoJDEsIGJhc2VuYW1lKCQy
KSk7CisgICAgICAgIHByaW50TGluZSgiJGNvbW1hbmQgJHBhdGgiLCBTVFlMRV9QTEFJTik7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgcHJpbnRMaW5lKCRsaW5lLCAkYnVpbGRGaW5pc2hlZCA/IFNU
WUxFX1NVQ0NFU1MgOiBTVFlMRV9BTEVSVCk7CisgICAgfQorfQorCitwcmludCBPVVRQVVRfSEFO
RExFIEhUTUxfRk9PVEVSIGlmICgkb3V0cHV0Rm9ybWF0IGVxICJodG1sIik7CisKK2Nsb3NlKE9V
VFBVVF9IQU5ETEUpOworY2xvc2UoVU5GSUxURVJFRF9PVVRQVVRfSEFORExFKSBpZiAoJGxvZ1Vu
ZmlsdGVyZWRPdXRwdXQpOworCitleGl0IDA7CisKK3N1YiBwcmludExpbmUoJCQpCit7CisgICAg
bXkgKCRsaW5lLCAkc3R5bGUpID0gQF87CisgICAgCisgICAgaWYgKCRvdXRwdXRGb3JtYXQgZXEg
Imh0bWwiKSB7CisgICAgICAgICRsaW5lID0gZXNjYXBlSFRNTCgkbGluZSk7CisgICAgICAgIGlm
ICAgICgkc3R5bGUgPT0gU1RZTEVfSEVBREVSKSAgeyBwcmludCBPVVRQVVRfSEFORExFICI8aDI+
JGxpbmU8L2gyPiI7IH0KKyAgICAgICAgZWxzaWYgKCRzdHlsZSA9PSBTVFlMRV9TVUNDRVNTKSB7
IHByaW50IE9VVFBVVF9IQU5ETEUgIjxwIGNsYXNzPVwic3VjY2Vzc1wiPiRsaW5lPC9wPiI7IH0K
KyAgICAgICAgZWxzaWYgKCRzdHlsZSA9PSBTVFlMRV9BTEVSVCkgICB7IHByaW50IE9VVFBVVF9I
QU5ETEUgIjxwIGNsYXNzPVwiYWxlcnRcIj4kbGluZTwvcD4iOyB9CisgICAgICAgIGVsc2UgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeyBwcmludCBPVVRQVVRfSEFORExFICI8cD4kbGluZTwv
cD4iOyB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgbXkgJGNvbG9ycyA9ICJyZXNldCI7CisgICAg
ICAgIGlmICgkdXNlQ29sb3IpIHsKKyAgICAgICAgICAgIGlmICgkc3R5bGUgPT0gU1RZTEVfSEVB
REVSKSAgeyAkY29sb3JzID0gImJsdWUiOyB9CisgICAgICAgICAgICBpZiAoJHN0eWxlID09IFNU
WUxFX1NVQ0NFU1MpIHsgJGNvbG9ycyA9ICJncmVlbiI7IH0KKyAgICAgICAgICAgIGlmICgkc3R5
bGUgPT0gU1RZTEVfQUxFUlQpICAgeyAkY29sb3JzID0gInJlZCI7IH0KKyAgICAgICAgfQorICAg
ICAgICBwcmludCBPVVRQVVRfSEFORExFIHBvc3NpYmx5Q29sb3JlZCgkY29sb3JzLCAkbGluZSk7
CisgICAgfQorICAgIHByaW50IE9VVFBVVF9IQU5ETEUgIlxuIjsKK30KKworc3ViIHNldExvZ2Zp
bGVPcHRpb24oJCQpCit7CisgICAgbXkgKCRvcHQsICR2YWx1ZSkgPSBAXzsKKyAgICAkdW5maWx0
ZXJlZE91dHB1dFBhdGggPSAkdmFsdWU7CisgICAgJGxvZ1VuZmlsdGVyZWRPdXRwdXQgPSAxOwor
fQorCitzdWIgc2V0T3V0cHV0Rm9ybWF0T3B0aW9uKCQkKQoreworICAgIG15ICgkb3B0LCAkdmFs
dWUpID0gQF87CisgICAgJHZhbHVlID0gbGMoJHZhbHVlKTsKKyAgICBpZiAoJHZhbHVlIG5lICJo
dG1sIiAmJiAkdmFsdWUgbmUgInRleHQiKSB7CisgICAgICAgIGRpZSAiVGhlICRvcHQgb3B0aW9u
IG11c3QgYmUgZWl0aGVyIFwiaHRtbFwiIG9yIFwidGV4dFwiIjsKKyAgICB9CisgICAgJG91dHB1
dEZvcm1hdCA9ICR2YWx1ZTsKK30KClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL1NjcmlwdHMv
ZmlsdGVyLWJ1aWxkLXdlYmtpdApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICAr
ICoKCkluZGV4OiBUb29scy9TY3JpcHRzL3J1bi1hcGktdGVzdHMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy9ydW4tYXBpLXRlc3RzCShyZXZpc2lvbiA5NDcwMykKKysrIFRvb2xzL1Njcmlw
dHMvcnVuLWFwaS10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCB1c2UgR2V0
b3B0OjpMb25nIHF3KDpjb25maWcgcGFzc190aHJvdWdoCiB1c2UgSVBDOjpPcGVuMzsKIHVzZSBs
aWIgJEZpbmRCaW46OkJpbjsKIHVzZSB3ZWJraXRkaXJzOwotdXNlIFRlcm06OkFOU0lDb2xvciBx
dyhjb2xvcmVkKTsKK3VzZSBWQ1NVdGlsczsKIAogc3ViIGJ1aWxkVGVzdFRvb2woKTsKIHN1YiBk
dW1wQWxsVGVzdHMoKTsKQEAgLTQ0LDEwICs0NCwxMiBAQCBzdWIgcG9wdWxhdGVUZXN0cygpOwog
c3ViIHJ1bkFsbFRlc3RzKCk7CiBzdWIgcnVuQWxsVGVzdHNJblN1aXRlKCQpOwogc3ViIHJ1blRl
c3QoJCQpOwotc3ViIHBvc3NpYmx5Q29sb3JlZCgkJCk7CiBzdWIgcHJlcGFyZUVudmlyb25tZW50
Rm9yUnVubmluZ1Rlc3RUb29sKCk7CiBzdWIgdGVzdFRvb2xQYXRoKCk7CiAKKyMgRGVmaW5lZCBp
biBWQ1NVdGlscy4KK3N1YiBwb3NzaWJseUNvbG9yZWQoJCQpOworCiAjIFRpbWVvdXQgZm9yIGlu
ZGl2aWR1YWwgdGVzdCwgaW4gc2VjCiBteSAkdGltZW91dCA9IDEwOwogCkBAIC0yOTEsMTcgKzI5
Myw2IEBAIHN1YiBidWlsZFRlc3RUb29sKCkKICAgICBjaGRpciAkb3JpZ2luYWxDd2Q7CiB9CiAK
LXN1YiBwb3NzaWJseUNvbG9yZWQoJCQpCi17Ci0gICAgbXkgKCRjb2xvcnMsICRzdHJpbmcpID0g
QF87Ci0KLSAgICBpZiAoLXQgU1RET1VUKSB7Ci0gICAgICAgIHJldHVybiBjb2xvcmVkKFskY29s
b3JzXSwgJHN0cmluZyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmV0dXJuICRzdHJpbmc7Ci0g
ICAgfQotfQotCiBzdWIgcHJlcGFyZUVudmlyb25tZW50Rm9yUnVubmluZ1Rlc3RUb29sKCkKIHsK
ICAgICByZXR1cm4gdW5sZXNzIGlzQXBwbGVNYWNXZWJLaXQoKTsK
</data>
<flag name="review"
          id="103169"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
      

    </bug>

</bugzilla>