<?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>32722</bug_id>
          
          <creation_ts>2009-12-18 10:28:54 -0800</creation_ts>
          <short_desc>Allow Reserved Words in Property Accessors</short_desc>
          <delta_ts>2010-12-07 08:11:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>42471</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>ES5</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>erights</cc>
    
    <cc>inimino</cc>
    
    <cc>joepeck</cc>
    
    <cc>mjs</cc>
    
    <cc>oliver</cc>
    
    <cc>pmuellr</cc>
    
    <cc>skyul</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>173213</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-12-18 10:28:54 -0800</bug_when>
    <thetext>Currently JavaScriptCore does not allow using reserved words as member properties:

  jsc&gt; var x = { &apos;import&apos;: 1 }
  jsc&gt; x.import
  Exception: SyntaxError: Parse error

Other browsers seem to allow this right now. The above works in Chrome 4, FF 3.5, and Opera 10.

The Grammar rules are different. Notice that the last step is different (IdentifierName instead of Identifier).

ES3:

  MemberExpression
    → MemberExpression . Identifier
  
  CallExpression
    → CallExpression . Identifier

ES5:

  MemberExpression
    → MemberExpression . IdentifierName
  
  CallExpression
    → CallExpression . IdentifierName


Workaround: (this is what JSON ended up doing)

  jsc&gt; var x = { &apos;import&apos;: 1 };
  jsc&gt; x[&apos;import&apos;]; // 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173215</commentid>
    <comment_count>1</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-12-18 10:34:44 -0800</bug_when>
    <thetext>There is specifically a  &quot;Property Accessors&quot; section of each specification. It is &quot;11.2.1 Property Accessors&quot; in both.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177635</commentid>
    <comment_count>2</comment_count>
      <attachid>45967</attachid>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-01-06 10:25:50 -0800</bug_when>
    <thetext>Created attachment 45967
attempted patch 

It&apos;s been forever since I played with bison, and I never played with it much to begin with.  But thought I&apos;d look into this bug anyway.  

I&apos;ve patched the grammar to add the required support - it passes the JSC tests, and worked for a simple command-line JSC session using the built jsc:

   &gt;  x = { true: 2 }
   [object Object]
   &gt; x.true
   2

My guess is that this will inflate the parser runtime a bit, since presumably the string data for the existing keywords / reserved words now have to track their values (presumably didn&apos;t before).  Thought I&apos;d go ahead and post the patch to see how kosher it looks though.

I&apos;ll go ahead and create some actual tests for this as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177673</commentid>
    <comment_count>3</comment_count>
      <attachid>45975</attachid>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-01-06 11:45:10 -0800</bug_when>
    <thetext>Created attachment 45975
attempted patch

added a LayoutTest test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177674</commentid>
    <comment_count>4</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-01-06 11:47:04 -0800</bug_when>
    <thetext>Woops, forgot the ChangeLog entry in that patch.

Also wanted to note that the current patch also addresses bug 32721.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177679</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-06 11:54:30 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45975 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177681</commentid>
    <comment_count>6</comment_count>
      <attachid>45976</attachid>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-01-06 11:56:50 -0800</bug_when>
    <thetext>Created attachment 45976
attempted patch with ChangeLog entries this time

added ChangeLog entries</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177684</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-06 12:00:05 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45976 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177697</commentid>
    <comment_count>8</comment_count>
      <attachid>45976</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-06 12:18:00 -0800</bug_when>
    <thetext>Comment on attachment 45976
attempted patch with ChangeLog entries this time

&gt; +%type &lt;ident&gt;           IdentifierNamesvn-diff

This can&apos;t be right!

I don&apos;t think the name IdentifierName expresses the &quot;all identifiers including reserved words&quot; concept.

review- because of the &quot;svn-diff&quot; thing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177702</commentid>
    <comment_count>9</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-01-06 12:25:22 -0800</bug_when>
    <thetext>freaking editor focus!  The svn-diff must have snuck in at the last minute somehow.  Drat!

I chose &quot;IdentifierName&quot; per the name Joe pasted in from the ES5 spec in the bug description.  Of course, I don&apos;t have a problem with a different name.  Suggestions?

IdentifierOrReserved perhaps?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177738</commentid>
    <comment_count>10</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-01-06 13:48:25 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; freaking editor focus!  The svn-diff must have snuck in at the last minute
&gt; somehow.  Drat!
&gt; 
&gt; I chose &quot;IdentifierName&quot; per the name Joe pasted in from the ES5 spec in the
&gt; bug description.  Of course, I don&apos;t have a problem with a different name. 
&gt; Suggestions?
&gt; 
&gt; IdentifierOrReserved perhaps?

IdentifierOrReserved sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178688</commentid>
    <comment_count>11</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-01-08 08:31:49 -0800</bug_when>
    <thetext>Thought I&apos;d note I&apos;m trying to do some benchmarking to see if the change impacts performance (speed and memory usage).

So far, I&apos;ve done some runs of SunSpider, as well as a home-built bench of taking the text of uncompressed jquery.js, turning it into an assignment of the outer wrapper function to a variable, and copying that bit in the same file till the file reached 5M in size.  Benched time using &quot;time&quot;.

In both cases, I didn&apos;t see any significant differences in speed - the numbers were fairly variable to begin with.  Would like something more precise though.  Ideas?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178760</commentid>
    <comment_count>12</comment_count>
      <attachid>46153</attachid>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-01-08 13:25:59 -0800</bug_when>
    <thetext>Created attachment 46153
patch so far

now using IdentifierOrReserved instead of IdentifierName.

Still looking to bench time/space differences with and without the patch.  Or I&apos;ll give up and put in review mode next week if I can&apos;t find anything, since it looks generally kosher.  And waiting for olliej to look at this also.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179457</commentid>
    <comment_count>13</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-01-11 11:50:17 -0800</bug_when>
    <thetext>Did some more performance testing today.  Creating two WebKit directories, built with and without the grammar update.  Then constructed a JS file many-jquerys.js which consisted of many copies of the statement:

   x = function() {
      [contents of jquery.js]
   }

Validated that this script file was parseable.  Then created another js file called wait.js with the contents:
   
   print(&quot;press enter to continue&quot;)
   readline()

then ran jsc with both builds as 

   ./WebKitTools/Scripts/run-jsc .many-jquerys.js wait.js

I then ran &quot;heap&quot; on the resulting processes, which would have parsed the large file, and then hung waiting at the readline.

The diff between the two outputs of heap resulted in a very small memory diff - &lt; 100 bytes - between the two runs.

I also brought up Activity Monitor and did an &quot;inspect&quot; of both processes.  Likewise, no significant differences.

The size difference between the JavaScriptCore files was:

   2358888 after
   2357552 before

The difference in sizes between Grammar.o are comparable.

Concluding that there is an insignificant impact on memory use with the new grammar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179483</commentid>
    <comment_count>14</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-01-11 12:26:39 -0800</bug_when>
    <thetext>I wasn&apos;t able to figure out how to use any of the standard Mac perf tools to micro-bench the new parser to see how it compared, so I just did a test with &quot;time&quot; instead.  Took the big many-jquerys.js file I used per the comment above, and passed it as an argument 5 times to jsc and prefixed the whole thing with &quot;time&quot;.  The &quot;real&quot; time was on the order of 1.5 seconds, and there didn&apos;t seem to be any signficant different between multiple runs of both - both generated numbers +/- 2% different on back-to-back runs.

At this point, I&apos;m confident to the best of my abilities there aren&apos;t any significant time/space differences with the new grammar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179485</commentid>
    <comment_count>15</comment_count>
      <attachid>46153</attachid>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-01-11 12:30:08 -0800</bug_when>
    <thetext>Comment on attachment 46153
patch so far

Marking current patch for review.  Olliej was a requested reviewer from someone on IRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179525</commentid>
    <comment_count>16</comment_count>
      <attachid>46153</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-11 13:55:45 -0800</bug_when>
    <thetext>Comment on attachment 46153
patch so far

Everything looks fine to me. I think Oliver may want to double check your results on performance testing, but otherwise seems good to go.

I would like the reserved words to be in some canonical order. The order in %token is not the same as the order in the IdentifierOrReserved production. I suggest using alphabetical order in IdentifierOrReserved (leaving IDENT at the top).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179542</commentid>
    <comment_count>17</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-01-11 14:25:24 -0800</bug_when>
    <thetext>SunSpider actually has a parsing test -- run-sunspider --suite=&quot;parse-only&quot; i
just fixed it in r53099 can you do your tests with that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179850</commentid>
    <comment_count>18</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-01-12 09:10:56 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; SunSpider actually has a parsing test -- run-sunspider --suite=&quot;parse-only&quot; i
&gt; just fixed it in r53099 can you do your tests with that?

I did clean rebuids with and without, and then ran the parse-only sunspider suite.  the individual runs resulted in numbers that varied enough that the results didn&apos;t appear significant (sometimes &quot;new&quot; was better, but ~usually~ &quot;old&quot; was better).  So I ran the parse tests 20 times in a row, read the results, and calculated the mean and stdev the same way sunspider does (throw out first run).  Here are the results:

before grammar change:

                  mootools-1.2.2-core-nc  mean:   7.9  stdev:   1.9
                            jquery-1.3.2  mean:   7.7  stdev:   1.6
                       prototype-1.6.0.3  mean:   9.1  stdev:   2.6
        concat-jquery-mootools-prototype  mean:  24.8  stdev:   2.4


after grammar change:

                  mootools-1.2.2-core-nc  mean:   7.9  stdev:   1.8
                            jquery-1.3.2  mean:   7.8  stdev:   2.1
                       prototype-1.6.0.3  mean:   9.7  stdev:   3.4
        concat-jquery-mootools-prototype  mean:  26.4  stdev:   4.3

the grammar change seems slower, though the stdev is larger for the slower results as well.

No chance we can get a higher resolution timer, is there?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179874</commentid>
    <comment_count>19</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-01-12 10:11:55 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; SunSpider actually has a parsing test -- run-sunspider --suite=&quot;parse-only&quot; i
&gt; &gt; just fixed it in r53099 can you do your tests with that?
&gt; 
&gt; I did clean rebuids with and without, and then ran the parse-only sunspider
&gt; suite.  the individual runs resulted in numbers that varied enough that the
&gt; results didn&apos;t appear significant (sometimes &quot;new&quot; was better, but ~usually~
&gt; &quot;old&quot; was better).  So I ran the parse tests 20 times in a row, read the
&gt; results, and calculated the mean and stdev the same way sunspider does (throw
&gt; out first run).  Here are the results:
&gt; 
&gt; before grammar change:
&gt; 
&gt;                   mootools-1.2.2-core-nc  mean:   7.9  stdev:   1.9
&gt;                             jquery-1.3.2  mean:   7.7  stdev:   1.6
&gt;                        prototype-1.6.0.3  mean:   9.1  stdev:   2.6
&gt;         concat-jquery-mootools-prototype  mean:  24.8  stdev:   2.4
&gt; 
&gt; 
&gt; after grammar change:
&gt; 
&gt;                   mootools-1.2.2-core-nc  mean:   7.9  stdev:   1.8
&gt;                             jquery-1.3.2  mean:   7.8  stdev:   2.1
&gt;                        prototype-1.6.0.3  mean:   9.7  stdev:   3.4
&gt;         concat-jquery-mootools-prototype  mean:  26.4  stdev:   4.3
&gt; 
&gt; the grammar change seems slower, though the stdev is larger for the slower
&gt; results as well.
&gt; 
&gt; No chance we can get a higher resolution timer, is there?

