<?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>50516</bug_id>
          
          <creation_ts>2010-12-04 05:40:34 -0800</creation_ts>
          <short_desc>Avoid strlen() in AtomicString::fromUTF8</short_desc>
          <delta_ts>2011-02-03 08:16:53 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>51612</dependson>
    
    <dependson>53538</dependson>
          <blocked>43085</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick R. Gansterer">paroga</reporter>
          <assigned_to name="Patrick R. Gansterer">paroga</assigned_to>
          <cc>abarth</cc>
    
    <cc>buildbot</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>317261</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-12-04 05:40:34 -0800</bug_when>
    <thetext>see patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317262</commentid>
    <comment_count>1</comment_count>
      <attachid>75606</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-12-04 05:51:36 -0800</bug_when>
    <thetext>Created attachment 75606
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317265</commentid>
    <comment_count>2</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-12-04 06:18:53 -0800</bug_when>
    <thetext>about 2% performance improvement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317271</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2010-12-04 07:04:19 -0800</bug_when>
    <thetext>Attachment 75606 did not build on win:
Build output: http://queues.webkit.org/results/6732040</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320780</commentid>
    <comment_count>4</comment_count>
      <attachid>75606</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-12 02:33:02 -0800</bug_when>
    <thetext>Comment on attachment 75606
Patch

Woh.  Nearly a page of code for &quot;2%&quot;?  On what benchmark?  w/o more explanation, this is clearly not worth it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321185</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-13 10:05:39 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; about 2% performance improvement

2% improvement by what measure on what platform?

I don’t agree with Eric in that I do think this change is probably a good idea. We can probably factor things so that a lot more of the code is shared and still retain the speed.

But I’d like to understand more about what is made faster by this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321207</commentid>
    <comment_count>6</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-12-13 10:16:46 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #2)
&gt; &gt; about 2% performance improvement
&gt; 
&gt; 2% improvement by what measure on what platform?

I did a javascript loop with (new DOMParser()).parseFromString(&quot;...&quot;, &quot;text/xml&quot;) and did the same time measuremet like in WebCore/benchmarks/parser on my MacBook Pro.
I&apos;ll upload a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321288</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-13 11:36:46 -0800</bug_when>
    <thetext>I think Darin and I actually agree. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323083</commentid>
    <comment_count>8</comment_count>
      <attachid>76745</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-12-16 02:20:10 -0800</bug_when>
    <thetext>Created attachment 76745
XML parser benchmark</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323085</commentid>
    <comment_count>9</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-12-16 02:33:13 -0800</bug_when>
    <thetext>I&apos;ve done the benchmark now again and got over 3% only with this patch. Tested on a MacBook Pro 2.4 GHz, 4GB RAM, OS X 10.6.5.

                     avg        median    stdev
 
OS X 10.6 original   &gt;4000      &gt;4000     ;-)
r74063               2185.72    2182      12.126895728091345
r74063 with patch    2108.01    2095.5    99.8814792641759
                    -3.56%      -3,96%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323282</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-16 10:54:21 -0800</bug_when>
    <thetext>I feel conflicted about this. I like the idea of having a fast code path.

But we’ve long believed main cause of slowness with XML parsing is the approach of using libxml2. A serious effort to speed up XML parsing would probably involve switching to a new parser or creating our own.

Since one of the main issues with this patch is a bit too much replicated code, we should refactor this so we can share the code. We can possibly make the two fromUT8 functions share more code by using an inline function for everything after the call to calculateStringHashFromUTF8 or use a function template. Similarly, we can make calculateStringHashFromUTF8 share almost all the code by using a function template that is inlined.

I think if we do that we can land this, but maybe we shouldn’t land it as is.

It’s good to know it’s a measurable speedup on an XML parsing micro-benchmark.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323411</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-16 14:04:59 -0800</bug_when>
    <thetext>My concerns are with maintainability of this code.  The benchmark needs to be checked in, so that 5 years form now, others can validate that this is still a hot spot.  The code needs to be well factored so that it can be re-used, and possibly removed at some future time when this is not a hot spot.

We&apos;ve certainly added and removed optimizations over the years.  Each page of code we add to webkit has a maintenance cost.  I&apos;m hoping to minimize that cost. :)

A recent example was the HTML parser.  Which had all sorts of crazy optimizations which we dropped on the HTML5 parser re-write.  Because testing (and finally splitting out the code into classes) showed they didn&apos;t matter.  If what Darin says is true (that this isn&apos;t really the important hotspot for XML, rather libxml is), if a big attempt to optimize XML really replaced our libxml implementation, this code might not be needed at all (and thus simply blulk).

But you&apos;ve seen the shark profiles and I havent. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335071</commentid>
    <comment_count>12</comment_count>
      <attachid>79107</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-01-16 12:39:08 -0800</bug_when>
    <thetext>Created attachment 79107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335074</commentid>
    <comment_count>13</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-01-16 12:50:00 -0800</bug_when>
    <thetext>Attachment 79107 did not build on qt:
Build output: http://queues.webkit.org/results/7529117</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335079</commentid>
    <comment_count>14</comment_count>
      <attachid>79110</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-01-16 13:26:49 -0800</bug_when>
    <thetext>Created attachment 79110
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343301</commentid>
    <comment_count>15</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-02-01 10:11:29 -0800</bug_when>
    <thetext>@darin: ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343334</commentid>
    <comment_count>16</comment_count>
      <attachid>79110</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-02-01 10:39:08 -0800</bug_when>
    <thetext>Comment on attachment 79110
Patch

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

&gt; Source/JavaScriptCore/wtf/unicode/UTF8.cpp:334
&gt; +            if (dataLength)
&gt; +                *dataLength += 1;

Seems better to not have if statements like this inside relatively hot loops. We should instead have callers supply a place to put the length even if they won’t use it.

&gt; Source/JavaScriptCore/wtf/unicode/UTF8.cpp:369
&gt; +            if (utf16Length)
&gt; +                *utf16Length += 2;

No reason to have these branches in since utf16Length is never null.

&gt; Source/JavaScriptCore/wtf/unicode/UTF8.h:75
&gt;      unsigned calculateStringHashFromUTF8(const char* data, const char* dataEnd, unsigned&amp; utf16Length);
&gt;  
&gt; +    unsigned calculateStringHashAndLengthFromUTF8(const char* data, unsigned&amp; dataLength, unsigned&amp; utf16Length);

I’d group these together rather than leaving a blank line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343522</commentid>
    <comment_count>17</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-02-01 14:03:32 -0800</bug_when>
    <thetext>Committed r77297: &lt;http://trac.webkit.org/changeset/77297&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344716</commentid>
    <comment_count>18</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-02-03 08:03:14 -0800</bug_when>
    <thetext>Committed r77491: &lt;http://trac.webkit.org/changeset/77491&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344720</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-03 08:16:53 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/77491 might have broken Leopard Intel Release (Build)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75606</attachid>
            <date>2010-12-04 05:51:36 -0800</date>
            <delta_ts>2011-01-16 12:39:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50516-20101204145133.patch</filename>
            <type>text/plain</type>
            <size>4692</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBlZTJhYTk5MDYyYWU2NTFhNTFjMzU1NDhlZGJmYWFjNDE5ZWI4ZGM0Li5h
