<?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>14873</bug_id>
          
          <creation_ts>2007-08-03 12:58:50 -0700</creation_ts>
          <short_desc>REGRESSION (Safari 4): regular expression pattern size limit lower than Safari 3.2, other browsers, breaks SAP</short_desc>
          <delta_ts>2009-03-19 13:33:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://en.wikipedia.org/wiki/User:Lupin/badwords</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, NeedsReduction</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Derk-Jan Hartman">hartman.wiki</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>erikcorry</cc>
    
    <cc>feng</cc>
    
    <cc>ggaren</cc>
    
    <cc>mrowe</cc>
    
    <cc>vicki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>3085</commentid>
    <comment_count>0</comment_count>
    <who name="Derk-Jan Hartman">hartman.wiki</who>
    <bug_when>2007-08-03 12:58:50 -0700</bug_when>
    <thetext>This link is a set of badwords that get fed to Regexp, in a Javascript antivandal tool. The list is soo enormous that Safari hits its technical limit for the length of regular expressions. Not that strange, but bdash told me to report it regardless. (PS. FF 2.* does handle this RegExp

(PS ERR20 of the regexp lib that is being used.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2952</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-08-06 06:11:16 -0700</bug_when>
    <thetext>How does one reproduce the problem? Just opening the bug URL doesn&apos;t cause any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2703</commentid>
    <comment_count>2</comment_count>
    <who name="Derk-Jan Hartman">hartman.wiki</who>
    <bug_when>2007-08-09 15:25:37 -0700</bug_when>
    <thetext>To reproduce:
Register in Wikipedia.
Open en.wikipedia.org/wiki/User:yourusername/monobook.js

Add to this page the following line:
importScript(&quot;User:Lupin/recent2.js&quot;);

Now go to either of the following links:
http://en.wikipedia.org/wiki/User:Lupin/Filter_recent_changes
http://en.wikipedia.org/wiki/User:Lupin/All_recent_changes
http://en.wikipedia.org/wiki/User:Lupin/Recent_IP_edits
http://en.wikipedia.org/wiki/User:Lupin/Monitor_my_watchlist
http://en.wikipedia.org/wiki/User:Lupin/Live_spellcheck

These are tools that check the recent changes of specific sets of pages in wikipedia for words and other signs of vandalism (blanking). The bad words list is used by at least &quot;filter recent changes&quot;.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2642</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-08-10 06:58:52 -0700</bug_when>
    <thetext>Confirmed with a local debug build of WebKit r24922 with Safari 3 Public Beta v. 3.0.3 (522.12.1) on Mac OS X 10.4.10 (8R218).

Console output:
(event handler):Invalid regular expression: regular expression too large

JavaScript Console:
Invalid regular expression: regular expression too large
http://en.wikipedia.org/w/index.php?title=User%3ALupin%2Frecent2.js&amp;action=raw&amp;ctype=text/javascript
Line: 120

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2636</commentid>
    <comment_count>4</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-08-10 07:02:17 -0700</bug_when>
    <thetext>NOTE: After following the steps in Comment #2, you may have to reload the page twice.

Safari 2.0.4 (419.3) with original WebKit on Mac OS X 10.4.10 (8R218) apparently silently fails.  It adds the orange &quot;update&quot; rectangles to the screen output, but there is no content with them, and no error message.  This is not a regression.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2468</commentid>
    <comment_count>5</comment_count>
    <who name="Derk-Jan Hartman">hartman.wiki</who>
    <bug_when>2007-08-12 12:43:29 -0700</bug_when>
    <thetext>I did some looking around myself after this and found the following:

This error translates to ERR20 of the regexp lib and is triggered by a size check (in pcre/pcre_compile.c) against the define MAX_PATTERN_SIZE

MAX_PATTERN_SIZE itself is defined in pcre/pcre_internal.h
This define is dependant on the define LINK_SIZE in the same file.

Normally the max size is 64K for a regexp, but if you set LINK_SIZE higher (3 or 4 instead of 2), then the pcre lib can actually handle higher sizes than that. LINK_SIZE can be defined on the compile commandline according to the header file.

I hope to have saved someone some time and good luck :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2470</commentid>
    <comment_count>6</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-08-12 12:50:53 -0700</bug_when>
    <thetext>It would be interesting to know what the maximum size of a regular expression in Firefox and MSIE 6/7 are.  I imagine you could simple create a gigantic regex, then try to use it until you get an exception.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2474</commentid>
    <comment_count>7</comment_count>
      <attachid>15940</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-08-12 14:20:38 -0700</bug_when>
    <thetext>Created attachment 15940
Test maximum regex length

This file tests the maximum length that a regular expression may contain in a browser.  My results:

Safari 3 Public Beta v. 3.0.3 (522.12.1) with WebKit r25023 debug build:  32767
Opera 9.22:  2097151

Could someone test MSIE 6 and 7?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2475</commentid>
    <comment_count>8</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-08-12 14:26:48 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=15940) [edit]
&gt; Test maximum regex length

DO NOT try this on Safari 2!  It doesn&apos;t throw an exception when the regex is too big, so there&apos;s no way for the script to know when it&apos;s hit a limit.  (Maybe checking the value of r would work, though?)

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2176</commentid>
    <comment_count>9</comment_count>
    <who name="Derk-Jan Hartman">hartman.wiki</who>
    <bug_when>2007-08-16 08:04:57 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Could someone test MSIE 6 and 7?

MSIE 6 on WinXP on my iMac Intel parallels install:
limit: 67108863
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68728</commentid>
    <comment_count>10</comment_count>
    <who name="Claus Conrad">mail</who>
    <bug_when>2008-01-29 16:01:25 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; MSIE 6 on WinXP on my iMac Intel parallels install:
&gt; limit: 67108863

Same limit on my MSIE 7 on WinXP on Macbook Intel Parallels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68797</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-01-30 05:17:39 -0800</bug_when>
    <thetext>It&apos;s easy to make maximum regular expression length much longer. We can change the links to be 32 bits rather than 16 bits. This makes compiled regular expressions larger and also will make matching slower. This is equivalent to setting LINK_SIZE to 4 in the original PCRE source.

As part of improving JavaScript performance, we were looking at some optimizations that would make compiled regular expressions larger than they are today.

One of these ideas was to make the compiled regular expressions use a pointer for each opcode instead of a byte code. The idea was that this was affordable because regular expressions are usually very small. I suppose this optimization is a bad idea if there are some huge regular expressions to be processed. But on the other hand, this would cause us to change the link size to be the same size as a pointer, which would eliminate arbitrary size limit on the regular expression entirely. So it would blow up the size of compiled regular expressions, but eliminate the 64K limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90837</commentid>
    <comment_count>12</comment_count>
    <who name="Erik Corry">erikcorry</who>
    <bug_when>2008-09-11 02:09:15 -0700</bug_when>
    <thetext>I have a patch for this.  It&apos;s against V8&apos;s copy of JSCRE so it may not go in cleanly to the head.  I can&apos;t see any performance regressions from it, strangely enough.  It runs the tests I have thrown at it so far including the Mozilla tests that used to fail due to large regexps.  However I don&apos;t think the Mozilla tests test very thoroughly since they passed with the larger size limit even before I fixed putLinkValueAllowZero and GetLinkValueAllowZero to actually work.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90851</commentid>
    <comment_count>13</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-09-11 06:11:19 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; I have a patch for this.  It&apos;s against V8&apos;s copy of JSCRE so it may not go in
&gt; cleanly to the head.  I can&apos;t see any performance regressions from it,
&gt; strangely enough.  It runs the tests I have thrown at it so far including the
&gt; Mozilla tests that used to fail due to large regexps.  However I don&apos;t think
&gt; the Mozilla tests test very thoroughly since they passed with the larger size
&gt; limit even before I fixed putLinkValueAllowZero and GetLinkValueAllowZero to
&gt; actually work.

The patch was attached to Bug 12638 as Attachment #23342.

Please report the results of running SunSpider with and without this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96842</commentid>
    <comment_count>14</comment_count>
    <who name="Erik Corry">erikcorry</who>
    <bug_when>2008-10-28 01:55:45 -0700</bug_when>
    <thetext>$ ./sunspider-compare-results --shell=/auto/JavaScriptV8/Archive/611/bin/v8 v8-611.txt v8-611-large-regexps.txt                                              


TEST                   COMPARISON            FROM                 TO             DETAILS

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

** TOTAL **:           -                 1513.6ms +/- 2.9%   1500.7ms +/- 0.8% 

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

  3d:                  -                  161.0ms +/- 10.8%    152.9ms +/- 1.4% 
    cube:              ??                  39.9ms +/- 3.4%     40.3ms +/- 3.1%     not conclusive: might be *1.010x as slow*
    morph:             -                   68.2ms +/- 23.6%     60.0ms +/- 1.1% 
    raytrace:          -                   52.9ms +/- 0.8%     52.6ms +/- 1.1% 

  access:              ??                  98.7ms +/- 2.5%    101.1ms +/- 3.1%     not conclusive: might be *1.024x as slow*
    binary-trees:      ??                   6.9ms +/- 13.3%      7.2ms +/- 18.0%     not conclusive: might be *1.043x as slow*
    fannkuch:          -                   34.1ms +/- 3.5%     33.9ms +/- 2.1% 
    nbody:             *1.065x as slow*    33.8ms +/- 1.7%     36.0ms +/- 9.0%     significant
    nsieve:            ??                  23.9ms +/- 5.5%     24.0ms +/- 2.0%     not conclusive: might be *1.004x as slow*

  bitops:              ??                  73.9ms +/- 1.8%     75.2ms +/- 2.3%     not conclusive: might be *1.018x as slow*
    3bit-bits-in-byte: ??                   6.3ms +/- 5.5%      6.4ms +/- 7.8%     not conclusive: might be *1.016x as slow*
    bits-in-byte:      ??                  13.8ms +/- 3.3%     13.9ms +/- 2.9%     not conclusive: might be *1.007x as slow*
    bitwise-and:       ??                  19.2ms +/- 3.8%     20.1ms +/- 5.4%     not conclusive: might be *1.047x as slow*
    nsieve-bits:       ??                  34.6ms +/- 1.4%     34.8ms +/- 1.6%     not conclusive: might be *1.006x as slow*

  controlflow:         ??                   5.1ms +/- 15.4%      5.9ms +/- 20.1%     not conclusive: might be *1.157x as slow*
    recursive:         ??                   5.1ms +/- 15.4%      5.9ms +/- 20.1%     not conclusive: might be *1.157x as slow*

  crypto:              -                   87.7ms +/- 17.3%     84.7ms +/- 3.6% 
    aes:               *1.031x as slow*    29.0ms +/- 1.6%     29.9ms +/- 4.0%     significant
    md5:               *1.073x as slow*    27.4ms +/- 2.2%     29.4ms +/- 9.5%     significant
    sha1:              -                   31.3ms +/- 47.1%     25.4ms +/- 2.4% 

  date:                -                  268.8ms +/- 2.0%    269.0ms +/- 1.4% 
    format-tofte:      -                  111.2ms +/- 4.9%    110.7ms +/- 1.6% 
    format-xparb:      ??                 157.6ms +/- 0.4%    158.3ms +/- 2.2%     not conclusive: might be *1.004x as slow*

  math:                -                  147.7ms +/- 4.1%    145.6ms +/- 1.4% 
    cordic:            ??                  69.9ms +/- 0.9%     70.9ms +/- 1.9%     not conclusive: might be *1.014x as slow*
    partial-sums:      -                   57.4ms +/- 10.8%     54.7ms +/- 3.5% 
    spectral-norm:     -                   20.4ms +/- 5.8%     20.0ms +/- 1.7% 

  regexp:              *1.011x as slow*   226.6ms +/- 0.3%    229.2ms +/- 0.4%     significant
    dna:               *1.011x as slow*   226.6ms +/- 0.3%    229.2ms +/- 0.4%     significant

  string:              1.016x as fast     444.1ms +/- 0.8%    437.1ms +/- 1.4%     significant
    base64:            -                   55.3ms +/- 1.7%     54.4ms +/- 4.5% 
    fasta:             ??                  43.1ms +/- 1.6%     43.4ms +/- 3.7%     not conclusive: might be *1.007x as slow*
    tagcloud:          1.017x as fast     120.4ms +/- 0.8%    118.4ms +/- 0.9%     significant
    unpack-code:       1.035x as fast     163.6ms +/- 1.8%    158.0ms +/- 2.7%     significant
    validate-input:    ??                  61.7ms +/- 1.0%     62.9ms +/- 5.3%     not conclusive: might be *1.019x as slow*
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96850</commentid>
    <comment_count>15</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-10-28 04:20:57 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Please report the results of running SunSpider with and without this patch.

Thanks!

&gt; The patch was attached to Bug 12638 as Attachment #23342 [edit].

Please repost the patch to this bug and set the &quot;review?&quot; flag to have it reviewed.  See this page for more details:

http://webkit.org/coding/contributing.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97167</commentid>
    <comment_count>16</comment_count>
    <who name="Derk-Jan Hartman">hartman.wiki</who>
    <bug_when>2008-10-30 14:09:27 -0700</bug_when>
    <thetext>it seems this ticket is stale, even though there appears to be a working patch, can someone please update it, take the necessary steps ? (/me has not idea what those are)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106587</commentid>
    <comment_count>17</comment_count>
    <who name="Erik Corry">erikcorry</who>
    <bug_when>2009-01-22 02:55:31 -0800</bug_when>
    <thetext>New versions of JSC are not using the PCRE-based library for this regexp any more so my patch no longer works.  I guess WREC has a similar limitation that prevents this huge regexp from working.  It works fine in tracemonkey and tip-of-tree V8.  I have no plans to debug WREC to find the problem there so the current state of affairs is that there is no patch to fix this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110228</commentid>
    <comment_count>18</comment_count>
    <who name="Vicki Murley">vicki</who>
    <bug_when>2009-02-19 10:50:56 -0800</bug_when>
    <thetext>In Radar &lt;rdar://problem/6603562&gt; </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114364</commentid>
    <comment_count>19</comment_count>
      <attachid>28761</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2009-03-19 13:15:09 -0700</bug_when>
    <thetext>Created attachment 28761
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114366</commentid>
    <comment_count>20</comment_count>
      <attachid>28762</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2009-03-19 13:23:59 -0700</bug_when>
    <thetext>Created attachment 28762
patch

Fixed a layout test that I missed the first time around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114367</commentid>
    <comment_count>21</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2009-03-19 13:33:30 -0700</bug_when>
    <thetext>Committed revision 41842.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>15940</attachid>
            <date>2007-08-12 14:20:38 -0700</date>
            <delta_ts>2007-08-12 14:20:38 -0700</delta_ts>
            <desc>Test maximum regex length</desc>
            <filename>bug-14873-test-regex-length.html</filename>
            <type>text/html</type>
            <size>1074</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c2NyaXB0PgpmdW5jdGlvbiBydW5UZXN0KCkgewogICAgdmFyIGEgPSAi
YSI7CiAgICB2YXIgZTsKICAgIHZhciBtaW4gPSAwOwogICAgdmFyIG1heCA9IGEubGVuZ3RoOwog
ICAgdHJ5IHsKICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICBldmFsKCJ2YXIgciA9IC8i
ICsgYSArICIvOyIpOwogICAgICAgICAgICBhICs9IGE7CiAgICAgICAgICAgIG1pbiA9IG1heDsK
ICAgICAgICAgICAgbWF4ID0gYS5sZW5ndGg7CiAgICAgICAgfQogICAgfQogICAgY2F0Y2ggKGUp
IHsgfQogICAgdmFyIGxhc3RleGNlcHRpb24gPSBmYWxzZTsKICAgIHdoaWxlIChtYXggLSBtaW4g
PiAxKSB7CiAgICAgICAgdmFyIG1pZCA9IG1pbiArIChtYXggLSBtaW4pIC8gMjsKICAgICAgICB0
cnkgewogICAgICAgICAgICBldmFsKCJ2YXIgciA9IC8iICsgYS5zdWJzdHIobWlkKSArICIvOyIp
OwogICAgICAgICAgICBtaW4gPSBtaWQ7CiAgICAgICAgICAgIGxhc3RleGNlcHRpb24gPSBmYWxz
ZTsKICAgICAgICB9CiAgICAgICAgY2F0Y2ggKGUpIHsKICAgICAgICAgICAgbWF4ID0gbWlkOwog
ICAgICAgICAgICBsYXN0ZXhjZXB0aW9uID0gdHJ1ZTsKICAgICAgICB9CiAgICB9CiAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmlubmVySFRNTCA9ICJMb25nZXN0IHJlZ2V4
IGFsbG93ZWQ6ICIgKyBtaW47Cn0KPC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHk+CjxkaXY+CjxwPlRo
aXMgcGFnZSB0ZXN0cyB0aGUgdXBwZXIgbGltaXQgZm9yIGxlbmd0aCBvZiByZWd1bGFyIGV4cHJl
c3Npb25zIGluIGEgYnJvd3Nlci48L3A+CjxwPjxzdHJvbmc+V0FSTklORzo8L3N0cm9uZz4gRmly
ZWZveCBpcyBsaW1pdGVkIG9ubHkgYnkgbWVtb3J5LCBzbyB0aGlzIHRlc3Qgd2lsbCBoYW5nIHlv
dXIgbWFjaGluZSB1bnRpbCB0aGUgbWVtb3J5IGxpbWl0IGlzIHJlYWNoZWQhPC9wPgo8L2Rpdj4K
PGRpdj48YnV0dG9uIG9uY2xpY2s9InJ1blRlc3QoKSI+UnVuIFRlc3Q8L2J1dHRvbj48L2Rpdj4K
PGRpdj48cCBpZD0iY29uc29sZSI+PC9wPjwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28761</attachid>
            <date>2009-03-19 13:15:09 -0700</date>
            <delta_ts>2009-03-19 13:23:59 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>7575</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQxODQxKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMDktMDMtMTkgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEZpeGVkIDxyZGFyOi8vcHJvYmxlbS82NjAzNTYy
PiBSRUdSRVNTSU9OIChTYWZhcmkgNCk6IHJlZ3VsYXIgZXhwcmVzc2lvbgorICAgICAgICBwYXR0
ZXJuIHNpemUgbGltaXQgbG93ZXIgdGhhbiBTYWZhcmkgMy4yLCBvdGhlciBicm93c2VycywgYnJl
YWtzIFNBUCAoMTQ4NzMpCisgICAgICAgIAorICAgICAgICBCdW1wZWQgdGhlIHBhdHRlcm4gc2l6
ZSBsaW1pdCB0byAxTUIsIGFuZCBzdGFuZGFyZGl6ZWQgaXQgYmV0d2VlbiBQQ1JFCisgICAgICAg
IGFuZCBXUkVDLiAoRW1waXJpY2FsIHRlc3Rpbmcgc2F5cyB0aGF0IHdlIGNhbiBlYXNpbHkgY29t
cGlsZSBhIDFNQiByZWd1bGFyCisgICAgICAgIGV4cHJlc3Npb24gd2l0aG91dCByaXNraW5nIGEg
aGFuZy4gT3RoZXIgYnJvd3NlcnMgc3VwcG9ydCBiaWdnZXIgcmVndWxhcgorICAgICAgICBleHBy
ZXNzaW9ucywgYnV0IGFsc28gaGFuZy4pCisgICAgICAgIAorICAgICAgICBTdW5TcGlkZXIgcmVw
b3J0cyBubyBjaGFuZ2UuCisgICAgICAgIAorICAgICAgICBJIHN0YXJ0ZWQgd2l0aCBhIHBhdGNo
IHBvc3RlZCB0byBCdWd6aWxsYSBieSBFcmlrIENvcnJ5IChlcmlrY29ycnlAZ29vZ2xlLmNvbSku
CisgICAgICAgIAorICAgICAgICAqIHBjcmUvcGNyZV9pbnRlcm5hbC5oOgorICAgICAgICAocHV0
M0J5dGVWYWx1ZSk6CisgICAgICAgIChnZXQzQnl0ZVZhbHVlKToKKyAgICAgICAgKHB1dDNCeXRl
VmFsdWVBbmRBZHZhbmNlKToKKyAgICAgICAgKHB1dExpbmtWYWx1ZUFsbG93WmVybyk6CisgICAg
ICAgIChnZXRMaW5rVmFsdWVBbGxvd1plcm8pOiBNYWRlIFBDUkUncyAiTElOS19TSVpFIiAodGhl
IG51bWJlciBvZiBieXRlcworICAgICAgICB1c2VkIHRvIHJlY29yZCBqdW1wcyBiZXR3ZWVuIGJ5
dGVjb2RlcykgMywgdG8gYWNjb21vZGF0ZSBsYXJnZXIgcG90ZW50aWFsCisgICAgICAgIGp1bXBz
LiBCdW1wZWQgUENSRSdzICJNQVhfUEFUVEVSTl9TSVpFIiB0byAxTUIuIChUZWNobmljYWxseSwg
YXQgdGhpcworICAgICAgICBMSU5LX1NJWkUsIHdlIGNhbiBzdXBwb3J0IGV2ZW4gbGFyZ2VyIHBh
dHRlcm5zLCBidXQgd2UgcmlzayBhIGhhbmcgZHVyaW5nCisgICAgICAgIGNvbXBpbGF0aW9uLCBh
bmQgaXQncyBub3QgY2xlYXIgdGhhdCBzdWNoIGxhcmdlIHBhdHRlcm5zIGFyZSBpbXBvcnRhbnQK
KyAgICAgICAgb24gdGhlIHdlYi4pCisKKyAgICAgICAgKiB3cmVjL1dSRUMuY3BwOgorICAgICAg
ICAoSlNDOjpXUkVDOjpHZW5lcmF0b3I6OmNvbXBpbGVSZWdFeHApOiBNYXRjaCBQQ1JFJ3MgbWF4
aW11bSBwYXR0ZXJuIHNpemUsCisgICAgICAgIHRvIGF2b2lkIHF1aXJrcyBiZXR3ZWVuIHBsYXRm
b3Jtcy4KKwogMjAwOS0wMy0xOCAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSb2xsaW5nIG91dCByNDE4MTggc2luY2UgaXQgYnJva2UgdGhlIHdpbmRvd3MgYnVpbGQu
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfaW50ZXJuYWwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfaW50ZXJuYWwuaAkocmV2aXNpb24gNDE4MTcpCisr
KyBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfaW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAt
ODUsNyArODUsNyBAQCB0b3RhbCBsZW5ndGguICovCiBvZmZzZXRzIHdpdGhpbiB0aGUgY29tcGls
ZWQgcmVnZXguIFRoZSBkZWZhdWx0IGlzIDIsIHdoaWNoIGFsbG93cyBmb3IgY29tcGlsZWQKIHBh
dHRlcm5zIHVwIHRvIDY0SyBsb25nLiAqLwogCi0jZGVmaW5lIExJTktfU0laRSAgIDIKKyNkZWZp
bmUgTElOS19TSVpFICAgMwogCiAvKiBEZWZpbmUgREVCVUcgdG8gZ2V0IGRlYnVnZ2luZyBvdXRw
dXQgb24gc3Rkb3V0LiAqLwogCkBAIC0xMjQsMjggKzEyNCw2MCBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgcHV0MkJ5dGVWYWx1ZSh1bnNpZ25lCiAgICAgb3Bjb2RlUHRyWzFdID0gdmFsdWU7CiB9CiAK
K3N0YXRpYyBpbmxpbmUgdm9pZCBwdXQzQnl0ZVZhbHVlKHVuc2lnbmVkIGNoYXIqIG9wY29kZVB0
ciwgaW50IHZhbHVlKQoreworICAgIEFTU0VSVCh2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDB4RkZG
RkZGKTsKKyAgICBvcGNvZGVQdHJbMF0gPSB2YWx1ZSA+PiAxNjsKKyAgICBvcGNvZGVQdHJbMV0g
PSB2YWx1ZSA+PiA4OworICAgIG9wY29kZVB0clsyXSA9IHZhbHVlOworfQorCiBzdGF0aWMgaW5s
aW5lIGludCBnZXQyQnl0ZVZhbHVlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIG9wY29kZVB0cikKIHsK
ICAgICByZXR1cm4gKG9wY29kZVB0clswXSA8PCA4KSB8IG9wY29kZVB0clsxXTsKIH0KIAorc3Rh
dGljIGlubGluZSBpbnQgZ2V0M0J5dGVWYWx1ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBvcGNvZGVQ
dHIpCit7CisgICAgcmV0dXJuIChvcGNvZGVQdHJbMF0gPDwgMTYpIHwgKG9wY29kZVB0clsxXSA8
PCA4KSB8IG9wY29kZVB0clsyXTsKK30KKwogc3RhdGljIGlubGluZSB2b2lkIHB1dDJCeXRlVmFs
dWVBbmRBZHZhbmNlKHVuc2lnbmVkIGNoYXIqJiBvcGNvZGVQdHIsIGludCB2YWx1ZSkKIHsKICAg
ICBwdXQyQnl0ZVZhbHVlKG9wY29kZVB0ciwgdmFsdWUpOwogICAgIG9wY29kZVB0ciArPSAyOwog
fQogCitzdGF0aWMgaW5saW5lIHZvaWQgcHV0M0J5dGVWYWx1ZUFuZEFkdmFuY2UodW5zaWduZWQg
Y2hhciomIG9wY29kZVB0ciwgaW50IHZhbHVlKQoreworICAgIHB1dDNCeXRlVmFsdWUob3Bjb2Rl
UHRyLCB2YWx1ZSk7CisgICAgb3Bjb2RlUHRyICs9IDM7Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9p
ZCBwdXRMaW5rVmFsdWVBbGxvd1plcm8odW5zaWduZWQgY2hhciogb3Bjb2RlUHRyLCBpbnQgdmFs
dWUpCiB7CisjaWYgTElOS19TSVpFID09IDMKKyAgICBwdXQzQnl0ZVZhbHVlKG9wY29kZVB0ciwg
dmFsdWUpOworI2VsaWYgTElOS19TSVpFID09IDIKICAgICBwdXQyQnl0ZVZhbHVlKG9wY29kZVB0
ciwgdmFsdWUpOworI2Vsc2UKKyMgICBlcnJvciBMSU5LX1NJWkUgbm90IHN1cHBvcnRlZC4KKyNl
bmRpZgogfQogCiBzdGF0aWMgaW5saW5lIGludCBnZXRMaW5rVmFsdWVBbGxvd1plcm8oY29uc3Qg
dW5zaWduZWQgY2hhciogb3Bjb2RlUHRyKQogeworI2lmIExJTktfU0laRSA9PSAzCisgICAgcmV0
dXJuIGdldDNCeXRlVmFsdWUob3Bjb2RlUHRyKTsKKyNlbGlmIExJTktfU0laRSA9PSAyCiAgICAg
cmV0dXJuIGdldDJCeXRlVmFsdWUob3Bjb2RlUHRyKTsKKyNlbHNlCisjICAgZXJyb3IgTElOS19T
SVpFIG5vdCBzdXBwb3J0ZWQuCisjZW5kaWYKIH0KIAotI2RlZmluZSBNQVhfUEFUVEVSTl9TSVpF
ICgxIDw8IDE2KQorI2RlZmluZSBNQVhfUEFUVEVSTl9TSVpFIDEwMjQgKiAxMDI0IC8vIERlcml2
ZWQgYnkgZW1waXJpY2FsIHRlc3Rpbmcgb2YgY29tcGlsZSB0aW1lIGluIFBDUkUgYW5kIFdSRUMu
CitDT01QSUxFX0FTU0VSVChNQVhfUEFUVEVSTl9TSVpFIDwgKDEgPDwgKDggKiBMSU5LX1NJWkUp
KSwgcGNyZV9tYXhfcGF0dGVybl9maXRzX2luX2J5dGVjb2RlKTsKIAogc3RhdGljIGlubGluZSB2
b2lkIHB1dExpbmtWYWx1ZSh1bnNpZ25lZCBjaGFyKiBvcGNvZGVQdHIsIGludCB2YWx1ZSkKIHsK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3dyZWMvV1JFQy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvd3JlYy9XUkVDLmNwcAkocmV2aXNpb24gNDE4MTcpCisrKyBKYXZhU2NyaXB0Q29y
ZS93cmVjL1dSRUMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMiArNDAsOSBAQCB1c2luZyBu
YW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdSRUMgewogCi0vLyBQ
YXR0ZXJucyBsb25nZXIgdGhhbiB0aGlzIGNhbiBoYW5nIHRoZSBjb21waWxlci4KLXN0YXRpYyBj
b25zdCBpbnQgTWF4UGF0dGVyblNpemUgPSAoMSA8PCAxMyk7Ci0KIENvbXBpbGVkUmVnRXhwIEdl
bmVyYXRvcjo6Y29tcGlsZVJlZ0V4cChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVT
dHJpbmcmIHBhdHRlcm4sIHVuc2lnbmVkKiBudW1TdWJwYXR0ZXJuc19wdHIsIGNvbnN0IGNoYXIq
KiBlcnJvcl9wdHIsIFJlZlB0cjxFeGVjdXRhYmxlUG9vbD4mIHBvb2wsIGJvb2wgaWdub3JlQ2Fz
ZSwgYm9vbCBtdWx0aWxpbmUpCiB7Ci0gICAgaWYgKHBhdHRlcm4uc2l6ZSgpID4gTWF4UGF0dGVy
blNpemUpIHsKKyAgICBpZiAocGF0dGVybi5zaXplKCkgPiBNQVhfUEFUVEVSTl9TSVpFKSB7CiAg
ICAgICAgICplcnJvcl9wdHIgPSAicmVndWxhciBleHByZXNzaW9uIHRvbyBsYXJnZSI7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQxODQxKQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDktMDMt
MTkgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIE1hZGUgYSBsYXlvdXQgdGVz
dCBsZXNzIGFncmVzc2l2ZSwgdG8gYWNjb21vZGF0ZSBhIGNoYW5nZSBJJ20gbWFraW5nCisgICAg
ICAgIGZvciA8cmRhcjovL3Byb2JsZW0vNjYwMzU2Mj4gUkVHUkVTU0lPTiAoU2FmYXJpIDQpOiBy
ZWd1bGFyIGV4cHJlc3Npb24KKyAgICAgICAgcGF0dGVybiBzaXplIGxpbWl0IGxvd2VyIHRoYW4g
U2FmYXJpIDMuMiwgb3RoZXIgYnJvd3NlcnMsIGJyZWFrcyBTQVAgKDE0ODczKQorCisgICAgICAg
ICogZmFzdC9qcy9yZWdleHAtY2hhcmNsYXNzLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBmYXN0L2pzL3JlZ2V4cC1jaGFyY2xhc3MtY3Jhc2guaHRtbDogRXhwbGljaXRseSBsaW1pdCB0
aGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMKKyAgICAgICAgaW4gdGhlIHRlc3QgbG9vcC4gT3RoZXJ3
aXNlLCByZWd1bGFyIGV4cHJlc3Npb24gZW5naW5lcyBzdXBwb3J0aW5nIHZlcnkKKyAgICAgICAg
bG9uZyBwYXR0ZXJucyB0YWtlIGEgdmVyeSB2ZXJ5IHZlcnkgbG9uZyB0aW1lIHRvIHJ1biB0aGlz
IHRlc3QuCisKIDIwMDktMDMtMTkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2ZSBIeWF0dApJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9qcy9yZWdleHAtY2hhcmNsYXNzLWNyYXNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ2V4cC1jaGFyY2xhc3MtY3Jhc2gtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiA0MTgxNykKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVnZXhwLWNoYXJjbGFz
cy1jcmFzaC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzIEBACi1UZXN0
cyBhIGNyYXNoIGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gZW5naW5lLiBJZiB0aGlzIHN0b3Bz
IHdpdGggYSBzaW5nbGUgInJlZ3VsYXIgZXhwcmVzc2lvbiB0b28gbGFyZ2UiIGV4Y2VwdGlvbiwg
dGhlbiB0aGUgdGVzdCBzdWNjZWVkZWQuCitUZXN0cyBhIGNyYXNoIGluIHRoZSByZWd1bGFyIGV4
cHJlc3Npb24gZW5naW5lLiBJZiB0aGlzIHRlc3QgcHJpbnRzIGEgUEFTUyBtZXNzYWdlLCB0aGVu
IGl0IHN1Y2NlZWRlZC4KIAotR290IG92ZXIgMTAwMCBpdGVyYXRpb25zIGFuZCB0aGVuIGdvdCB0
aGlzIGV4Y2VwdGlvbjogU3ludGF4RXJyb3I6IEludmFsaWQgcmVndWxhciBleHByZXNzaW9uOiBy
ZWd1bGFyIGV4cHJlc3Npb24gdG9vIGxhcmdlLgorUEFTUzogR290IHRvIHBhdHRlcm4gbGVuZ3Ro
IG9mIDgxOTIgd2l0aG91dCBjcmFzaGluZy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVn
ZXhwLWNoYXJjbGFzcy1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
anMvcmVnZXhwLWNoYXJjbGFzcy1jcmFzaC5odG1sCShyZXZpc2lvbiA0MTgxNykKKysrIExheW91
dFRlc3RzL2Zhc3QvanMvcmVnZXhwLWNoYXJjbGFzcy1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDIwICsxLDEzIEBACi08cD5UZXN0cyBhIGNyYXNoIGluIHRoZSByZWd1bGFyIGV4cHJl
c3Npb24gZW5naW5lLgotSWYgdGhpcyBzdG9wcyB3aXRoIGEgc2luZ2xlICJyZWd1bGFyIGV4cHJl
c3Npb24gdG9vIGxhcmdlIiBleGNlcHRpb24sIHRoZW4gdGhlIHRlc3Qgc3VjY2VlZGVkLjwvcD4K
KzxwPlRlc3RzIGEgY3Jhc2ggaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBlbmdpbmUuIElmIHRo
aXMgdGVzdCBwcmludHMgYSBQQVNTIG1lc3NhZ2UsIHRoZW4gaXQgc3VjY2VlZGVkLjwvcD4KIDxz
Y3JpcHQ+CiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKIHZhciBzdHJpbmcgPSAiIjsKLWZvciAoaSA9IDA7IGkg
PCAxMDAwOyArK2kpIC8vID4KK2ZvciAoaSA9IDA7IGkgPCAxMDAwOyArK2kpCiAgICAgc3RyaW5n
ICs9ICJbWyoqXV0iOwotZm9yICg7IGkgPCAxMDAwMDsgKytpKSB7IC8vID4KK3doaWxlIChzdHJp
bmcubGVuZ3RoIDwgODE5MikgewogICAgIHN0cmluZyArPSAiW1sqKl1dIjsKLSAgICB0cnkgewot
ICAgICAgICBuZXcgUmVnRXhwKHN0cmluZyk7Ci0gICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7Ci0g
ICAgICAgIGlmICgvdG9vIGxhcmdlLy50ZXN0KGV4Y2VwdGlvbikgJiYgaSA+IDEwMDApIHsKLSAg
ICAgICAgICAgIGRvY3VtZW50LndyaXRlbG4oIjxkaXY+R290IG92ZXIgMTAwMCBpdGVyYXRpb25z
IGFuZCB0aGVuIGdvdCB0aGlzIGV4Y2VwdGlvbjogIiArIGV4Y2VwdGlvbiArICIuPC9kaXY+Iik7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICBuZXcgUmVnRXhwKHN0
cmluZyk7CiB9Citkb2N1bWVudC53cml0ZWxuKCI8ZGl2PlBBU1M6IEdvdCB0byBwYXR0ZXJuIGxl
bmd0aCBvZiA4MTkyIHdpdGhvdXQgY3Jhc2hpbmcuPC9kaXY+Iik7CiA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28762</attachid>
            <date>2009-03-19 13:23:59 -0700</date>
            <delta_ts>2009-03-19 13:27:16 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>8214</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQxODQxKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMDktMDMtMTkgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEZpeGVkIDxyZGFyOi8vcHJvYmxlbS82NjAzNTYy
PiBSRUdSRVNTSU9OIChTYWZhcmkgNCk6IHJlZ3VsYXIgZXhwcmVzc2lvbgorICAgICAgICBwYXR0
ZXJuIHNpemUgbGltaXQgbG93ZXIgdGhhbiBTYWZhcmkgMy4yLCBvdGhlciBicm93c2VycywgYnJl
YWtzIFNBUCAoMTQ4NzMpCisgICAgICAgIAorICAgICAgICBCdW1wZWQgdGhlIHBhdHRlcm4gc2l6
ZSBsaW1pdCB0byAxTUIsIGFuZCBzdGFuZGFyZGl6ZWQgaXQgYmV0d2VlbiBQQ1JFCisgICAgICAg
IGFuZCBXUkVDLiAoRW1waXJpY2FsIHRlc3Rpbmcgc2F5cyB0aGF0IHdlIGNhbiBlYXNpbHkgY29t
cGlsZSBhIDFNQiByZWd1bGFyCisgICAgICAgIGV4cHJlc3Npb24gd2l0aG91dCByaXNraW5nIGEg
aGFuZy4gT3RoZXIgYnJvd3NlcnMgc3VwcG9ydCBiaWdnZXIgcmVndWxhcgorICAgICAgICBleHBy
ZXNzaW9ucywgYnV0IGFsc28gaGFuZy4pCisgICAgICAgIAorICAgICAgICBTdW5TcGlkZXIgcmVw
b3J0cyBubyBjaGFuZ2UuCisgICAgICAgIAorICAgICAgICBJIHN0YXJ0ZWQgd2l0aCBhIHBhdGNo
IHBvc3RlZCB0byBCdWd6aWxsYSBieSBFcmlrIENvcnJ5IChlcmlrY29ycnlAZ29vZ2xlLmNvbSku
CisgICAgICAgIAorICAgICAgICAqIHBjcmUvcGNyZV9pbnRlcm5hbC5oOgorICAgICAgICAocHV0
M0J5dGVWYWx1ZSk6CisgICAgICAgIChnZXQzQnl0ZVZhbHVlKToKKyAgICAgICAgKHB1dDNCeXRl
VmFsdWVBbmRBZHZhbmNlKToKKyAgICAgICAgKHB1dExpbmtWYWx1ZUFsbG93WmVybyk6CisgICAg
ICAgIChnZXRMaW5rVmFsdWVBbGxvd1plcm8pOiBNYWRlIFBDUkUncyAiTElOS19TSVpFIiAodGhl
IG51bWJlciBvZiBieXRlcworICAgICAgICB1c2VkIHRvIHJlY29yZCBqdW1wcyBiZXR3ZWVuIGJ5
dGVjb2RlcykgMywgdG8gYWNjb21vZGF0ZSBsYXJnZXIgcG90ZW50aWFsCisgICAgICAgIGp1bXBz
LiBCdW1wZWQgUENSRSdzICJNQVhfUEFUVEVSTl9TSVpFIiB0byAxTUIuIChUZWNobmljYWxseSwg
YXQgdGhpcworICAgICAgICBMSU5LX1NJWkUsIHdlIGNhbiBzdXBwb3J0IGV2ZW4gbGFyZ2VyIHBh
dHRlcm5zLCBidXQgd2UgcmlzayBhIGhhbmcgZHVyaW5nCisgICAgICAgIGNvbXBpbGF0aW9uLCBh
bmQgaXQncyBub3QgY2xlYXIgdGhhdCBzdWNoIGxhcmdlIHBhdHRlcm5zIGFyZSBpbXBvcnRhbnQK
KyAgICAgICAgb24gdGhlIHdlYi4pCisKKyAgICAgICAgKiB3cmVjL1dSRUMuY3BwOgorICAgICAg
ICAoSlNDOjpXUkVDOjpHZW5lcmF0b3I6OmNvbXBpbGVSZWdFeHApOiBNYXRjaCBQQ1JFJ3MgbWF4
aW11bSBwYXR0ZXJuIHNpemUsCisgICAgICAgIHRvIGF2b2lkIHF1aXJrcyBiZXR3ZWVuIHBsYXRm
b3Jtcy4KKwogMjAwOS0wMy0xOCAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSb2xsaW5nIG91dCByNDE4MTggc2luY2UgaXQgYnJva2UgdGhlIHdpbmRvd3MgYnVpbGQu
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfaW50ZXJuYWwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfaW50ZXJuYWwuaAkocmV2aXNpb24gNDE4MTcpCisr
KyBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfaW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAt
ODUsNyArODUsNyBAQCB0b3RhbCBsZW5ndGguICovCiBvZmZzZXRzIHdpdGhpbiB0aGUgY29tcGls
ZWQgcmVnZXguIFRoZSBkZWZhdWx0IGlzIDIsIHdoaWNoIGFsbG93cyBmb3IgY29tcGlsZWQKIHBh
dHRlcm5zIHVwIHRvIDY0SyBsb25nLiAqLwogCi0jZGVmaW5lIExJTktfU0laRSAgIDIKKyNkZWZp
bmUgTElOS19TSVpFICAgMwogCiAvKiBEZWZpbmUgREVCVUcgdG8gZ2V0IGRlYnVnZ2luZyBvdXRw
dXQgb24gc3Rkb3V0LiAqLwogCkBAIC0xMjQsMjggKzEyNCw2MCBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgcHV0MkJ5dGVWYWx1ZSh1bnNpZ25lCiAgICAgb3Bjb2RlUHRyWzFdID0gdmFsdWU7CiB9CiAK
K3N0YXRpYyBpbmxpbmUgdm9pZCBwdXQzQnl0ZVZhbHVlKHVuc2lnbmVkIGNoYXIqIG9wY29kZVB0
ciwgaW50IHZhbHVlKQoreworICAgIEFTU0VSVCh2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDB4RkZG
RkZGKTsKKyAgICBvcGNvZGVQdHJbMF0gPSB2YWx1ZSA+PiAxNjsKKyAgICBvcGNvZGVQdHJbMV0g
PSB2YWx1ZSA+PiA4OworICAgIG9wY29kZVB0clsyXSA9IHZhbHVlOworfQorCiBzdGF0aWMgaW5s
aW5lIGludCBnZXQyQnl0ZVZhbHVlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIG9wY29kZVB0cikKIHsK
ICAgICByZXR1cm4gKG9wY29kZVB0clswXSA8PCA4KSB8IG9wY29kZVB0clsxXTsKIH0KIAorc3Rh
dGljIGlubGluZSBpbnQgZ2V0M0J5dGVWYWx1ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBvcGNvZGVQ
dHIpCit7CisgICAgcmV0dXJuIChvcGNvZGVQdHJbMF0gPDwgMTYpIHwgKG9wY29kZVB0clsxXSA8
PCA4KSB8IG9wY29kZVB0clsyXTsKK30KKwogc3RhdGljIGlubGluZSB2b2lkIHB1dDJCeXRlVmFs
dWVBbmRBZHZhbmNlKHVuc2lnbmVkIGNoYXIqJiBvcGNvZGVQdHIsIGludCB2YWx1ZSkKIHsKICAg
ICBwdXQyQnl0ZVZhbHVlKG9wY29kZVB0ciwgdmFsdWUpOwogICAgIG9wY29kZVB0ciArPSAyOwog
fQogCitzdGF0aWMgaW5saW5lIHZvaWQgcHV0M0J5dGVWYWx1ZUFuZEFkdmFuY2UodW5zaWduZWQg
Y2hhciomIG9wY29kZVB0ciwgaW50IHZhbHVlKQoreworICAgIHB1dDNCeXRlVmFsdWUob3Bjb2Rl
UHRyLCB2YWx1ZSk7CisgICAgb3Bjb2RlUHRyICs9IDM7Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9p
ZCBwdXRMaW5rVmFsdWVBbGxvd1plcm8odW5zaWduZWQgY2hhciogb3Bjb2RlUHRyLCBpbnQgdmFs
dWUpCiB7CisjaWYgTElOS19TSVpFID09IDMKKyAgICBwdXQzQnl0ZVZhbHVlKG9wY29kZVB0ciwg
dmFsdWUpOworI2VsaWYgTElOS19TSVpFID09IDIKICAgICBwdXQyQnl0ZVZhbHVlKG9wY29kZVB0
ciwgdmFsdWUpOworI2Vsc2UKKyMgICBlcnJvciBMSU5LX1NJWkUgbm90IHN1cHBvcnRlZC4KKyNl
bmRpZgogfQogCiBzdGF0aWMgaW5saW5lIGludCBnZXRMaW5rVmFsdWVBbGxvd1plcm8oY29uc3Qg
dW5zaWduZWQgY2hhciogb3Bjb2RlUHRyKQogeworI2lmIExJTktfU0laRSA9PSAzCisgICAgcmV0
dXJuIGdldDNCeXRlVmFsdWUob3Bjb2RlUHRyKTsKKyNlbGlmIExJTktfU0laRSA9PSAyCiAgICAg
cmV0dXJuIGdldDJCeXRlVmFsdWUob3Bjb2RlUHRyKTsKKyNlbHNlCisjICAgZXJyb3IgTElOS19T
SVpFIG5vdCBzdXBwb3J0ZWQuCisjZW5kaWYKIH0KIAotI2RlZmluZSBNQVhfUEFUVEVSTl9TSVpF
ICgxIDw8IDE2KQorI2RlZmluZSBNQVhfUEFUVEVSTl9TSVpFIDEwMjQgKiAxMDI0IC8vIERlcml2
ZWQgYnkgZW1waXJpY2FsIHRlc3Rpbmcgb2YgY29tcGlsZSB0aW1lIGluIFBDUkUgYW5kIFdSRUMu
CitDT01QSUxFX0FTU0VSVChNQVhfUEFUVEVSTl9TSVpFIDwgKDEgPDwgKDggKiBMSU5LX1NJWkUp
KSwgcGNyZV9tYXhfcGF0dGVybl9maXRzX2luX2J5dGVjb2RlKTsKIAogc3RhdGljIGlubGluZSB2
b2lkIHB1dExpbmtWYWx1ZSh1bnNpZ25lZCBjaGFyKiBvcGNvZGVQdHIsIGludCB2YWx1ZSkKIHsK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3dyZWMvV1JFQy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvd3JlYy9XUkVDLmNwcAkocmV2aXNpb24gNDE4MTcpCisrKyBKYXZhU2NyaXB0Q29y
ZS93cmVjL1dSRUMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMiArNDAsOSBAQCB1c2luZyBu
YW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdSRUMgewogCi0vLyBQ
YXR0ZXJucyBsb25nZXIgdGhhbiB0aGlzIGNhbiBoYW5nIHRoZSBjb21waWxlci4KLXN0YXRpYyBj
b25zdCBpbnQgTWF4UGF0dGVyblNpemUgPSAoMSA8PCAxMyk7Ci0KIENvbXBpbGVkUmVnRXhwIEdl
bmVyYXRvcjo6Y29tcGlsZVJlZ0V4cChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVT
dHJpbmcmIHBhdHRlcm4sIHVuc2lnbmVkKiBudW1TdWJwYXR0ZXJuc19wdHIsIGNvbnN0IGNoYXIq
KiBlcnJvcl9wdHIsIFJlZlB0cjxFeGVjdXRhYmxlUG9vbD4mIHBvb2wsIGJvb2wgaWdub3JlQ2Fz
ZSwgYm9vbCBtdWx0aWxpbmUpCiB7Ci0gICAgaWYgKHBhdHRlcm4uc2l6ZSgpID4gTWF4UGF0dGVy
blNpemUpIHsKKyAgICBpZiAocGF0dGVybi5zaXplKCkgPiBNQVhfUEFUVEVSTl9TSVpFKSB7CiAg
ICAgICAgICplcnJvcl9wdHIgPSAicmVndWxhciBleHByZXNzaW9uIHRvbyBsYXJnZSI7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQxODQxKQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDMt
MTkgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIE1hZGUgYSBsYXlvdXQgdGVz
dCBsZXNzIGFncmVzc2l2ZSwgdG8gYWNjb21vZGF0ZSBhIGNoYW5nZSBJJ20gbWFraW5nCisgICAg
ICAgIGZvciA8cmRhcjovL3Byb2JsZW0vNjYwMzU2Mj4gUkVHUkVTU0lPTiAoU2FmYXJpIDQpOiBy
ZWd1bGFyIGV4cHJlc3Npb24KKyAgICAgICAgcGF0dGVybiBzaXplIGxpbWl0IGxvd2VyIHRoYW4g
U2FmYXJpIDMuMiwgb3RoZXIgYnJvd3NlcnMsIGJyZWFrcyBTQVAgKDE0ODczKQorCisgICAgICAg
ICogZmFzdC9qcy9yZWdleHAtY2hhcmNsYXNzLWNyYXNoLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBmYXN0L2pzL3JlZ2V4cC1jaGFyY2xhc3MtY3Jhc2guaHRtbDogRXhwbGljaXRseSBsaW1pdCB0
aGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMKKyAgICAgICAgaW4gdGhlIHRlc3QgbG9vcC4gT3RoZXJ3
aXNlLCByZWd1bGFyIGV4cHJlc3Npb24gZW5naW5lcyBzdXBwb3J0aW5nIHZlcnkKKyAgICAgICAg
bG9uZyBwYXR0ZXJucyB0YWtlIGEgdmVyeSB2ZXJ5IHZlcnkgbG9uZyB0aW1lIHRvIHJ1biB0aGlz
IHRlc3QuCisKKyAgICAgICAgKiBmYXN0L2pzL3Jlc291cmNlcy9yZWdleHAtb3ZlcmZsb3cuanM6
IE1hZGUgdGhlICJ0b28gYmlnIiByZWdleHAgaW4KKyAgICAgICAgdGhpcyB0ZXN0IGV2ZW4gYmln
Z2VyLCB0byBtYXRjaCBvdXIgbmV3IGxpbWl0LgorCiAyMDA5LTAzLTE5ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmUgSHlh
dHQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVnZXhwLWNoYXJjbGFzcy1jcmFzaC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdleHAtY2hhcmNs
YXNzLWNyYXNoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDE4MTcpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2pzL3JlZ2V4cC1jaGFyY2xhc3MtY3Jhc2gtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMyBAQAotVGVzdHMgYSBjcmFzaCBpbiB0aGUgcmVndWxhciBleHByZXNzaW9u
IGVuZ2luZS4gSWYgdGhpcyBzdG9wcyB3aXRoIGEgc2luZ2xlICJyZWd1bGFyIGV4cHJlc3Npb24g
dG9vIGxhcmdlIiBleGNlcHRpb24sIHRoZW4gdGhlIHRlc3Qgc3VjY2VlZGVkLgorVGVzdHMgYSBj
cmFzaCBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uIGVuZ2luZS4gSWYgdGhpcyB0ZXN0IHByaW50
cyBhIFBBU1MgbWVzc2FnZSwgdGhlbiBpdCBzdWNjZWVkZWQuCiAKLUdvdCBvdmVyIDEwMDAgaXRl
cmF0aW9ucyBhbmQgdGhlbiBnb3QgdGhpcyBleGNlcHRpb246IFN5bnRheEVycm9yOiBJbnZhbGlk
IHJlZ3VsYXIgZXhwcmVzc2lvbjogcmVndWxhciBleHByZXNzaW9uIHRvbyBsYXJnZS4KK1BBU1M6
IEdvdCB0byBwYXR0ZXJuIGxlbmd0aCBvZiA4MTkyIHdpdGhvdXQgY3Jhc2hpbmcuCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2pzL3JlZ2V4cC1jaGFyY2xhc3MtY3Jhc2guaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ2V4cC1jaGFyY2xhc3MtY3Jhc2guaHRtbAkocmV2
aXNpb24gNDE4MTcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ2V4cC1jaGFyY2xhc3MtY3Jh
c2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwyMCArMSwxMyBAQAotPHA+VGVzdHMgYSBjcmFz
aCBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uIGVuZ2luZS4KLUlmIHRoaXMgc3RvcHMgd2l0aCBh
IHNpbmdsZSAicmVndWxhciBleHByZXNzaW9uIHRvbyBsYXJnZSIgZXhjZXB0aW9uLCB0aGVuIHRo
ZSB0ZXN0IHN1Y2NlZWRlZC48L3A+Cis8cD5UZXN0cyBhIGNyYXNoIGluIHRoZSByZWd1bGFyIGV4
cHJlc3Npb24gZW5naW5lLiBJZiB0aGlzIHRlc3QgcHJpbnRzIGEgUEFTUyBtZXNzYWdlLCB0aGVu
IGl0IHN1Y2NlZWRlZC48L3A+CiA8c2NyaXB0PgogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CiB2YXIgc3RyaW5n
ID0gIiI7Ci1mb3IgKGkgPSAwOyBpIDwgMTAwMDsgKytpKSAvLyA+Citmb3IgKGkgPSAwOyBpIDwg
MTAwMDsgKytpKQogICAgIHN0cmluZyArPSAiW1sqKl1dIjsKLWZvciAoOyBpIDwgMTAwMDA7ICsr
aSkgeyAvLyA+Cit3aGlsZSAoc3RyaW5nLmxlbmd0aCA8IDgxOTIpIHsKICAgICBzdHJpbmcgKz0g
IltbKipdXSI7Ci0gICAgdHJ5IHsKLSAgICAgICAgbmV3IFJlZ0V4cChzdHJpbmcpOwotICAgIH0g
Y2F0Y2ggKGV4Y2VwdGlvbikgewotICAgICAgICBpZiAoL3RvbyBsYXJnZS8udGVzdChleGNlcHRp
b24pICYmIGkgPiAxMDAwKSB7Ci0gICAgICAgICAgICBkb2N1bWVudC53cml0ZWxuKCI8ZGl2Pkdv
dCBvdmVyIDEwMDAgaXRlcmF0aW9ucyBhbmQgdGhlbiBnb3QgdGhpcyBleGNlcHRpb246ICIgKyBl
eGNlcHRpb24gKyAiLjwvZGl2PiIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICB9CisgICAgbmV3IFJlZ0V4cChzdHJpbmcpOwogfQorZG9jdW1lbnQud3JpdGVsbigiPGRpdj5Q
QVNTOiBHb3QgdG8gcGF0dGVybiBsZW5ndGggb2YgODE5MiB3aXRob3V0IGNyYXNoaW5nLjwvZGl2
PiIpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9yZWdl
eHAtb3ZlcmZsb3cuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJj
ZXMvcmVnZXhwLW92ZXJmbG93LmpzCShyZXZpc2lvbiA0MTgxNykKKysrIExheW91dFRlc3RzL2Zh
c3QvanMvcmVzb3VyY2VzL3JlZ2V4cC1vdmVyZmxvdy5qcwkod29ya2luZyBjb3B5KQpAQCAtMjEs
NyArMjEsNyBAQCBzaG91bGRCZSgnL3soW1xcRC1cXGNhXV3igJ7Co8K1Kz8pfXxbW1xcCiBzaG91
bGRCZSgnL3xbeFxcQi1cXHUwMGI1XS9pLmV4ZWMoIiIpLnRvU3RyaW5nKCknLCAnIiInKTsKIAog
dmFyIHMgPSAiYSI7Ci1mb3IgKHZhciBpID0gMDsgaSA8IDE3OyBpKyspCitmb3IgKHZhciBpID0g
MDsgaSA8IDIxOyBpKyspCiAgICAgcyArPSBzOwogCiBzaG91bGRUaHJvdygnbmV3IFJlZ0V4cChz
KTsnKTsK
</data>
<flag name="review"
          id="14187"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>