put --runs 30 into the commandline, make sure you&apos;re not running anything else, and use sunspider-compare-results to do the actual comparison</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179888</commentid>
    <comment_count>20</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-01-12 10:56:05 -0800</bug_when>
    <thetext>(In reply to comment #19)

&gt; put --runs 30 into the commandline, make sure you&apos;re not running anything else,
&gt; and use sunspider-compare-results to do the actual comparison

results per those instructions (actually ran 50 times instead of 30):

TEST                           COMPARISON            FROM                 TO             DETAILS

=============================================================================

** TOTAL **:                   *1.025x as slow*  48.3ms +/- 1.3%   49.5ms +/- 1.6%     significant

=============================================================================

  jquery:                      ??                 7.4ms +/- 2.1%    7.5ms +/- 2.1%     not conclusive: might be *1.011x as slow*
    1.3.2:                     ??                 7.4ms +/- 2.1%    7.5ms +/- 2.1%     not conclusive: might be *1.011x as slow*

  mootools:                    ??                 7.8ms +/- 3.1%    8.0ms +/- 7.1%     not conclusive: might be *1.033x as slow*
    1.2.2-core-nc:             ??                 7.8ms +/- 3.1%    8.0ms +/- 7.1%     not conclusive: might be *1.033x as slow*

  prototype:                   ??                 8.7ms +/- 5.1%    8.8ms +/- 2.4%     not conclusive: might be *1.007x as slow*
    1.6.0.3:                   ??                 8.7ms +/- 5.1%    8.8ms +/- 2.4%     not conclusive: might be *1.007x as slow*

  concat:                      *1.034x as slow*  24.4ms +/- 1.7%   25.2ms +/- 1.8%     significant
    jquery-mootools-prototype: *1.034x as slow*  24.4ms +/- 1.7%   25.2ms +/- 1.8%     significant

All these recent tests indicate: the new grammar is slower.  I assume I should look for alternatives at this point?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179889</commentid>
    <comment_count>21</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-01-12 10:58:22 -0800</bug_when>
    <thetext>&gt; All these recent tests indicate: the new grammar is slower.  I assume I should
&gt; look for alternatives at this point?

You could try making the tests larger, then using the --profiling and  --shark or --shark20 flags on run-sunspider to see if shows any unreasonably hot points?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179962</commentid>
    <comment_count>22</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-01-12 13:26:51 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; &gt; All these recent tests indicate: the new grammar is slower.  I assume I should
&gt; &gt; look for alternatives at this point?
&gt; 
&gt; You could try making the tests larger, then using the --profiling and  --shark
&gt; or --shark20 flags on run-sunspider to see if shows any unreasonably hot
&gt; points?

Thanks for the pointers.  A little worried though - I really would need to diff such a profile run against the current parser, because I&apos;m looking for hot-spots in the diffs.  And then I&apos;m worried I may not be able to track such a hot-spot back to the Grammar.y file.

I think what I&apos;m going to do first is actually figure out more about how the grammar actually works, and see if it can be systematically fixed.  For example, I&apos;m assuming now that there are more look ups for these &quot;property&quot; accesses to see if the property is actually a reserved word, when in fact ... it doesn&apos;t matter.  If it&apos;s an identifier, then it&apos;s legal, doesn&apos;t actually matter if it&apos;s a reserved word or not.  Even worse, using reserved words as property values is the exception rather than the rule, and we haven&apos;t even benched using reserved words as properties yet!  Presumably, cooking thoughts like into the grammar would result in a faster parser - less work to do at the property parsing points.  Time to crack open &quot;Bison for Dummies!&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180401</commentid>
    <comment_count>23</comment_count>
      <attachid>46505</attachid>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-01-13 14:13:20 -0800</bug_when>
    <thetext>Created attachment 46505
refactored parser changes

I played with the grammar some more, after reading the Bison doc.  Main goal was to split out the IdentifierOrReserved patterns into two, in hopes it would require less work to match the common cases.  Also, keeping the semantic type of the keywords undefined, except in the case of the new Reserved non-terminal.  I think it was a little successful.  SunSpider runs were generally faster than with the previous patch, but also didn&apos;t quite get as fast as the original parser.  At this point, I think I&apos;ll do some profiling of the parser to see if anything shows up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182423</commentid>
    <comment_count>24</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-01-19 13:36:54 -0800</bug_when>
    <thetext>I finally got around to profiling the parser, but didn&apos;t see anything obvious going on.

I created a new parser-only test which was the big concat sample, only 10x bigger (copied the text 9 times).  Saw the same sort of perf differences.  About 1% slower.

I started looking into the generated Grammar.cpp file, comparing the sizes of the tables; I&apos;m left thinking that &quot;patch so far&quot;, which created a non-terminal named IdentOrReserved, is a better approach than the split/duplicate way it was done in &quot;refactored parser changes&quot;.  The parse table were bigger, the speed difference seemed to be insigificant (&quot;refactored parser changes&quot; seemed to run a bit faster, but it&apos;s hard to tell), there&apos;s by definition more code, and there are duplicate rules to keep in sync in the .y file.

In particular, I was worried about assigning a type of &lt;ident&gt; to the keywords, but this had absolutely no effect on the generated code - it&apos;s a form of type-checking for bison, it appears.

I&apos;m left with assuming there&apos;s no way that I can get the speed back and add the new capability.

On the plus side, during my research, I dug up this: Bug 33860, which seems like something interesting to try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183219</commentid>
    <comment_count>25</comment_count>
      <attachid>47127</attachid>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-01-21 09:24:13 -0800</bug_when>
    <thetext>Created attachment 47127
2010-01-21-a patch

attempt at a final patch:

- seems like a general 1% increase in parse time across the board

- reverrted back to &quot;patch so far&quot; styled change for the property rules - causes an additional reduce step by the compiler but doesn&apos;t require the code duplication for having the duplicate IDENT/IdentifierOrReserved rules

- sorted the token lists in the %token specs and IdentifierOrReserved definition.

- added LayoutTests/fast/js/reserved-words-as-properties-expected.txt to test using all keywords/reserved words as properties</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183263</commentid>
    <comment_count>26</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-21 11:42:32 -0800</bug_when>
    <thetext>I don’t think an increase in parse time is acceptable. Can we find a way to avoid that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183297</commentid>
    <comment_count>27</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-01-21 13:21:24 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; I don’t think an increase in parse time is acceptable. Can we find a way to
&gt; avoid that?

Unrelated to this bug, I opened the following while googling for optimizing yacc grammars: Bug 33860.  I was hoping that perhaps we could pay for this parser cost with savings from that bug.

It&apos;s not clear to me that we can always get away with not increasing the parse time for grammar changes.  Not a happy story, but maybe just the way it is.

I should also note that I am in no way an expert on yacc-style parser building.  I&apos;ve exhausted the exploration paths that I was aware of though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183311</commentid>
    <comment_count>28</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-21 14:08:11 -0800</bug_when>
    <thetext>Recently Zoltan said he was working on a custom-written parser to replace the Bison one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183604</commentid>
    <comment_count>29</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-01-22 05:11:47 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; Recently Zoltan said he was working on a custom-written parser to replace the
&gt; Bison one.

That would obviously make this patch moot.  But the test case can be reused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183657</commentid>
    <comment_count>30</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-01-22 08:16:12 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #28)
&gt; &gt; Recently Zoltan said he was working on a custom-written parser to replace the
&gt; &gt; Bison one.
&gt; 
&gt; That would obviously make this patch moot.  But the test case can be reused.

Yeah, I am working on a new parser. The patch is 270k now, 110k to remove grammar.y, but the remaining is new code. Will be a reviewers nightmare :D There is 271 regressions so far, because there are still some complicated JS statement is not yet finished (namely: try, switch, object-literal). And still I am not sure what the ArgumentsFeature means. There is another 55k patch which dumps the AST to a text file which is used for regression testing (although could be interesting for the others to actually see the tree). The hand written parser is ~ 3x faster for regular code, and ~ 4x faster for syntax checking (was NoNode rules in grammar.y). Would be also good to have syntax error regression tests (like: 3 = 2 is ok, while -3 = 2 is parse error, &apos;do ; while(0) ++i is&apos; ok, but &apos;for (var a, b in c) {}&apos; is a parse error.). Actually the &apos;for&apos; was the worst to parse, since it has so many valid and invalid forms.

I didn&apos;t know that keywords can be used after a dot, and in the object literal. I will probably need a keyword to ident converter, and append all of these tokens to CommonIdentifiers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183713</commentid>
    <comment_count>31</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-01-22 11:16:57 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #29)
&gt; &gt; (In reply to comment #28)
&gt; &gt; &gt; Recently Zoltan said he was working on a custom-written parser to replace the
&gt; &gt; &gt; Bison one.
&gt; &gt; 
&gt; &gt; That would obviously make this patch moot.  But the test case can be reused.
&gt; 
&gt; Yeah, I am working on a new parser. The patch is 270k now, 110k to remove
&gt; grammar.y, but the remaining is new code. Will be a reviewers nightmare :D
&gt; There is 271 regressions so far, because there are still some complicated JS
&gt; statement is not yet finished (namely: try, switch, object-literal). And still
&gt; I am not sure what the ArgumentsFeature means. There is another 55k patch which
&gt; dumps the AST to a text file which is used for regression testing (although
&gt; could be interesting for the others to actually see the tree). The hand written
&gt; parser is ~ 3x faster for regular code, and ~ 4x faster for syntax checking
&gt; (was NoNode rules in grammar.y). Would be also good to have syntax error
&gt; regression tests (like: 3 = 2 is ok, while -3 = 2 is parse error, &apos;do ;
&gt; while(0) ++i is&apos; ok, but &apos;for (var a, b in c) {}&apos; is a parse error.). Actually
&gt; the &apos;for&apos; was the worst to parse, since it has so many valid and invalid forms.
&gt; 
&gt; I didn&apos;t know that keywords can be used after a dot, and in the object literal.
&gt; I will probably need a keyword to ident converter, and append all of these
&gt; tokens to CommonIdentifiers.
It would be good if you could put your patch up for feedback, rather than writing the entire thing in a vacuum - I had been planning on rewriting the parser in a recursive descent form as that&apos;s necessary for strict mode support so it would be good to see what your hand rolled parser is doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183785</commentid>
    <comment_count>32</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-01-22 13:45:25 -0800</bug_when>
    <thetext>See: https://bugs.webkit.org/show_bug.cgi?id=34019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197234</commentid>
    <comment_count>33</comment_count>
      <attachid>47127</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-08 10:53:42 -0800</bug_when>
    <thetext>Comment on attachment 47127
2010-01-21-a patch

According to Darin, we don&apos;t want this patch because it&apos;s a 1% perf regression.  Also, we&apos;re re-writing the JavaScript parser.  There&apos;s no need for this patch to be sitting in pending-review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252628</commentid>
    <comment_count>34</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-07-16 11:35:39 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 42471 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318187</commentid>
    <comment_count>35</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-07 08:11:56 -0800</bug_when>
    <thetext>Someone recently pointed to this bug. Note that it’s a duplicate. See bug 42471 for how this was ultimately resolved.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45967</attachid>
            <date>2010-01-06 10:25:50 -0800</date>
            <delta_ts>2010-01-06 11:45:10 -0800</delta_ts>
            <desc>attempted patch </desc>
            <filename>32722.patch</filename>
            <type>text/plain</type>
            <size>7699</size>
            <attacher name="Patrick Mueller">pmuellr</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3BhcnNlci9HcmFtbWFyLnkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0dyYW1tYXIueQkocmV2aXNpb24gNTI3NTEpCisrKyBKYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvR3JhbW1hci55CSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsMTUgKzE5Miwx
NSBAQAogJXN0YXJ0IFByb2dyYW0KIAogLyogbGl0ZXJhbHMgKi8KLSV0b2tlbiBOVUxMVE9LRU4g
VFJVRVRPS0VOIEZBTFNFVE9LRU4KKyV0b2tlbiA8aWRlbnQ+IE5VTExUT0tFTiBUUlVFVE9LRU4g
RkFMU0VUT0tFTgogCiAvKiBrZXl3b3JkcyAqLwotJXRva2VuIEJSRUFLIENBU0UgREVGQVVMVCBG
T1IgTkVXIFZBUiBDT05TVFRPS0VOIENPTlRJTlVFCi0ldG9rZW4gRlVOQ1RJT04gUkVUVVJOIFZP
SURUT0tFTiBERUxFVEVUT0tFTgotJXRva2VuIElGIFRISVNUT0tFTiBETyBXSElMRSBJTlRPS0VO
IElOU1RBTkNFT0YgVFlQRU9GCi0ldG9rZW4gU1dJVENIIFdJVEggUkVTRVJWRUQKLSV0b2tlbiBU
SFJPVyBUUlkgQ0FUQ0ggRklOQUxMWQotJXRva2VuIERFQlVHR0VSCisldG9rZW4gPGlkZW50PiBC
UkVBSyBDQVNFIERFRkFVTFQgRk9SIE5FVyBWQVIgQ09OU1RUT0tFTiBDT05USU5VRQorJXRva2Vu
IDxpZGVudD4gRlVOQ1RJT04gUkVUVVJOIFZPSURUT0tFTiBERUxFVEVUT0tFTgorJXRva2VuIDxp
ZGVudD4gSUYgVEhJU1RPS0VOIERPIFdISUxFIElOVE9LRU4gSU5TVEFOQ0VPRiBUWVBFT0YKKyV0
b2tlbiA8aWRlbnQ+IFNXSVRDSCBXSVRIIFJFU0VSVkVECisldG9rZW4gPGlkZW50PiBUSFJPVyBU
UlkgQ0FUQ0ggRklOQUxMWQorJXRva2VuIDxpZGVudD4gREVCVUdHRVIKIAogLyogZ2l2ZSBhbiBp
ZiB3aXRob3V0IGFuIGVsc2UgaGlnaGVyIHByZWNlZGVuY2UgdGhhbiBhbiBlbHNlIHRvIHJlc29s
dmUgdGhlIGFtYmlndWl0eSAqLwogJW5vbmFzc29jIElGX1dJVEhPVVRfRUxTRQpAQCAtMjgzLDYg
KzI4Myw4IEBACiAldHlwZSA8ZWxlbWVudExpc3Q+ICAgICBFbGVtZW50TGlzdAogJXR5cGUgPHBy
b3BlcnR5Tm9kZT4gICAgUHJvcGVydHkKICV0eXBlIDxwcm9wZXJ0eUxpc3Q+ICAgIFByb3BlcnR5
TGlzdAorCisldHlwZSA8aWRlbnQ+ICAgICAgICAgICBJZGVudGlmaWVyTmFtZQogJSUKIAogLy8g
RklYTUU6IFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIHZlcnNpb25zIG9mIHRoZSBncmFtbWFyIGlu
IHRoaXMgZmlsZSwgdGhlIG5vcm1hbCBvbmUsIGFuZCB0aGUgTm9Ob2RlcyB2ZXJzaW9uIHVzZWQg
Zm9yCkBAIC0zMTksOCArMzIxLDQzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogOwogCitJZGVudGlmaWVyTmFtZToKKyAgICBJREVOVAorICB8IE5VTExUT0tF
TgorICB8IFRSVUVUT0tFTgorICB8IEZBTFNFVE9LRU4KKyAgfCBCUkVBSworICB8IENBU0UKKyAg
fCBDQVRDSAorICB8IENPTlNUVE9LRU4KKyAgfCBERUZBVUxUCisgIHwgRklOQUxMWQorICB8IEZP
UgorICB8IElOU1RBTkNFT0YKKyAgfCBORVcKKyAgfCBWQVIKKyAgfCBDT05USU5VRQorICB8IEZV
TkNUSU9OCisgIHwgUkVUVVJOCisgIHwgVk9JRFRPS0VOCisgIHwgREVMRVRFVE9LRU4KKyAgfCBJ
RgorICB8IFRISVNUT0tFTgorICB8IERPCisgIHwgV0hJTEUKKyAgfCBFTFNFCisgIHwgSU5UT0tF
TgorICB8IFNXSVRDSAorICB8IFRIUk9XCisgIHwgVFJZCisgIHwgVFlQRU9GCisgIHwgV0lUSAor
ICB8IERFQlVHR0VSCisgIHwgUkVTRVJWRUQKKzsKKwogUHJvcGVydHk6Ci0gICAgSURFTlQgJzon
IEFzc2lnbm1lbnRFeHByICAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVJbmZvPFByb3BlcnR5
Tm9kZSo+KG5ldyAoR0xPQkFMX0RBVEEpIFByb3BlcnR5Tm9kZShHTE9CQUxfREFUQSwgKiQxLCAk
My5tX25vZGUsIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpLCAkMy5tX2ZlYXR1cmVzLCAkMy5tX251
bUNvbnN0YW50cyk7IH0KKyAgICBJZGVudGlmaWVyTmFtZSAnOicgQXNzaWdubWVudEV4cHIgICB7
ICQkID0gY3JlYXRlTm9kZUluZm88UHJvcGVydHlOb2RlKj4obmV3IChHTE9CQUxfREFUQSkgUHJv
cGVydHlOb2RlKEdMT0JBTF9EQVRBLCAqJDEsICQzLm1fbm9kZSwgUHJvcGVydHlOb2RlOjpDb25z
dGFudCksICQzLm1fZmVhdHVyZXMsICQzLm1fbnVtQ29uc3RhbnRzKTsgfQogICB8IFNUUklORyAn
OicgQXNzaWdubWVudEV4cHIgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlSW5mbzxQcm9wZXJ0
eU5vZGUqPihuZXcgKEdMT0JBTF9EQVRBKSBQcm9wZXJ0eU5vZGUoR0xPQkFMX0RBVEEsICokMSwg
JDMubV9ub2RlLCBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KSwgJDMubV9mZWF0dXJlcywgJDMubV9u
dW1Db25zdGFudHMpOyB9CiAgIHwgTlVNQkVSICc6JyBBc3NpZ25tZW50RXhwciAgICAgICAgICAg
eyAkJCA9IGNyZWF0ZU5vZGVJbmZvPFByb3BlcnR5Tm9kZSo+KG5ldyAoR0xPQkFMX0RBVEEpIFBy
b3BlcnR5Tm9kZShHTE9CQUxfREFUQSwgJDEsICQzLm1fbm9kZSwgUHJvcGVydHlOb2RlOjpDb25z
dGFudCksICQzLm1fZmVhdHVyZXMsICQzLm1fbnVtQ29uc3RhbnRzKTsgfQogICB8IElERU5UIElE
RU5UICcoJyAnKScgT1BFTkJSQUNFIEZ1bmN0aW9uQm9keSBDTE9TRUJSQUNFICAgIHsgJCQgPSBj
cmVhdGVOb2RlSW5mbzxQcm9wZXJ0eU5vZGUqPihtYWtlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eU5v
ZGUoR0xPQkFMX0RBVEEsICokMSwgKiQyLCAwLCAkNiwgR0xPQkFMX0RBVEEtPmxleGVyLT5zb3Vy
Y2VDb2RlKCQ1LCAkNywgQDUuZmlyc3RfbGluZSkpLCBDbG9zdXJlRmVhdHVyZSwgMCk7IHNldFN0
YXRlbWVudExvY2F0aW9uKCQ2LCBANSwgQDcpOyBpZiAoISQkLm1fbm9kZSkgWVlBQk9SVDsgfQpA
QCAtMzk3LDcgKzQzNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAxLmxhc3Rf
Y29sdW1uLCBANC5sYXN0X2NvbHVtbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkJCA9IGNyZWF0ZU5vZGVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obm9kZSwgJDEu
bV9mZWF0dXJlcyB8ICQzLm1fZmVhdHVyZXMsICQxLm1fbnVtQ29uc3RhbnRzICsgJDMubV9udW1D
b25zdGFudHMpOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
IHwgTWVtYmVyRXhwciAnLicgSURFTlQgICAgICAgICAgICAgICAgeyBEb3RBY2Nlc3Nvck5vZGUq
IG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBEb3RBY2Nlc3Nvck5vZGUoR0xPQkFMX0RBVEEsICQx
Lm1fbm9kZSwgKiQzKTsKKyAgfCBNZW1iZXJFeHByICcuJyBJZGVudGlmaWVyTmFtZSAgICAgICB7
IERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAoR0xPQkFMX0RBVEEpIERvdEFjY2Vzc29yTm9k
ZShHTE9CQUxfREFUQSwgJDEubV9ub2RlLCAqJDMpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgQDEuZmlyc3RfY29s
dW1uLCBAMS5sYXN0X2NvbHVtbiwgQDMubGFzdF9jb2x1bW4pOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlSW5mbzxFeHByZXNzaW9uTm9k
ZSo+KG5vZGUsICQxLm1fZmVhdHVyZXMsICQxLm1fbnVtQ29uc3RhbnRzKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC00MTMsNyArNDUwLDcgQEAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9u
KG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4sIEA0Lmxhc3RfY29sdW1uKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9k
ZUluZm88RXhwcmVzc2lvbk5vZGUqPihub2RlLCAkMS5tX2ZlYXR1cmVzIHwgJDMubV9mZWF0dXJl
cywgJDEubV9udW1Db25zdGFudHMgKyAkMy5tX251bUNvbnN0YW50cyk7IAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgfCBNZW1iZXJFeHByTm9CRiAnLicgSURF
TlQgICAgICAgICAgICB7IERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAoR0xPQkFMX0RBVEEp
IERvdEFjY2Vzc29yTm9kZShHTE9CQUxfREFUQSwgJDEubV9ub2RlLCAqJDMpOworICB8IE1lbWJl
ckV4cHJOb0JGICcuJyBJZGVudGlmaWVyTmFtZSAgIHsgRG90QWNjZXNzb3JOb2RlKiBub2RlID0g
bmV3IChHTE9CQUxfREFUQSkgRG90QWNjZXNzb3JOb2RlKEdMT0JBTF9EQVRBLCAkMS5tX25vZGUs
ICokMyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFeGNl
cHRpb25Mb2NhdGlvbihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAxLmxhc3RfY29sdW1uLCBAMy5s
YXN0X2NvbHVtbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk
JCA9IGNyZWF0ZU5vZGVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obm9kZSwgJDEubV9mZWF0dXJlcywg
JDEubV9udW1Db25zdGFudHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KQEAgLTQ0Niw3ICs0ODMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBA
MS5sYXN0X2NvbHVtbiwgQDQubGFzdF9jb2x1bW4pOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5v
ZGUsICQxLm1fZmVhdHVyZXMgfCAkMy5tX2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0YW50cyArICQz
Lm1fbnVtQ29uc3RhbnRzKTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICB8IENhbGxFeHByICcuJyBJREVOVCAgICAgICAgICAgICAgICAgIHsgRG90QWNjZXNz
b3JOb2RlKiBub2RlID0gbmV3IChHTE9CQUxfREFUQSkgRG90QWNjZXNzb3JOb2RlKEdMT0JBTF9E
QVRBLCAkMS5tX25vZGUsICokMyk7CisgIHwgQ2FsbEV4cHIgJy4nIElkZW50aWZpZXJOYW1lICAg
ICAgICAgeyBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBEb3RBY2Nl
c3Nvck5vZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwgKiQzKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIEAxLmZp
cnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4sIEAzLmxhc3RfY29sdW1uKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZUluZm88RXhwcmVz
c2lvbk5vZGUqPihub2RlLCAkMS5tX2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0YW50cyk7IH0KIDsK
QEAgLTQ1OCw3ICs0OTUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0
X2NvbHVtbiwgQDQubGFzdF9jb2x1bW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5vZGUsICQx
Lm1fZmVhdHVyZXMgfCAkMy5tX2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0YW50cyArICQzLm1fbnVt
Q29uc3RhbnRzKTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICB8IENhbGxFeHByTm9CRiAnLicgSURFTlQgICAgICAgICAgICAgIHsgRG90QWNjZXNzb3JOb2Rl
KiBub2RlID0gbmV3IChHTE9CQUxfREFUQSkgRG90QWNjZXNzb3JOb2RlKEdMT0JBTF9EQVRBLCAk
MS5tX25vZGUsICokMyk7CisgIHwgQ2FsbEV4cHJOb0JGICcuJyBJZGVudGlmaWVyTmFtZSAgICAg
eyBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBEb3RBY2Nlc3Nvck5v
ZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwgKiQzKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIEAxLmZpcnN0X2Nv
bHVtbiwgQDEubGFzdF9jb2x1bW4sIEAzLmxhc3RfY29sdW1uKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZUluZm88RXhwcmVzc2lvbk5v
ZGUqPihub2RlLCAkMS5tX2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0YW50cyk7IAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTEyNTUsNyArMTI5Miw3IEBACiA7
CiAKIFByb3BlcnR5X05vTm9kZToKLSAgICBJREVOVCAnOicgQXNzaWdubWVudEV4cHJfTm9Ob2Rl
IHsgfQorICAgIElkZW50aWZpZXJOYW1lICc6JyBBc3NpZ25tZW50RXhwcl9Ob05vZGUgeyB9CiAg
IHwgU1RSSU5HICc6JyBBc3NpZ25tZW50RXhwcl9Ob05vZGUgeyB9CiAgIHwgTlVNQkVSICc6JyBB
c3NpZ25tZW50RXhwcl9Ob05vZGUgeyB9CiAgIHwgSURFTlQgSURFTlQgJygnICcpJyBPUEVOQlJB
Q0UgRnVuY3Rpb25Cb2R5X05vTm9kZSBDTE9TRUJSQUNFIHsgaWYgKCokMSAhPSAiZ2V0IiAmJiAq
JDEgIT0gInNldCIpIFlZQUJPUlQ7IH0KQEAgLTEzMDgsMTQgKzEzNDUsMTQgQEAKICAgICBQcmlt
YXJ5RXhwcl9Ob05vZGUKICAgfCBGdW5jdGlvbkV4cHJfTm9Ob2RlCiAgIHwgTWVtYmVyRXhwcl9O
b05vZGUgJ1snIEV4cHJfTm9Ob2RlICddJwotICB8IE1lbWJlckV4cHJfTm9Ob2RlICcuJyBJREVO
VAorICB8IE1lbWJlckV4cHJfTm9Ob2RlICcuJyBJZGVudGlmaWVyTmFtZQogICB8IE5FVyBNZW1i
ZXJFeHByX05vTm9kZSBBcmd1bWVudHNfTm9Ob2RlCiA7CiAKIE1lbWJlckV4cHJOb0JGX05vTm9k
ZToKICAgICBQcmltYXJ5RXhwck5vQnJhY2VfTm9Ob2RlCiAgIHwgTWVtYmVyRXhwck5vQkZfTm9O
b2RlICdbJyBFeHByX05vTm9kZSAnXScKLSAgfCBNZW1iZXJFeHByTm9CRl9Ob05vZGUgJy4nIElE
RU5UCisgIHwgTWVtYmVyRXhwck5vQkZfTm9Ob2RlICcuJyBJZGVudGlmaWVyTmFtZQogICB8IE5F
VyBNZW1iZXJFeHByX05vTm9kZSBBcmd1bWVudHNfTm9Ob2RlCiA7CiAKQEAgLTEzMzMsMTQgKzEz
NzAsMTQgQEAKICAgICBNZW1iZXJFeHByX05vTm9kZSBBcmd1bWVudHNfTm9Ob2RlCiAgIHwgQ2Fs
bEV4cHJfTm9Ob2RlIEFyZ3VtZW50c19Ob05vZGUKICAgfCBDYWxsRXhwcl9Ob05vZGUgJ1snIEV4
cHJfTm9Ob2RlICddJwotICB8IENhbGxFeHByX05vTm9kZSAnLicgSURFTlQKKyAgfCBDYWxsRXhw
cl9Ob05vZGUgJy4nIElkZW50aWZpZXJOYW1lCiA7CiAKIENhbGxFeHByTm9CRl9Ob05vZGU6CiAg
ICAgTWVtYmVyRXhwck5vQkZfTm9Ob2RlIEFyZ3VtZW50c19Ob05vZGUKICAgfCBDYWxsRXhwck5v
QkZfTm9Ob2RlIEFyZ3VtZW50c19Ob05vZGUKICAgfCBDYWxsRXhwck5vQkZfTm9Ob2RlICdbJyBF
eHByX05vTm9kZSAnXScKLSAgfCBDYWxsRXhwck5vQkZfTm9Ob2RlICcuJyBJREVOVAorICB8IENh
bGxFeHByTm9CRl9Ob05vZGUgJy4nIElkZW50aWZpZXJOYW1lCiA7CiAKIEFyZ3VtZW50c19Ob05v
ZGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45975</attachid>
            <date>2010-01-06 11:45:10 -0800</date>
            <delta_ts>2010-01-06 11:56:50 -0800</delta_ts>
            <desc>attempted patch</desc>
            <filename>32722.patch</filename>
            <type>text/plain</type>
            <size>12573</size>
            <attacher name="Patrick Mueller">pmuellr</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3BhcnNlci9HcmFtbWFyLnkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0dyYW1tYXIueQkocmV2aXNpb24gNTI3NTEpCisrKyBKYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvR3JhbW1hci55CSh3b3JraW5nIGNvcHkpCkBAIC02LDYgKzYsNyBAQAog
ICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcp
CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVy
aWNAd2Via2l0Lm9yZz4KKyAqICBDb3B5cmlnaHQgKEMpIElCTSBDb3JwLiAyMDA5ICBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMTkyLDE1ICsxOTMsMTUgQEAg
c3RhdGljIGlubGluZSB2b2lkIHNldEV4Y2VwdGlvbkxvY2F0aW9uKAogJXN0YXJ0IFByb2dyYW0K
IAogLyogbGl0ZXJhbHMgKi8KLSV0b2tlbiBOVUxMVE9LRU4gVFJVRVRPS0VOIEZBTFNFVE9LRU4K
KyV0b2tlbiA8aWRlbnQ+IE5VTExUT0tFTiBUUlVFVE9LRU4gRkFMU0VUT0tFTgogCiAvKiBrZXl3
b3JkcyAqLwotJXRva2VuIEJSRUFLIENBU0UgREVGQVVMVCBGT1IgTkVXIFZBUiBDT05TVFRPS0VO
IENPTlRJTlVFCi0ldG9rZW4gRlVOQ1RJT04gUkVUVVJOIFZPSURUT0tFTiBERUxFVEVUT0tFTgot
JXRva2VuIElGIFRISVNUT0tFTiBETyBXSElMRSBJTlRPS0VOIElOU1RBTkNFT0YgVFlQRU9GCi0l
dG9rZW4gU1dJVENIIFdJVEggUkVTRVJWRUQKLSV0b2tlbiBUSFJPVyBUUlkgQ0FUQ0ggRklOQUxM
WQotJXRva2VuIERFQlVHR0VSCisldG9rZW4gPGlkZW50PiBCUkVBSyBDQVNFIERFRkFVTFQgRk9S
IE5FVyBWQVIgQ09OU1RUT0tFTiBDT05USU5VRQorJXRva2VuIDxpZGVudD4gRlVOQ1RJT04gUkVU
VVJOIFZPSURUT0tFTiBERUxFVEVUT0tFTgorJXRva2VuIDxpZGVudD4gSUYgVEhJU1RPS0VOIERP
IFdISUxFIElOVE9LRU4gSU5TVEFOQ0VPRiBUWVBFT0YKKyV0b2tlbiA8aWRlbnQ+IFNXSVRDSCBX
SVRIIFJFU0VSVkVECisldG9rZW4gPGlkZW50PiBUSFJPVyBUUlkgQ0FUQ0ggRklOQUxMWQorJXRv
a2VuIDxpZGVudD4gREVCVUdHRVIKIAogLyogZ2l2ZSBhbiBpZiB3aXRob3V0IGFuIGVsc2UgaGln
aGVyIHByZWNlZGVuY2UgdGhhbiBhbiBlbHNlIHRvIHJlc29sdmUgdGhlIGFtYmlndWl0eSAqLwog
JW5vbmFzc29jIElGX1dJVEhPVVRfRUxTRQpAQCAtMjgzLDYgKzI4NCw4IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBzZXRFeGNlcHRpb25Mb2NhdGlvbigKICV0eXBlIDxlbGVtZW50TGlzdD4gICAgIEVs
ZW1lbnRMaXN0CiAldHlwZSA8cHJvcGVydHlOb2RlPiAgICBQcm9wZXJ0eQogJXR5cGUgPHByb3Bl
cnR5TGlzdD4gICAgUHJvcGVydHlMaXN0CisKKyV0eXBlIDxpZGVudD4gICAgICAgICAgIElkZW50
aWZpZXJOYW1lc3ZuLWRpZmYKICUlCiAKIC8vIEZJWE1FOiBUaGVyZSBhcmUgY3VycmVudGx5IHR3
byB2ZXJzaW9ucyBvZiB0aGUgZ3JhbW1hciBpbiB0aGlzIGZpbGUsIHRoZSBub3JtYWwgb25lLCBh
bmQgdGhlIE5vTm9kZXMgdmVyc2lvbiB1c2VkIGZvcgpAQCAtMzE5LDggKzMyMiw0MyBAQCBMaXRl
cmFsOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KIDsKIAorSWRl
bnRpZmllck5hbWU6CisgICAgSURFTlQKKyAgfCBOVUxMVE9LRU4KKyAgfCBUUlVFVE9LRU4KKyAg
fCBGQUxTRVRPS0VOCisgIHwgQlJFQUsKKyAgfCBDQVNFCisgIHwgQ0FUQ0gKKyAgfCBDT05TVFRP
S0VOCisgIHwgREVGQVVMVAorICB8IEZJTkFMTFkKKyAgfCBGT1IKKyAgfCBJTlNUQU5DRU9GCisg
IHwgTkVXCisgIHwgVkFSCisgIHwgQ09OVElOVUUKKyAgfCBGVU5DVElPTgorICB8IFJFVFVSTgor
ICB8IFZPSURUT0tFTgorICB8IERFTEVURVRPS0VOCisgIHwgSUYKKyAgfCBUSElTVE9LRU4KKyAg
fCBETworICB8IFdISUxFCisgIHwgRUxTRQorICB8IElOVE9LRU4KKyAgfCBTV0lUQ0gKKyAgfCBU
SFJPVworICB8IFRSWQorICB8IFRZUEVPRgorICB8IFdJVEgKKyAgfCBERUJVR0dFUgorICB8IFJF
U0VSVkVECis7CisKIFByb3BlcnR5OgotICAgIElERU5UICc6JyBBc3NpZ25tZW50RXhwciAgICAg
ICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlSW5mbzxQcm9wZXJ0eU5vZGUqPihuZXcgKEdMT0JBTF9E
QVRBKSBQcm9wZXJ0eU5vZGUoR0xPQkFMX0RBVEEsICokMSwgJDMubV9ub2RlLCBQcm9wZXJ0eU5v
ZGU6OkNvbnN0YW50KSwgJDMubV9mZWF0dXJlcywgJDMubV9udW1Db25zdGFudHMpOyB9CisgICAg
SWRlbnRpZmllck5hbWUgJzonIEFzc2lnbm1lbnRFeHByICAgeyAkJCA9IGNyZWF0ZU5vZGVJbmZv
PFByb3BlcnR5Tm9kZSo+KG5ldyAoR0xPQkFMX0RBVEEpIFByb3BlcnR5Tm9kZShHTE9CQUxfREFU
QSwgKiQxLCAkMy5tX25vZGUsIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpLCAkMy5tX2ZlYXR1cmVz
LCAkMy5tX251bUNvbnN0YW50cyk7IH0KICAgfCBTVFJJTkcgJzonIEFzc2lnbm1lbnRFeHByICAg
ICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUluZm88UHJvcGVydHlOb2RlKj4obmV3IChHTE9CQUxf
REFUQSkgUHJvcGVydHlOb2RlKEdMT0JBTF9EQVRBLCAqJDEsICQzLm1fbm9kZSwgUHJvcGVydHlO
b2RlOjpDb25zdGFudCksICQzLm1fZmVhdHVyZXMsICQzLm1fbnVtQ29uc3RhbnRzKTsgfQogICB8
IE5VTUJFUiAnOicgQXNzaWdubWVudEV4cHIgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlSW5m
bzxQcm9wZXJ0eU5vZGUqPihuZXcgKEdMT0JBTF9EQVRBKSBQcm9wZXJ0eU5vZGUoR0xPQkFMX0RB
VEEsICQxLCAkMy5tX25vZGUsIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpLCAkMy5tX2ZlYXR1cmVz
LCAkMy5tX251bUNvbnN0YW50cyk7IH0KICAgfCBJREVOVCBJREVOVCAnKCcgJyknIE9QRU5CUkFD
RSBGdW5jdGlvbkJvZHkgQ0xPU0VCUkFDRSAgICB7ICQkID0gY3JlYXRlTm9kZUluZm88UHJvcGVy
dHlOb2RlKj4obWFrZUdldHRlck9yU2V0dGVyUHJvcGVydHlOb2RlKEdMT0JBTF9EQVRBLCAqJDEs
ICokMiwgMCwgJDYsIEdMT0JBTF9EQVRBLT5sZXhlci0+c291cmNlQ29kZSgkNSwgJDcsIEA1LmZp
cnN0X2xpbmUpKSwgQ2xvc3VyZUZlYXR1cmUsIDApOyBzZXRTdGF0ZW1lbnRMb2NhdGlvbigkNiwg
QDUsIEA3KTsgaWYgKCEkJC5tX25vZGUpIFlZQUJPUlQ7IH0KQEAgLTM5Nyw3ICs0MzUsNyBAQCBN
ZW1iZXJFeHByOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwg
QDQubGFzdF9jb2x1bW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJCQgPSBjcmVhdGVOb2RlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5vZGUsICQxLm1fZmVhdHVy
ZXMgfCAkMy5tX2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0YW50cyArICQzLm1fbnVtQ29uc3RhbnRz
KTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICB8IE1lbWJl
ckV4cHIgJy4nIElERU5UICAgICAgICAgICAgICAgIHsgRG90QWNjZXNzb3JOb2RlKiBub2RlID0g
bmV3IChHTE9CQUxfREFUQSkgRG90QWNjZXNzb3JOb2RlKEdMT0JBTF9EQVRBLCAkMS5tX25vZGUs
ICokMyk7CisgIHwgTWVtYmVyRXhwciAnLicgSWRlbnRpZmllck5hbWUgICAgICAgeyBEb3RBY2Nl
c3Nvck5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBEb3RBY2Nlc3Nvck5vZGUoR0xPQkFM
X0RBVEEsICQxLm1fbm9kZSwgKiQzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDEu
bGFzdF9jb2x1bW4sIEAzLmxhc3RfY29sdW1uKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZUluZm88RXhwcmVzc2lvbk5vZGUqPihub2Rl
LCAkMS5tX2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0YW50cyk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQpAQCAtNDEzLDcgKzQ1MSw3IEBAIE1lbWJlckV4cHJOb0JG
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhjZXB0aW9u
TG9jYXRpb24obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDQubGFzdF9j
b2x1bW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBj
cmVhdGVOb2RlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5vZGUsICQxLm1fZmVhdHVyZXMgfCAkMy5t
X2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0YW50cyArICQzLm1fbnVtQ29uc3RhbnRzKTsgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICB8IE1lbWJlckV4cHJOb0JG
ICcuJyBJREVOVCAgICAgICAgICAgIHsgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChHTE9C
QUxfREFUQSkgRG90QWNjZXNzb3JOb2RlKEdMT0JBTF9EQVRBLCAkMS5tX25vZGUsICokMyk7Cisg
IHwgTWVtYmVyRXhwck5vQkYgJy4nIElkZW50aWZpZXJOYW1lICAgeyBEb3RBY2Nlc3Nvck5vZGUq
IG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBEb3RBY2Nlc3Nvck5vZGUoR0xPQkFMX0RBVEEsICQx
Lm1fbm9kZSwgKiQzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1
bW4sIEAzLmxhc3RfY29sdW1uKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICQkID0gY3JlYXRlTm9kZUluZm88RXhwcmVzc2lvbk5vZGUqPihub2RlLCAkMS5tX2Zl
YXR1cmVzLCAkMS5tX251bUNvbnN0YW50cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQpAQCAtNDQ2LDcgKzQ4NCw3IEBAIENhbGxFeHByOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwg
QDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDQubGFzdF9jb2x1bW4pOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlSW5mbzxF
eHByZXNzaW9uTm9kZSo+KG5vZGUsICQxLm1fZmVhdHVyZXMgfCAkMy5tX2ZlYXR1cmVzLCAkMS5t
X251bUNvbnN0YW50cyArICQzLm1fbnVtQ29uc3RhbnRzKTsgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICB8IENhbGxFeHByICcuJyBJREVOVCAgICAgICAgICAg
ICAgICAgIHsgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChHTE9CQUxfREFUQSkgRG90QWNj
ZXNzb3JOb2RlKEdMT0JBTF9EQVRBLCAkMS5tX25vZGUsICokMyk7CisgIHwgQ2FsbEV4cHIgJy4n
IElkZW50aWZpZXJOYW1lICAgICAgICAgeyBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKEdM
T0JBTF9EQVRBKSBEb3RBY2Nlc3Nvck5vZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwgKiQzKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEV4Y2VwdGlvbkxv
Y2F0aW9uKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4sIEAzLmxhc3RfY29s
dW1uKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3Jl
YXRlTm9kZUluZm88RXhwcmVzc2lvbk5vZGUqPihub2RlLCAkMS5tX2ZlYXR1cmVzLCAkMS5tX251
bUNvbnN0YW50cyk7IH0KIDsKQEAgLTQ1OCw3ICs0OTYsNyBAQCBDYWxsRXhwck5vQkY6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlv
bihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAxLmxhc3RfY29sdW1uLCBANC5sYXN0X2NvbHVtbik7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNyZWF0ZU5v
ZGVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obm9kZSwgJDEubV9mZWF0dXJlcyB8ICQzLm1fZmVhdHVy
ZXMsICQxLm1fbnVtQ29uc3RhbnRzICsgJDMubV9udW1Db25zdGFudHMpOyAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gIHwgQ2FsbEV4cHJOb0JGICcuJyBJREVO
VCAgICAgICAgICAgICAgeyBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRB
KSBEb3RBY2Nlc3Nvck5vZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwgKiQzKTsKKyAgfCBDYWxs
RXhwck5vQkYgJy4nIElkZW50aWZpZXJOYW1lICAgICB7IERvdEFjY2Vzc29yTm9kZSogbm9kZSA9
IG5ldyAoR0xPQkFMX0RBVEEpIERvdEFjY2Vzc29yTm9kZShHTE9CQUxfREFUQSwgJDEubV9ub2Rl
LCAqJDMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhj
ZXB0aW9uTG9jYXRpb24obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDMu
bGFzdF9jb2x1bW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JCQgPSBjcmVhdGVOb2RlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5vZGUsICQxLm1fZmVhdHVyZXMs
ICQxLm1fbnVtQ29uc3RhbnRzKTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQpAQCAtMTI1NSw3ICsxMjkzLDcgQEAgTGl0ZXJhbF9Ob05vZGU6CiA7CiAKIFByb3Bl
cnR5X05vTm9kZToKLSAgICBJREVOVCAnOicgQXNzaWdubWVudEV4cHJfTm9Ob2RlIHsgfQorICAg
IElkZW50aWZpZXJOYW1lICc6JyBBc3NpZ25tZW50RXhwcl9Ob05vZGUgeyB9CiAgIHwgU1RSSU5H
ICc6JyBBc3NpZ25tZW50RXhwcl9Ob05vZGUgeyB9CiAgIHwgTlVNQkVSICc6JyBBc3NpZ25tZW50
RXhwcl9Ob05vZGUgeyB9CiAgIHwgSURFTlQgSURFTlQgJygnICcpJyBPUEVOQlJBQ0UgRnVuY3Rp
b25Cb2R5X05vTm9kZSBDTE9TRUJSQUNFIHsgaWYgKCokMSAhPSAiZ2V0IiAmJiAqJDEgIT0gInNl
dCIpIFlZQUJPUlQ7IH0KQEAgLTEzMDgsMTQgKzEzNDYsMTQgQEAgTWVtYmVyRXhwcl9Ob05vZGU6
CiAgICAgUHJpbWFyeUV4cHJfTm9Ob2RlCiAgIHwgRnVuY3Rpb25FeHByX05vTm9kZQogICB8IE1l
bWJlckV4cHJfTm9Ob2RlICdbJyBFeHByX05vTm9kZSAnXScKLSAgfCBNZW1iZXJFeHByX05vTm9k
ZSAnLicgSURFTlQKKyAgfCBNZW1iZXJFeHByX05vTm9kZSAnLicgSWRlbnRpZmllck5hbWUKICAg
fCBORVcgTWVtYmVyRXhwcl9Ob05vZGUgQXJndW1lbnRzX05vTm9kZQogOwogCiBNZW1iZXJFeHBy
Tm9CRl9Ob05vZGU6CiAgICAgUHJpbWFyeUV4cHJOb0JyYWNlX05vTm9kZQogICB8IE1lbWJlckV4
cHJOb0JGX05vTm9kZSAnWycgRXhwcl9Ob05vZGUgJ10nCi0gIHwgTWVtYmVyRXhwck5vQkZfTm9O
b2RlICcuJyBJREVOVAorICB8IE1lbWJlckV4cHJOb0JGX05vTm9kZSAnLicgSWRlbnRpZmllck5h
bWUKICAgfCBORVcgTWVtYmVyRXhwcl9Ob05vZGUgQXJndW1lbnRzX05vTm9kZQogOwogCkBAIC0x
MzMzLDE0ICsxMzcxLDE0IEBAIENhbGxFeHByX05vTm9kZToKICAgICBNZW1iZXJFeHByX05vTm9k
ZSBBcmd1bWVudHNfTm9Ob2RlCiAgIHwgQ2FsbEV4cHJfTm9Ob2RlIEFyZ3VtZW50c19Ob05vZGUK
ICAgfCBDYWxsRXhwcl9Ob05vZGUgJ1snIEV4cHJfTm9Ob2RlICddJwotICB8IENhbGxFeHByX05v
Tm9kZSAnLicgSURFTlQKKyAgfCBDYWxsRXhwcl9Ob05vZGUgJy4nIElkZW50aWZpZXJOYW1lCiA7
CiAKIENhbGxFeHByTm9CRl9Ob05vZGU6CiAgICAgTWVtYmVyRXhwck5vQkZfTm9Ob2RlIEFyZ3Vt
ZW50c19Ob05vZGUKICAgfCBDYWxsRXhwck5vQkZfTm9Ob2RlIEFyZ3VtZW50c19Ob05vZGUKICAg
fCBDYWxsRXhwck5vQkZfTm9Ob2RlICdbJyBFeHByX05vTm9kZSAnXScKLSAgfCBDYWxsRXhwck5v
QkZfTm9Ob2RlICcuJyBJREVOVAorICB8IENhbGxFeHByTm9CRl9Ob05vZGUgJy4nIElkZW50aWZp
ZXJOYW1lCiA7CiAKIEFyZ3VtZW50c19Ob05vZGU6CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pz
L3Jlc2VydmVkLXdvcmRzLWFzLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvanMvcmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydGllcy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc2VydmVkLXdvcmRz
LWFzLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBA
CitUaGlzIGZpbGUgY2hlY2tzIHRoYXQga2V5d29yZHMgY2FuIGJlIHVzZWQgYXMgbGl0ZXJhbCAo
dW5xdW90ZWQpIHByb3BlcnR5IGtleXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdicmVhaycpIGlzIHRydWUKK1BBU1MgY2Fu
VXNlQXNMaXRlcmFsUHJvcGVydHkoJ2Nhc2UnKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJh
bFByb3BlcnR5KCdjYXRjaCcpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHko
J2NsYXNzJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnY29uc3QnKSBp
cyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdjb250aW51ZScpIGlzIHRydWUK
K1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ2RlYnVnZ2VyJykgaXMgdHJ1ZQorUEFTUyBj
YW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnZGVmYXVsdCcpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNM
aXRlcmFsUHJvcGVydHkoJ2RlbGV0ZScpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJv
cGVydHkoJ2RvJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnZWxzZScp
IGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ2VudW0nKSBpcyB0cnVlCitQ
QVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdleHBvcnQnKSBpcyB0cnVlCitQQVNTIGNhblVz
ZUFzTGl0ZXJhbFByb3BlcnR5KCdleHRlbmRzJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVy
YWxQcm9wZXJ0eSgnZmFsc2UnKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5
KCdmaW5hbGx5JykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnZm9yJykg
aXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnZnVuY3Rpb24nKSBpcyB0cnVl
CitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdpZicpIGlzIHRydWUKK1BBU1MgY2FuVXNl
QXNMaXRlcmFsUHJvcGVydHkoJ2ltcG9ydCcpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFs
UHJvcGVydHkoJ2luJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnaW5z
dGFuY2VvZicpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ25ldycpIGlz
IHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ251bGwnKSBpcyB0cnVlCitQQVNT
IGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdyZXR1cm4nKSBpcyB0cnVlCitQQVNTIGNhblVzZUFz
TGl0ZXJhbFByb3BlcnR5KCdzdXBlcicpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJv
cGVydHkoJ3N3aXRjaCcpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ3Ro
aXMnKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCd0aHJvdycpIGlzIHRy
dWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ3RydWUnKSBpcyB0cnVlCitQQVNTIGNh
blVzZUFzTGl0ZXJhbFByb3BlcnR5KCd0cnknKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJh
bFByb3BlcnR5KCd0eXBlb2YnKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5
KCd2YXInKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCd2b2lkJykgaXMg
dHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnd2hpbGUnKSBpcyB0cnVlCitQQVNT
IGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCd3aXRoJykgaXMgdHJ1ZQorCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9qcy9yZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0aWVzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0aWVzLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc2VydmVkLXdvcmRzLWFzLXByb3Bl
cnRpZXMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9yZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0aWVzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0
LXRlc3RzL3Jlc2VydmVkLXdvcmRzLWFzLXByb3BlcnRpZXMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvcmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydGll
cy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3Jl
c2VydmVkLXdvcmRzLWFzLXByb3BlcnRpZXMuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMg
QEAKK2Z1bmN0aW9uIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KHdvcmQpCit7CisgICAgdHJ5IHsK
KyAgICAgICAgZXZhbCgidmFyIHggPSB7ICIgKyB3b3JkICsgIiA6IDEwMSB9IDsiKTsKKyAgICAg
ICAgZXZhbCgidmFyIHBhc3NlZCA9ICh4LiIgKyB3b3JkICsgIiA9PSAxMDEpOyIpCisgICAgICAg
IHJldHVybiBwYXNzZWQ7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorfQorCit2YXIgcmVzZXJ2ZWRXb3JkcyA9IFsKKyAgICAiYnJlYWsiLAorICAgICJj
YXNlIiwKKyAgICAiY2F0Y2giLAorICAgICJjbGFzcyIsCisgICAgImNvbnN0IiwKKyAgICAiY29u
dGludWUiLAorICAgICJkZWJ1Z2dlciIsCisgICAgImRlZmF1bHQiLAorICAgICJkZWxldGUiLAor
ICAgICJkbyIsCisgICAgImVsc2UiLAorICAgICJlbnVtIiwKKyAgICAiZXhwb3J0IiwKKyAgICAi
ZXh0ZW5kcyIsCisgICAgImZhbHNlIiwKKyAgICAiZmluYWxseSIsCisgICAgImZvciIsCisgICAg
ImZ1bmN0aW9uIiwKKyAgICAiaWYiLAorICAgICJpbXBvcnQiLAorICAgICJpbiIsCisgICAgImlu
c3RhbmNlb2YiLAorICAgICJuZXciLAorICAgICJudWxsIiwKKyAgICAicmV0dXJuIiwKKyAgICAi
c3VwZXIiLAorICAgICJzd2l0Y2giLAorICAgICJ0aGlzIiwKKyAgICAidGhyb3ciLAorICAgICJ0
cnVlIiwKKyAgICAidHJ5IiwKKyAgICAidHlwZW9mIiwKKyAgICAidmFyIiwKKyAgICAidm9pZCIs
CisgICAgIndoaWxlIiwKKyAgICAid2l0aCIKK107CisKK2Rlc2NyaXB0aW9uKAorIlRoaXMgZmls
ZSBjaGVja3MgdGhhdCBrZXl3b3JkcyBjYW4gYmUgdXNlZCBhcyBsaXRlcmFsICh1bnF1b3RlZCkg
cHJvcGVydHkga2V5cy4iCispOworCityZXNlcnZlZFdvcmRzLnNvcnQoKTsKKworZm9yICh2YXIg
cCBpbiByZXNlcnZlZFdvcmRzKSB7CisgICAgc2hvdWxkQmVUcnVlKCJjYW5Vc2VBc0xpdGVyYWxQ
cm9wZXJ0eSgnIiArIHJlc2VydmVkV29yZHNbcF0gKyAiJykiKTsKK30KKworZGVidWcoIiIpOwor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45976</attachid>
            <date>2010-01-06 11:56:50 -0800</date>
            <delta_ts>2010-01-08 13:25:59 -0800</delta_ts>
            <desc>attempted patch with ChangeLog entries this time</desc>
            <filename>32722.patch</filename>
            <type>text/plain</type>
            <size>13849</size>
            <attacher name="Patrick Mueller">pmuellr</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUyODU4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDEtMDYgIFBhdHJpY2sg
TXVlbGxlciAgPFBhdHJpY2tfTXVlbGxlckB1cy5pYm0uY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IFJlc2VydmVkIFdvcmRzIGluIFBy
b3BlcnR5IEFjY2Vzc29ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzI3MjIKKworICAgICAgICAqIHBhcnNlci9HcmFtbWFyLnk6CisKIDIwMTAtMDEt
MDYgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAg
IFdpbmRvd3MgYnVpbGQgZml4IHBhcnQgSS4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3BhcnNlci9H
cmFtbWFyLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcGFyc2VyL0dyYW1tYXIueQko
cmV2aXNpb24gNTI3NTEpCisrKyBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvR3JhbW1hci55CSh3b3Jr
aW5nIGNvcHkpCkBAIC02LDYgKzYsNyBAQAogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhh
cnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmln
aHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqICBDb3B5cmlnaHQg
KEMpIElCTSBDb3JwLiAyMDA5ICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYwpAQCAtMTkyLDE1ICsxOTMsMTUgQEAgc3RhdGljIGlubGluZSB2b2lkIHNldEV4Y2VwdGlv
bkxvY2F0aW9uKAogJXN0YXJ0IFByb2dyYW0KIAogLyogbGl0ZXJhbHMgKi8KLSV0b2tlbiBOVUxM
VE9LRU4gVFJVRVRPS0VOIEZBTFNFVE9LRU4KKyV0b2tlbiA8aWRlbnQ+IE5VTExUT0tFTiBUUlVF
VE9LRU4gRkFMU0VUT0tFTgogCiAvKiBrZXl3b3JkcyAqLwotJXRva2VuIEJSRUFLIENBU0UgREVG
QVVMVCBGT1IgTkVXIFZBUiBDT05TVFRPS0VOIENPTlRJTlVFCi0ldG9rZW4gRlVOQ1RJT04gUkVU
VVJOIFZPSURUT0tFTiBERUxFVEVUT0tFTgotJXRva2VuIElGIFRISVNUT0tFTiBETyBXSElMRSBJ
TlRPS0VOIElOU1RBTkNFT0YgVFlQRU9GCi0ldG9rZW4gU1dJVENIIFdJVEggUkVTRVJWRUQKLSV0
b2tlbiBUSFJPVyBUUlkgQ0FUQ0ggRklOQUxMWQotJXRva2VuIERFQlVHR0VSCisldG9rZW4gPGlk
ZW50PiBCUkVBSyBDQVNFIERFRkFVTFQgRk9SIE5FVyBWQVIgQ09OU1RUT0tFTiBDT05USU5VRQor
JXRva2VuIDxpZGVudD4gRlVOQ1RJT04gUkVUVVJOIFZPSURUT0tFTiBERUxFVEVUT0tFTgorJXRv
a2VuIDxpZGVudD4gSUYgVEhJU1RPS0VOIERPIFdISUxFIElOVE9LRU4gSU5TVEFOQ0VPRiBUWVBF
T0YKKyV0b2tlbiA8aWRlbnQ+IFNXSVRDSCBXSVRIIFJFU0VSVkVECisldG9rZW4gPGlkZW50PiBU
SFJPVyBUUlkgQ0FUQ0ggRklOQUxMWQorJXRva2VuIDxpZGVudD4gREVCVUdHRVIKIAogLyogZ2l2
ZSBhbiBpZiB3aXRob3V0IGFuIGVsc2UgaGlnaGVyIHByZWNlZGVuY2UgdGhhbiBhbiBlbHNlIHRv
IHJlc29sdmUgdGhlIGFtYmlndWl0eSAqLwogJW5vbmFzc29jIElGX1dJVEhPVVRfRUxTRQpAQCAt
MjgzLDYgKzI4NCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRFeGNlcHRpb25Mb2NhdGlvbigK
ICV0eXBlIDxlbGVtZW50TGlzdD4gICAgIEVsZW1lbnRMaXN0CiAldHlwZSA8cHJvcGVydHlOb2Rl
PiAgICBQcm9wZXJ0eQogJXR5cGUgPHByb3BlcnR5TGlzdD4gICAgUHJvcGVydHlMaXN0CisKKyV0
eXBlIDxpZGVudD4gICAgICAgICAgIElkZW50aWZpZXJOYW1lc3ZuLWRpZmYKICUlCiAKIC8vIEZJ
WE1FOiBUaGVyZSBhcmUgY3VycmVudGx5IHR3byB2ZXJzaW9ucyBvZiB0aGUgZ3JhbW1hciBpbiB0
aGlzIGZpbGUsIHRoZSBub3JtYWwgb25lLCBhbmQgdGhlIE5vTm9kZXMgdmVyc2lvbiB1c2VkIGZv
cgpAQCAtMzE5LDggKzMyMiw0MyBAQCBMaXRlcmFsOgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KIDsKIAorSWRlbnRpZmllck5hbWU6CisgICAgSURFTlQKKyAgfCBO
VUxMVE9LRU4KKyAgfCBUUlVFVE9LRU4KKyAgfCBGQUxTRVRPS0VOCisgIHwgQlJFQUsKKyAgfCBD
QVNFCisgIHwgQ0FUQ0gKKyAgfCBDT05TVFRPS0VOCisgIHwgREVGQVVMVAorICB8IEZJTkFMTFkK
KyAgfCBGT1IKKyAgfCBJTlNUQU5DRU9GCisgIHwgTkVXCisgIHwgVkFSCisgIHwgQ09OVElOVUUK
KyAgfCBGVU5DVElPTgorICB8IFJFVFVSTgorICB8IFZPSURUT0tFTgorICB8IERFTEVURVRPS0VO
CisgIHwgSUYKKyAgfCBUSElTVE9LRU4KKyAgfCBETworICB8IFdISUxFCisgIHwgRUxTRQorICB8
IElOVE9LRU4KKyAgfCBTV0lUQ0gKKyAgfCBUSFJPVworICB8IFRSWQorICB8IFRZUEVPRgorICB8
IFdJVEgKKyAgfCBERUJVR0dFUgorICB8IFJFU0VSVkVECis7CisKIFByb3BlcnR5OgotICAgIElE
RU5UICc6JyBBc3NpZ25tZW50RXhwciAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlSW5mbzxQ
cm9wZXJ0eU5vZGUqPihuZXcgKEdMT0JBTF9EQVRBKSBQcm9wZXJ0eU5vZGUoR0xPQkFMX0RBVEEs
ICokMSwgJDMubV9ub2RlLCBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KSwgJDMubV9mZWF0dXJlcywg
JDMubV9udW1Db25zdGFudHMpOyB9CisgICAgSWRlbnRpZmllck5hbWUgJzonIEFzc2lnbm1lbnRF
eHByICAgeyAkJCA9IGNyZWF0ZU5vZGVJbmZvPFByb3BlcnR5Tm9kZSo+KG5ldyAoR0xPQkFMX0RB
VEEpIFByb3BlcnR5Tm9kZShHTE9CQUxfREFUQSwgKiQxLCAkMy5tX25vZGUsIFByb3BlcnR5Tm9k
ZTo6Q29uc3RhbnQpLCAkMy5tX2ZlYXR1cmVzLCAkMy5tX251bUNvbnN0YW50cyk7IH0KICAgfCBT
VFJJTkcgJzonIEFzc2lnbm1lbnRFeHByICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUluZm88
UHJvcGVydHlOb2RlKj4obmV3IChHTE9CQUxfREFUQSkgUHJvcGVydHlOb2RlKEdMT0JBTF9EQVRB
LCAqJDEsICQzLm1fbm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCksICQzLm1fZmVhdHVyZXMs
ICQzLm1fbnVtQ29uc3RhbnRzKTsgfQogICB8IE5VTUJFUiAnOicgQXNzaWdubWVudEV4cHIgICAg
ICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlSW5mbzxQcm9wZXJ0eU5vZGUqPihuZXcgKEdMT0JBTF9E
QVRBKSBQcm9wZXJ0eU5vZGUoR0xPQkFMX0RBVEEsICQxLCAkMy5tX25vZGUsIFByb3BlcnR5Tm9k
ZTo6Q29uc3RhbnQpLCAkMy5tX2ZlYXR1cmVzLCAkMy5tX251bUNvbnN0YW50cyk7IH0KICAgfCBJ
REVOVCBJREVOVCAnKCcgJyknIE9QRU5CUkFDRSBGdW5jdGlvbkJvZHkgQ0xPU0VCUkFDRSAgICB7
ICQkID0gY3JlYXRlTm9kZUluZm88UHJvcGVydHlOb2RlKj4obWFrZUdldHRlck9yU2V0dGVyUHJv
cGVydHlOb2RlKEdMT0JBTF9EQVRBLCAqJDEsICokMiwgMCwgJDYsIEdMT0JBTF9EQVRBLT5sZXhl
ci0+c291cmNlQ29kZSgkNSwgJDcsIEA1LmZpcnN0X2xpbmUpKSwgQ2xvc3VyZUZlYXR1cmUsIDAp
OyBzZXRTdGF0ZW1lbnRMb2NhdGlvbigkNiwgQDUsIEA3KTsgaWYgKCEkJC5tX25vZGUpIFlZQUJP
UlQ7IH0KQEAgLTM5Nyw3ICs0MzUsNyBAQCBNZW1iZXJFeHByOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgQDEuZmly
c3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDQubGFzdF9jb2x1bW4pOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlSW5mbzxFeHByZXNz
aW9uTm9kZSo+KG5vZGUsICQxLm1fZmVhdHVyZXMgfCAkMy5tX2ZlYXR1cmVzLCAkMS5tX251bUNv
bnN0YW50cyArICQzLm1fbnVtQ29uc3RhbnRzKTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICB8IE1lbWJlckV4cHIgJy4nIElERU5UICAgICAgICAgICAgICAg
IHsgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChHTE9CQUxfREFUQSkgRG90QWNjZXNzb3JO
b2RlKEdMT0JBTF9EQVRBLCAkMS5tX25vZGUsICokMyk7CisgIHwgTWVtYmVyRXhwciAnLicgSWRl
bnRpZmllck5hbWUgICAgICAgeyBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9E
QVRBKSBEb3RBY2Nlc3Nvck5vZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwgKiQzKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9u
KG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4sIEAzLmxhc3RfY29sdW1uKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9k
ZUluZm88RXhwcmVzc2lvbk5vZGUqPihub2RlLCAkMS5tX2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0
YW50cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtNDEz
LDcgKzQ1MSw3IEBAIE1lbWJlckV4cHJOb0JGOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgQDEuZmlyc3RfY29sdW1u
LCBAMS5sYXN0X2NvbHVtbiwgQDQubGFzdF9jb2x1bW4pOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlSW5mbzxFeHByZXNzaW9uTm9kZSo+
KG5vZGUsICQxLm1fZmVhdHVyZXMgfCAkMy5tX2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0YW50cyAr
ICQzLm1fbnVtQ29uc3RhbnRzKTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICB8IE1lbWJlckV4cHJOb0JGICcuJyBJREVOVCAgICAgICAgICAgIHsgRG90QWNj
ZXNzb3JOb2RlKiBub2RlID0gbmV3IChHTE9CQUxfREFUQSkgRG90QWNjZXNzb3JOb2RlKEdMT0JB
TF9EQVRBLCAkMS5tX25vZGUsICokMyk7CisgIHwgTWVtYmVyRXhwck5vQkYgJy4nIElkZW50aWZp
ZXJOYW1lICAgeyBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBEb3RB
Y2Nlc3Nvck5vZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwgKiQzKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIEAx
LmZpcnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4sIEAzLmxhc3RfY29sdW1uKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZUluZm88RXhw
cmVzc2lvbk5vZGUqPihub2RlLCAkMS5tX2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0YW50cyk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtNDQ2LDcgKzQ4NCw3
IEBAIENhbGxFeHByOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVt
biwgQDQubGFzdF9jb2x1bW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJCQgPSBjcmVhdGVOb2RlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5vZGUsICQxLm1fZmVh
dHVyZXMgfCAkMy5tX2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0YW50cyArICQzLm1fbnVtQ29uc3Rh
bnRzKTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICB8IENh
bGxFeHByICcuJyBJREVOVCAgICAgICAgICAgICAgICAgIHsgRG90QWNjZXNzb3JOb2RlKiBub2Rl
ID0gbmV3IChHTE9CQUxfREFUQSkgRG90QWNjZXNzb3JOb2RlKEdMT0JBTF9EQVRBLCAkMS5tX25v
ZGUsICokMyk7CisgIHwgQ2FsbEV4cHIgJy4nIElkZW50aWZpZXJOYW1lICAgICAgICAgeyBEb3RB
Y2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBEb3RBY2Nlc3Nvck5vZGUoR0xP
QkFMX0RBVEEsICQxLm1fbm9kZSwgKiQzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwg
QDEubGFzdF9jb2x1bW4sIEAzLmxhc3RfY29sdW1uKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZUluZm88RXhwcmVzc2lvbk5vZGUqPihu
b2RlLCAkMS5tX2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0YW50cyk7IH0KIDsKQEAgLTQ1OCw3ICs0
OTYsNyBAQCBDYWxsRXhwck5vQkY6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAxLmxh
c3RfY29sdW1uLCBANC5sYXN0X2NvbHVtbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAkJCA9IGNyZWF0ZU5vZGVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obm9kZSwg
JDEubV9mZWF0dXJlcyB8ICQzLm1fZmVhdHVyZXMsICQxLm1fbnVtQ29uc3RhbnRzICsgJDMubV9u
dW1Db25zdGFudHMpOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gIHwgQ2FsbEV4cHJOb0JGICcuJyBJREVOVCAgICAgICAgICAgICAgeyBEb3RBY2Nlc3Nvck5v
ZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBEb3RBY2Nlc3Nvck5vZGUoR0xPQkFMX0RBVEEs
ICQxLm1fbm9kZSwgKiQzKTsKKyAgfCBDYWxsRXhwck5vQkYgJy4nIElkZW50aWZpZXJOYW1lICAg
ICB7IERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAoR0xPQkFMX0RBVEEpIERvdEFjY2Vzc29y
Tm9kZShHTE9CQUxfREFUQSwgJDEubV9ub2RlLCAqJDMpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgQDEuZmlyc3Rf
Y29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDMubGFzdF9jb2x1bW4pOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlSW5mbzxFeHByZXNzaW9u
Tm9kZSo+KG5vZGUsICQxLm1fZmVhdHVyZXMsICQxLm1fbnVtQ29uc3RhbnRzKTsgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTI1NSw3ICsxMjkzLDcgQEAg
TGl0ZXJhbF9Ob05vZGU6CiA7CiAKIFByb3BlcnR5X05vTm9kZToKLSAgICBJREVOVCAnOicgQXNz
aWdubWVudEV4cHJfTm9Ob2RlIHsgfQorICAgIElkZW50aWZpZXJOYW1lICc6JyBBc3NpZ25tZW50
RXhwcl9Ob05vZGUgeyB9CiAgIHwgU1RSSU5HICc6JyBBc3NpZ25tZW50RXhwcl9Ob05vZGUgeyB9
CiAgIHwgTlVNQkVSICc6JyBBc3NpZ25tZW50RXhwcl9Ob05vZGUgeyB9CiAgIHwgSURFTlQgSURF
TlQgJygnICcpJyBPUEVOQlJBQ0UgRnVuY3Rpb25Cb2R5X05vTm9kZSBDTE9TRUJSQUNFIHsgaWYg
KCokMSAhPSAiZ2V0IiAmJiAqJDEgIT0gInNldCIpIFlZQUJPUlQ7IH0KQEAgLTEzMDgsMTQgKzEz
NDYsMTQgQEAgTWVtYmVyRXhwcl9Ob05vZGU6CiAgICAgUHJpbWFyeUV4cHJfTm9Ob2RlCiAgIHwg
RnVuY3Rpb25FeHByX05vTm9kZQogICB8IE1lbWJlckV4cHJfTm9Ob2RlICdbJyBFeHByX05vTm9k
ZSAnXScKLSAgfCBNZW1iZXJFeHByX05vTm9kZSAnLicgSURFTlQKKyAgfCBNZW1iZXJFeHByX05v
Tm9kZSAnLicgSWRlbnRpZmllck5hbWUKICAgfCBORVcgTWVtYmVyRXhwcl9Ob05vZGUgQXJndW1l
bnRzX05vTm9kZQogOwogCiBNZW1iZXJFeHByTm9CRl9Ob05vZGU6CiAgICAgUHJpbWFyeUV4cHJO
b0JyYWNlX05vTm9kZQogICB8IE1lbWJlckV4cHJOb0JGX05vTm9kZSAnWycgRXhwcl9Ob05vZGUg
J10nCi0gIHwgTWVtYmVyRXhwck5vQkZfTm9Ob2RlICcuJyBJREVOVAorICB8IE1lbWJlckV4cHJO
b0JGX05vTm9kZSAnLicgSWRlbnRpZmllck5hbWUKICAgfCBORVcgTWVtYmVyRXhwcl9Ob05vZGUg
QXJndW1lbnRzX05vTm9kZQogOwogCkBAIC0xMzMzLDE0ICsxMzcxLDE0IEBAIENhbGxFeHByX05v
Tm9kZToKICAgICBNZW1iZXJFeHByX05vTm9kZSBBcmd1bWVudHNfTm9Ob2RlCiAgIHwgQ2FsbEV4
cHJfTm9Ob2RlIEFyZ3VtZW50c19Ob05vZGUKICAgfCBDYWxsRXhwcl9Ob05vZGUgJ1snIEV4cHJf
Tm9Ob2RlICddJwotICB8IENhbGxFeHByX05vTm9kZSAnLicgSURFTlQKKyAgfCBDYWxsRXhwcl9O
b05vZGUgJy4nIElkZW50aWZpZXJOYW1lCiA7CiAKIENhbGxFeHByTm9CRl9Ob05vZGU6CiAgICAg
TWVtYmVyRXhwck5vQkZfTm9Ob2RlIEFyZ3VtZW50c19Ob05vZGUKICAgfCBDYWxsRXhwck5vQkZf
Tm9Ob2RlIEFyZ3VtZW50c19Ob05vZGUKICAgfCBDYWxsRXhwck5vQkZfTm9Ob2RlICdbJyBFeHBy
X05vTm9kZSAnXScKLSAgfCBDYWxsRXhwck5vQkZfTm9Ob2RlICcuJyBJREVOVAorICB8IENhbGxF
eHByTm9CRl9Ob05vZGUgJy4nIElkZW50aWZpZXJOYW1lCiA7CiAKIEFyZ3VtZW50c19Ob05vZGU6
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA1Mjg1OCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEwLTAxLTA2ICBQYXRyaWNrIE11ZWxsZXIg
IDxQYXRyaWNrX011ZWxsZXJAdXMuaWJtLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBSZXNlcnZlZCBXb3JkcyBpbiBQcm9wZXJ0eSBB
Y2Nlc3NvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMyNzIyCisKKyAgICAgICAgKiBmYXN0L2pzL3Jlc2VydmVkLXdvcmRzLWFzLXByb3BlcnRpZXMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3Jlc2VydmVkLXdvcmRzLWFz
LXByb3BlcnRpZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9zY3JpcHQtdGVzdHMv
cmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydGllcy5qczogQWRkZWQuCisgICAgICAgIChjYW5Vc2VB
c0xpdGVyYWxQcm9wZXJ0eSk6CisKIDIwMTAtMDEtMDUgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0aWVzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc2VydmVkLXdvcmRz
LWFzLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9qcy9yZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0NiBAQAorVGhpcyBmaWxlIGNoZWNrcyB0aGF0IGtleXdvcmRzIGNh
biBiZSB1c2VkIGFzIGxpdGVyYWwgKHVucXVvdGVkKSBwcm9wZXJ0eSBrZXlzLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnYnJl
YWsnKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdjYXNlJykgaXMgdHJ1
ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnY2F0Y2gnKSBpcyB0cnVlCitQQVNTIGNh
blVzZUFzTGl0ZXJhbFByb3BlcnR5KCdjbGFzcycpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRl
cmFsUHJvcGVydHkoJ2NvbnN0JykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0
eSgnY29udGludWUnKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdkZWJ1
Z2dlcicpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ2RlZmF1bHQnKSBp
cyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdkZWxldGUnKSBpcyB0cnVlCitQ
QVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdkbycpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNM
aXRlcmFsUHJvcGVydHkoJ2Vsc2UnKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3Bl
cnR5KCdlbnVtJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnZXhwb3J0
JykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnZXh0ZW5kcycpIGlzIHRy
dWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ2ZhbHNlJykgaXMgdHJ1ZQorUEFTUyBj
YW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnZmluYWxseScpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNM
aXRlcmFsUHJvcGVydHkoJ2ZvcicpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVy
dHkoJ2Z1bmN0aW9uJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnaWYn
KSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdpbXBvcnQnKSBpcyB0cnVl
CitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdpbicpIGlzIHRydWUKK1BBU1MgY2FuVXNl
QXNMaXRlcmFsUHJvcGVydHkoJ2luc3RhbmNlb2YnKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0
ZXJhbFByb3BlcnR5KCduZXcnKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5
KCdudWxsJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgncmV0dXJuJykg
aXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnc3VwZXInKSBpcyB0cnVlCitQ
QVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdzd2l0Y2gnKSBpcyB0cnVlCitQQVNTIGNhblVz
ZUFzTGl0ZXJhbFByb3BlcnR5KCd0aGlzJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQ
cm9wZXJ0eSgndGhyb3cnKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCd0
cnVlJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgndHJ5JykgaXMgdHJ1
ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgndHlwZW9mJykgaXMgdHJ1ZQorUEFTUyBj
YW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgndmFyJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVy
YWxQcm9wZXJ0eSgndm9pZCcpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHko
J3doaWxlJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnd2l0aCcpIGlz
IHRydWUKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydGll
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVzZXJ2ZWQtd29yZHMt
YXMtcHJvcGVydGllcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9y
ZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0aWVzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcmVzZXJ2ZWQt
d29yZHMtYXMtcHJvcGVydGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9yZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0aWVz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3Jlc2Vy
dmVkLXdvcmRzLWFzLXByb3BlcnRpZXMuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2pzL3NjcmlwdC10ZXN0cy9yZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0aWVzLmpzCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACitmdW5jdGlvbiBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0
eSh3b3JkKQoreworICAgIHRyeSB7CisgICAgICAgIGV2YWwoInZhciB4ID0geyAiICsgd29yZCAr
ICIgOiAxMDEgfSA7Iik7CisgICAgICAgIGV2YWwoInZhciBwYXNzZWQgPSAoeC4iICsgd29yZCAr
ICIgPT0gMTAxKTsiKQorICAgICAgICByZXR1cm4gcGFzc2VkOworICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwordmFyIHJlc2VydmVkV29yZHMgPSBb
CisgICAgImJyZWFrIiwKKyAgICAiY2FzZSIsCisgICAgImNhdGNoIiwKKyAgICAiY2xhc3MiLAor
ICAgICJjb25zdCIsCisgICAgImNvbnRpbnVlIiwKKyAgICAiZGVidWdnZXIiLAorICAgICJkZWZh
dWx0IiwKKyAgICAiZGVsZXRlIiwKKyAgICAiZG8iLAorICAgICJlbHNlIiwKKyAgICAiZW51bSIs
CisgICAgImV4cG9ydCIsCisgICAgImV4dGVuZHMiLAorICAgICJmYWxzZSIsCisgICAgImZpbmFs
bHkiLAorICAgICJmb3IiLAorICAgICJmdW5jdGlvbiIsCisgICAgImlmIiwKKyAgICAiaW1wb3J0
IiwKKyAgICAiaW4iLAorICAgICJpbnN0YW5jZW9mIiwKKyAgICAibmV3IiwKKyAgICAibnVsbCIs
CisgICAgInJldHVybiIsCisgICAgInN1cGVyIiwKKyAgICAic3dpdGNoIiwKKyAgICAidGhpcyIs
CisgICAgInRocm93IiwKKyAgICAidHJ1ZSIsCisgICAgInRyeSIsCisgICAgInR5cGVvZiIsCisg
ICAgInZhciIsCisgICAgInZvaWQiLAorICAgICJ3aGlsZSIsCisgICAgIndpdGgiCitdOworCitk
ZXNjcmlwdGlvbigKKyJUaGlzIGZpbGUgY2hlY2tzIHRoYXQga2V5d29yZHMgY2FuIGJlIHVzZWQg
YXMgbGl0ZXJhbCAodW5xdW90ZWQpIHByb3BlcnR5IGtleXMuIgorKTsKKworcmVzZXJ2ZWRXb3Jk
cy5zb3J0KCk7CisKK2ZvciAodmFyIHAgaW4gcmVzZXJ2ZWRXb3JkcykgeworICAgIHNob3VsZEJl
VHJ1ZSgiY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJyIgKyByZXNlcnZlZFdvcmRzW3BdICsgIicp
Iik7Cit9CisKK2RlYnVnKCIiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>
<flag name="review"
          id="28164"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46153</attachid>
            <date>2010-01-08 13:25:59 -0800</date>
            <delta_ts>2010-01-13 14:13:20 -0800</delta_ts>
            <desc>patch so far</desc>
            <filename>32722.patch</filename>
            <type>text/plain</type>
            <size>14855</size>
            <attacher name="Patrick Mueller">pmuellr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBkZTlkNTUxLi42MmQ5YjljIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTAtMDEtMDggIFBhdHJpY2sgTXVlbGxlciAgPFBhdHJpY2tfTXVlbGxlckB1cy5pYm0u
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFs
bG93IFJlc2VydmVkIFdvcmRzIGluIFByb3BlcnR5IEFjY2Vzc29ycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI3MjIKKworICAgICAgICAqIHBhcnNl
ci9HcmFtbWFyLnk6CisKIDIwMTAtMDEtMDggIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3Jn
PgogCiAgICAgICAgIE5vIHJldmlldywgcm9sbGluZyBvdXQgcjUyOTgzLgpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0dyYW1tYXIueSBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9H
cmFtbWFyLnkKaW5kZXggNzE3YTI2Ni4uZjU3OGUzNyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0dyYW1tYXIueQorKysgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvR3JhbW1hci55
CkBAIC02LDYgKzYsNyBAQAogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRl
biAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIw
MDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqICBDb3B5cmlnaHQgKEMpIElCTSBD
b3JwLiAyMDEwICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAt
MTkyLDE1ICsxOTMsMTUgQEAgc3RhdGljIGlubGluZSB2b2lkIHNldEV4Y2VwdGlvbkxvY2F0aW9u
KFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCB1bnNpZ25lZAogJXN0YXJ0IFByb2dyYW0K
IAogLyogbGl0ZXJhbHMgKi8KLSV0b2tlbiBOVUxMVE9LRU4gVFJVRVRPS0VOIEZBTFNFVE9LRU4K
KyV0b2tlbiA8aWRlbnQ+IE5VTExUT0tFTiBUUlVFVE9LRU4gRkFMU0VUT0tFTgogCiAvKiBrZXl3
b3JkcyAqLwotJXRva2VuIEJSRUFLIENBU0UgREVGQVVMVCBGT1IgTkVXIFZBUiBDT05TVFRPS0VO
IENPTlRJTlVFCi0ldG9rZW4gRlVOQ1RJT04gUkVUVVJOIFZPSURUT0tFTiBERUxFVEVUT0tFTgot
JXRva2VuIElGIFRISVNUT0tFTiBETyBXSElMRSBJTlRPS0VOIElOU1RBTkNFT0YgVFlQRU9GCi0l
dG9rZW4gU1dJVENIIFdJVEggUkVTRVJWRUQKLSV0b2tlbiBUSFJPVyBUUlkgQ0FUQ0ggRklOQUxM
WQotJXRva2VuIERFQlVHR0VSCisldG9rZW4gPGlkZW50PiBCUkVBSyBDQVNFIERFRkFVTFQgRUxT
RSBGT1IgTkVXIFZBUiBDT05TVFRPS0VOIENPTlRJTlVFCisldG9rZW4gPGlkZW50PiBGVU5DVElP
TiBSRVRVUk4gVk9JRFRPS0VOIERFTEVURVRPS0VOCisldG9rZW4gPGlkZW50PiBJRiBUSElTVE9L
RU4gRE8gV0hJTEUgSU5UT0tFTiBJTlNUQU5DRU9GIFRZUEVPRgorJXRva2VuIDxpZGVudD4gU1dJ
VENIIFdJVEggUkVTRVJWRUQKKyV0b2tlbiA8aWRlbnQ+IFRIUk9XIFRSWSBDQVRDSCBGSU5BTExZ
CisldG9rZW4gPGlkZW50PiBERUJVR0dFUgogCiAvKiBnaXZlIGFuIGlmIHdpdGhvdXQgYW4gZWxz
ZSBoaWdoZXIgcHJlY2VkZW5jZSB0aGFuIGFuIGVsc2UgdG8gcmVzb2x2ZSB0aGUgYW1iaWd1aXR5
ICovCiAlbm9uYXNzb2MgSUZfV0lUSE9VVF9FTFNFCkBAIC0yODMsNiArMjg0LDggQEAgc3RhdGlj
IGlubGluZSB2b2lkIHNldEV4Y2VwdGlvbkxvY2F0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRh
KiBub2RlLCB1bnNpZ25lZAogJXR5cGUgPGVsZW1lbnRMaXN0PiAgICAgRWxlbWVudExpc3QKICV0
eXBlIDxwcm9wZXJ0eU5vZGU+ICAgIFByb3BlcnR5CiAldHlwZSA8cHJvcGVydHlMaXN0PiAgICBQ
cm9wZXJ0eUxpc3QKKworJXR5cGUgPGlkZW50PiAgICAgICAgICAgSWRlbnRpZmllck9yUmVzZXJ2
ZWQKICUlCiAKIC8vIEZJWE1FOiBUaGVyZSBhcmUgY3VycmVudGx5IHR3byB2ZXJzaW9ucyBvZiB0
aGUgZ3JhbW1hciBpbiB0aGlzIGZpbGUsIHRoZSBub3JtYWwgb25lLCBhbmQgdGhlIE5vTm9kZXMg
dmVyc2lvbiB1c2VkIGZvcgpAQCAtMzE5LDggKzMyMiw0NCBAQCBMaXRlcmFsOgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KIDsKIAorSWRlbnRpZmllck9yUmVzZXJ2
ZWQ6CisgICAgSURFTlQKKyAgfCBOVUxMVE9LRU4KKyAgfCBUUlVFVE9LRU4KKyAgfCBGQUxTRVRP
S0VOCisgIHwgQlJFQUsKKyAgfCBDQVNFCisgIHwgQ0FUQ0gKKyAgfCBDT05TVFRPS0VOCisgIHwg
REVGQVVMVAorICB8IEZJTkFMTFkKKyAgfCBGT1IKKyAgfCBJTlNUQU5DRU9GCisgIHwgTkVXCisg
IHwgVkFSCisgIHwgQ09OVElOVUUKKyAgfCBGVU5DVElPTgorICB8IFJFVFVSTgorICB8IFZPSURU
T0tFTgorICB8IERFTEVURVRPS0VOCisgIHwgSUYKKyAgfCBUSElTVE9LRU4KKyAgfCBETworICB8
IFdISUxFCisgIHwgRUxTRQorICB8IElOVE9LRU4KKyAgfCBTV0lUQ0gKKyAgfCBUSFJPVworICB8
IFRSWQorICB8IFRZUEVPRgorICB8IFdJVEgKKyAgfCBERUJVR0dFUgorICB8IFJFU0VSVkVECis7
CisKIFByb3BlcnR5OgotICAgIElERU5UICc6JyBBc3NpZ25tZW50RXhwciAgICAgICAgICAgIHsg
JCQgPSBjcmVhdGVOb2RlSW5mbzxQcm9wZXJ0eU5vZGUqPihuZXcgKEdMT0JBTF9EQVRBKSBQcm9w
ZXJ0eU5vZGUoR0xPQkFMX0RBVEEsICokMSwgJDMubV9ub2RlLCBQcm9wZXJ0eU5vZGU6OkNvbnN0
YW50KSwgJDMubV9mZWF0dXJlcywgJDMubV9udW1Db25zdGFudHMpOyB9CisgICAgSWRlbnRpZmll
ck9yUmVzZXJ2ZWQgJzonIEFzc2lnbm1lbnRFeHByCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVJbmZvPFByb3BlcnR5Tm9kZSo+KG5ldyAo
R0xPQkFMX0RBVEEpIFByb3BlcnR5Tm9kZShHTE9CQUxfREFUQSwgKiQxLCAkMy5tX25vZGUsIFBy
b3BlcnR5Tm9kZTo6Q29uc3RhbnQpLCAkMy5tX2ZlYXR1cmVzLCAkMy5tX251bUNvbnN0YW50cyk7
IH0KICAgfCBTVFJJTkcgJzonIEFzc2lnbm1lbnRFeHByICAgICAgICAgICB7ICQkID0gY3JlYXRl
Tm9kZUluZm88UHJvcGVydHlOb2RlKj4obmV3IChHTE9CQUxfREFUQSkgUHJvcGVydHlOb2RlKEdM
T0JBTF9EQVRBLCAqJDEsICQzLm1fbm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCksICQzLm1f
ZmVhdHVyZXMsICQzLm1fbnVtQ29uc3RhbnRzKTsgfQogICB8IE5VTUJFUiAnOicgQXNzaWdubWVu
dEV4cHIgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlSW5mbzxQcm9wZXJ0eU5vZGUqPihuZXcg
KEdMT0JBTF9EQVRBKSBQcm9wZXJ0eU5vZGUoR0xPQkFMX0RBVEEsICQxLCAkMy5tX25vZGUsIFBy
b3BlcnR5Tm9kZTo6Q29uc3RhbnQpLCAkMy5tX2ZlYXR1cmVzLCAkMy5tX251bUNvbnN0YW50cyk7
IH0KICAgfCBJREVOVCBJREVOVCAnKCcgJyknIE9QRU5CUkFDRSBGdW5jdGlvbkJvZHkgQ0xPU0VC
UkFDRSAgICB7ICQkID0gY3JlYXRlTm9kZUluZm88UHJvcGVydHlOb2RlKj4obWFrZUdldHRlck9y
U2V0dGVyUHJvcGVydHlOb2RlKEdMT0JBTF9EQVRBLCAqJDEsICokMiwgMCwgJDYsIEdMT0JBTF9E
QVRBLT5sZXhlci0+c291cmNlQ29kZSgkNSwgJDcsIEA1LmZpcnN0X2xpbmUpKSwgQ2xvc3VyZUZl
YXR1cmUsIDApOyBzZXRTdGF0ZW1lbnRMb2NhdGlvbigkNiwgQDUsIEA3KTsgaWYgKCEkJC5tX25v
ZGUpIFlZQUJPUlQ7IH0KQEAgLTM5Nyw3ICs0MzYsNyBAQCBNZW1iZXJFeHByOgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9k
ZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDQubGFzdF9jb2x1bW4pOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlSW5m
bzxFeHByZXNzaW9uTm9kZSo+KG5vZGUsICQxLm1fZmVhdHVyZXMgfCAkMy5tX2ZlYXR1cmVzLCAk
MS5tX251bUNvbnN0YW50cyArICQzLm1fbnVtQ29uc3RhbnRzKTsgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICB8IE1lbWJlckV4cHIgJy4nIElERU5UICAgICAg
ICAgICAgICAgIHsgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChHTE9CQUxfREFUQSkgRG90
QWNjZXNzb3JOb2RlKEdMT0JBTF9EQVRBLCAkMS5tX25vZGUsICokMyk7CisgIHwgTWVtYmVyRXhw
ciAnLicgSWRlbnRpZmllck9yUmVzZXJ2ZWQgeyBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcg
KEdMT0JBTF9EQVRBKSBEb3RBY2Nlc3Nvck5vZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwgKiQz
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEV4Y2VwdGlv
bkxvY2F0aW9uKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4sIEAzLmxhc3Rf
Y29sdW1uKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0g
Y3JlYXRlTm9kZUluZm88RXhwcmVzc2lvbk5vZGUqPihub2RlLCAkMS5tX2ZlYXR1cmVzLCAkMS5t
X251bUNvbnN0YW50cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQpAQCAtNDEzLDcgKzQ1Miw4IEBAIE1lbWJlckV4cHJOb0JGOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgQDEuZmly
c3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDQubGFzdF9jb2x1bW4pOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlSW5mbzxFeHByZXNz
aW9uTm9kZSo+KG5vZGUsICQxLm1fZmVhdHVyZXMgfCAkMy5tX2ZlYXR1cmVzLCAkMS5tX251bUNv
bnN0YW50cyArICQzLm1fbnVtQ29uc3RhbnRzKTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICB8IE1lbWJlckV4cHJOb0JGICcuJyBJREVOVCAgICAgICAgICAg
IHsgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChHTE9CQUxfREFUQSkgRG90QWNjZXNzb3JO
b2RlKEdMT0JBTF9EQVRBLCAkMS5tX25vZGUsICokMyk7CisgIHwgTWVtYmVyRXhwck5vQkYgJy4n
IElkZW50aWZpZXJPclJlc2VydmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeyBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBEb3RBY2Nl
c3Nvck5vZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwgKiQzKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIEAxLmZp
cnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4sIEAzLmxhc3RfY29sdW1uKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZUluZm88RXhwcmVz
c2lvbk5vZGUqPihub2RlLCAkMS5tX2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0YW50cyk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtNDQ2LDcgKzQ4Niw3IEBA
IENhbGxFeHByOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwg
QDQubGFzdF9jb2x1bW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJCQgPSBjcmVhdGVOb2RlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5vZGUsICQxLm1fZmVhdHVy
ZXMgfCAkMy5tX2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0YW50cyArICQzLm1fbnVtQ29uc3RhbnRz
KTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICB8IENhbGxF
eHByICcuJyBJREVOVCAgICAgICAgICAgICAgICAgIHsgRG90QWNjZXNzb3JOb2RlKiBub2RlID0g
bmV3IChHTE9CQUxfREFUQSkgRG90QWNjZXNzb3JOb2RlKEdMT0JBTF9EQVRBLCAkMS5tX25vZGUs
ICokMyk7CisgIHwgQ2FsbEV4cHIgJy4nIElkZW50aWZpZXJPclJlc2VydmVkICAgeyBEb3RBY2Nl
c3Nvck5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBEb3RBY2Nlc3Nvck5vZGUoR0xPQkFM
X0RBVEEsICQxLm1fbm9kZSwgKiQzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDEu
bGFzdF9jb2x1bW4sIEAzLmxhc3RfY29sdW1uKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZUluZm88RXhwcmVzc2lvbk5vZGUqPihub2Rl
LCAkMS5tX2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0YW50cyk7IH0KIDsKQEAgLTQ1OCw3ICs0OTgs
OCBAQCBDYWxsRXhwck5vQkY6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAxLmxhc3Rf
Y29sdW1uLCBANC5sYXN0X2NvbHVtbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkJCA9IGNyZWF0ZU5vZGVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obm9kZSwgJDEu
bV9mZWF0dXJlcyB8ICQzLm1fZmVhdHVyZXMsICQxLm1fbnVtQ29uc3RhbnRzICsgJDMubV9udW1D
b25zdGFudHMpOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0g
IHwgQ2FsbEV4cHJOb0JGICcuJyBJREVOVCAgICAgICAgICAgICAgeyBEb3RBY2Nlc3Nvck5vZGUq
IG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBEb3RBY2Nlc3Nvck5vZGUoR0xPQkFMX0RBVEEsICQx
Lm1fbm9kZSwgKiQzKTsKKyAgfCBDYWxsRXhwck5vQkYgJy4nIElkZW50aWZpZXJPclJlc2VydmVk
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBEb3RBY2Nlc3Nvck5v
ZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBEb3RBY2Nlc3Nvck5vZGUoR0xPQkFMX0RBVEEs
ICQxLm1fbm9kZSwgKiQzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDEubGFzdF9j
b2x1bW4sIEAzLmxhc3RfY29sdW1uKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICQkID0gY3JlYXRlTm9kZUluZm88RXhwcmVzc2lvbk5vZGUqPihub2RlLCAkMS5t
X2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0YW50cyk7IAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KQEAgLTEyNTUsNyArMTI5Niw3IEBAIExpdGVyYWxfTm9Ob2RlOgog
OwogCiBQcm9wZXJ0eV9Ob05vZGU6Ci0gICAgSURFTlQgJzonIEFzc2lnbm1lbnRFeHByX05vTm9k
ZSB7IH0KKyAgICBJZGVudGlmaWVyT3JSZXNlcnZlZCAnOicgQXNzaWdubWVudEV4cHJfTm9Ob2Rl
IHsgfQogICB8IFNUUklORyAnOicgQXNzaWdubWVudEV4cHJfTm9Ob2RlIHsgfQogICB8IE5VTUJF
UiAnOicgQXNzaWdubWVudEV4cHJfTm9Ob2RlIHsgfQogICB8IElERU5UIElERU5UICcoJyAnKScg
T1BFTkJSQUNFIEZ1bmN0aW9uQm9keV9Ob05vZGUgQ0xPU0VCUkFDRSB7IGlmICgqJDEgIT0gImdl
dCIgJiYgKiQxICE9ICJzZXQiKSBZWUFCT1JUOyB9CkBAIC0xMzA4LDE0ICsxMzQ5LDE0IEBAIE1l
bWJlckV4cHJfTm9Ob2RlOgogICAgIFByaW1hcnlFeHByX05vTm9kZQogICB8IEZ1bmN0aW9uRXhw
cl9Ob05vZGUKICAgfCBNZW1iZXJFeHByX05vTm9kZSAnWycgRXhwcl9Ob05vZGUgJ10nCi0gIHwg
TWVtYmVyRXhwcl9Ob05vZGUgJy4nIElERU5UCisgIHwgTWVtYmVyRXhwcl9Ob05vZGUgJy4nIElk
ZW50aWZpZXJPclJlc2VydmVkCiAgIHwgTkVXIE1lbWJlckV4cHJfTm9Ob2RlIEFyZ3VtZW50c19O
b05vZGUKIDsKIAogTWVtYmVyRXhwck5vQkZfTm9Ob2RlOgogICAgIFByaW1hcnlFeHByTm9CcmFj
ZV9Ob05vZGUKICAgfCBNZW1iZXJFeHByTm9CRl9Ob05vZGUgJ1snIEV4cHJfTm9Ob2RlICddJwot
ICB8IE1lbWJlckV4cHJOb0JGX05vTm9kZSAnLicgSURFTlQKKyAgfCBNZW1iZXJFeHByTm9CRl9O
b05vZGUgJy4nIElkZW50aWZpZXJPclJlc2VydmVkCiAgIHwgTkVXIE1lbWJlckV4cHJfTm9Ob2Rl
IEFyZ3VtZW50c19Ob05vZGUKIDsKIApAQCAtMTMzMywxNCArMTM3NCwxNCBAQCBDYWxsRXhwcl9O
b05vZGU6CiAgICAgTWVtYmVyRXhwcl9Ob05vZGUgQXJndW1lbnRzX05vTm9kZQogICB8IENhbGxF
eHByX05vTm9kZSBBcmd1bWVudHNfTm9Ob2RlCiAgIHwgQ2FsbEV4cHJfTm9Ob2RlICdbJyBFeHBy
X05vTm9kZSAnXScKLSAgfCBDYWxsRXhwcl9Ob05vZGUgJy4nIElERU5UCisgIHwgQ2FsbEV4cHJf
Tm9Ob2RlICcuJyBJZGVudGlmaWVyT3JSZXNlcnZlZAogOwogCiBDYWxsRXhwck5vQkZfTm9Ob2Rl
OgogICAgIE1lbWJlckV4cHJOb0JGX05vTm9kZSBBcmd1bWVudHNfTm9Ob2RlCiAgIHwgQ2FsbEV4
cHJOb0JGX05vTm9kZSBBcmd1bWVudHNfTm9Ob2RlCiAgIHwgQ2FsbEV4cHJOb0JGX05vTm9kZSAn
WycgRXhwcl9Ob05vZGUgJ10nCi0gIHwgQ2FsbEV4cHJOb0JGX05vTm9kZSAnLicgSURFTlQKKyAg
fCBDYWxsRXhwck5vQkZfTm9Ob2RlICcuJyBJZGVudGlmaWVyT3JSZXNlcnZlZAogOwogCiBBcmd1
bWVudHNfTm9Ob2RlOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE1ODE5MDQuLjlmOWEzMjMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxMC0wMS0wOCAgUGF0cmljayBNdWVsbGVyICA8UGF0cmlja19NdWVsbGVyQHVzLmli
bS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWxsb3cgUmVzZXJ2ZWQgV29yZHMgaW4gUHJvcGVydHkgQWNjZXNzb3JzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjcyMgorCisgICAgICAgICogZmFz
dC9qcy9yZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9qcy9yZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0aWVzLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzL3Jlc2VydmVkLXdvcmRzLWFzLXByb3Bl
cnRpZXMuanM6IEFkZGVkLgorICAgICAgICAoY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkpOgorCiAy
MDEwLTAxLTA4ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQmV0aCBEYWtpbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
anMvcmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2pzL3Jlc2VydmVkLXdvcmRzLWFzLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiMDE3MGUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc2VydmVkLXdvcmRzLWFzLXByb3BlcnRpZXMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNTUgQEAKK1RoaXMgZmlsZSBjaGVja3MgdGhhdCBrZXl3b3JkcyBj
YW4gYmUgdXNlZCBhcyBsaXRlcmFsICh1bnF1b3RlZCkgcHJvcGVydHkga2V5cy4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ2Jy
ZWFrJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnY2FzZScpIGlzIHRy
dWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ2NhdGNoJykgaXMgdHJ1ZQorUEFTUyBj
YW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnY2xhc3MnKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0
ZXJhbFByb3BlcnR5KCdjb25zdCcpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVy
dHkoJ2NvbnRpbnVlJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnZGVi
dWdnZXInKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdkZWZhdWx0Jykg
aXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnZGVsZXRlJykgaXMgdHJ1ZQor
UEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnZG8nKSBpcyB0cnVlCitQQVNTIGNhblVzZUFz
TGl0ZXJhbFByb3BlcnR5KCdlbHNlJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9w
ZXJ0eSgnZW51bScpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ2V4cG9y
dCcpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ2V4dGVuZHMnKSBpcyB0
cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdmYWxzZScpIGlzIHRydWUKK1BBU1Mg
Y2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ2ZpbmFsbHknKSBpcyB0cnVlCitQQVNTIGNhblVzZUFz
TGl0ZXJhbFByb3BlcnR5KCdmb3InKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3Bl
cnR5KCdmdW5jdGlvbicpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ2lm
JykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnaW1wbGVtZW50cycpIGlz
IHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ2ltcG9ydCcpIGlzIHRydWUKK1BB
U1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ2luJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xp
dGVyYWxQcm9wZXJ0eSgnaW5zdGFuY2VvZicpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFs
UHJvcGVydHkoJ2ludGVyZmFjZScpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVy
dHkoJ2xldCcpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ25ldycpIGlz
IHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ251bGwnKSBpcyB0cnVlCitQQVNT
IGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdwYWNrYWdlJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VB
c0xpdGVyYWxQcm9wZXJ0eSgncHJpdmF0ZScpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFs
UHJvcGVydHkoJ3Byb3RlY3RlZCcpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVy
dHkoJ3B1YmxpYycpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ3JldHVy
bicpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ3N0YXRpYycpIGlzIHRy
dWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ3N1cGVyJykgaXMgdHJ1ZQorUEFTUyBj
YW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnc3dpdGNoJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xp
dGVyYWxQcm9wZXJ0eSgndGhpcycpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVy
dHkoJ3Rocm93JykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgndHJ1ZScp
IGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ3RyeScpIGlzIHRydWUKK1BB
U1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ3R5cGVvZicpIGlzIHRydWUKK1BBU1MgY2FuVXNl
QXNMaXRlcmFsUHJvcGVydHkoJ3ZhcicpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJv
cGVydHkoJ3ZvaWQnKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCd3aGls
ZScpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ3dpdGgnKSBpcyB0cnVl
CitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCd5aWVsZCcpIGlzIHRydWUKKworUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvanMvcmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydGllcy5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0aWVzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM1ZDcyZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydGllcy5odG1s
CkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvcmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9yZXNlcnZlZC13
b3Jkcy1hcy1wcm9wZXJ0aWVzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMv
cmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydGllcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5jNTg0NTIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9q
cy9zY3JpcHQtdGVzdHMvcmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydGllcy5qcwpAQCAtMCwwICsx
LDkxIEBACitmdW5jdGlvbiBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSh3b3JkKQoreworICAgIHRy
eSB7CisgICAgICAgIGV2YWwoInZhciB4ID0geyAiICsgd29yZCArICIgOiAxMDEgfSA7Iik7Cisg
ICAgICAgIGV2YWwoInZhciBwYXNzZWQgPSAoeC4iICsgd29yZCArICIgPT0gMTAxKTsiKQorICAg
ICAgICByZXR1cm4gcGFzc2VkOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KK30KKworLy8gc2VlIDcuNi4xICJSZXNlcnZlZCBXb3JkcyIgb2YgdGhlIEVD
TUFTY3JpcHQgTGFuZ3VhZ2Ugc3BlYywgNXRoIGVkaXRpb24KKy8vIGZvciB0aGUga2V5d29yZCBs
aXN0IGFuZCBncm91cGluZ3MKKwordmFyIGxpdGVyYWxzID0gWworICAgICJmYWxzZSIsCisgICAg
Im51bGwiLAorICAgICJ0cnVlIgorXQorCit2YXIgZnV0dXJlUmVzZXJ2ZWRXb3JkcyA9IFsKKyAg
ICAiY2xhc3MiLAorICAgICJjb25zdCIsCisgICAgImVudW0iLAorICAgICJleHBvcnQiLAorICAg
ICJleHRlbmRzIiwKKyAgICAiaW1wb3J0IiwKKyAgICAic3VwZXIiCitdCisKK3ZhciBmdXR1cmVS
ZXNlcnZlZFdvcmRzU3RyaWN0ID0gWworICAgICJpbXBsZW1lbnRzIiwKKyAgICAiaW50ZXJmYWNl
IiwKKyAgICAibGV0IiwKKyAgICAicGFja2FnZSIsCisgICAgInByaXZhdGUiLAorICAgICJwcm90
ZWN0ZWQiLAorICAgICJwdWJsaWMiLAorICAgICJzdGF0aWMiLAorICAgICJ5aWVsZCIKK10KKwor
dmFyIGtleXdvcmRzID0gWworICAgICJicmVhayIsCisgICAgImNhc2UiLAorICAgICJjYXRjaCIs
CisgICAgImNvbnRpbnVlIiwKKyAgICAiZGVidWdnZXIiLAorICAgICJkZWZhdWx0IiwKKyAgICAi
ZGVsZXRlIiwKKyAgICAiZG8iLAorICAgICJlbHNlIiwKKyAgICAiZmluYWxseSIsCisgICAgImZv
ciIsCisgICAgImZ1bmN0aW9uIiwKKyAgICAiaWYiLAorICAgICJpbiIsCisgICAgImluc3RhbmNl
b2YiLAorICAgICJuZXciLAorICAgICJyZXR1cm4iLAorICAgICJzd2l0Y2giLAorICAgICJ0aGlz
IiwKKyAgICAidGhyb3ciLAorICAgICJ0cnkiLAorICAgICJ0eXBlb2YiLAorICAgICJ2YXIiLAor
ICAgICJ2b2lkIiwKKyAgICAid2hpbGUiLAorICAgICJ3aXRoIgorXTsKKwordmFyIGFsbEtleXdv
cmRzID0gW10uCisgICAgICAgIGNvbmNhdChrZXl3b3JkcykuCisgICAgICAgIGNvbmNhdChsaXRl
cmFscykuCisgICAgICAgIGNvbmNhdChmdXR1cmVSZXNlcnZlZFdvcmRzKS4KKyAgICAgICAgY29u
Y2F0KGZ1dHVyZVJlc2VydmVkV29yZHNTdHJpY3QpOworCithbGxLZXl3b3Jkcy5zb3J0KCk7CisK
K2Rlc2NyaXB0aW9uKAorIlRoaXMgZmlsZSBjaGVja3MgdGhhdCBrZXl3b3JkcyBjYW4gYmUgdXNl
ZCBhcyBsaXRlcmFsICh1bnF1b3RlZCkgcHJvcGVydHkga2V5cy4iCispOworCisKK2FsbEtleXdv
cmRzLmZvckVhY2goZnVuY3Rpb24oa2V5d29yZCkgeworICAgIHNob3VsZEJlVHJ1ZSgiY2FuVXNl
QXNMaXRlcmFsUHJvcGVydHkoJyIgKyBrZXl3b3JkICsgIicpIik7Cit9KQorCitkZWJ1ZygiIik7
CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46505</attachid>
            <date>2010-01-13 14:13:20 -0800</date>
            <delta_ts>2010-01-21 09:24:13 -0800</delta_ts>
            <desc>refactored parser changes</desc>
            <filename>32722.patch</filename>
            <type>text/plain</type>
            <size>15244</size>
            <attacher name="Patrick Mueller">pmuellr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBiMWEwY2RlLi4xMmM4M2VhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTAtMDEtMTEgIFBhdHJpY2sgTXVlbGxlciAgPFBhdHJpY2tfTXVlbGxlckB1cy5pYm0u
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFs
bG93IFJlc2VydmVkIFdvcmRzIGluIFByb3BlcnR5IEFjY2Vzc29ycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI3MjIKKworICAgICAgICAqIHBhcnNl
ci9HcmFtbWFyLnk6CisKIDIwMTAtMDEtMTEgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBcml5YSBIaWRheWF0LgpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0dyYW1tYXIueSBiL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9HcmFtbWFyLnkKaW5kZXggNzE3YTI2Ni4uNzQxYTQ5YyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0dyYW1tYXIueQorKysgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvR3JhbW1h
ci55CkBAIC0yMzEsNiArMjMxLDggQEAgc3RhdGljIGlubGluZSB2b2lkIHNldEV4Y2VwdGlvbkxv
Y2F0aW9uKFRocm93YWJsZUV4cHJlc3Npb25EYXRhKiBub2RlLCB1bnNpZ25lZAogJXRva2VuIEFV
VE9QTFVTUExVUyBBVVRPTUlOVVNNSU5VUwogCiAvKiBub24tdGVybWluYWwgdHlwZXMgKi8KKyV0
eXBlIDxpZGVudD4gUmVzZXJ2ZWQKKwogJXR5cGUgPGV4cHJlc3Npb25Ob2RlPiAgTGl0ZXJhbCBB
cnJheUxpdGVyYWwKIAogJXR5cGUgPGV4cHJlc3Npb25Ob2RlPiAgUHJpbWFyeUV4cHIgUHJpbWFy
eUV4cHJOb0JyYWNlCkBAIC0zMTksOCArMzIxLDQzIEBAIExpdGVyYWw6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogOwogCitSZXNlcnZlZDoKKyAgICBOVUxMVE9L
RU4gICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gJDxpZGVudD4xOyB9CisgIHwgVFJV
RVRPS0VOICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9ICQ8aWRlbnQ+MTsgfQorICB8
IEZBTFNFVE9LRU4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSAkPGlkZW50PjE7IH0K
KyAgfCBCUkVBSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gJDxpZGVudD4x
OyB9CisgIHwgQ0FTRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9ICQ8aWRl
bnQ+MTsgfQorICB8IERFRkFVTFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSAk
PGlkZW50PjE7IH0KKyAgfCBGT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQk
ID0gJDxpZGVudD4xOyB9CisgIHwgTkVXICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eyAkJCA9ICQ8aWRlbnQ+MTsgfQorICB8IFZBUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsgJCQgPSAkPGlkZW50PjE7IH0KKyAgfCBDT05TVFRPS0VOICAgICAgICAgICAgICAgICAg
ICAgICAgICB7ICQkID0gJDxpZGVudD4xOyB9CisgIHwgQ09OVElOVUUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeyAkJCA9ICQ8aWRlbnQ+MTsgfQorICB8IEZVTkNUSU9OICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsgJCQgPSAkPGlkZW50PjE7IH0KKyAgfCBSRVRVUk4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7ICQkID0gJDxpZGVudD4xOyB9CisgIHwgVk9JRFRPS0VOICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9ICQ8aWRlbnQ+MTsgfQorICB8IERFTEVURVRP
S0VOICAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSAkPGlkZW50PjE7IH0KKyAgfCBJRiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gJDxpZGVudD4xOyB9CisgIHwg
VEhJU1RPS0VOICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9ICQ8aWRlbnQ+MTsgfQor
ICB8IERPICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSAkPGlkZW50PjE7
IH0KKyAgfCBXSElMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gJDxpZGVu
dD4xOyB9CisgIHwgSU5UT0tFTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9ICQ8
aWRlbnQ+MTsgfQorICB8IElOU1RBTkNFT0YgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQg
PSAkPGlkZW50PjE7IH0KKyAgfCBUWVBFT0YgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
ICQkID0gJDxpZGVudD4xOyB9CisgIHwgU1dJVENIICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeyAkJCA9ICQ8aWRlbnQ+MTsgfQorICB8IFdJVEggICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsgJCQgPSAkPGlkZW50PjE7IH0KKyAgfCBSRVNFUlZFRCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7ICQkID0gJDxpZGVudD4xOyB9CisgIHwgVEhST1cgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeyAkJCA9ICQ8aWRlbnQ+MTsgfQorICB8IFRSWSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsgJCQgPSAkPGlkZW50PjE7IH0KKyAgfCBDQVRDSCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gJDxpZGVudD4xOyB9CisgIHwgRklOQUxMWSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9ICQ8aWRlbnQ+MTsgfQorICB8IERFQlVH
R0VSICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSAkPGlkZW50PjE7IH0KKyAgfCBF
TFNFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gJDxpZGVudD4xOyB9Cis7
CisKIFByb3BlcnR5OgogICAgIElERU5UICc6JyBBc3NpZ25tZW50RXhwciAgICAgICAgICAgIHsg
JCQgPSBjcmVhdGVOb2RlSW5mbzxQcm9wZXJ0eU5vZGUqPihuZXcgKEdMT0JBTF9EQVRBKSBQcm9w
ZXJ0eU5vZGUoR0xPQkFMX0RBVEEsICokMSwgJDMubV9ub2RlLCBQcm9wZXJ0eU5vZGU6OkNvbnN0
YW50KSwgJDMubV9mZWF0dXJlcywgJDMubV9udW1Db25zdGFudHMpOyB9CisgIHwgUmVzZXJ2ZWQg
JzonIEFzc2lnbm1lbnRFeHByICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVJbmZvPFByb3BlcnR5
Tm9kZSo+KG5ldyAoR0xPQkFMX0RBVEEpIFByb3BlcnR5Tm9kZShHTE9CQUxfREFUQSwgKiQxLCAk
My5tX25vZGUsIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpLCAkMy5tX2ZlYXR1cmVzLCAkMy5tX251
bUNvbnN0YW50cyk7IH0KICAgfCBTVFJJTkcgJzonIEFzc2lnbm1lbnRFeHByICAgICAgICAgICB7
ICQkID0gY3JlYXRlTm9kZUluZm88UHJvcGVydHlOb2RlKj4obmV3IChHTE9CQUxfREFUQSkgUHJv
cGVydHlOb2RlKEdMT0JBTF9EQVRBLCAqJDEsICQzLm1fbm9kZSwgUHJvcGVydHlOb2RlOjpDb25z
dGFudCksICQzLm1fZmVhdHVyZXMsICQzLm1fbnVtQ29uc3RhbnRzKTsgfQogICB8IE5VTUJFUiAn
OicgQXNzaWdubWVudEV4cHIgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlSW5mbzxQcm9wZXJ0
eU5vZGUqPihuZXcgKEdMT0JBTF9EQVRBKSBQcm9wZXJ0eU5vZGUoR0xPQkFMX0RBVEEsICQxLCAk
My5tX25vZGUsIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpLCAkMy5tX2ZlYXR1cmVzLCAkMy5tX251
bUNvbnN0YW50cyk7IH0KICAgfCBJREVOVCBJREVOVCAnKCcgJyknIE9QRU5CUkFDRSBGdW5jdGlv
bkJvZHkgQ0xPU0VCUkFDRSAgICB7ICQkID0gY3JlYXRlTm9kZUluZm88UHJvcGVydHlOb2RlKj4o
bWFrZUdldHRlck9yU2V0dGVyUHJvcGVydHlOb2RlKEdMT0JBTF9EQVRBLCAqJDEsICokMiwgMCwg
JDYsIEdMT0JBTF9EQVRBLT5sZXhlci0+c291cmNlQ29kZSgkNSwgJDcsIEA1LmZpcnN0X2xpbmUp
KSwgQ2xvc3VyZUZlYXR1cmUsIDApOyBzZXRTdGF0ZW1lbnRMb2NhdGlvbigkNiwgQDUsIEA3KTsg
aWYgKCEkJC5tX25vZGUpIFlZQUJPUlQ7IH0KQEAgLTQwMSw2ICs0MzgsMTAgQEAgTWVtYmVyRXhw
cjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEV4Y2VwdGlv
bkxvY2F0aW9uKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4sIEAzLmxhc3Rf
Y29sdW1uKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0g
Y3JlYXRlTm9kZUluZm88RXhwcmVzc2lvbk5vZGUqPihub2RlLCAkMS5tX2ZlYXR1cmVzLCAkMS5t
X251bUNvbnN0YW50cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICB8IE1lbWJlckV4cHIgJy4nIFJlc2VydmVkICAgICAgICAgICAgIHsgRG90QWNjZXNzb3JO
b2RlKiBub2RlID0gbmV3IChHTE9CQUxfREFUQSkgRG90QWNjZXNzb3JOb2RlKEdMT0JBTF9EQVRB
LCAkMS5tX25vZGUsICokMyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAxLmxhc3Rf
Y29sdW1uLCBAMy5sYXN0X2NvbHVtbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkJCA9IGNyZWF0ZU5vZGVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obm9kZSwgJDEu
bV9mZWF0dXJlcywgJDEubV9udW1Db25zdGFudHMpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgfCBORVcgTWVtYmVyRXhwciBBcmd1bWVudHMgICAgICAgICAg
ICB7IE5ld0V4cHJOb2RlKiBub2RlID0gbmV3IChHTE9CQUxfREFUQSkgTmV3RXhwck5vZGUoR0xP
QkFMX0RBVEEsICQyLm1fbm9kZSwgJDMubV9ub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIEAxLmZpcnN0X2Nv
bHVtbiwgQDIubGFzdF9jb2x1bW4sIEAzLmxhc3RfY29sdW1uKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZUluZm88RXhwcmVzc2lvbk5v
ZGUqPihub2RlLCAkMi5tX2ZlYXR1cmVzIHwgJDMubV9mZWF0dXJlcywgJDIubV9udW1Db25zdGFu
dHMgKyAkMy5tX251bUNvbnN0YW50cyk7CkBAIC00MTcsNiArNDU4LDEwIEBAIE1lbWJlckV4cHJO
b0JGOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhjZXB0
aW9uTG9jYXRpb24obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDMubGFz
dF9jb2x1bW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQg
PSBjcmVhdGVOb2RlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5vZGUsICQxLm1fZmVhdHVyZXMsICQx
Lm1fbnVtQ29uc3RhbnRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgIHwgTWVtYmVyRXhwck5vQkYgJy4nIFJlc2VydmVkICAgICAgICAgeyBEb3RBY2Nlc3Nv
ck5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBEb3RBY2Nlc3Nvck5vZGUoR0xPQkFMX0RB
VEEsICQxLm1fbm9kZSwgKiQzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIEAxLmZpcnN0X2NvbHVtbiwgQDEubGFz
dF9jb2x1bW4sIEAzLmxhc3RfY29sdW1uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZUluZm88RXhwcmVzc2lvbk5vZGUqPihub2RlLCAk
MS5tX2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0YW50cyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICB8IE5FVyBNZW1iZXJFeHByIEFyZ3VtZW50cyAgICAgICAg
ICAgIHsgTmV3RXhwck5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBOZXdFeHByTm9kZShH
TE9CQUxfREFUQSwgJDIubV9ub2RlLCAkMy5tX25vZGUpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgQDEuZmlyc3Rf
Y29sdW1uLCBAMi5sYXN0X2NvbHVtbiwgQDMubGFzdF9jb2x1bW4pOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlSW5mbzxFeHByZXNzaW9u
Tm9kZSo+KG5vZGUsICQyLm1fZmVhdHVyZXMgfCAkMy5tX2ZlYXR1cmVzLCAkMi5tX251bUNvbnN0
YW50cyArICQzLm1fbnVtQ29uc3RhbnRzKTsKQEAgLTQ0OCw3ICs0OTMsMTIgQEAgQ2FsbEV4cHI6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICB8IENhbGxFeHBy
ICcuJyBJREVOVCAgICAgICAgICAgICAgICAgIHsgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3
IChHTE9CQUxfREFUQSkgRG90QWNjZXNzb3JOb2RlKEdMT0JBTF9EQVRBLCAkMS5tX25vZGUsICok
Myk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFeGNlcHRp
b25Mb2NhdGlvbihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAxLmxhc3RfY29sdW1uLCBAMy5sYXN0
X2NvbHVtbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJCA9
IGNyZWF0ZU5vZGVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obm9kZSwgJDEubV9mZWF0dXJlcywgJDEu
bV9udW1Db25zdGFudHMpOyB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkJCA9IGNyZWF0ZU5vZGVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obm9kZSwgJDEubV9mZWF0
dXJlcywgJDEubV9udW1Db25zdGFudHMpOyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgIHwgQ2FsbEV4cHIgJy4nIFJlc2VydmVkICAgICAgICAgICAgICAgeyBE
b3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBEb3RBY2Nlc3Nvck5vZGUo
R0xPQkFMX0RBVEEsICQxLm1fbm9kZSwgKiQzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIEAxLmZpcnN0X2NvbHVt
biwgQDEubGFzdF9jb2x1bW4sIEAzLmxhc3RfY29sdW1uKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZUluZm88RXhwcmVzc2lvbk5vZGUq
Pihub2RlLCAkMS5tX2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0YW50cyk7IAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KIDsKIAogQ2FsbEV4cHJOb0JGOgpAQCAtNDYy
LDYgKzUxMiwxMCBAQCBDYWxsRXhwck5vQkY6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBAMS5maXJzdF9jb2x1bW4s
IEAxLmxhc3RfY29sdW1uLCBAMy5sYXN0X2NvbHVtbik7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAkJCA9IGNyZWF0ZU5vZGVJbmZvPEV4cHJlc3Npb25Ob2RlKj4o
bm9kZSwgJDEubV9mZWF0dXJlcywgJDEubV9udW1Db25zdGFudHMpOyAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgIHwgQ2FsbEV4cHJOb0JGICcuJyBSZXNlcnZl
ZCAgICAgICAgICAgeyBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBE
b3RBY2Nlc3Nvck5vZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwgKiQzKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUs
IEAxLmZpcnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4sIEAzLmxhc3RfY29sdW1uKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZUluZm88
RXhwcmVzc2lvbk5vZGUqPihub2RlLCAkMS5tX2ZlYXR1cmVzLCAkMS5tX251bUNvbnN0YW50cyk7
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KIDsKIAogQXJndW1l
bnRzOgpAQCAtMTI1Niw2ICsxMzEwLDcgQEAgTGl0ZXJhbF9Ob05vZGU6CiAKIFByb3BlcnR5X05v
Tm9kZToKICAgICBJREVOVCAnOicgQXNzaWdubWVudEV4cHJfTm9Ob2RlIHsgfQorICB8IFJlc2Vy
dmVkICc6JyBBc3NpZ25tZW50RXhwcl9Ob05vZGUgeyB9CiAgIHwgU1RSSU5HICc6JyBBc3NpZ25t
ZW50RXhwcl9Ob05vZGUgeyB9CiAgIHwgTlVNQkVSICc6JyBBc3NpZ25tZW50RXhwcl9Ob05vZGUg
eyB9CiAgIHwgSURFTlQgSURFTlQgJygnICcpJyBPUEVOQlJBQ0UgRnVuY3Rpb25Cb2R5X05vTm9k
ZSBDTE9TRUJSQUNFIHsgaWYgKCokMSAhPSAiZ2V0IiAmJiAqJDEgIT0gInNldCIpIFlZQUJPUlQ7
IH0KQEAgLTEzMDksNiArMTM2NCw3IEBAIE1lbWJlckV4cHJfTm9Ob2RlOgogICB8IEZ1bmN0aW9u
RXhwcl9Ob05vZGUKICAgfCBNZW1iZXJFeHByX05vTm9kZSAnWycgRXhwcl9Ob05vZGUgJ10nCiAg
IHwgTWVtYmVyRXhwcl9Ob05vZGUgJy4nIElERU5UCisgIHwgTWVtYmVyRXhwcl9Ob05vZGUgJy4n
IFJlc2VydmVkCiAgIHwgTkVXIE1lbWJlckV4cHJfTm9Ob2RlIEFyZ3VtZW50c19Ob05vZGUKIDsK
IApAQCAtMTMxNiw2ICsxMzcyLDcgQEAgTWVtYmVyRXhwck5vQkZfTm9Ob2RlOgogICAgIFByaW1h
cnlFeHByTm9CcmFjZV9Ob05vZGUKICAgfCBNZW1iZXJFeHByTm9CRl9Ob05vZGUgJ1snIEV4cHJf
Tm9Ob2RlICddJwogICB8IE1lbWJlckV4cHJOb0JGX05vTm9kZSAnLicgSURFTlQKKyAgfCBNZW1i
ZXJFeHByTm9CRl9Ob05vZGUgJy4nIFJlc2VydmVkCiAgIHwgTkVXIE1lbWJlckV4cHJfTm9Ob2Rl
IEFyZ3VtZW50c19Ob05vZGUKIDsKIApAQCAtMTMzNCw2ICsxMzkxLDcgQEAgQ2FsbEV4cHJfTm9O
b2RlOgogICB8IENhbGxFeHByX05vTm9kZSBBcmd1bWVudHNfTm9Ob2RlCiAgIHwgQ2FsbEV4cHJf
Tm9Ob2RlICdbJyBFeHByX05vTm9kZSAnXScKICAgfCBDYWxsRXhwcl9Ob05vZGUgJy4nIElERU5U
CisgIHwgQ2FsbEV4cHJfTm9Ob2RlICcuJyBSZXNlcnZlZAogOwogCiBDYWxsRXhwck5vQkZfTm9O
b2RlOgpAQCAtMTM0MSw2ICsxMzk5LDcgQEAgQ2FsbEV4cHJOb0JGX05vTm9kZToKICAgfCBDYWxs
RXhwck5vQkZfTm9Ob2RlIEFyZ3VtZW50c19Ob05vZGUKICAgfCBDYWxsRXhwck5vQkZfTm9Ob2Rl
ICdbJyBFeHByX05vTm9kZSAnXScKICAgfCBDYWxsRXhwck5vQkZfTm9Ob2RlICcuJyBJREVOVAor
ICB8IENhbGxFeHByTm9CRl9Ob05vZGUgJy4nIFJlc2VydmVkCiA7CiAKIEFyZ3VtZW50c19Ob05v
ZGU6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNmYyYTlmOS4uOTI3YjM5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEw
LTAxLTExICBQYXRyaWNrIE11ZWxsZXIgIDxQYXRyaWNrX011ZWxsZXJAdXMuaWJtLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBSZXNl
cnZlZCBXb3JkcyBpbiBQcm9wZXJ0eSBBY2Nlc3NvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNzIyCisKKyAgICAgICAgKiBmYXN0L2pzL3Jlc2Vy
dmVkLXdvcmRzLWFzLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2pzL3Jlc2VydmVkLXdvcmRzLWFzLXByb3BlcnRpZXMuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9qcy9zY3JpcHQtdGVzdHMvcmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydGllcy5qczog
QWRkZWQuCisgICAgICAgIChjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSk6CisKIDIwMTAtMDEtMTEg
IENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkIHRyaXZpYWwgZml4LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNlcnZl
ZC13b3Jkcy1hcy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvanMv
cmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydGllcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMmIwMTcwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvanMvcmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydGllcy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw1NSBAQAorVGhpcyBmaWxlIGNoZWNrcyB0aGF0IGtleXdvcmRzIGNhbiBiZSB1c2Vk
IGFzIGxpdGVyYWwgKHVucXVvdGVkKSBwcm9wZXJ0eSBrZXlzLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnYnJlYWsnKSBpcyB0
cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdjYXNlJykgaXMgdHJ1ZQorUEFTUyBj
YW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnY2F0Y2gnKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0
ZXJhbFByb3BlcnR5KCdjbGFzcycpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVy
dHkoJ2NvbnN0JykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnY29udGlu
dWUnKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdkZWJ1Z2dlcicpIGlz
IHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ2RlZmF1bHQnKSBpcyB0cnVlCitQ
QVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdkZWxldGUnKSBpcyB0cnVlCitQQVNTIGNhblVz
ZUFzTGl0ZXJhbFByb3BlcnR5KCdkbycpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJv
cGVydHkoJ2Vsc2UnKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdlbnVt
JykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnZXhwb3J0JykgaXMgdHJ1
ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnZXh0ZW5kcycpIGlzIHRydWUKK1BBU1Mg
Y2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ2ZhbHNlJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xp
dGVyYWxQcm9wZXJ0eSgnZmluYWxseScpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJv
cGVydHkoJ2ZvcicpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ2Z1bmN0
aW9uJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnaWYnKSBpcyB0cnVl
CitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdpbXBsZW1lbnRzJykgaXMgdHJ1ZQorUEFT
UyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnaW1wb3J0JykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VB
c0xpdGVyYWxQcm9wZXJ0eSgnaW4nKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3Bl
cnR5KCdpbnN0YW5jZW9mJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgn
aW50ZXJmYWNlJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnbGV0Jykg
aXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnbmV3JykgaXMgdHJ1ZQorUEFT
UyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnbnVsbCcpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNM
aXRlcmFsUHJvcGVydHkoJ3BhY2thZ2UnKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFBy
b3BlcnR5KCdwcml2YXRlJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgn
cHJvdGVjdGVkJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgncHVibGlj
JykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgncmV0dXJuJykgaXMgdHJ1
ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnc3RhdGljJykgaXMgdHJ1ZQorUEFTUyBj
YW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnc3VwZXInKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0
ZXJhbFByb3BlcnR5KCdzd2l0Y2gnKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3Bl
cnR5KCd0aGlzJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgndGhyb3cn
KSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCd0cnVlJykgaXMgdHJ1ZQor
UEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgndHJ5JykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VB
c0xpdGVyYWxQcm9wZXJ0eSgndHlwZW9mJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQ
cm9wZXJ0eSgndmFyJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgndm9p
ZCcpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ3doaWxlJykgaXMgdHJ1
ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnd2l0aCcpIGlzIHRydWUKK1BBU1MgY2Fu
VXNlQXNMaXRlcmFsUHJvcGVydHkoJ3lpZWxkJykgaXMgdHJ1ZQorCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9qcy9yZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0aWVzLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2pzL3Jlc2VydmVkLXdvcmRzLWFzLXByb3BlcnRpZXMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzVkNzJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9qcy9yZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0aWVzLmh0bWwKQEAgLTAsMCAr
MSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9yZXNlcnZl
ZC13b3Jkcy1hcy1wcm9wZXJ0aWVzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3Jlc2VydmVkLXdvcmRzLWFzLXBy
b3BlcnRpZXMuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9yZXNlcnZlZC13
b3Jkcy1hcy1wcm9wZXJ0aWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmM1ODQ1MjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10
ZXN0cy9yZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0aWVzLmpzCkBAIC0wLDAgKzEsOTEgQEAKK2Z1
bmN0aW9uIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KHdvcmQpCit7CisgICAgdHJ5IHsKKyAgICAg
ICAgZXZhbCgidmFyIHggPSB7ICIgKyB3b3JkICsgIiA6IDEwMSB9IDsiKTsKKyAgICAgICAgZXZh
bCgidmFyIHBhc3NlZCA9ICh4LiIgKyB3b3JkICsgIiA9PSAxMDEpOyIpCisgICAgICAgIHJldHVy
biBwYXNzZWQ7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorfQorCisvLyBzZWUgNy42LjEgIlJlc2VydmVkIFdvcmRzIiBvZiB0aGUgRUNNQVNjcmlwdCBM
YW5ndWFnZSBzcGVjLCA1dGggZWRpdGlvbgorLy8gZm9yIHRoZSBrZXl3b3JkIGxpc3QgYW5kIGdy
b3VwaW5ncworCit2YXIgbGl0ZXJhbHMgPSBbCisgICAgImZhbHNlIiwKKyAgICAibnVsbCIsCisg
ICAgInRydWUiCitdCisKK3ZhciBmdXR1cmVSZXNlcnZlZFdvcmRzID0gWworICAgICJjbGFzcyIs
CisgICAgImNvbnN0IiwKKyAgICAiZW51bSIsCisgICAgImV4cG9ydCIsCisgICAgImV4dGVuZHMi
LAorICAgICJpbXBvcnQiLAorICAgICJzdXBlciIKK10KKwordmFyIGZ1dHVyZVJlc2VydmVkV29y
ZHNTdHJpY3QgPSBbCisgICAgImltcGxlbWVudHMiLAorICAgICJpbnRlcmZhY2UiLAorICAgICJs
ZXQiLAorICAgICJwYWNrYWdlIiwKKyAgICAicHJpdmF0ZSIsCisgICAgInByb3RlY3RlZCIsCisg
ICAgInB1YmxpYyIsCisgICAgInN0YXRpYyIsCisgICAgInlpZWxkIgorXQorCit2YXIga2V5d29y
ZHMgPSBbCisgICAgImJyZWFrIiwKKyAgICAiY2FzZSIsCisgICAgImNhdGNoIiwKKyAgICAiY29u
dGludWUiLAorICAgICJkZWJ1Z2dlciIsCisgICAgImRlZmF1bHQiLAorICAgICJkZWxldGUiLAor
ICAgICJkbyIsCisgICAgImVsc2UiLAorICAgICJmaW5hbGx5IiwKKyAgICAiZm9yIiwKKyAgICAi
ZnVuY3Rpb24iLAorICAgICJpZiIsCisgICAgImluIiwKKyAgICAiaW5zdGFuY2VvZiIsCisgICAg
Im5ldyIsCisgICAgInJldHVybiIsCisgICAgInN3aXRjaCIsCisgICAgInRoaXMiLAorICAgICJ0
aHJvdyIsCisgICAgInRyeSIsCisgICAgInR5cGVvZiIsCisgICAgInZhciIsCisgICAgInZvaWQi
LAorICAgICJ3aGlsZSIsCisgICAgIndpdGgiCitdOworCit2YXIgYWxsS2V5d29yZHMgPSBbXS4K
KyAgICAgICAgY29uY2F0KGtleXdvcmRzKS4KKyAgICAgICAgY29uY2F0KGxpdGVyYWxzKS4KKyAg
ICAgICAgY29uY2F0KGZ1dHVyZVJlc2VydmVkV29yZHMpLgorICAgICAgICBjb25jYXQoZnV0dXJl
UmVzZXJ2ZWRXb3Jkc1N0cmljdCk7CisKK2FsbEtleXdvcmRzLnNvcnQoKTsKKworZGVzY3JpcHRp
b24oCisiVGhpcyBmaWxlIGNoZWNrcyB0aGF0IGtleXdvcmRzIGNhbiBiZSB1c2VkIGFzIGxpdGVy
YWwgKHVucXVvdGVkKSBwcm9wZXJ0eSBrZXlzLiIKKyk7CisKKworYWxsS2V5d29yZHMuZm9yRWFj
aChmdW5jdGlvbihrZXl3b3JkKSB7CisgICAgc2hvdWxkQmVUcnVlKCJjYW5Vc2VBc0xpdGVyYWxQ
cm9wZXJ0eSgnIiArIGtleXdvcmQgKyAiJykiKTsKK30pCisKK2RlYnVnKCIiKTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47127</attachid>
            <date>2010-01-21 09:24:13 -0800</date>
            <delta_ts>2010-06-10 21:17:36 -0700</delta_ts>
            <desc>2010-01-21-a patch</desc>
            <filename>32722.patch</filename>
            <type>text/plain</type>
            <size>15335</size>
            <attacher name="Patrick Mueller">pmuellr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBlNzZhNTQ1Li41YmU1OGYyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTAtMDEtMjEgIFBhdHJpY2sgTXVlbGxlciAgPFBhdHJpY2tfTXVlbGxlckB1cy5pYm0u
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFs
bG93IFJlc2VydmVkIFdvcmRzIGluIFByb3BlcnR5IEFjY2Vzc29ycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI3MjIKKworICAgICAgICAqIHBhcnNl
ci9HcmFtbWFyLnk6CisKIDIwMTAtMDEtMTkgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9HcmFtbWFyLnkgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvR3Jh
bW1hci55CmluZGV4IDcxN2EyNjYuLmU5Y2M5ZDAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9HcmFtbWFyLnkKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0dyYW1tYXIueQpA
QCAtNiw2ICs2LDcgQEAKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4g
KHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3
IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKiAgQ29weXJpZ2h0IChDKSBJQk0gQ29y
cC4gMjAxMCAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTE5
MiwxOSArMTkzLDQxIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRFeGNlcHRpb25Mb2NhdGlvbihU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSogbm9kZSwgdW5zaWduZWQKICVzdGFydCBQcm9ncmFtCiAK
IC8qIGxpdGVyYWxzICovCi0ldG9rZW4gTlVMTFRPS0VOIFRSVUVUT0tFTiBGQUxTRVRPS0VOCisl
dG9rZW4gPGlkZW50PiBOVUxMVE9LRU4gCisldG9rZW4gPGlkZW50PiBUUlVFVE9LRU4gCisldG9r
ZW4gPGlkZW50PiBGQUxTRVRPS0VOCiAKIC8qIGtleXdvcmRzICovCi0ldG9rZW4gQlJFQUsgQ0FT
RSBERUZBVUxUIEZPUiBORVcgVkFSIENPTlNUVE9LRU4gQ09OVElOVUUKLSV0b2tlbiBGVU5DVElP
TiBSRVRVUk4gVk9JRFRPS0VOIERFTEVURVRPS0VOCi0ldG9rZW4gSUYgVEhJU1RPS0VOIERPIFdI
SUxFIElOVE9LRU4gSU5TVEFOQ0VPRiBUWVBFT0YKLSV0b2tlbiBTV0lUQ0ggV0lUSCBSRVNFUlZF
RAotJXRva2VuIFRIUk9XIFRSWSBDQVRDSCBGSU5BTExZCi0ldG9rZW4gREVCVUdHRVIKLQorJXRv
a2VuIDxpZGVudD4gUkVTRVJWRUQKKyV0b2tlbiA8aWRlbnQ+IEJSRUFLCisldG9rZW4gPGlkZW50
PiBDQVNFCisldG9rZW4gPGlkZW50PiBDQVRDSAorJXRva2VuIDxpZGVudD4gQ09OU1RUT0tFTgor
JXRva2VuIDxpZGVudD4gQ09OVElOVUUKKyV0b2tlbiA8aWRlbnQ+IERFQlVHR0VSCisldG9rZW4g
PGlkZW50PiBERUZBVUxUCisldG9rZW4gPGlkZW50PiBERUxFVEVUT0tFTgorJXRva2VuIDxpZGVu
dD4gRE8KKyV0b2tlbiA8aWRlbnQ+IEZJTkFMTFkKKyV0b2tlbiA8aWRlbnQ+IEZPUgorJXRva2Vu
IDxpZGVudD4gRlVOQ1RJT04KKyV0b2tlbiA8aWRlbnQ+IElGCisldG9rZW4gPGlkZW50PiBJTlNU
QU5DRU9GCisldG9rZW4gPGlkZW50PiBJTlRPS0VOCisldG9rZW4gPGlkZW50PiBORVcKKyV0b2tl
biA8aWRlbnQ+IFJFVFVSTgorJXRva2VuIDxpZGVudD4gU1dJVENICisldG9rZW4gPGlkZW50PiBU
SElTVE9LRU4KKyV0b2tlbiA8aWRlbnQ+IFRIUk9XCisldG9rZW4gPGlkZW50PiBUUlkKKyV0b2tl
biA8aWRlbnQ+IFRZUEVPRgorJXRva2VuIDxpZGVudD4gVkFSCisldG9rZW4gPGlkZW50PiBWT0lE
VE9LRU4KKyV0b2tlbiA8aWRlbnQ+IFdISUxFCisldG9rZW4gPGlkZW50PiBXSVRICiAvKiBnaXZl
IGFuIGlmIHdpdGhvdXQgYW4gZWxzZSBoaWdoZXIgcHJlY2VkZW5jZSB0aGFuIGFuIGVsc2UgdG8g
cmVzb2x2ZSB0aGUgYW1iaWd1aXR5ICovCiAlbm9uYXNzb2MgSUZfV0lUSE9VVF9FTFNFCi0lbm9u
YXNzb2MgRUxTRQorJW5vbmFzc29jIDxpZGVudD4gRUxTRQogCiAvKiBwdW5jdHVhdG9ycyAqLwog
JXRva2VuIEVRRVEgTkUgICAgICAgICAgICAgICAgICAgICAvKiA9PSBhbmQgIT0gKi8KQEAgLTI4
Myw2ICszMDYsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0RXhjZXB0aW9uTG9jYXRpb24oVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEqIG5vZGUsIHVuc2lnbmVkCiAldHlwZSA8ZWxlbWVudExpc3Q+
ICAgICBFbGVtZW50TGlzdAogJXR5cGUgPHByb3BlcnR5Tm9kZT4gICAgUHJvcGVydHkKICV0eXBl
IDxwcm9wZXJ0eUxpc3Q+ICAgIFByb3BlcnR5TGlzdAorCisldHlwZSA8aWRlbnQ+ICAgICAgICAg
ICBJZGVudGlmaWVyT3JSZXNlcnZlZAogJSUKIAogLy8gRklYTUU6IFRoZXJlIGFyZSBjdXJyZW50
bHkgdHdvIHZlcnNpb25zIG9mIHRoZSBncmFtbWFyIGluIHRoaXMgZmlsZSwgdGhlIG5vcm1hbCBv
bmUsIGFuZCB0aGUgTm9Ob2RlcyB2ZXJzaW9uIHVzZWQgZm9yCkBAIC0zMTksOCArMzQ0LDQ0IEBA
IExpdGVyYWw6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogOwog
CitJZGVudGlmaWVyT3JSZXNlcnZlZDoKKyAgICBJREVOVAorICB8IE5VTExUT0tFTgorICB8IFRS
VUVUT0tFTgorICB8IEZBTFNFVE9LRU4KKyAgfCBSRVNFUlZFRAorICB8IEJSRUFLCisgIHwgQ0FT
RQorICB8IENBVENICisgIHwgQ09OU1RUT0tFTgorICB8IENPTlRJTlVFCisgIHwgREVCVUdHRVIK
KyAgfCBERUZBVUxUCisgIHwgREVMRVRFVE9LRU4KKyAgfCBETworICB8IEVMU0UKKyAgfCBGSU5B
TExZCisgIHwgRk9SCisgIHwgRlVOQ1RJT04KKyAgfCBJRgorICB8IElOU1RBTkNFT0YKKyAgfCBJ
TlRPS0VOCisgIHwgTkVXCisgIHwgUkVUVVJOCisgIHwgU1dJVENICisgIHwgVEhJU1RPS0VOCisg
IHwgVEhST1cKKyAgfCBUUlkKKyAgfCBUWVBFT0YKKyAgfCBWQVIKKyAgfCBWT0lEVE9LRU4KKyAg
fCBXSElMRQorICB8IFdJVEgKKzsKKwogUHJvcGVydHk6Ci0gICAgSURFTlQgJzonIEFzc2lnbm1l
bnRFeHByICAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVJbmZvPFByb3BlcnR5Tm9kZSo+KG5l
dyAoR0xPQkFMX0RBVEEpIFByb3BlcnR5Tm9kZShHTE9CQUxfREFUQSwgKiQxLCAkMy5tX25vZGUs
IFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpLCAkMy5tX2ZlYXR1cmVzLCAkMy5tX251bUNvbnN0YW50
cyk7IH0KKyAgICBJZGVudGlmaWVyT3JSZXNlcnZlZCAnOicgQXNzaWdubWVudEV4cHIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUluZm88
UHJvcGVydHlOb2RlKj4obmV3IChHTE9CQUxfREFUQSkgUHJvcGVydHlOb2RlKEdMT0JBTF9EQVRB
LCAqJDEsICQzLm1fbm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCksICQzLm1fZmVhdHVyZXMs
ICQzLm1fbnVtQ29uc3RhbnRzKTsgfQogICB8IFNUUklORyAnOicgQXNzaWdubWVudEV4cHIgICAg
ICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlSW5mbzxQcm9wZXJ0eU5vZGUqPihuZXcgKEdMT0JBTF9E
QVRBKSBQcm9wZXJ0eU5vZGUoR0xPQkFMX0RBVEEsICokMSwgJDMubV9ub2RlLCBQcm9wZXJ0eU5v
ZGU6OkNvbnN0YW50KSwgJDMubV9mZWF0dXJlcywgJDMubV9udW1Db25zdGFudHMpOyB9CiAgIHwg
TlVNQkVSICc6JyBBc3NpZ25tZW50RXhwciAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVJbmZv
PFByb3BlcnR5Tm9kZSo+KG5ldyAoR0xPQkFMX0RBVEEpIFByb3BlcnR5Tm9kZShHTE9CQUxfREFU
QSwgJDEsICQzLm1fbm9kZSwgUHJvcGVydHlOb2RlOjpDb25zdGFudCksICQzLm1fZmVhdHVyZXMs
ICQzLm1fbnVtQ29uc3RhbnRzKTsgfQogICB8IElERU5UIElERU5UICcoJyAnKScgT1BFTkJSQUNF
IEZ1bmN0aW9uQm9keSBDTE9TRUJSQUNFICAgIHsgJCQgPSBjcmVhdGVOb2RlSW5mbzxQcm9wZXJ0
eU5vZGUqPihtYWtlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eU5vZGUoR0xPQkFMX0RBVEEsICokMSwg
KiQyLCAwLCAkNiwgR0xPQkFMX0RBVEEtPmxleGVyLT5zb3VyY2VDb2RlKCQ1LCAkNywgQDUuZmly
c3RfbGluZSkpLCBDbG9zdXJlRmVhdHVyZSwgMCk7IHNldFN0YXRlbWVudExvY2F0aW9uKCQ2LCBA
NSwgQDcpOyBpZiAoISQkLm1fbm9kZSkgWVlBQk9SVDsgfQpAQCAtMzk3LDcgKzQ1OCw3IEBAIE1l
bWJlckV4cHI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRF
eGNlcHRpb25Mb2NhdGlvbihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAxLmxhc3RfY29sdW1uLCBA
NC5sYXN0X2NvbHVtbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAkJCA9IGNyZWF0ZU5vZGVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obm9kZSwgJDEubV9mZWF0dXJl
cyB8ICQzLm1fZmVhdHVyZXMsICQxLm1fbnVtQ29uc3RhbnRzICsgJDMubV9udW1Db25zdGFudHMp
OyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gIHwgTWVtYmVy
RXhwciAnLicgSURFTlQgICAgICAgICAgICAgICAgeyBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBu
ZXcgKEdMT0JBTF9EQVRBKSBEb3RBY2Nlc3Nvck5vZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwg
KiQzKTsKKyAgfCBNZW1iZXJFeHByICcuJyBJZGVudGlmaWVyT3JSZXNlcnZlZCB7IERvdEFjY2Vz
c29yTm9kZSogbm9kZSA9IG5ldyAoR0xPQkFMX0RBVEEpIERvdEFjY2Vzc29yTm9kZShHTE9CQUxf
REFUQSwgJDEubV9ub2RlLCAqJDMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5s
YXN0X2NvbHVtbiwgQDMubGFzdF9jb2x1bW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5vZGUs
ICQxLm1fZmVhdHVyZXMsICQxLm1fbnVtQ29uc3RhbnRzKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CkBAIC00MTMsNyArNDc0LDggQEAgTWVtYmVyRXhwck5vQkY6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRFeGNlcHRpb25M
b2NhdGlvbihub2RlLCBAMS5maXJzdF9jb2x1bW4sIEAxLmxhc3RfY29sdW1uLCBANC5sYXN0X2Nv
bHVtbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNy
ZWF0ZU5vZGVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obm9kZSwgJDEubV9mZWF0dXJlcyB8ICQzLm1f
ZmVhdHVyZXMsICQxLm1fbnVtQ29uc3RhbnRzICsgJDMubV9udW1Db25zdGFudHMpOyAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gIHwgTWVtYmVyRXhwck5vQkYg
Jy4nIElERU5UICAgICAgICAgICAgeyBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKEdMT0JB
TF9EQVRBKSBEb3RBY2Nlc3Nvck5vZGUoR0xPQkFMX0RBVEEsICQxLm1fbm9kZSwgKiQzKTsKKyAg
fCBNZW1iZXJFeHByTm9CRiAnLicgSWRlbnRpZmllck9yUmVzZXJ2ZWQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7IERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAo
R0xPQkFMX0RBVEEpIERvdEFjY2Vzc29yTm9kZShHTE9CQUxfREFUQSwgJDEubV9ub2RlLCAqJDMp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhjZXB0aW9u
TG9jYXRpb24obm9kZSwgQDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDMubGFzdF9j
b2x1bW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBj
cmVhdGVOb2RlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5vZGUsICQxLm1fZmVhdHVyZXMsICQxLm1f
bnVtQ29uc3RhbnRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CkBAIC00NDYsNyArNTA4LDcgQEAgQ2FsbEV4cHI6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBAMS5maXJzdF9jb2x1
bW4sIEAxLmxhc3RfY29sdW1uLCBANC5sYXN0X2NvbHVtbik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAkJCA9IGNyZWF0ZU5vZGVJbmZvPEV4cHJlc3Npb25Ob2Rl
Kj4obm9kZSwgJDEubV9mZWF0dXJlcyB8ICQzLm1fZmVhdHVyZXMsICQxLm1fbnVtQ29uc3RhbnRz
ICsgJDMubV9udW1Db25zdGFudHMpOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gIHwgQ2FsbEV4cHIgJy4nIElERU5UICAgICAgICAgICAgICAgICAgeyBEb3RB
Y2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKEdMT0JBTF9EQVRBKSBEb3RBY2Nlc3Nvck5vZGUoR0xP
QkFMX0RBVEEsICQxLm1fbm9kZSwgKiQzKTsKKyAgfCBDYWxsRXhwciAnLicgSWRlbnRpZmllck9y
UmVzZXJ2ZWQgICB7IERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAoR0xPQkFMX0RBVEEpIERv
dEFjY2Vzc29yTm9kZShHTE9CQUxfREFUQSwgJDEubV9ub2RlLCAqJDMpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwg
QDEuZmlyc3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDMubGFzdF9jb2x1bW4pOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlSW5mbzxF
eHByZXNzaW9uTm9kZSo+KG5vZGUsICQxLm1fZmVhdHVyZXMsICQxLm1fbnVtQ29uc3RhbnRzKTsg
fQogOwpAQCAtNDU4LDcgKzUyMCw4IEBAIENhbGxFeHByTm9CRjoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIEAxLmZp
cnN0X2NvbHVtbiwgQDEubGFzdF9jb2x1bW4sIEA0Lmxhc3RfY29sdW1uKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkID0gY3JlYXRlTm9kZUluZm88RXhwcmVz
c2lvbk5vZGUqPihub2RlLCAkMS5tX2ZlYXR1cmVzIHwgJDMubV9mZWF0dXJlcywgJDEubV9udW1D
b25zdGFudHMgKyAkMy5tX251bUNvbnN0YW50cyk7IAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgfCBDYWxsRXhwck5vQkYgJy4nIElERU5UICAgICAgICAgICAg
ICB7IERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAoR0xPQkFMX0RBVEEpIERvdEFjY2Vzc29y
Tm9kZShHTE9CQUxfREFUQSwgJDEubV9ub2RlLCAqJDMpOworICB8IENhbGxFeHByTm9CRiAnLicg
SWRlbnRpZmllck9yUmVzZXJ2ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB7IERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAoR0xPQkFMX0RBVEEpIERvdEFjY2Vz
c29yTm9kZShHTE9CQUxfREFUQSwgJDEubV9ub2RlLCAqJDMpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgQDEuZmly
c3RfY29sdW1uLCBAMS5sYXN0X2NvbHVtbiwgQDMubGFzdF9jb2x1bW4pOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBjcmVhdGVOb2RlSW5mbzxFeHByZXNz
aW9uTm9kZSo+KG5vZGUsICQxLm1fZmVhdHVyZXMsICQxLm1fbnVtQ29uc3RhbnRzKTsgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTI1NSw3ICsxMzE4LDcg
QEAgTGl0ZXJhbF9Ob05vZGU6CiA7CiAKIFByb3BlcnR5X05vTm9kZToKLSAgICBJREVOVCAnOicg
QXNzaWdubWVudEV4cHJfTm9Ob2RlIHsgfQorICAgIElkZW50aWZpZXJPclJlc2VydmVkICc6JyBB
c3NpZ25tZW50RXhwcl9Ob05vZGUgeyB9CiAgIHwgU1RSSU5HICc6JyBBc3NpZ25tZW50RXhwcl9O
b05vZGUgeyB9CiAgIHwgTlVNQkVSICc6JyBBc3NpZ25tZW50RXhwcl9Ob05vZGUgeyB9CiAgIHwg
SURFTlQgSURFTlQgJygnICcpJyBPUEVOQlJBQ0UgRnVuY3Rpb25Cb2R5X05vTm9kZSBDTE9TRUJS
QUNFIHsgaWYgKCokMSAhPSAiZ2V0IiAmJiAqJDEgIT0gInNldCIpIFlZQUJPUlQ7IH0KQEAgLTEz
MDgsMTQgKzEzNzEsMTQgQEAgTWVtYmVyRXhwcl9Ob05vZGU6CiAgICAgUHJpbWFyeUV4cHJfTm9O
b2RlCiAgIHwgRnVuY3Rpb25FeHByX05vTm9kZQogICB8IE1lbWJlckV4cHJfTm9Ob2RlICdbJyBF
eHByX05vTm9kZSAnXScKLSAgfCBNZW1iZXJFeHByX05vTm9kZSAnLicgSURFTlQKKyAgfCBNZW1i
ZXJFeHByX05vTm9kZSAnLicgSWRlbnRpZmllck9yUmVzZXJ2ZWQKICAgfCBORVcgTWVtYmVyRXhw
cl9Ob05vZGUgQXJndW1lbnRzX05vTm9kZQogOwogCiBNZW1iZXJFeHByTm9CRl9Ob05vZGU6CiAg
ICAgUHJpbWFyeUV4cHJOb0JyYWNlX05vTm9kZQogICB8IE1lbWJlckV4cHJOb0JGX05vTm9kZSAn
WycgRXhwcl9Ob05vZGUgJ10nCi0gIHwgTWVtYmVyRXhwck5vQkZfTm9Ob2RlICcuJyBJREVOVAor
ICB8IE1lbWJlckV4cHJOb0JGX05vTm9kZSAnLicgSWRlbnRpZmllck9yUmVzZXJ2ZWQKICAgfCBO
RVcgTWVtYmVyRXhwcl9Ob05vZGUgQXJndW1lbnRzX05vTm9kZQogOwogCkBAIC0xMzMzLDE0ICsx
Mzk2LDE0IEBAIENhbGxFeHByX05vTm9kZToKICAgICBNZW1iZXJFeHByX05vTm9kZSBBcmd1bWVu
dHNfTm9Ob2RlCiAgIHwgQ2FsbEV4cHJfTm9Ob2RlIEFyZ3VtZW50c19Ob05vZGUKICAgfCBDYWxs
RXhwcl9Ob05vZGUgJ1snIEV4cHJfTm9Ob2RlICddJwotICB8IENhbGxFeHByX05vTm9kZSAnLicg
SURFTlQKKyAgfCBDYWxsRXhwcl9Ob05vZGUgJy4nIElkZW50aWZpZXJPclJlc2VydmVkCiA7CiAK
IENhbGxFeHByTm9CRl9Ob05vZGU6CiAgICAgTWVtYmVyRXhwck5vQkZfTm9Ob2RlIEFyZ3VtZW50
c19Ob05vZGUKICAgfCBDYWxsRXhwck5vQkZfTm9Ob2RlIEFyZ3VtZW50c19Ob05vZGUKICAgfCBD
YWxsRXhwck5vQkZfTm9Ob2RlICdbJyBFeHByX05vTm9kZSAnXScKLSAgfCBDYWxsRXhwck5vQkZf
Tm9Ob2RlICcuJyBJREVOVAorICB8IENhbGxFeHByTm9CRl9Ob05vZGUgJy4nIElkZW50aWZpZXJP
clJlc2VydmVkCiA7CiAKIEFyZ3VtZW50c19Ob05vZGU6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTFjN2RkYi4uYWE1ODY2
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEwLTAxLTIxICBQYXRyaWNrIE11ZWxsZXIgIDxQ
YXRyaWNrX011ZWxsZXJAdXMuaWJtLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBbGxvdyBSZXNlcnZlZCBXb3JkcyBpbiBQcm9wZXJ0eSBBY2Nl
c3NvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMy
NzIyCisKKyAgICAgICAgKiBmYXN0L2pzL3Jlc2VydmVkLXdvcmRzLWFzLXByb3BlcnRpZXMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3Jlc2VydmVkLXdvcmRzLWFzLXBy
b3BlcnRpZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9zY3JpcHQtdGVzdHMvcmVz
ZXJ2ZWQtd29yZHMtYXMtcHJvcGVydGllcy5qczogQWRkZWQuCisgICAgICAgIChjYW5Vc2VBc0xp
dGVyYWxQcm9wZXJ0eSk6CisKIDIwMTAtMDEtMTkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydGllcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc2VydmVkLXdvcmRzLWFzLXByb3Bl
cnRpZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJi
MDE3MGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc2VydmVkLXdv
cmRzLWFzLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTUgQEAKK1RoaXMgZmls
ZSBjaGVja3MgdGhhdCBrZXl3b3JkcyBjYW4gYmUgdXNlZCBhcyBsaXRlcmFsICh1bnF1b3RlZCkg
cHJvcGVydHkga2V5cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY2Fu
VXNlQXNMaXRlcmFsUHJvcGVydHkoJ2JyZWFrJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVy
YWxQcm9wZXJ0eSgnY2FzZScpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHko
J2NhdGNoJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnY2xhc3MnKSBp
cyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdjb25zdCcpIGlzIHRydWUKK1BB
U1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ2NvbnRpbnVlJykgaXMgdHJ1ZQorUEFTUyBjYW5V
c2VBc0xpdGVyYWxQcm9wZXJ0eSgnZGVidWdnZXInKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0
ZXJhbFByb3BlcnR5KCdkZWZhdWx0JykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9w
ZXJ0eSgnZGVsZXRlJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnZG8n
KSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdlbHNlJykgaXMgdHJ1ZQor
UEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnZW51bScpIGlzIHRydWUKK1BBU1MgY2FuVXNl
QXNMaXRlcmFsUHJvcGVydHkoJ2V4cG9ydCcpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFs
UHJvcGVydHkoJ2V4dGVuZHMnKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5
KCdmYWxzZScpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ2ZpbmFsbHkn
KSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdmb3InKSBpcyB0cnVlCitQ
QVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdmdW5jdGlvbicpIGlzIHRydWUKK1BBU1MgY2Fu
VXNlQXNMaXRlcmFsUHJvcGVydHkoJ2lmJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQ
cm9wZXJ0eSgnaW1wbGVtZW50cycpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVy
dHkoJ2ltcG9ydCcpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ2luJykg
aXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnaW5zdGFuY2VvZicpIGlzIHRy
dWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ2ludGVyZmFjZScpIGlzIHRydWUKK1BB
U1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ2xldCcpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNM
aXRlcmFsUHJvcGVydHkoJ25ldycpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVy
dHkoJ251bGwnKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCdwYWNrYWdl
JykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgncHJpdmF0ZScpIGlzIHRy
dWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ3Byb3RlY3RlZCcpIGlzIHRydWUKK1BB
U1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ3B1YmxpYycpIGlzIHRydWUKK1BBU1MgY2FuVXNl
QXNMaXRlcmFsUHJvcGVydHkoJ3JldHVybicpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFs
UHJvcGVydHkoJ3N0YXRpYycpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHko
J3N1cGVyJykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgnc3dpdGNoJykg
aXMgdHJ1ZQorUEFTUyBjYW5Vc2VBc0xpdGVyYWxQcm9wZXJ0eSgndGhpcycpIGlzIHRydWUKK1BB
U1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ3Rocm93JykgaXMgdHJ1ZQorUEFTUyBjYW5Vc2VB
c0xpdGVyYWxQcm9wZXJ0eSgndHJ1ZScpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJv
cGVydHkoJ3RyeScpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ3R5cGVv
ZicpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ3ZhcicpIGlzIHRydWUK
K1BBU1MgY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJ3ZvaWQnKSBpcyB0cnVlCitQQVNTIGNhblVz
ZUFzTGl0ZXJhbFByb3BlcnR5KCd3aGlsZScpIGlzIHRydWUKK1BBU1MgY2FuVXNlQXNMaXRlcmFs
UHJvcGVydHkoJ3dpdGgnKSBpcyB0cnVlCitQQVNTIGNhblVzZUFzTGl0ZXJhbFByb3BlcnR5KCd5
aWVsZCcpIGlzIHRydWUKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzZXJ2ZWQtd29y
ZHMtYXMtcHJvcGVydGllcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNlcnZlZC13b3Jk
cy1hcy1wcm9wZXJ0aWVzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZTM1ZDcyZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzZXJ2ZWQt
d29yZHMtYXMtcHJvcGVydGllcy5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydGllcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pz
L3NjcmlwdC10ZXN0cy9yZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0aWVzLmpzIGIvTGF5b3V0VGVz
dHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvcmVzZXJ2ZWQtd29yZHMtYXMtcHJvcGVydGllcy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTg0NTIyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvcmVzZXJ2ZWQtd29yZHMtYXMt
cHJvcGVydGllcy5qcwpAQCAtMCwwICsxLDkxIEBACitmdW5jdGlvbiBjYW5Vc2VBc0xpdGVyYWxQ
cm9wZXJ0eSh3b3JkKQoreworICAgIHRyeSB7CisgICAgICAgIGV2YWwoInZhciB4ID0geyAiICsg
d29yZCArICIgOiAxMDEgfSA7Iik7CisgICAgICAgIGV2YWwoInZhciBwYXNzZWQgPSAoeC4iICsg
d29yZCArICIgPT0gMTAxKTsiKQorICAgICAgICByZXR1cm4gcGFzc2VkOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworLy8gc2VlIDcuNi4xICJS
ZXNlcnZlZCBXb3JkcyIgb2YgdGhlIEVDTUFTY3JpcHQgTGFuZ3VhZ2Ugc3BlYywgNXRoIGVkaXRp
b24KKy8vIGZvciB0aGUga2V5d29yZCBsaXN0IGFuZCBncm91cGluZ3MKKwordmFyIGxpdGVyYWxz
ID0gWworICAgICJmYWxzZSIsCisgICAgIm51bGwiLAorICAgICJ0cnVlIgorXQorCit2YXIgZnV0
dXJlUmVzZXJ2ZWRXb3JkcyA9IFsKKyAgICAiY2xhc3MiLAorICAgICJjb25zdCIsCisgICAgImVu
dW0iLAorICAgICJleHBvcnQiLAorICAgICJleHRlbmRzIiwKKyAgICAiaW1wb3J0IiwKKyAgICAi
c3VwZXIiCitdCisKK3ZhciBmdXR1cmVSZXNlcnZlZFdvcmRzU3RyaWN0ID0gWworICAgICJpbXBs
ZW1lbnRzIiwKKyAgICAiaW50ZXJmYWNlIiwKKyAgICAibGV0IiwKKyAgICAicGFja2FnZSIsCisg
ICAgInByaXZhdGUiLAorICAgICJwcm90ZWN0ZWQiLAorICAgICJwdWJsaWMiLAorICAgICJzdGF0
aWMiLAorICAgICJ5aWVsZCIKK10KKwordmFyIGtleXdvcmRzID0gWworICAgICJicmVhayIsCisg
ICAgImNhc2UiLAorICAgICJjYXRjaCIsCisgICAgImNvbnRpbnVlIiwKKyAgICAiZGVidWdnZXIi
LAorICAgICJkZWZhdWx0IiwKKyAgICAiZGVsZXRlIiwKKyAgICAiZG8iLAorICAgICJlbHNlIiwK
KyAgICAiZmluYWxseSIsCisgICAgImZvciIsCisgICAgImZ1bmN0aW9uIiwKKyAgICAiaWYiLAor
ICAgICJpbiIsCisgICAgImluc3RhbmNlb2YiLAorICAgICJuZXciLAorICAgICJyZXR1cm4iLAor
ICAgICJzd2l0Y2giLAorICAgICJ0aGlzIiwKKyAgICAidGhyb3ciLAorICAgICJ0cnkiLAorICAg
ICJ0eXBlb2YiLAorICAgICJ2YXIiLAorICAgICJ2b2lkIiwKKyAgICAid2hpbGUiLAorICAgICJ3
aXRoIgorXTsKKwordmFyIGFsbEtleXdvcmRzID0gW10uCisgICAgICAgIGNvbmNhdChrZXl3b3Jk
cykuCisgICAgICAgIGNvbmNhdChsaXRlcmFscykuCisgICAgICAgIGNvbmNhdChmdXR1cmVSZXNl
cnZlZFdvcmRzKS4KKyAgICAgICAgY29uY2F0KGZ1dHVyZVJlc2VydmVkV29yZHNTdHJpY3QpOwor
CithbGxLZXl3b3Jkcy5zb3J0KCk7CisKK2Rlc2NyaXB0aW9uKAorIlRoaXMgZmlsZSBjaGVja3Mg
dGhhdCBrZXl3b3JkcyBjYW4gYmUgdXNlZCBhcyBsaXRlcmFsICh1bnF1b3RlZCkgcHJvcGVydHkg
a2V5cy4iCispOworCisKK2FsbEtleXdvcmRzLmZvckVhY2goZnVuY3Rpb24oa2V5d29yZCkgewor
ICAgIHNob3VsZEJlVHJ1ZSgiY2FuVXNlQXNMaXRlcmFsUHJvcGVydHkoJyIgKyBrZXl3b3JkICsg
IicpIik7Cit9KQorCitkZWJ1ZygiIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
Owo=
</data>
<flag name="review"
          id="29517"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>