MjI5ZWQzMTYzNGQxMGNkNGFiMGRiNTI2NjA1NzRlNzZlMGE5YmQzIDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTAtMTItMDQgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QXZvaWQgc3RybGVuKCkgaW4gQXRvbWljU3RyaW5nOjpmcm9tVVRGOAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA1MTYKKworICAgICAgICBBZGQgYW4g
b3ZlcmxvYWQgdG8gY2FsY3VsYXRlU3RyaW5nSGFzaEZyb21VVEY4IHRvIGdldAorICAgICAgICBz
dHJsZW4oKSBvZiB0aGUgaW5wdXQgZGF0YSB3aXRoIG9ubHkgb25lIGNhbGwuIAorCisgICAgICAg
ICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcDoKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5n
Ojpmcm9tVVRGOCk6CisgICAgICAgICogd3RmL3VuaWNvZGUvVVRGOC5jcHA6CisgICAgICAgIChX
VEY6OlVuaWNvZGU6OmNhbGN1bGF0ZVN0cmluZ0hhc2hGcm9tVVRGOCk6CisgICAgICAgICogd3Rm
L3VuaWNvZGUvVVRGOC5oOgorCiAyMDEwLTEyLTAzICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJh
Y2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXIgc3RhbXBlZCBieSBPbGl2ZXIgSHVu
dC4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAg
Yi9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCmluZGV4IGFjYmNkMzRk
MDBjMjI3MmY0ZmVhY2MyODdkOTQ1MGE1N2VjY2VlZWQuLmUyMTIyNzUyMzFjNTRkODRjZThjZjcw
YjZhYjUxNTM2MjRjMjJmZjIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0
b21pY1N0cmluZy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQXRvbWljU3RyaW5n
LmNwcApAQCAtMzY4LDcgKzM2OCwyMSBAQCBBdG9taWNTdHJpbmcgQXRvbWljU3RyaW5nOjpmcm9t
VVRGOChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKQogewogICAgIGlmICghY2hhcmFjdGVycykKICAg
ICAgICAgcmV0dXJuIEF0b21pY1N0cmluZygpOwotICAgIHJldHVybiBmcm9tVVRGOChjaGFyYWN0
ZXJzLCBzdHJsZW4oY2hhcmFjdGVycykpOworCisgICAgSGFzaEFuZFVURjhDaGFyYWN0ZXJzIGJ1
ZmZlcjsKKyAgICBidWZmZXIuY2hhcmFjdGVycyA9IGNoYXJhY3RlcnM7CisgICAgYnVmZmVyLmhh
c2ggPSBjYWxjdWxhdGVTdHJpbmdIYXNoRnJvbVVURjgoY2hhcmFjdGVycywgYnVmZmVyLmxlbmd0
aCwgYnVmZmVyLnV0ZjE2TGVuZ3RoKTsKKworICAgIGlmICghYnVmZmVyLmhhc2gpCisgICAgICAg
IHJldHVybiBBdG9taWNTdHJpbmcoKTsKKworICAgIHBhaXI8SGFzaFNldDxTdHJpbmdJbXBsKj46
Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQgPSBzdHJpbmdUYWJsZSgpLmFkZDxIYXNoQW5kVVRG
OENoYXJhY3RlcnMsIEhhc2hBbmRVVEY4Q2hhcmFjdGVyc1RyYW5zbGF0b3I+KGJ1ZmZlcik7CisK
KyAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIG5ld2x5LXRyYW5zbGF0ZWQsIHRoZW4gd2UgbmVlZCB0
byBhZG9wdCBpdC4KKyAgICAvLyBUaGUgYm9vbGVhbiBpbiB0aGUgcGFpciB0ZWxscyB1cyBpZiB0
aGF0IGlzIHNvLgorICAgIEF0b21pY1N0cmluZyBhdG9taWNTdHJpbmc7CisgICAgYXRvbWljU3Ry
aW5nLm1fc3RyaW5nID0gYWRkUmVzdWx0LnNlY29uZCA/IGFkb3B0UmVmKCphZGRSZXN1bHQuZmly
c3QpIDogKmFkZFJlc3VsdC5maXJzdDsKKyAgICByZXR1cm4gYXRvbWljU3RyaW5nOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2Rl
L1VURjguY3BwIGIvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5jcHAKaW5kZXggZGMy
NGVkNTRmNzNjM2ExMGM4MTBjZGViZTYzNWIzM2QyMmMwMTc5NC4uNDczYTg4ZjYxNWI5YjA3MjNm
MGI1MjU2MzA5YTNmZGQyMmIwMzJjZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL3Vu
aWNvZGUvVVRGOC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5jcHAK
QEAgLTM1OSw2ICszNTksNTQgQEAgdW5zaWduZWQgY2FsY3VsYXRlU3RyaW5nSGFzaEZyb21VVEY4
KGNvbnN0IGNoYXIqIGRhdGEsIGNvbnN0IGNoYXIqIGRhdGFFbmQsIHVuc2kKICAgICByZXR1cm4g
c3RyaW5nSGFzaGVyLmhhc2goKTsKIH0KIAordW5zaWduZWQgY2FsY3VsYXRlU3RyaW5nSGFzaEZy
b21VVEY4KGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkJiBkYXRhTGVuZ3RoLCB1bnNpZ25lZCYg
dXRmMTZMZW5ndGgpCit7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IFdURjo6U3RyaW5nSGFzaGVyIHN0cmluZ0hhc2hlcjsKKyAgICBkYXRhTGVuZ3RoID0gMDsKKyAg
ICB1dGYxNkxlbmd0aCA9IDA7CisKKyAgICB3aGlsZSAoKmRhdGEpIHsKKyAgICAgICAgaWYgKGlz
QVNDSUkoKmRhdGEpKSB7CisgICAgICAgICAgICBzdHJpbmdIYXNoZXIuYWRkQ2hhcmFjdGVyKCpk
YXRhKyspOworICAgICAgICAgICAgZGF0YUxlbmd0aCsrOworICAgICAgICAgICAgdXRmMTZMZW5n
dGgrKzsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaW50IHV0
ZjhTZXF1ZW5jZUxlbmd0aCA9IGlubGluZVVURjhTZXF1ZW5jZUxlbmd0aE5vbkFTQ0lJKCpkYXRh
KTsKKyAgICAgICAgZGF0YUxlbmd0aCArPSB1dGY4U2VxdWVuY2VMZW5ndGg7CisgICAgICAgIAor
ICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IHV0ZjhTZXF1ZW5jZUxlbmd0aDsgKytpKSB7Cisg
ICAgICAgICAgICBpZiAoIWRhdGFbaV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIWlzTGVnYWxVVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KGRhdGEpLCB1dGY4U2VxdWVuY2VMZW5ndGgpKQorICAgICAgICAgICAg
cmV0dXJuIDA7CisKKyAgICAgICAgVUNoYXIzMiBjaGFyYWN0ZXIgPSByZWFkVVRGOFNlcXVlbmNl
KGRhdGEsIHV0ZjhTZXF1ZW5jZUxlbmd0aCk7CisgICAgICAgIEFTU0VSVCghaXNBU0NJSShjaGFy
YWN0ZXIpKTsKKworICAgICAgICBpZiAoVV9JU19CTVAoY2hhcmFjdGVyKSkgeworICAgICAgICAg
ICAgLy8gVVRGLTE2IHN1cnJvZ2F0ZSB2YWx1ZXMgYXJlIGlsbGVnYWwgaW4gVVRGLTMyCisgICAg
ICAgICAgICBpZiAoVV9JU19TVVJST0dBVEUoY2hhcmFjdGVyKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgIHN0cmluZ0hhc2hlci5hZGRDaGFyYWN0ZXIoc3RhdGljX2Nh
c3Q8VUNoYXI+KGNoYXJhY3RlcikpOyAvLyBub3JtYWwgY2FzZQorICAgICAgICAgICAgdXRmMTZM
ZW5ndGgrKzsKKyAgICAgICAgfSBlbHNlIGlmIChVX0lTX1NVUFBMRU1FTlRBUlkoY2hhcmFjdGVy
KSkgeworICAgICAgICAgICAgc3RyaW5nSGFzaGVyLmFkZENoYXJhY3RlcnMoc3RhdGljX2Nhc3Q8
VUNoYXI+KFUxNl9MRUFEKGNoYXJhY3RlcikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VUNoYXI+KFUxNl9UUkFJTChjaGFyYWN0ZXIpKSk7Cisg
ICAgICAgICAgICB1dGYxNkxlbmd0aCArPSAyOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiBzdHJpbmdIYXNoZXIuaGFzaCgpOworfQor
CiBib29sIGVxdWFsVVRGMTZXaXRoVVRGOChjb25zdCBVQ2hhciogYSwgY29uc3QgVUNoYXIqIGFF
bmQsIGNvbnN0IGNoYXIqIGIsIGNvbnN0IGNoYXIqIGJFbmQpCiB7CiAgICAgd2hpbGUgKGIgPCBi
RW5kKSB7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmggYi9K
YXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmgKaW5kZXggMWY0YmFjYWMyYmRlMWE5OWVj
MTUzYTI3NGZiNjg0MGI5NmZmYjJlMS4uOGRiYzgxMzlmOGI3MzViY2Y1YjZlYjI0Y2U4NDdkMDc4
ZjBjYWQ1MSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5oCisr
KyBiL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguaApAQCAtNzIsNiArNzIsOCBAQCBu
YW1lc3BhY2UgVW5pY29kZSB7CiAKICAgICB1bnNpZ25lZCBjYWxjdWxhdGVTdHJpbmdIYXNoRnJv
bVVURjgoY29uc3QgY2hhciogZGF0YSwgY29uc3QgY2hhciogZGF0YUVuZCwgdW5zaWduZWQmIHV0
ZjE2TGVuZ3RoKTsKIAorICAgIHVuc2lnbmVkIGNhbGN1bGF0ZVN0cmluZ0hhc2hGcm9tVVRGOChj
b25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCYgZGF0YUxlbmd0aCwgdW5zaWduZWQmIHV0ZjE2TGVu
Z3RoKTsKKwogICAgIGJvb2wgZXF1YWxVVEYxNldpdGhVVEY4KGNvbnN0IFVDaGFyKiBhLCBjb25z
dCBVQ2hhciogYUVuZCwgY29uc3QgY2hhciogYiwgY29uc3QgY2hhciogYkVuZCk7CiAKIH0gLy8g
bmFtZXNwYWNlIFVuaWNvZGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>76745</attachid>
            <date>2010-12-16 02:20:10 -0800</date>
            <delta_ts>2010-12-16 02:20:10 -0800</delta_ts>
            <desc>XML parser benchmark</desc>
            <filename>xml-parser.html</filename>
            <type>text/html</type>
            <size>2012</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+Cjxib2R5Pgo8cHJlIGlkPSJsb2ciPjwvcHJlPgo8c2NyaXB0PgpmdW5j
dGlvbiBsb2codGV4dCkgewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVy
VGV4dCArPSB0ZXh0ICsgIlxuIjsKICAgIHdpbmRvdy5zY3JvbGxUbyhkb2N1bWVudC5ib2R5Lmhl
aWdodCk7Cn0KCnZhciBkb21QYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7CnZhciB4bWxBcnJheSA9
IFtdOwoKeG1sQXJyYXkucHVzaCgnPHJvb3Q+Jyk7CmZvciAodmFyIGkgPSAwOyBpIDwgMHg3RkZG
OyArK2kpCiAgICB4bWxBcnJheS5wdXNoKCc8aXRlbSBhdHRyaWJ1dGUxPSJ2YWx1ZTEiIGF0dHJp
YnV0ZTI9InZhbHVlMiIgYXR0cmlidXRlMz0idmFsdWUzIiBhdHRyaWJ1dGU0PSJ2YWx1ZTQiIGF0
dHJpYnV0ZTU9InZhbHVlNSIgLz4nKTsKeG1sQXJyYXkucHVzaCgnPC9yb290PicpCnZhciB4bWxE
YXRhID0geG1sQXJyYXkuam9pbignJyk7CgoKZnVuY3Rpb24gcGFyc2UoeG1sKSB7CiAgICBkb21Q
YXJzZXIucGFyc2VGcm9tU3RyaW5nKHhtbCwgInRleHQveG1sIik7Cn0KCnZhciBydW5Db3VudCA9
IDEwMDsKdmFyIGNvbXBsZXRlZFJ1bnMgPSAtMTsgLy8gRGlzY2FyZCB0aGUgYW55IHJ1bnMgPCAw
Lgp2YXIgdGltZXMgPSBbXTsKCmZ1bmN0aW9uIGNvbXB1dGVBdmVyYWdlKHZhbHVlcykgewogICAg
dmFyIHN1bSA9IDA7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykK
ICAgICAgICBzdW0gKz0gdmFsdWVzW2ldOwogICAgcmV0dXJuIHN1bSAvIHZhbHVlcy5sZW5ndGg7
Cn0KCmZ1bmN0aW9uIGNvbXB1dGVNZWRpYW4odmFsdWVzKSB7CiAgICB2YWx1ZXMuc29ydChmdW5j
dGlvbihhLCBiKSB7IHJldHVybiBhIC0gYjsgfSk7CiAgICB2YXIgbGVuID0gdmFsdWVzLmxlbmd0
aDsKICAgIGlmIChsZW4gJSAyKQogICAgICAgIHJldHVybiB2YWx1ZXNbKGxlbi0xKS8yXTsKICAg
IHJldHVybiAodmFsdWVzW2xlbi8yLTFdICsgdmFsdWVzW2xlbi8yXSkgLyAyOwp9CgpmdW5jdGlv
biBjb21wdXRlU3RkZXYodmFsdWVzKSB7CiAgICB2YXIgYXZlcmFnZSA9IGNvbXB1dGVBdmVyYWdl
KHZhbHVlcyk7CiAgICB2YXIgc3VtT2ZTcXVhcmVkRGV2aWF0aW9ucyA9IDA7CiAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7ICsraSkgewogICAgICAgIHZhciBkZXZpYXRpb24g
PSB2YWx1ZXNbaV0gLSBhdmVyYWdlOwogICAgICAgIHN1bU9mU3F1YXJlZERldmlhdGlvbnMgKz0g
ZGV2aWF0aW9uICogZGV2aWF0aW9uOwogICAgfQogICAgcmV0dXJuIE1hdGguc3FydChzdW1PZlNx
dWFyZWREZXZpYXRpb25zIC8gdmFsdWVzLmxlbmd0aCk7Cn0KCmZ1bmN0aW9uIGxvZ1N0YXRpc3Rp
Y3ModGltZXMpIHsKICAgIGxvZygiIik7CiAgICBsb2coImF2ZyAiICsgY29tcHV0ZUF2ZXJhZ2Uo
dGltZXMpKTsKICAgIGxvZygibWVkaWFuICIgKyBjb21wdXRlTWVkaWFuKHRpbWVzKSk7CiAgICBs
b2coInN0ZGV2ICIgKyBjb21wdXRlU3RkZXYodGltZXMpKTsKfQoKZnVuY3Rpb24gcnVuKCkgewog
ICAgdmFyIHN0YXJ0ID0gbmV3IERhdGUoKTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsr
aSkKICAgICAgICBwYXJzZSh4bWxEYXRhKTsKICAgIHZhciB0aW1lID0gbmV3IERhdGUoKSAtIHN0
YXJ0OwogICAgY29tcGxldGVkUnVucysrOwogICAgaWYgKGNvbXBsZXRlZFJ1bnMgPD0gMCkgewog
ICAgICAgIGxvZygiSWdub3Jpbmcgd2FybS11cCBydW4gKCIgKyB0aW1lICsgIikiKTsKICAgIH0g
ZWxzZSB7CiAgICAgICAgdGltZXMucHVzaCh0aW1lKTsKICAgICAgICBsb2codGltZSk7CiAgICB9
CiAgICBpZiAoY29tcGxldGVkUnVucyA8IHJ1bkNvdW50KSB7CiAgICAgICAgd2luZG93LnNldFRp
bWVvdXQocnVuLCAwKTsKICAgIH0gZWxzZSB7CiAgICAgICAgbG9nU3RhdGlzdGljcyh0aW1lcyk7
CiAgICB9Cn0KCmxvZygiUnVubmluZyAiICsgcnVuQ291bnQgKyAiIHRpbWVzIik7CnJ1bigpOwo8
L3NjcmlwdD4KPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79107</attachid>
            <date>2011-01-16 12:39:08 -0800</date>
            <delta_ts>2011-01-16 13:26:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50516-20110116213905.patch</filename>
            <type>text/plain</type>
            <size>6813</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDY2OGM1MmRiYzgwMGQ5YWUyMTI2NDM5YjdlMDlk
ZGI1NzBlODY3NDEuLmE0ZjJkOTMwZTZhZTkzNzVkYjdhMjYyMTRiZjg2ODcxYTA3MDAxMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDExLTAxLTE1ICBQYXRy
aWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEF2b2lkIHN0cmxlbigpIGluIEF0b21pY1N0cmlu
Zzo6ZnJvbVVURjgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTUwNTE2CisKKyAgICAgICAgQWRkIGFuIG92ZXJsb2FkIHRvIGNhbGN1bGF0ZVN0cmluZ0hh
c2hGcm9tVVRGOCB0byBnZXQKKyAgICAgICAgc3RybGVuKCkgb2YgdGhlIGlucHV0IGRhdGEgd2l0
aCBvbmx5IG9uZSBjYWxsLgorCisgICAgICAgIFRoaXMgY2hhbmdlIHNob3dzIGFib3V0IDMlIHBl
cmZvcm1hbmNlIHdpbiBvbiB0aGUgeG1sLXBhcnNlciBiZW5jaG1hcmsuCisKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmOgor
ICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHA6CisgICAgICAgIChXVEY6OkF0b21p
Y1N0cmluZzo6ZnJvbVVURjgpOgorICAgICAgICAqIHd0Zi91bmljb2RlL1VURjguY3BwOgorICAg
ICAgICAoV1RGOjpVbmljb2RlOjpjYWxjdWxhdGVTdHJpbmdIYXNoQW5kTGVuZ3RoRnJvbVVURjhJ
bnRlcm5hbCk6CisgICAgICAgIChXVEY6OlVuaWNvZGU6OmNhbGN1bGF0ZVN0cmluZ0hhc2hGcm9t
VVRGOCk6CisgICAgICAgIChXVEY6OlVuaWNvZGU6OmNhbGN1bGF0ZVN0cmluZ0hhc2hBbmRMZW5n
dGhGcm9tVVRGOCk6CisgICAgICAgICogd3RmL3VuaWNvZGUvVVRGOC5oOgorCiAyMDExLTAxLTE1
ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5kZWYKaW5kZXggNGRkYWQyNGVmOGY4NzZlZjNiNDJmNzExZDEzNGIzYjI4ZDJi
OTFjNC4uMzUyM2ViYjMwM2FiNDM3ODk1NGQyMDc0YWNmNDE5NzY0Y2MwMTE4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKQEAgLTYx
LDYgKzYxLDcgQEAgRVhQT1JUUwogICAgID9idWZmZXJMZW5ndGhGb3JTdHJpbmdEZWNpbWFsQERl
Y2ltYWxOdW1iZXJAV1RGQEBRQkVJWFoKICAgICA/Y2FsY3VsYXRlRFNUT2Zmc2V0QFdURkBAWUFO
Tk5AWgogICAgID9jYWxjdWxhdGVTdHJpbmdIYXNoRnJvbVVURjhAVW5pY29kZUBXVEZAQFlBSVBC
RDBBQUlAWgorICAgID9jYWxjdWxhdGVTdHJpbmdIYXNoQW5kTGVuZ3RoRnJvbVVURjhAVW5pY29k
ZUBXVEZAQFlBSVBCREFBSTFAWgogICAgID9jYWxjdWxhdGVVVENPZmZzZXRAV1RGQEBZQUhYWgog
ICAgID9jYWxjdWxhdGVkRnVuY3Rpb25OYW1lQERlYnVnZ2VyQ2FsbEZyYW1lQEpTQ0BAUUJFP0FW
VVN0cmluZ0AyQFhaCiAgICAgP2NhbGxASlNDQEBZQT9BVkpTVmFsdWVAMUBQQVZFeGVjU3RhdGVA
MUBWMjFAVzRDYWxsVHlwZUAxQEFCVENhbGxEYXRhQDFAMUFCVkFyZ0xpc3RAMUBAWgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAppbmRleCBkZDhk
NjZjMDY3ZjgyZmFkOTRlYjliNDg5OGJlZDAyMjU1ZThiNjQxLi5iNTg0ZjY3YjFlZDI1NmYyMTA1
NTA5ZjNhYmZlZjljZGVkOTkyYTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L3RleHQvQXRvbWljU3RyaW5nLmNwcApAQCAtMzc2LDcgKzM3NiwxNyBAQCBBdG9taWNTdHJpbmcg
QXRvbWljU3RyaW5nOjpmcm9tVVRGOChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKQogewogICAgIGlm
ICghY2hhcmFjdGVycykKICAgICAgICAgcmV0dXJuIEF0b21pY1N0cmluZygpOwotICAgIHJldHVy
biBmcm9tVVRGOChjaGFyYWN0ZXJzLCBzdHJsZW4oY2hhcmFjdGVycykpOworCisgICAgSGFzaEFu
ZFVURjhDaGFyYWN0ZXJzIGJ1ZmZlcjsKKyAgICBidWZmZXIuY2hhcmFjdGVycyA9IGNoYXJhY3Rl
cnM7CisgICAgYnVmZmVyLmhhc2ggPSBjYWxjdWxhdGVTdHJpbmdIYXNoQW5kTGVuZ3RoRnJvbVVU
RjgoY2hhcmFjdGVycywgYnVmZmVyLmxlbmd0aCwgYnVmZmVyLnV0ZjE2TGVuZ3RoKTsKKworICAg
IGlmICghYnVmZmVyLmhhc2gpCisgICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcoKTsKKworICAg
IEF0b21pY1N0cmluZyBhdG9taWNTdHJpbmc7CisgICAgYXRvbWljU3RyaW5nLm1fc3RyaW5nID0g
YWRkVG9TdHJpbmdUYWJsZTxIYXNoQW5kVVRGOENoYXJhY3RlcnMsIEhhc2hBbmRVVEY4Q2hhcmFj
dGVyc1RyYW5zbGF0b3I+KGJ1ZmZlcik7CisgICAgcmV0dXJuIGF0b21pY1N0cmluZzsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L3VuaWNvZGUvVVRGOC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRG
OC5jcHAKaW5kZXggZGMyNGVkNTRmNzNjM2ExMGM4MTBjZGViZTYzNWIzM2QyMmMwMTc5NC4uOGNl
ZjViNmVlMzI1NDliMjA5MDY2ZGNkZDMwZGRhZWI4ZmQxMDg2NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmNwcApAQCAtMzE2LDI1ICszMTYsMzggQEAgQ29udmVy
c2lvblJlc3VsdCBjb252ZXJ0VVRGOFRvVVRGMTYoCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
dW5zaWduZWQgY2FsY3VsYXRlU3RyaW5nSGFzaEZyb21VVEY4KGNvbnN0IGNoYXIqIGRhdGEsIGNv
bnN0IGNoYXIqIGRhdGFFbmQsIHVuc2lnbmVkJiB1dGYxNkxlbmd0aCkKK3N0YXRpYyBpbmxpbmUg
dW5zaWduZWQgY2FsY3VsYXRlU3RyaW5nSGFzaEFuZExlbmd0aEZyb21VVEY4SW50ZXJuYWwoY29u
c3QgY2hhciogZGF0YSwgY29uc3QgY2hhciogZGF0YUVuZCwgdW5zaWduZWQqIGRhdGFMZW5ndGgs
IHVuc2lnbmVkKiB1dGYxNkxlbmd0aCkKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVy
biAwOwogCiAgICAgV1RGOjpTdHJpbmdIYXNoZXIgc3RyaW5nSGFzaGVyOwotICAgIHV0ZjE2TGVu
Z3RoID0gMDsKKyAgICBpZiAoZGF0YUxlbmd0aCkKKyAgICAgICAgKmRhdGFMZW5ndGggPSAwOwor
ICAgIGlmICh1dGYxNkxlbmd0aCkKKyAgICAgICAgKnV0ZjE2TGVuZ3RoID0gMDsKIAotICAgIHdo
aWxlIChkYXRhIDwgZGF0YUVuZCkgeworICAgIHdoaWxlIChkYXRhIDwgZGF0YUVuZCB8fCAhZGF0
YUVuZCAmJiAqZGF0YSkgewogICAgICAgICBpZiAoaXNBU0NJSSgqZGF0YSkpIHsKICAgICAgICAg
ICAgIHN0cmluZ0hhc2hlci5hZGRDaGFyYWN0ZXIoKmRhdGErKyk7Ci0gICAgICAgICAgICB1dGYx
Nkxlbmd0aCsrOworICAgICAgICAgICAgaWYgKGRhdGFMZW5ndGgpCisgICAgICAgICAgICAgICAg
KmRhdGFMZW5ndGggKz0gMTsKKyAgICAgICAgICAgIGlmICh1dGYxNkxlbmd0aCkKKyAgICAgICAg
ICAgICAgICAqdXRmMTZMZW5ndGggKz0gMTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9CiAKICAgICAgICAgaW50IHV0ZjhTZXF1ZW5jZUxlbmd0aCA9IGlubGluZVVURjhTZXF1ZW5j
ZUxlbmd0aE5vbkFTQ0lJKCpkYXRhKTsKKyAgICAgICAgaWYgKGRhdGFMZW5ndGgpCisgICAgICAg
ICAgICAqZGF0YUxlbmd0aCArPSB1dGY4U2VxdWVuY2VMZW5ndGg7CiAKLSAgICAgICAgaWYgKGRh
dGFFbmQgLSBkYXRhIDwgdXRmOFNlcXVlbmNlTGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBpZiAoIWRhdGFFbmQpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAx
OyBpIDwgdXRmOFNlcXVlbmNlTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWRh
dGFbaV0pCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UgaWYgKGRhdGFFbmQgLSBkYXRhIDwgdXRmOFNlcXVlbmNlTGVuZ3RoKQorICAg
ICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgaWYgKCFpc0xlZ2FsVVRGOChyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihkYXRhKSwgdXRmOFNlcXVlbmNlTGVuZ3RoKSkK
ICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMzQ3LDExICszNjAsMTMgQEAgdW5zaWduZWQgY2Fs
Y3VsYXRlU3RyaW5nSGFzaEZyb21VVEY4KGNvbnN0IGNoYXIqIGRhdGEsIGNvbnN0IGNoYXIqIGRh
dGFFbmQsIHVuc2kKICAgICAgICAgICAgIGlmIChVX0lTX1NVUlJPR0FURShjaGFyYWN0ZXIpKQog
ICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgc3RyaW5nSGFzaGVyLmFkZENo
YXJhY3RlcihzdGF0aWNfY2FzdDxVQ2hhcj4oY2hhcmFjdGVyKSk7IC8vIG5vcm1hbCBjYXNlCi0g
ICAgICAgICAgICB1dGYxNkxlbmd0aCsrOworICAgICAgICAgICAgaWYgKHV0ZjE2TGVuZ3RoKQor
ICAgICAgICAgICAgICAgICp1dGYxNkxlbmd0aCArPSAxOwogICAgICAgICB9IGVsc2UgaWYgKFVf
SVNfU1VQUExFTUVOVEFSWShjaGFyYWN0ZXIpKSB7CiAgICAgICAgICAgICBzdHJpbmdIYXNoZXIu
YWRkQ2hhcmFjdGVycyhzdGF0aWNfY2FzdDxVQ2hhcj4oVTE2X0xFQUQoY2hhcmFjdGVyKSksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxVQ2hhcj4o
VTE2X1RSQUlMKGNoYXJhY3RlcikpKTsKLSAgICAgICAgICAgIHV0ZjE2TGVuZ3RoICs9IDI7Cisg
ICAgICAgICAgICBpZiAodXRmMTZMZW5ndGgpCisgICAgICAgICAgICAgICAgKnV0ZjE2TGVuZ3Ro
ICs9IDI7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAt
MzU5LDYgKzM3NCwxNiBAQCB1bnNpZ25lZCBjYWxjdWxhdGVTdHJpbmdIYXNoRnJvbVVURjgoY29u
c3QgY2hhciogZGF0YSwgY29uc3QgY2hhciogZGF0YUVuZCwgdW5zaQogICAgIHJldHVybiBzdHJp
bmdIYXNoZXIuaGFzaCgpOwogfQogCit1bnNpZ25lZCBjYWxjdWxhdGVTdHJpbmdIYXNoRnJvbVVU
RjgoY29uc3QgY2hhciogZGF0YSwgY29uc3QgY2hhciogZGF0YUVuZCwgdW5zaWduZWQmIHV0ZjE2
TGVuZ3RoKQoreworICAgIHJldHVybiBjYWxjdWxhdGVTdHJpbmdIYXNoQW5kTGVuZ3RoRnJvbVVU
RjhJbnRlcm5hbChkYXRhLCBkYXRhRW5kLCAwLCAmdXRmMTZMZW5ndGgpOworfQorCit1bnNpZ25l
ZCBjYWxjdWxhdGVTdHJpbmdIYXNoQW5kTGVuZ3RoRnJvbVVURjgoY29uc3QgY2hhciogZGF0YSwg
dW5zaWduZWQmIGRhdGFMZW5ndGgsIHVuc2lnbmVkJiB1dGYxNkxlbmd0aCkKK3sKKyAgICByZXR1
cm4gY2FsY3VsYXRlU3RyaW5nSGFzaEFuZExlbmd0aEZyb21VVEY4SW50ZXJuYWwoZGF0YSwgMCwg
JmRhdGFMZW5ndGgsICZ1dGYxNkxlbmd0aCk7Cit9CisKIGJvb2wgZXF1YWxVVEYxNldpdGhVVEY4
KGNvbnN0IFVDaGFyKiBhLCBjb25zdCBVQ2hhciogYUVuZCwgY29uc3QgY2hhciogYiwgY29uc3Qg
Y2hhciogYkVuZCkKIHsKICAgICB3aGlsZSAoYiA8IGJFbmQpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL3VuaWNvZGUvVVRGOC5oCmluZGV4IDFmNGJhY2FjMmJkZTFhOTllYzE1M2EyNzRmYjY4
NDBiOTZmZmIyZTEuLjkzNGY0M2E4MjlmYWQ2MzViZjZlMWI1NTI4ODEyMTUwZjJlOGVkZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguaApAQCAtNzIsNiArNzIsOCBA
QCBuYW1lc3BhY2UgVW5pY29kZSB7CiAKICAgICB1bnNpZ25lZCBjYWxjdWxhdGVTdHJpbmdIYXNo
RnJvbVVURjgoY29uc3QgY2hhciogZGF0YSwgY29uc3QgY2hhciogZGF0YUVuZCwgdW5zaWduZWQm
IHV0ZjE2TGVuZ3RoKTsKIAorICAgIHVuc2lnbmVkIGNhbGN1bGF0ZVN0cmluZ0hhc2hBbmRMZW5n
dGhGcm9tVVRGOChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCYgZGF0YUxlbmd0aCwgdW5zaWdu
ZWQmIHV0ZjE2TGVuZ3RoKTsKKwogICAgIGJvb2wgZXF1YWxVVEYxNldpdGhVVEY4KGNvbnN0IFVD
aGFyKiBhLCBjb25zdCBVQ2hhciogYUVuZCwgY29uc3QgY2hhciogYiwgY29uc3QgY2hhciogYkVu
ZCk7CiAKIH0gLy8gbmFtZXNwYWNlIFVuaWNvZGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79110</attachid>
            <date>2011-01-16 13:26:49 -0800</date>
            <delta_ts>2011-02-01 10:39:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50516-20110116222645.patch</filename>
            <type>text/plain</type>
            <size>6815</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDY2OGM1MmRiYzgwMGQ5YWUyMTI2NDM5YjdlMDlk
ZGI1NzBlODY3NDEuLmE0ZjJkOTMwZTZhZTkzNzVkYjdhMjYyMTRiZjg2ODcxYTA3MDAxMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDExLTAxLTE1ICBQYXRy
aWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEF2b2lkIHN0cmxlbigpIGluIEF0b21pY1N0cmlu
Zzo6ZnJvbVVURjgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTUwNTE2CisKKyAgICAgICAgQWRkIGFuIG92ZXJsb2FkIHRvIGNhbGN1bGF0ZVN0cmluZ0hh
c2hGcm9tVVRGOCB0byBnZXQKKyAgICAgICAgc3RybGVuKCkgb2YgdGhlIGlucHV0IGRhdGEgd2l0
aCBvbmx5IG9uZSBjYWxsLgorCisgICAgICAgIFRoaXMgY2hhbmdlIHNob3dzIGFib3V0IDMlIHBl
cmZvcm1hbmNlIHdpbiBvbiB0aGUgeG1sLXBhcnNlciBiZW5jaG1hcmsuCisKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmOgor
ICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHA6CisgICAgICAgIChXVEY6OkF0b21p
Y1N0cmluZzo6ZnJvbVVURjgpOgorICAgICAgICAqIHd0Zi91bmljb2RlL1VURjguY3BwOgorICAg
ICAgICAoV1RGOjpVbmljb2RlOjpjYWxjdWxhdGVTdHJpbmdIYXNoQW5kTGVuZ3RoRnJvbVVURjhJ
bnRlcm5hbCk6CisgICAgICAgIChXVEY6OlVuaWNvZGU6OmNhbGN1bGF0ZVN0cmluZ0hhc2hGcm9t
VVRGOCk6CisgICAgICAgIChXVEY6OlVuaWNvZGU6OmNhbGN1bGF0ZVN0cmluZ0hhc2hBbmRMZW5n
dGhGcm9tVVRGOCk6CisgICAgICAgICogd3RmL3VuaWNvZGUvVVRGOC5oOgorCiAyMDExLTAxLTE1
ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5kZWYKaW5kZXggNGRkYWQyNGVmOGY4NzZlZjNiNDJmNzExZDEzNGIzYjI4ZDJi
OTFjNC4uMzUyM2ViYjMwM2FiNDM3ODk1NGQyMDc0YWNmNDE5NzY0Y2MwMTE4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKQEAgLTYx
LDYgKzYxLDcgQEAgRVhQT1JUUwogICAgID9idWZmZXJMZW5ndGhGb3JTdHJpbmdEZWNpbWFsQERl
Y2ltYWxOdW1iZXJAV1RGQEBRQkVJWFoKICAgICA/Y2FsY3VsYXRlRFNUT2Zmc2V0QFdURkBAWUFO
Tk5AWgogICAgID9jYWxjdWxhdGVTdHJpbmdIYXNoRnJvbVVURjhAVW5pY29kZUBXVEZAQFlBSVBC
RDBBQUlAWgorICAgID9jYWxjdWxhdGVTdHJpbmdIYXNoQW5kTGVuZ3RoRnJvbVVURjhAVW5pY29k
ZUBXVEZAQFlBSVBCREFBSTFAWgogICAgID9jYWxjdWxhdGVVVENPZmZzZXRAV1RGQEBZQUhYWgog
ICAgID9jYWxjdWxhdGVkRnVuY3Rpb25OYW1lQERlYnVnZ2VyQ2FsbEZyYW1lQEpTQ0BAUUJFP0FW
VVN0cmluZ0AyQFhaCiAgICAgP2NhbGxASlNDQEBZQT9BVkpTVmFsdWVAMUBQQVZFeGVjU3RhdGVA
MUBWMjFAVzRDYWxsVHlwZUAxQEFCVENhbGxEYXRhQDFAMUFCVkFyZ0xpc3RAMUBAWgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAppbmRleCBkZDhk
NjZjMDY3ZjgyZmFkOTRlYjliNDg5OGJlZDAyMjU1ZThiNjQxLi5iNTg0ZjY3YjFlZDI1NmYyMTA1
NTA5ZjNhYmZlZjljZGVkOTkyYTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L3RleHQvQXRvbWljU3RyaW5nLmNwcApAQCAtMzc2LDcgKzM3NiwxNyBAQCBBdG9taWNTdHJpbmcg
QXRvbWljU3RyaW5nOjpmcm9tVVRGOChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKQogewogICAgIGlm
ICghY2hhcmFjdGVycykKICAgICAgICAgcmV0dXJuIEF0b21pY1N0cmluZygpOwotICAgIHJldHVy
biBmcm9tVVRGOChjaGFyYWN0ZXJzLCBzdHJsZW4oY2hhcmFjdGVycykpOworCisgICAgSGFzaEFu
ZFVURjhDaGFyYWN0ZXJzIGJ1ZmZlcjsKKyAgICBidWZmZXIuY2hhcmFjdGVycyA9IGNoYXJhY3Rl
cnM7CisgICAgYnVmZmVyLmhhc2ggPSBjYWxjdWxhdGVTdHJpbmdIYXNoQW5kTGVuZ3RoRnJvbVVU
RjgoY2hhcmFjdGVycywgYnVmZmVyLmxlbmd0aCwgYnVmZmVyLnV0ZjE2TGVuZ3RoKTsKKworICAg
IGlmICghYnVmZmVyLmhhc2gpCisgICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcoKTsKKworICAg
IEF0b21pY1N0cmluZyBhdG9taWNTdHJpbmc7CisgICAgYXRvbWljU3RyaW5nLm1fc3RyaW5nID0g
YWRkVG9TdHJpbmdUYWJsZTxIYXNoQW5kVVRGOENoYXJhY3RlcnMsIEhhc2hBbmRVVEY4Q2hhcmFj
dGVyc1RyYW5zbGF0b3I+KGJ1ZmZlcik7CisgICAgcmV0dXJuIGF0b21pY1N0cmluZzsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L3VuaWNvZGUvVVRGOC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRG
OC5jcHAKaW5kZXggZGMyNGVkNTRmNzNjM2ExMGM4MTBjZGViZTYzNWIzM2QyMmMwMTc5NC4uZTdm
NTBjYmRhMThmOWMyZDRmODVjMjU4ZGYyOGViM2FjZTkyMGYwNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdW5pY29kZS9VVEY4LmNwcApAQCAtMzE2LDI1ICszMTYsMzggQEAgQ29udmVy
c2lvblJlc3VsdCBjb252ZXJ0VVRGOFRvVVRGMTYoCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
dW5zaWduZWQgY2FsY3VsYXRlU3RyaW5nSGFzaEZyb21VVEY4KGNvbnN0IGNoYXIqIGRhdGEsIGNv
bnN0IGNoYXIqIGRhdGFFbmQsIHVuc2lnbmVkJiB1dGYxNkxlbmd0aCkKK3N0YXRpYyBpbmxpbmUg
dW5zaWduZWQgY2FsY3VsYXRlU3RyaW5nSGFzaEFuZExlbmd0aEZyb21VVEY4SW50ZXJuYWwoY29u
c3QgY2hhciogZGF0YSwgY29uc3QgY2hhciogZGF0YUVuZCwgdW5zaWduZWQqIGRhdGFMZW5ndGgs
IHVuc2lnbmVkKiB1dGYxNkxlbmd0aCkKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVy
biAwOwogCiAgICAgV1RGOjpTdHJpbmdIYXNoZXIgc3RyaW5nSGFzaGVyOwotICAgIHV0ZjE2TGVu
Z3RoID0gMDsKKyAgICBpZiAoZGF0YUxlbmd0aCkKKyAgICAgICAgKmRhdGFMZW5ndGggPSAwOwor
ICAgIGlmICh1dGYxNkxlbmd0aCkKKyAgICAgICAgKnV0ZjE2TGVuZ3RoID0gMDsKIAotICAgIHdo
aWxlIChkYXRhIDwgZGF0YUVuZCkgeworICAgIHdoaWxlIChkYXRhIDwgZGF0YUVuZCB8fCAoIWRh
dGFFbmQgJiYgKmRhdGEpKSB7CiAgICAgICAgIGlmIChpc0FTQ0lJKCpkYXRhKSkgewogICAgICAg
ICAgICAgc3RyaW5nSGFzaGVyLmFkZENoYXJhY3RlcigqZGF0YSsrKTsKLSAgICAgICAgICAgIHV0
ZjE2TGVuZ3RoKys7CisgICAgICAgICAgICBpZiAoZGF0YUxlbmd0aCkKKyAgICAgICAgICAgICAg
ICAqZGF0YUxlbmd0aCArPSAxOworICAgICAgICAgICAgaWYgKHV0ZjE2TGVuZ3RoKQorICAgICAg
ICAgICAgICAgICp1dGYxNkxlbmd0aCArPSAxOwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KIAogICAgICAgICBpbnQgdXRmOFNlcXVlbmNlTGVuZ3RoID0gaW5saW5lVVRGOFNlcXVl
bmNlTGVuZ3RoTm9uQVNDSUkoKmRhdGEpOworICAgICAgICBpZiAoZGF0YUxlbmd0aCkKKyAgICAg
ICAgICAgICpkYXRhTGVuZ3RoICs9IHV0ZjhTZXF1ZW5jZUxlbmd0aDsKIAotICAgICAgICBpZiAo
ZGF0YUVuZCAtIGRhdGEgPCB1dGY4U2VxdWVuY2VMZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGlmICghZGF0YUVuZCkgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9
IDE7IGkgPCB1dGY4U2VxdWVuY2VMZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGlmICgh
ZGF0YVtpXSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSBpZiAoZGF0YUVuZCAtIGRhdGEgPCB1dGY4U2VxdWVuY2VMZW5ndGgpCisg
ICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBpZiAoIWlzTGVnYWxVVEY4KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGRhdGEpLCB1dGY4U2VxdWVuY2VMZW5ndGgp
KQogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0zNDcsMTEgKzM2MCwxMyBAQCB1bnNpZ25lZCBj
YWxjdWxhdGVTdHJpbmdIYXNoRnJvbVVURjgoY29uc3QgY2hhciogZGF0YSwgY29uc3QgY2hhciog
ZGF0YUVuZCwgdW5zaQogICAgICAgICAgICAgaWYgKFVfSVNfU1VSUk9HQVRFKGNoYXJhY3Rlcikp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBzdHJpbmdIYXNoZXIuYWRk
Q2hhcmFjdGVyKHN0YXRpY19jYXN0PFVDaGFyPihjaGFyYWN0ZXIpKTsgLy8gbm9ybWFsIGNhc2UK
LSAgICAgICAgICAgIHV0ZjE2TGVuZ3RoKys7CisgICAgICAgICAgICBpZiAodXRmMTZMZW5ndGgp
CisgICAgICAgICAgICAgICAgKnV0ZjE2TGVuZ3RoICs9IDE7CiAgICAgICAgIH0gZWxzZSBpZiAo
VV9JU19TVVBQTEVNRU5UQVJZKGNoYXJhY3RlcikpIHsKICAgICAgICAgICAgIHN0cmluZ0hhc2hl
ci5hZGRDaGFyYWN0ZXJzKHN0YXRpY19jYXN0PFVDaGFyPihVMTZfTEVBRChjaGFyYWN0ZXIpKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PFVDaGFy
PihVMTZfVFJBSUwoY2hhcmFjdGVyKSkpOwotICAgICAgICAgICAgdXRmMTZMZW5ndGggKz0gMjsK
KyAgICAgICAgICAgIGlmICh1dGYxNkxlbmd0aCkKKyAgICAgICAgICAgICAgICAqdXRmMTZMZW5n
dGggKz0gMjsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CkBA
IC0zNTksNiArMzc0LDE2IEBAIHVuc2lnbmVkIGNhbGN1bGF0ZVN0cmluZ0hhc2hGcm9tVVRGOChj
b25zdCBjaGFyKiBkYXRhLCBjb25zdCBjaGFyKiBkYXRhRW5kLCB1bnNpCiAgICAgcmV0dXJuIHN0
cmluZ0hhc2hlci5oYXNoKCk7CiB9CiAKK3Vuc2lnbmVkIGNhbGN1bGF0ZVN0cmluZ0hhc2hGcm9t
VVRGOChjb25zdCBjaGFyKiBkYXRhLCBjb25zdCBjaGFyKiBkYXRhRW5kLCB1bnNpZ25lZCYgdXRm
MTZMZW5ndGgpCit7CisgICAgcmV0dXJuIGNhbGN1bGF0ZVN0cmluZ0hhc2hBbmRMZW5ndGhGcm9t
VVRGOEludGVybmFsKGRhdGEsIGRhdGFFbmQsIDAsICZ1dGYxNkxlbmd0aCk7Cit9CisKK3Vuc2ln
bmVkIGNhbGN1bGF0ZVN0cmluZ0hhc2hBbmRMZW5ndGhGcm9tVVRGOChjb25zdCBjaGFyKiBkYXRh
LCB1bnNpZ25lZCYgZGF0YUxlbmd0aCwgdW5zaWduZWQmIHV0ZjE2TGVuZ3RoKQoreworICAgIHJl
dHVybiBjYWxjdWxhdGVTdHJpbmdIYXNoQW5kTGVuZ3RoRnJvbVVURjhJbnRlcm5hbChkYXRhLCAw
LCAmZGF0YUxlbmd0aCwgJnV0ZjE2TGVuZ3RoKTsKK30KKwogYm9vbCBlcXVhbFVURjE2V2l0aFVU
RjgoY29uc3QgVUNoYXIqIGEsIGNvbnN0IFVDaGFyKiBhRW5kLCBjb25zdCBjaGFyKiBiLCBjb25z
dCBjaGFyKiBiRW5kKQogewogICAgIHdoaWxlIChiIDwgYkVuZCkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdW5pY29kZS9VVEY4LmgKaW5kZXggMWY0YmFjYWMyYmRlMWE5OWVjMTUzYTI3NGZi
Njg0MGI5NmZmYjJlMS4uOTM0ZjQzYTgyOWZhZDYzNWJmNmUxYjU1Mjg4MTIxNTBmMmU4ZWRlZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VURjguaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvVVRGOC5oCkBAIC03Miw2ICs3Miw4
IEBAIG5hbWVzcGFjZSBVbmljb2RlIHsKIAogICAgIHVuc2lnbmVkIGNhbGN1bGF0ZVN0cmluZ0hh
c2hGcm9tVVRGOChjb25zdCBjaGFyKiBkYXRhLCBjb25zdCBjaGFyKiBkYXRhRW5kLCB1bnNpZ25l
ZCYgdXRmMTZMZW5ndGgpOwogCisgICAgdW5zaWduZWQgY2FsY3VsYXRlU3RyaW5nSGFzaEFuZExl
bmd0aEZyb21VVEY4KGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkJiBkYXRhTGVuZ3RoLCB1bnNp
Z25lZCYgdXRmMTZMZW5ndGgpOworCiAgICAgYm9vbCBlcXVhbFVURjE2V2l0aFVURjgoY29uc3Qg
VUNoYXIqIGEsIGNvbnN0IFVDaGFyKiBhRW5kLCBjb25zdCBjaGFyKiBiLCBjb25zdCBjaGFyKiBi
RW5kKTsKIAogfSAvLyBuYW1lc3BhY2UgVW5pY29kZQo=
</data>
<flag name="review"
          id="70489"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>