<?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>39482</bug_id>
          
          <creation_ts>2010-05-21 04:09:20 -0700</creation_ts>
          <short_desc>RGB colors should be clamped to the 0-255 range</short_desc>
          <delta_ts>2010-07-02 17:08:26 -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>CSS</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>HTML5</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>228851</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-21 04:09:20 -0700</bug_when>
    <thetext>HTML5 spec:
http://www.whatwg.org/specs/web-apps/current-work/#colors

This change will make WebKit pass the following tests:
http://philip.html5.org/tests/canvas/suite/tests/2d.fillStyle.parse.rgb-clamp-3.html
http://philip.html5.org/tests/canvas/suite/tests/2d.fillStyle.parse.rgb-clamp-4.html
http://philip.html5.org/tests/canvas/suite/tests/2d.fillStyle.parse.rgb-clamp-5.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228852</commentid>
    <comment_count>1</comment_count>
      <attachid>56695</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-21 04:15:18 -0700</bug_when>
    <thetext>Created attachment 56695
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228854</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-21 04:17:51 -0700</bug_when>
    <thetext>Attachment 56695 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/css/CSSParser.cpp:3671:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
WebCore/css/CSSParser.cpp:3664:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 2 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228856</commentid>
    <comment_count>3</comment_count>
      <attachid>56696</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-21 04:34:48 -0700</bug_when>
    <thetext>Created attachment 56696
Proposed patch + stylefix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228857</commentid>
    <comment_count>4</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-21 04:36:15 -0700</bug_when>
    <thetext>As for other browsers, Firefox currently implements this behavior. Opera does not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229032</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-21 12:08:57 -0700</bug_when>
    <thetext>What is IE&apos;s behavior?

Have you performance tested this in any way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229058</commentid>
    <comment_count>6</comment_count>
      <attachid>56696</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-21 12:55:07 -0700</bug_when>
    <thetext>Comment on attachment 56696
Proposed patch + stylefix

&gt; +ctx.shadowColor = &quot;rgb(0,0,256)&quot;;
&gt; +shouldBe(&quot;ctx.shadowColor&quot;, &quot;&apos;#0000ff&apos;&quot;);

Please write the test so you can see what is being tested in the test output. For example:

    shouldBe(&quot;ctx.shadowColor = &apos;rgb(0,0,256)&apos;; ctx.shadowColor&quot;, &quot;&apos;#0000ff&apos;&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233725</commentid>
    <comment_count>7</comment_count>
      <attachid>57759</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-06-03 05:58:36 -0700</bug_when>
    <thetext>Created attachment 57759
Proposed patch v2

LayoutTests updated to show what&apos;s being tested.
Also unskipped 3 of the imported canvas/philip tests that pass with this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233726</commentid>
    <comment_count>8</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-06-03 05:59:58 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Have you performance tested this in any way?

Not really. What kind of performance test did you have in mind?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237460</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-12 20:56:44 -0700</bug_when>
    <thetext>I would suspect that color parsing would be hot code.  The PLT would be one way to test, but running it is basically impossible unless you work at Apple (or Google if you&apos;re running it in Chrome).

You could write a little js page which parsed various colors in a loop using the CSS DOM or by calling  style.backgroundColor =  or setAttribute(&quot;color&quot;, ...).  You&apos;d have to use shark or sample to verify that your benchmark actually hit the color code.  If so, then that would easily prove or disprove that this did or did not change performance of color parsing. :)  Whether changing color parsing performance would change the PLT is another quesiton, but if you didn&apos;t change color parsing perf then you obviously didn&apos;t change the PLT. :)

We used a similar approach for testing the HTML5 parser.  See WebCore/benchmarks/parsing/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237563</commentid>
    <comment_count>10</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-06-13 08:57:19 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I would suspect that color parsing would be hot code.  The PLT would be one way to test, but running it is basically impossible unless you work at Apple (or Google if you&apos;re running it in Chrome).

Any chance I could get some help running it for this change then?

I&apos;ll hack up the JS page either way, once I clear my queue. Thanks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242109</commentid>
    <comment_count>11</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-06-23 14:55:50 -0700</bug_when>
    <thetext>Finally got around to this, sorry about the delay.

This patch incurs a slight performance hit, circa 0.72% slowdown for parsing of typical rgba() color strings.

I&apos;m not sure this would have a measurable effect on your PLT timings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242412</commentid>
    <comment_count>12</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-06-24 03:33:06 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; What is IE&apos;s behavior?

I&apos;m told IE9 implements this behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246030</commentid>
    <comment_count>13</comment_count>
      <attachid>57759</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-07-02 12:36:04 -0700</bug_when>
    <thetext>Comment on attachment 57759
Proposed patch v2

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246081</commentid>
    <comment_count>14</comment_count>
      <attachid>57759</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-02 14:16:16 -0700</bug_when>
    <thetext>Comment on attachment 57759
Proposed patch v2

Rejecting patch 57759 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--ignore-tests&apos;, &apos;compositing&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
Last 500 characters of output:
ing Java tests
make: Nothing to be done for `default&apos;.
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Skipped list contained &apos;compositing/iframes/composited-iframe.html&apos;, but no file of that name could be found
Testing 19281 test cases.
fast/loader/recursive-before-unload-crash.html -&gt; failed

Exiting early after 1 failures. 14193 tests run.
211.67s total testing time

14192 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
1 test case (&lt;1%) had stderr output

Full output: http://webkit-commit-queue.appspot.com/results/3355219</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246090</commentid>
    <comment_count>15</comment_count>
      <attachid>57759</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-02 14:32:21 -0700</bug_when>
    <thetext>Comment on attachment 57759
Proposed patch v2

Flaky test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246094</commentid>
    <comment_count>16</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-02 14:33:32 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Flaky test.

That was lightning fast, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246164</commentid>
    <comment_count>17</comment_count>
      <attachid>57759</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-02 17:08:20 -0700</bug_when>
    <thetext>Comment on attachment 57759
Proposed patch v2

Clearing flags on attachment: 57759

Committed r62417: &lt;http://trac.webkit.org/changeset/62417&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246165</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-02 17:08:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56695</attachid>
            <date>2010-05-21 04:15:18 -0700</date>
            <delta_ts>2010-05-21 04:34:48 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-39482.diff</filename>
            <type>text/plain</type>
            <size>10065</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNDQwYjNhLi44ZWExZTU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDUt
MjEgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCB0byB2ZXJpZnkg
cHJvcGVyIGNsYW1waW5nIG9mIFJHQiB2YWx1ZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4MgorCisgICAgICAgIFNwZWMgbGluazoKKyAgICAg
ICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jY29s
b3JzCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtY29sb3ItY2xhbXBpbmctZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtY29sb3ItY2xhbXBp
bmcuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZh
cy1jb2xvci1jbGFtcGluZy5qczogQWRkZWQuCisKIDIwMTAtMDUtMjAgIFRvbnkgQ2hhbmcgIDx0
b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1jbGFtcGluZy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3ItY2xhbXBp
bmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3MDZk
NTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29s
b3ItY2xhbXBpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1Rlc3QgdGhhdCBjb2xv
ciB2YWx1ZXMgYXJlIHByb3Blcmx5IGNsYW1wZWQgKFIsIEcsIEIgc2hvdWxkIGJlIDAtMjU1KSwg
YWxwaGEgMC4wLTEuMAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBjdHgu
c2hhZG93Q29sb3IgaXMgJ3JnYmEoMCwgMCwgMCwgMC4wKScKK1BBU1MgY3R4LnNoYWRvd0NvbG9y
IGlzICcjMDAwMDAwJworUEFTUyBjdHguc2hhZG93Q29sb3IgaXMgJyMwMGZmMDAnCitQQVNTIGN0
eC5zaGFkb3dDb2xvciBpcyAnIzAwZmYwMCcKK1BBU1MgY3R4LnNoYWRvd0NvbG9yIGlzICcjMDAw
MGZmJworUEFTUyBjdHguc2hhZG93Q29sb3IgaXMgJyNmZjAwMDAnCitQQVNTIGN0eC5zaGFkb3dD
b2xvciBpcyAnI2ZmMDkwMCcKK1BBU1MgY3R4LnNoYWRvd0NvbG9yIGlzICdyZ2JhKDI1NSwgOSwg
MCwgMC4wKScKK1BBU1MgY3R4LnNoYWRvd0NvbG9yIGlzICcjMDdmZjAwJworUEFTUyBjdHguc2hh
ZG93Q29sb3IgaXMgJyMwMGZmMDAnCitQQVNTIGN0eC5zaGFkb3dDb2xvciBpcyAncmdiYSgwLCAy
NTUsIDAsIDAuNDAwMDApJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1j
b2xvci1jbGFtcGluZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbG9y
LWNsYW1waW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVkMWJm
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xv
ci1jbGFtcGluZy5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY2FudmFzLWNvbG9yLWNsYW1waW5nLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY29sb3ItY2xhbXBpbmcuanMgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWNvbG9yLWNsYW1waW5nLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkODBlYTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWNvbG9yLWNsYW1w
aW5nLmpzCkBAIC0wLDAgKzEsMzkgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgY29sb3IgdmFs
dWVzIGFyZSBwcm9wZXJseSBjbGFtcGVkIChSLCBHLCBCIHNob3VsZCBiZSAwLTI1NSksIGFscGhh
IDAuMC0xLjAiKTsKKwordmFyIGN0eCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycp
LmdldENvbnRleHQoJzJkJyk7CisKK2N0eC5zaGFkb3dDb2xvciA9ICJyZ2JhKDAsMCwwLDApIjsK
K3Nob3VsZEJlKCJjdHguc2hhZG93Q29sb3IiLCAiJ3JnYmEoMCwgMCwgMCwgMC4wKSciKTsKKwor
Y3R4LnNoYWRvd0NvbG9yID0gInJnYigwLDAsMCkiOworc2hvdWxkQmUoImN0eC5zaGFkb3dDb2xv
ciIsICInIzAwMDAwMCciKTsKKworY3R4LnNoYWRvd0NvbG9yID0gInJnYigwLDk5OSwwKSI7Citz
aG91bGRCZSgiY3R4LnNoYWRvd0NvbG9yIiwgIicjMDBmZjAwJyIpOworCitjdHguc2hhZG93Q29s
b3IgPSAicmdiKDAsOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5LDApIjsKK3Nob3VsZEJlKCJjdHguc2hhZG93Q29sb3IiLCAiJyMwMGZmMDAnIik7CisKK2N0
eC5zaGFkb3dDb2xvciA9ICJyZ2IoMCwwLDI1NikiOworc2hvdWxkQmUoImN0eC5zaGFkb3dDb2xv
ciIsICInIzAwMDBmZiciKTsKKworY3R4LnNoYWRvd0NvbG9yID0gInJnYig5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTksMCwtOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSkiOworc2hvdWxkQmUo
ImN0eC5zaGFkb3dDb2xvciIsICInI2ZmMDAwMCciKTsKKworY3R4LnNoYWRvd0NvbG9yID0gInJn
YmEoOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSw5LDAsMSkiOworc2hvdWxkQmUoImN0eC5zaGFk
b3dDb2xvciIsICInI2ZmMDkwMCciKTsKKworY3R4LnNoYWRvd0NvbG9yID0gInJnYmEoOTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OSw5LDAsLTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5KSI7CitzaG91bGRCZSgiY3R4LnNoYWRvd0NvbG9yIiwgIidyZ2JhKDI1NSwgOSwgMCwg
MC4wKSciKTsKKworY3R4LnNoYWRvd0NvbG9yID0gInJnYmEoNyw5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5LDAsOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTkpIjsKK3Nob3VsZEJlKCJjdHguc2hhZG93Q29sb3IiLCAiJyMwN2Zm
MDAnIik7CisKK2N0eC5zaGFkb3dDb2xvciA9ICJyZ2JhKC03LDk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTksMCw5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OSkiOworc2hvdWxkQmUoImN0eC5zaGFkb3dDb2xvciIsICInIzAwZmYw
MCciKTsKKworY3R4LnNoYWRvd0NvbG9yID0gIndoaXRlIjsKK2N0eC5zaGFkb3dDb2xvciA9ICJy
Z2JhKDAlLDEwMCUsMCUsMC40KSI7CitzaG91bGRCZSgiY3R4LnNoYWRvd0NvbG9yIiwgIidyZ2Jh
KDAsIDI1NSwgMCwgMC40MDAwMCknIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBiYjI3YWY0Li41M2QzNzQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEwLTA1LTIxICBBbmRyZWFzIEts
aW5nICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUkdCIGNvbG9ycyBzaG91bGQgYmUgY2xhbXBlZCB0byB0
aGUgMC0yNTUgcmFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM5NDgyCisKKyAgICAgICAgU3BlYyBsaW5rOgorICAgICAgICBodHRwOi8vd3d3Lndo
YXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNjb2xvcnMKKworICAgICAgICBU
ZXN0OiBmYXN0L2NhbnZhcy9jYW52YXMtY29sb3ItY2xhbXBpbmcuaHRtbAorCisgICAgICAgICog
Y3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9ySW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZUNvbG9ySW50RnJvbVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VDb2xvclBhcmFtZXRlcnMpOgorCiAyMDEwLTA1LTIxICBMdWNhcyBEZSBNYXJjaGkgIDxs
dWNhcy5kZW1hcmNoaUBwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDE4MjZkNDIuLmU3OTA2MzkgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApA
QCAtMzY0Niw3ICszNjQ2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ1NTV2hpdGVzcGFjZShV
Q2hhciBjKQogICAgIHJldHVybiBjID09ICcgJyB8fCBjID09ICdcdCcgfHwgYyA9PSAnXHInIHx8
IGMgPT0gJ1xuJyB8fCBjID09ICdcZic7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBwYXJzZUlu
dChjb25zdCBVQ2hhciomIHN0cmluZywgY29uc3QgVUNoYXIqIGVuZCwgVUNoYXIgdGVybWluYXRv
ciwgaW50JiB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBwYXJzZUNvbG9ySW50KGNvbnN0IFVD
aGFyKiYgc3RyaW5nLCBjb25zdCBVQ2hhciogZW5kLCBVQ2hhciB0ZXJtaW5hdG9yLCBpbnQmIHZh
bHVlKQogewogICAgIGNvbnN0IFVDaGFyKiBjdXJyZW50ID0gc3RyaW5nOwogICAgIGludCBsb2Nh
bFZhbHVlID0gMDsKQEAgLTM2NTksOCArMzY1OSwxOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcGFy
c2VJbnQoY29uc3QgVUNoYXIqJiBzdHJpbmcsIGNvbnN0IFVDaGFyKiBlbmQsIFVDaGFyIHRlcm1p
bgogICAgIH0KICAgICBpZiAoY3VycmVudCA9PSBlbmQgfHwgIWlzQVNDSUlEaWdpdCgqY3VycmVu
dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB3aGlsZSAoY3VycmVudCAhPSBlbmQgJiYg
aXNBU0NJSURpZ2l0KCpjdXJyZW50KSkKLSAgICAgICAgbG9jYWxWYWx1ZSA9IGxvY2FsVmFsdWUg
KiAxMCArICpjdXJyZW50KysgLSAnMCc7CisgICAgd2hpbGUgKGN1cnJlbnQgIT0gZW5kICYmIGlz
QVNDSUlEaWdpdCgqY3VycmVudCkpIHsKKyAgICAgICAgaW50IG5ld1ZhbHVlID0gbG9jYWxWYWx1
ZSAqIDEwICsgKmN1cnJlbnQrKyAtICcwJzsKKyAgICAgICAgaWYgKG5ld1ZhbHVlID49IDI1NSkg
eworICAgICAgICAgICAgLy8gQ2xhbXAgdmFsdWVzIGF0IDI1NS4KKyAgICAgICAgICAgIGxvY2Fs
VmFsdWUgPSAyNTU7CisgICAgICAgICAgICB3aGlsZSAoY3VycmVudCAhPSBlbmQgJiYgaXNBU0NJ
SURpZ2l0KCpjdXJyZW50KSkKKyAgICAgICAgICAgICAgICArK2N1cnJlbnQ7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2NhbFZhbHVl
ID0gbmV3VmFsdWU7CisgICAgfQogICAgIHdoaWxlIChjdXJyZW50ICE9IGVuZCAmJiBpc0NTU1do
aXRlc3BhY2UoKmN1cnJlbnQpKQogICAgICAgICBjdXJyZW50Kys7CiAgICAgaWYgKGN1cnJlbnQg
PT0gZW5kIHx8ICpjdXJyZW50KysgIT0gdGVybWluYXRvcikKQEAgLTM2ODMsMTEgKzM2OTMsMTEg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoY29uc3QgU3RyaW5nICZuYW1lLCBSR0JBMzIm
IHJnYiwgYm9vbCBzdHJpY3QpCiAgICAgICAgIGludCByZWQ7CiAgICAgICAgIGludCBncmVlbjsK
ICAgICAgICAgaW50IGJsdWU7Ci0gICAgICAgIGlmICghcGFyc2VJbnQoY3VycmVudCwgZW5kLCAn
LCcsIHJlZCkpCisgICAgICAgIGlmICghcGFyc2VDb2xvckludChjdXJyZW50LCBlbmQsICcsJywg
cmVkKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFwYXJzZUludChj
dXJyZW50LCBlbmQsICcsJywgZ3JlZW4pKQorICAgICAgICBpZiAoIXBhcnNlQ29sb3JJbnQoY3Vy
cmVudCwgZW5kLCAnLCcsIGdyZWVuKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgaWYgKCFwYXJzZUludChjdXJyZW50LCBlbmQsICcpJywgYmx1ZSkpCisgICAgICAgIGlmICgh
cGFyc2VDb2xvckludChjdXJyZW50LCBlbmQsICcpJywgYmx1ZSkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIGlmIChjdXJyZW50ICE9IGVuZCkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTM3MDQsNiArMzcxNCwyMyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VDb2xv
cihjb25zdCBTdHJpbmcgJm5hbWUsIFJHQkEzMiYgcmdiLCBib29sIHN0cmljdCkKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKK3N0YXRpYyBpbnQgcGFyc2VDb2xvckludEZyb21WYWx1ZShDU1NQYXJz
ZXJWYWx1ZSogdikKK3sKKyAgICBpZiAodi0+ZlZhbHVlIDw9IDAuMCkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBpZiAodi0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRB
R0UpIHsKKyAgICAgICAgaWYgKHYtPmZWYWx1ZSA+PSAxMDAuMCkKKyAgICAgICAgICAgIHJldHVy
biAyNTU7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHYtPmZWYWx1ZSAqIDI1Ni4w
IC8gMTAwLjApOworICAgIH0KKworICAgIGlmICh2LT5mVmFsdWUgPj0gMjU1LjApCisgICAgICAg
IHJldHVybiAyNTU7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2LT5mVmFsdWUpOwor
fQorCiBib29sIENTU1BhcnNlcjo6cGFyc2VDb2xvclBhcmFtZXRlcnMoQ1NTUGFyc2VyVmFsdWUq
IHZhbHVlLCBpbnQqIGNvbG9yQXJyYXksIGJvb2wgcGFyc2VBbHBoYSkKIHsKICAgICBDU1NQYXJz
ZXJWYWx1ZUxpc3QqIGFyZ3MgPSB2YWx1ZS0+ZnVuY3Rpb24tPmFyZ3M7CkBAIC0zNzE2LDcgKzM3
NDMsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VDb2xvclBhcmFtZXRlcnMoQ1NTUGFyc2VyVmFs
dWUqIHZhbHVlLCBpbnQqIGNvbG9yQXJyYXksIGJvbwogICAgICAgICB1bml0VHlwZSA9IEZQZXJj
ZW50OwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNvbG9yQXJyYXlbMF0g
PSBzdGF0aWNfY2FzdDxpbnQ+KHYtPmZWYWx1ZSAqICh2LT51bml0ID09IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUEVSQ0VOVEFHRSA/IDI1Ni4wIC8gMTAwLjAgOiAxLjApKTsKKyAgICBjb2xvckFy
cmF5WzBdID0gcGFyc2VDb2xvckludEZyb21WYWx1ZSh2KTsKICAgICBmb3IgKGludCBpID0gMTsg
aSA8IDM7IGkrKykgewogICAgICAgICB2ID0gYXJncy0+bmV4dCgpOwogICAgICAgICBpZiAodi0+
dW5pdCAhPSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IgJiYgdi0+aVZhbHVlICE9ICcsJykKQEAg
LTM3MjQsNyArMzc1MSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yUGFyYW1ldGVycyhD
U1NQYXJzZXJWYWx1ZSogdmFsdWUsIGludCogY29sb3JBcnJheSwgYm9vCiAgICAgICAgIHYgPSBh
cmdzLT5uZXh0KCk7CiAgICAgICAgIGlmICghdmFsaWRVbml0KHYsIHVuaXRUeXBlLCB0cnVlKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY29sb3JBcnJheVtpXSA9IHN0YXRp
Y19jYXN0PGludD4odi0+ZlZhbHVlICogKHYtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QRVJDRU5UQUdFID8gMjU2LjAgLyAxMDAuMCA6IDEuMCkpOworICAgICAgICBjb2xvckFycmF5
W2ldID0gcGFyc2VDb2xvckludEZyb21WYWx1ZSh2KTsKICAgICB9CiAgICAgaWYgKHBhcnNlQWxw
aGEpIHsKICAgICAgICAgdiA9IGFyZ3MtPm5leHQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56696</attachid>
            <date>2010-05-21 04:34:48 -0700</date>
            <delta_ts>2010-06-03 05:58:36 -0700</delta_ts>
            <desc>Proposed patch + stylefix</desc>
            <filename>bug-39482-v2.diff</filename>
            <type>text/plain</type>
            <size>10032</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNDQwYjNhLi44ZWExZTU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDUt
MjEgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCB0byB2ZXJpZnkg
cHJvcGVyIGNsYW1waW5nIG9mIFJHQiB2YWx1ZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4MgorCisgICAgICAgIFNwZWMgbGluazoKKyAgICAg
ICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jY29s
b3JzCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtY29sb3ItY2xhbXBpbmctZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtY29sb3ItY2xhbXBp
bmcuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZh
cy1jb2xvci1jbGFtcGluZy5qczogQWRkZWQuCisKIDIwMTAtMDUtMjAgIFRvbnkgQ2hhbmcgIDx0
b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xvci1jbGFtcGluZy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3ItY2xhbXBp
bmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3MDZk
NTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtY29s
b3ItY2xhbXBpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1Rlc3QgdGhhdCBjb2xv
ciB2YWx1ZXMgYXJlIHByb3Blcmx5IGNsYW1wZWQgKFIsIEcsIEIgc2hvdWxkIGJlIDAtMjU1KSwg
YWxwaGEgMC4wLTEuMAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBjdHgu
c2hhZG93Q29sb3IgaXMgJ3JnYmEoMCwgMCwgMCwgMC4wKScKK1BBU1MgY3R4LnNoYWRvd0NvbG9y
IGlzICcjMDAwMDAwJworUEFTUyBjdHguc2hhZG93Q29sb3IgaXMgJyMwMGZmMDAnCitQQVNTIGN0
eC5zaGFkb3dDb2xvciBpcyAnIzAwZmYwMCcKK1BBU1MgY3R4LnNoYWRvd0NvbG9yIGlzICcjMDAw
MGZmJworUEFTUyBjdHguc2hhZG93Q29sb3IgaXMgJyNmZjAwMDAnCitQQVNTIGN0eC5zaGFkb3dD
b2xvciBpcyAnI2ZmMDkwMCcKK1BBU1MgY3R4LnNoYWRvd0NvbG9yIGlzICdyZ2JhKDI1NSwgOSwg
MCwgMC4wKScKK1BBU1MgY3R4LnNoYWRvd0NvbG9yIGlzICcjMDdmZjAwJworUEFTUyBjdHguc2hh
ZG93Q29sb3IgaXMgJyMwMGZmMDAnCitQQVNTIGN0eC5zaGFkb3dDb2xvciBpcyAncmdiYSgwLCAy
NTUsIDAsIDAuNDAwMDApJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1j
b2xvci1jbGFtcGluZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbG9y
LWNsYW1waW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVkMWJm
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1jb2xv
ci1jbGFtcGluZy5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY2FudmFzLWNvbG9yLWNsYW1waW5nLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtY29sb3ItY2xhbXBpbmcuanMgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWNvbG9yLWNsYW1waW5nLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkODBlYTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLWNvbG9yLWNsYW1w
aW5nLmpzCkBAIC0wLDAgKzEsMzkgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgY29sb3IgdmFs
dWVzIGFyZSBwcm9wZXJseSBjbGFtcGVkIChSLCBHLCBCIHNob3VsZCBiZSAwLTI1NSksIGFscGhh
IDAuMC0xLjAiKTsKKwordmFyIGN0eCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycp
LmdldENvbnRleHQoJzJkJyk7CisKK2N0eC5zaGFkb3dDb2xvciA9ICJyZ2JhKDAsMCwwLDApIjsK
K3Nob3VsZEJlKCJjdHguc2hhZG93Q29sb3IiLCAiJ3JnYmEoMCwgMCwgMCwgMC4wKSciKTsKKwor
Y3R4LnNoYWRvd0NvbG9yID0gInJnYigwLDAsMCkiOworc2hvdWxkQmUoImN0eC5zaGFkb3dDb2xv
ciIsICInIzAwMDAwMCciKTsKKworY3R4LnNoYWRvd0NvbG9yID0gInJnYigwLDk5OSwwKSI7Citz
aG91bGRCZSgiY3R4LnNoYWRvd0NvbG9yIiwgIicjMDBmZjAwJyIpOworCitjdHguc2hhZG93Q29s
b3IgPSAicmdiKDAsOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5LDApIjsKK3Nob3VsZEJlKCJjdHguc2hhZG93Q29sb3IiLCAiJyMwMGZmMDAnIik7CisKK2N0
eC5zaGFkb3dDb2xvciA9ICJyZ2IoMCwwLDI1NikiOworc2hvdWxkQmUoImN0eC5zaGFkb3dDb2xv
ciIsICInIzAwMDBmZiciKTsKKworY3R4LnNoYWRvd0NvbG9yID0gInJnYig5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTksMCwtOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSkiOworc2hvdWxkQmUo
ImN0eC5zaGFkb3dDb2xvciIsICInI2ZmMDAwMCciKTsKKworY3R4LnNoYWRvd0NvbG9yID0gInJn
YmEoOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSw5LDAsMSkiOworc2hvdWxkQmUoImN0eC5zaGFk
b3dDb2xvciIsICInI2ZmMDkwMCciKTsKKworY3R4LnNoYWRvd0NvbG9yID0gInJnYmEoOTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OSw5LDAsLTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5KSI7CitzaG91bGRCZSgiY3R4LnNoYWRvd0NvbG9yIiwgIidyZ2JhKDI1NSwgOSwgMCwg
MC4wKSciKTsKKworY3R4LnNoYWRvd0NvbG9yID0gInJnYmEoNyw5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5LDAsOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTkpIjsKK3Nob3VsZEJlKCJjdHguc2hhZG93Q29sb3IiLCAiJyMwN2Zm
MDAnIik7CisKK2N0eC5zaGFkb3dDb2xvciA9ICJyZ2JhKC03LDk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTksMCw5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OSkiOworc2hvdWxkQmUoImN0eC5zaGFkb3dDb2xvciIsICInIzAwZmYw
MCciKTsKKworY3R4LnNoYWRvd0NvbG9yID0gIndoaXRlIjsKK2N0eC5zaGFkb3dDb2xvciA9ICJy
Z2JhKDAlLDEwMCUsMCUsMC40KSI7CitzaG91bGRCZSgiY3R4LnNoYWRvd0NvbG9yIiwgIidyZ2Jh
KDAsIDI1NSwgMCwgMC40MDAwMCknIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBiYjI3YWY0Li41M2QzNzQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEwLTA1LTIxICBBbmRyZWFzIEts
aW5nICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUkdCIGNvbG9ycyBzaG91bGQgYmUgY2xhbXBlZCB0byB0
aGUgMC0yNTUgcmFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM5NDgyCisKKyAgICAgICAgU3BlYyBsaW5rOgorICAgICAgICBodHRwOi8vd3d3Lndo
YXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNjb2xvcnMKKworICAgICAgICBU
ZXN0OiBmYXN0L2NhbnZhcy9jYW52YXMtY29sb3ItY2xhbXBpbmcuaHRtbAorCisgICAgICAgICog
Y3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9ySW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZUNvbG9ySW50RnJvbVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VDb2xvclBhcmFtZXRlcnMpOgorCiAyMDEwLTA1LTIxICBMdWNhcyBEZSBNYXJjaGkgIDxs
dWNhcy5kZW1hcmNoaUBwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDE4MjZkNDIuLjY2MmJhMGIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApA
QCAtMzY0Niw3ICszNjQ2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ1NTV2hpdGVzcGFjZShV
Q2hhciBjKQogICAgIHJldHVybiBjID09ICcgJyB8fCBjID09ICdcdCcgfHwgYyA9PSAnXHInIHx8
IGMgPT0gJ1xuJyB8fCBjID09ICdcZic7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBwYXJzZUlu
dChjb25zdCBVQ2hhciomIHN0cmluZywgY29uc3QgVUNoYXIqIGVuZCwgVUNoYXIgdGVybWluYXRv
ciwgaW50JiB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBwYXJzZUNvbG9ySW50KGNvbnN0IFVD
aGFyKiYgc3RyaW5nLCBjb25zdCBVQ2hhciogZW5kLCBVQ2hhciB0ZXJtaW5hdG9yLCBpbnQmIHZh
bHVlKQogewogICAgIGNvbnN0IFVDaGFyKiBjdXJyZW50ID0gc3RyaW5nOwogICAgIGludCBsb2Nh
bFZhbHVlID0gMDsKQEAgLTM2NTksOCArMzY1OSwxNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcGFy
c2VJbnQoY29uc3QgVUNoYXIqJiBzdHJpbmcsIGNvbnN0IFVDaGFyKiBlbmQsIFVDaGFyIHRlcm1p
bgogICAgIH0KICAgICBpZiAoY3VycmVudCA9PSBlbmQgfHwgIWlzQVNDSUlEaWdpdCgqY3VycmVu
dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB3aGlsZSAoY3VycmVudCAhPSBlbmQgJiYg
aXNBU0NJSURpZ2l0KCpjdXJyZW50KSkKLSAgICAgICAgbG9jYWxWYWx1ZSA9IGxvY2FsVmFsdWUg
KiAxMCArICpjdXJyZW50KysgLSAnMCc7CisgICAgd2hpbGUgKGN1cnJlbnQgIT0gZW5kICYmIGlz
QVNDSUlEaWdpdCgqY3VycmVudCkpIHsKKyAgICAgICAgaW50IG5ld1ZhbHVlID0gbG9jYWxWYWx1
ZSAqIDEwICsgKmN1cnJlbnQrKyAtICcwJzsKKyAgICAgICAgaWYgKG5ld1ZhbHVlID49IDI1NSkg
eworICAgICAgICAgICAgLy8gQ2xhbXAgdmFsdWVzIGF0IDI1NS4KKyAgICAgICAgICAgIGxvY2Fs
VmFsdWUgPSAyNTU7CisgICAgICAgICAgICB3aGlsZSAoY3VycmVudCAhPSBlbmQgJiYgaXNBU0NJ
SURpZ2l0KCpjdXJyZW50KSkKKyAgICAgICAgICAgICAgICArK2N1cnJlbnQ7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBsb2NhbFZhbHVlID0gbmV3VmFsdWU7CisgICAg
fQogICAgIHdoaWxlIChjdXJyZW50ICE9IGVuZCAmJiBpc0NTU1doaXRlc3BhY2UoKmN1cnJlbnQp
KQogICAgICAgICBjdXJyZW50Kys7CiAgICAgaWYgKGN1cnJlbnQgPT0gZW5kIHx8ICpjdXJyZW50
KysgIT0gdGVybWluYXRvcikKQEAgLTM2ODMsMTEgKzM2OTIsMTEgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlQ29sb3IoY29uc3QgU3RyaW5nICZuYW1lLCBSR0JBMzImIHJnYiwgYm9vbCBzdHJpY3Qp
CiAgICAgICAgIGludCByZWQ7CiAgICAgICAgIGludCBncmVlbjsKICAgICAgICAgaW50IGJsdWU7
Ci0gICAgICAgIGlmICghcGFyc2VJbnQoY3VycmVudCwgZW5kLCAnLCcsIHJlZCkpCisgICAgICAg
IGlmICghcGFyc2VDb2xvckludChjdXJyZW50LCBlbmQsICcsJywgcmVkKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFwYXJzZUludChjdXJyZW50LCBlbmQsICcsJywg
Z3JlZW4pKQorICAgICAgICBpZiAoIXBhcnNlQ29sb3JJbnQoY3VycmVudCwgZW5kLCAnLCcsIGdy
ZWVuKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFwYXJzZUludChj
dXJyZW50LCBlbmQsICcpJywgYmx1ZSkpCisgICAgICAgIGlmICghcGFyc2VDb2xvckludChjdXJy
ZW50LCBlbmQsICcpJywgYmx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGlmIChjdXJyZW50ICE9IGVuZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3MDQs
NiArMzcxMywyMyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VDb2xvcihjb25zdCBTdHJpbmcgJm5h
bWUsIFJHQkEzMiYgcmdiLCBib29sIHN0cmljdCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3N0
YXRpYyBpbnQgY29sb3JJbnRGcm9tVmFsdWUoQ1NTUGFyc2VyVmFsdWUqIHYpCit7CisgICAgaWYg
KHYtPmZWYWx1ZSA8PSAwLjApCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKHYtPnVuaXQg
PT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSB7CisgICAgICAgIGlmICh2LT5m
VmFsdWUgPj0gMTAwLjApCisgICAgICAgICAgICByZXR1cm4gMjU1OworICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50Pih2LT5mVmFsdWUgKiAyNTYuMCAvIDEwMC4wKTsKKyAgICB9CisKKyAg
ICBpZiAodi0+ZlZhbHVlID49IDI1NS4wKQorICAgICAgICByZXR1cm4gMjU1OworCisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4odi0+ZlZhbHVlKTsKK30KKwogYm9vbCBDU1NQYXJzZXI6OnBh
cnNlQ29sb3JQYXJhbWV0ZXJzKENTU1BhcnNlclZhbHVlKiB2YWx1ZSwgaW50KiBjb2xvckFycmF5
LCBib29sIHBhcnNlQWxwaGEpCiB7CiAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzID0gdmFs
dWUtPmZ1bmN0aW9uLT5hcmdzOwpAQCAtMzcxNiw3ICszNzQyLDcgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlQ29sb3JQYXJhbWV0ZXJzKENTU1BhcnNlclZhbHVlKiB2YWx1ZSwgaW50KiBjb2xvckFy
cmF5LCBib28KICAgICAgICAgdW5pdFR5cGUgPSBGUGVyY2VudDsKICAgICBlbHNlCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBjb2xvckFycmF5WzBdID0gc3RhdGljX2Nhc3Q8aW50Pih2LT5m
VmFsdWUgKiAodi0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UgPyAy
NTYuMCAvIDEwMC4wIDogMS4wKSk7CisgICAgY29sb3JBcnJheVswXSA9IGNvbG9ySW50RnJvbVZh
bHVlKHYpOwogICAgIGZvciAoaW50IGkgPSAxOyBpIDwgMzsgaSsrKSB7CiAgICAgICAgIHYgPSBh
cmdzLT5uZXh0KCk7CiAgICAgICAgIGlmICh2LT51bml0ICE9IENTU1BhcnNlclZhbHVlOjpPcGVy
YXRvciAmJiB2LT5pVmFsdWUgIT0gJywnKQpAQCAtMzcyNCw3ICszNzUwLDcgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlQ29sb3JQYXJhbWV0ZXJzKENTU1BhcnNlclZhbHVlKiB2YWx1ZSwgaW50KiBj
b2xvckFycmF5LCBib28KICAgICAgICAgdiA9IGFyZ3MtPm5leHQoKTsKICAgICAgICAgaWYgKCF2
YWxpZFVuaXQodiwgdW5pdFR5cGUsIHRydWUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICBjb2xvckFycmF5W2ldID0gc3RhdGljX2Nhc3Q8aW50Pih2LT5mVmFsdWUgKiAodi0+
dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UgPyAyNTYuMCAvIDEwMC4w
IDogMS4wKSk7CisgICAgICAgIGNvbG9yQXJyYXlbaV0gPSBjb2xvckludEZyb21WYWx1ZSh2KTsK
ICAgICB9CiAgICAgaWYgKHBhcnNlQWxwaGEpIHsKICAgICAgICAgdiA9IGFyZ3MtPm5leHQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57759</attachid>
            <date>2010-06-03 05:58:36 -0700</date>
            <delta_ts>2010-07-02 17:08:20 -0700</delta_ts>
            <desc>Proposed patch v2</desc>
            <filename>bug-39482-v3.diff</filename>
            <type>text/plain</type>
            <size>14011</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkN2ZkNDQ2Li5lNDRhM2M3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDYt
MDMgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCB0byB2ZXJpZnkg
cHJvcGVyIGNsYW1waW5nIG9mIFJHQiB2YWx1ZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4MgorCisgICAgICAgIEFsc28gdW5za2lwIDMgY2Fu
dmFzL3BoaWxpcCB0ZXN0cyB0aGF0IG5vdyBwYXNzLgorCisgICAgICAgIFNwZWMgbGluazoKKyAg
ICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8j
Y29sb3JzCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtY29sb3ItY2xhbXBpbmctZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtY29sb3ItY2xh
bXBpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2Nh
bnZhcy1jb2xvci1jbGFtcGluZy5qczogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Nr
aXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKwogMjAxMC0wNi0wMyAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gVGVz
dCBleHBlY3RhdGlvbiB1cGRhdGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtY29sb3ItY2xhbXBpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvY2FudmFzLWNvbG9yLWNsYW1waW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi41YTBkZDI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLWNsYW1waW5nLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDIwIEBACitUZXN0IHRoYXQgY29sb3IgdmFsdWVzIGFyZSBwcm9wZXJseSBjbGFtcGVkIChS
LCBHLCBCIHNob3VsZCBiZSAwLTI1NSksIGFscGhhIDAuMC0xLjAKKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1MgY3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoMCwwLDAsMCknOyBj
dHguc2hhZG93Q29sb3IgaXMgJ3JnYmEoMCwgMCwgMCwgMC4wKScKK1BBU1MgY3R4LnNoYWRvd0Nv
bG9yID0gJ3JnYigwLDAsMCknOyBjdHguc2hhZG93Q29sb3IgaXMgJyMwMDAwMDAnCitQQVNTIGN0
eC5zaGFkb3dDb2xvciA9ICdyZ2IoMCw5OTksMCknOyBjdHguc2hhZG93Q29sb3IgaXMgJyMwMGZm
MDAnCitQQVNTIGN0eC5zaGFkb3dDb2xvciA9ICdyZ2IoMCw5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTksMCknOyBjdHguc2hhZG93Q29sb3IgaXMgJyMwMGZm
MDAnCitQQVNTIGN0eC5zaGFkb3dDb2xvciA9ICdyZ2IoMCwwLDI1NiknOyBjdHguc2hhZG93Q29s
b3IgaXMgJyMwMDAwZmYnCitQQVNTIGN0eC5zaGFkb3dDb2xvciA9ICdyZ2IoOTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5LDAsLTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkpJzsgY3R4LnNoYWRv
d0NvbG9yIGlzICcjZmYwMDAwJworUEFTUyBjdHguc2hhZG93Q29sb3IgPSAncmdiYSg5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5LDksMCwxKSc7IGN0eC5zaGFkb3dDb2xvciBpcyAnI2ZmMDkwMCcK
K1BBU1MgY3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSw5
LDAsLTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5KSc7IGN0eC5zaGFkb3dD
b2xvciBpcyAncmdiYSgyNTUsIDksIDAsIDAuMCknCitQQVNTIGN0eC5zaGFkb3dDb2xvciA9ICdy
Z2JhKDcsOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSwwLDk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5KSc7IGN0eC5zaGFkb3dD
b2xvciBpcyAnIzA3ZmYwMCcKK1BBU1MgY3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoLTcsOTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OSwwLDk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5KSc7IGN0eC5zaGFkb3dDb2xvciBpcyAnIzAw
ZmYwMCcKK1BBU1MgY3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoMCUsMTAwJSwwJSwwLjQpJzsgY3R4
LnNoYWRvd0NvbG9yIGlzICdyZ2JhKDAsIDI1NSwgMCwgMC40MDAwMCknCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLWNsYW1waW5nLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9jYW52YXMtY29sb3ItY2xhbXBpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5mZWQxYmY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvY2FudmFzLWNvbG9yLWNsYW1waW5nLmh0bWwKQEAgLTAsMCArMSwxMyBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9j
YW52YXMtY29sb3ItY2xhbXBpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1jb2xv
ci1jbGFtcGluZy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52
YXMtY29sb3ItY2xhbXBpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
N2E3YmQ3MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Njcmlw
dC10ZXN0cy9jYW52YXMtY29sb3ItY2xhbXBpbmcuanMKQEAgLTAsMCArMSwxNyBAQAorZGVzY3Jp
cHRpb24oIlRlc3QgdGhhdCBjb2xvciB2YWx1ZXMgYXJlIHByb3Blcmx5IGNsYW1wZWQgKFIsIEcs
IEIgc2hvdWxkIGJlIDAtMjU1KSwgYWxwaGEgMC4wLTEuMCIpOworCit2YXIgY3R4ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKTsKKworc2hvdWxkQmUo
ImN0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKDAsMCwwLDApJzsgY3R4LnNoYWRvd0NvbG9yIiwgIidy
Z2JhKDAsIDAsIDAsIDAuMCknIik7CitzaG91bGRCZSgiY3R4LnNoYWRvd0NvbG9yID0gJ3JnYigw
LDAsMCknOyBjdHguc2hhZG93Q29sb3IiLCAiJyMwMDAwMDAnIik7CitzaG91bGRCZSgiY3R4LnNo
YWRvd0NvbG9yID0gJ3JnYigwLDk5OSwwKSc7IGN0eC5zaGFkb3dDb2xvciIsICInIzAwZmYwMCci
KTsKK3Nob3VsZEJlKCJjdHguc2hhZG93Q29sb3IgPSAncmdiKDAsOTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5LDApJzsgY3R4LnNoYWRvd0NvbG9yIiwgIicj
MDBmZjAwJyIpOworc2hvdWxkQmUoImN0eC5zaGFkb3dDb2xvciA9ICdyZ2IoMCwwLDI1NiknOyBj
dHguc2hhZG93Q29sb3IiLCAiJyMwMDAwZmYnIik7CitzaG91bGRCZSgiY3R4LnNoYWRvd0NvbG9y
ID0gJ3JnYig5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTksMCwtOTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OSknOyBjdHguc2hhZG93Q29sb3IiLCAiJyNmZjAwMDAnIik7CitzaG91bGRCZSgiY3R4
LnNoYWRvd0NvbG9yID0gJ3JnYmEoOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSw5LDAsMSknOyBj
dHguc2hhZG93Q29sb3IiLCAiJyNmZjA5MDAnIik7CitzaG91bGRCZSgiY3R4LnNoYWRvd0NvbG9y
ID0gJ3JnYmEoOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSw5LDAsLTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5KSc7IGN0eC5zaGFkb3dDb2xvciIsICIncmdiYSgyNTUsIDks
IDAsIDAuMCknIik7CitzaG91bGRCZSgiY3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoNyw5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5LDAsOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkpJzsgY3R4LnNoYWRvd0NvbG9yIiwgIicjMDdm
ZjAwJyIpOworc2hvdWxkQmUoImN0eC5zaGFkb3dDb2xvciA9ICdyZ2JhKC03LDk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTksMCw5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5
OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSknOyBjdHguc2hhZG93Q29sb3IiLCAiJyMwMGZmMDAn
Iik7CitzaG91bGRCZSgiY3R4LnNoYWRvd0NvbG9yID0gJ3JnYmEoMCUsMTAwJSwwJSwwLjQpJzsg
Y3R4LnNoYWRvd0NvbG9yIiwgIidyZ2JhKDAsIDI1NSwgMCwgMC40MDAwMCknIik7CisKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAppbmRleCBj
MWI0MmE4Li4zNTYyYjU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tp
cHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZApAQCAtMjE4LDkgKzIx
OCw2IEBAIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZHJhd0ltYWdlLnplcm9jYW52YXMuaHRtbAog
Y2FudmFzL3BoaWxpcC90ZXN0cy8yZC5maWxsU3R5bGUucGFyc2UuY3VycmVudC5iYXNpYy5odG1s
CiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmZpbGxTdHlsZS5wYXJzZS5jdXJyZW50LmNoYW5nZWQu
aHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5maWxsU3R5bGUucGFyc2UuY3VycmVudC5yZW1v
dmVkLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZmlsbFN0eWxlLnBhcnNlLnJnYi1jbGFt
cC0zLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZmlsbFN0eWxlLnBhcnNlLnJnYi1jbGFt
cC00Lmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZmlsbFN0eWxlLnBhcnNlLnJnYi1jbGFt
cC01Lmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZmlsbFN0eWxlLnBhcnNlLnN5c3RlbS5o
dG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmdyYWRpZW50LmludGVycG9sYXRlLnplcm9zaXpl
Lmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZ3JhZGllbnQucmFkaWFsLmNvbmUuZnJvbnQu
aHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggMzY0ZDIyYy4uMGNjMGU3ZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC01MDk3LDkgKzUwOTcsNiBAQCBjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLmRyYXdJbWFnZS56ZXJvY2FudmFzLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQu
ZmlsbFN0eWxlLnBhcnNlLmN1cnJlbnQuYmFzaWMuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8y
ZC5maWxsU3R5bGUucGFyc2UuY3VycmVudC5jaGFuZ2VkLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVz
dHMvMmQuZmlsbFN0eWxlLnBhcnNlLmN1cnJlbnQucmVtb3ZlZC5odG1sCi1jYW52YXMvcGhpbGlw
L3Rlc3RzLzJkLmZpbGxTdHlsZS5wYXJzZS5yZ2ItY2xhbXAtMy5odG1sCi1jYW52YXMvcGhpbGlw
L3Rlc3RzLzJkLmZpbGxTdHlsZS5wYXJzZS5yZ2ItY2xhbXAtNC5odG1sCi1jYW52YXMvcGhpbGlw
L3Rlc3RzLzJkLmZpbGxTdHlsZS5wYXJzZS5yZ2ItY2xhbXAtNS5odG1sCiBjYW52YXMvcGhpbGlw
L3Rlc3RzLzJkLmZpbGxTdHlsZS5wYXJzZS5zeXN0ZW0uaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0
cy8yZC5ncmFkaWVudC5pbnRlcnBvbGF0ZS5jb2xvdXJhbHBoYS5odG1sCiBjYW52YXMvcGhpbGlw
L3Rlc3RzLzJkLmdyYWRpZW50LmludGVycG9sYXRlLnplcm9zaXplLmh0bWwKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTA1NzdiZS4uY2Qz
MzI3ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wNS0yMSAgQW5kcmVhcyBLbGluZyAgPGFuZHJlYXMu
a2xpbmdAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJHQiBjb2xvcnMgc2hvdWxkIGJlIGNsYW1wZWQgdG8gdGhlIDAtMjU1IHJhbmdl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4Mgor
CisgICAgICAgIFNwZWMgbGluazoKKyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNz
L3dlYi1hcHBzL2N1cnJlbnQtd29yay8jY29sb3JzCisKKyAgICAgICAgVGVzdDogZmFzdC9jYW52
YXMvY2FudmFzLWNvbG9yLWNsYW1waW5nLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDb2xvckludCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OnBhcnNlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDb2xvcklu
dEZyb21WYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3JQYXJh
bWV0ZXJzKToKKwogMjAxMC0wNi0wMyAgS2ltIEdyw7ZuaG9sbSAgPGtpbS4xLmdyb25ob2xtQG5v
a2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
CmluZGV4IDVhMTQ1ODEuLjg4NWFiZTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMzY1Nyw3ICszNjU3LDcg
QEAgc3RhdGljIGlubGluZSBib29sIGlzQ1NTV2hpdGVzcGFjZShVQ2hhciBjKQogICAgIHJldHVy
biBjID09ICcgJyB8fCBjID09ICdcdCcgfHwgYyA9PSAnXHInIHx8IGMgPT0gJ1xuJyB8fCBjID09
ICdcZic7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBwYXJzZUludChjb25zdCBVQ2hhciomIHN0
cmluZywgY29uc3QgVUNoYXIqIGVuZCwgVUNoYXIgdGVybWluYXRvciwgaW50JiB2YWx1ZSkKK3N0
YXRpYyBpbmxpbmUgYm9vbCBwYXJzZUNvbG9ySW50KGNvbnN0IFVDaGFyKiYgc3RyaW5nLCBjb25z
dCBVQ2hhciogZW5kLCBVQ2hhciB0ZXJtaW5hdG9yLCBpbnQmIHZhbHVlKQogewogICAgIGNvbnN0
IFVDaGFyKiBjdXJyZW50ID0gc3RyaW5nOwogICAgIGludCBsb2NhbFZhbHVlID0gMDsKQEAgLTM2
NzAsOCArMzY3MCwxNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcGFyc2VJbnQoY29uc3QgVUNoYXIq
JiBzdHJpbmcsIGNvbnN0IFVDaGFyKiBlbmQsIFVDaGFyIHRlcm1pbgogICAgIH0KICAgICBpZiAo
Y3VycmVudCA9PSBlbmQgfHwgIWlzQVNDSUlEaWdpdCgqY3VycmVudCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB3aGlsZSAoY3VycmVudCAhPSBlbmQgJiYgaXNBU0NJSURpZ2l0KCpjdXJy
ZW50KSkKLSAgICAgICAgbG9jYWxWYWx1ZSA9IGxvY2FsVmFsdWUgKiAxMCArICpjdXJyZW50Kysg
LSAnMCc7CisgICAgd2hpbGUgKGN1cnJlbnQgIT0gZW5kICYmIGlzQVNDSUlEaWdpdCgqY3VycmVu
dCkpIHsKKyAgICAgICAgaW50IG5ld1ZhbHVlID0gbG9jYWxWYWx1ZSAqIDEwICsgKmN1cnJlbnQr
KyAtICcwJzsKKyAgICAgICAgaWYgKG5ld1ZhbHVlID49IDI1NSkgeworICAgICAgICAgICAgLy8g
Q2xhbXAgdmFsdWVzIGF0IDI1NS4KKyAgICAgICAgICAgIGxvY2FsVmFsdWUgPSAyNTU7CisgICAg
ICAgICAgICB3aGlsZSAoY3VycmVudCAhPSBlbmQgJiYgaXNBU0NJSURpZ2l0KCpjdXJyZW50KSkK
KyAgICAgICAgICAgICAgICArK2N1cnJlbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBsb2NhbFZhbHVlID0gbmV3VmFsdWU7CisgICAgfQogICAgIHdoaWxlIChjdXJy
ZW50ICE9IGVuZCAmJiBpc0NTU1doaXRlc3BhY2UoKmN1cnJlbnQpKQogICAgICAgICBjdXJyZW50
Kys7CiAgICAgaWYgKGN1cnJlbnQgPT0gZW5kIHx8ICpjdXJyZW50KysgIT0gdGVybWluYXRvcikK
QEAgLTM2OTQsMTEgKzM3MDMsMTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoY29uc3Qg
U3RyaW5nICZuYW1lLCBSR0JBMzImIHJnYiwgYm9vbCBzdHJpY3QpCiAgICAgICAgIGludCByZWQ7
CiAgICAgICAgIGludCBncmVlbjsKICAgICAgICAgaW50IGJsdWU7Ci0gICAgICAgIGlmICghcGFy
c2VJbnQoY3VycmVudCwgZW5kLCAnLCcsIHJlZCkpCisgICAgICAgIGlmICghcGFyc2VDb2xvcklu
dChjdXJyZW50LCBlbmQsICcsJywgcmVkKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgaWYgKCFwYXJzZUludChjdXJyZW50LCBlbmQsICcsJywgZ3JlZW4pKQorICAgICAgICBp
ZiAoIXBhcnNlQ29sb3JJbnQoY3VycmVudCwgZW5kLCAnLCcsIGdyZWVuKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFwYXJzZUludChjdXJyZW50LCBlbmQsICcpJywg
Ymx1ZSkpCisgICAgICAgIGlmICghcGFyc2VDb2xvckludChjdXJyZW50LCBlbmQsICcpJywgYmx1
ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChjdXJyZW50ICE9IGVu
ZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3MTUsNiArMzcyNCwyMyBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VDb2xvcihjb25zdCBTdHJpbmcgJm5hbWUsIFJHQkEzMiYgcmdiLCBi
b29sIHN0cmljdCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3N0YXRpYyBpbmxpbmUgaW50IGNv
bG9ySW50RnJvbVZhbHVlKENTU1BhcnNlclZhbHVlKiB2KQoreworICAgIGlmICh2LT5mVmFsdWUg
PD0gMC4wKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICh2LT51bml0ID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkgeworICAgICAgICBpZiAodi0+ZlZhbHVlID49IDEw
MC4wKQorICAgICAgICAgICAgcmV0dXJuIDI1NTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4odi0+ZlZhbHVlICogMjU2LjAgLyAxMDAuMCk7CisgICAgfQorCisgICAgaWYgKHYtPmZW
YWx1ZSA+PSAyNTUuMCkKKyAgICAgICAgcmV0dXJuIDI1NTsKKworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ+KHYtPmZWYWx1ZSk7Cit9CisKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yUGFy
YW1ldGVycyhDU1NQYXJzZXJWYWx1ZSogdmFsdWUsIGludCogY29sb3JBcnJheSwgYm9vbCBwYXJz
ZUFscGhhKQogewogICAgIENTU1BhcnNlclZhbHVlTGlzdCogYXJncyA9IHZhbHVlLT5mdW5jdGlv
bi0+YXJnczsKQEAgLTM3MjcsNyArMzc1Myw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9y
UGFyYW1ldGVycyhDU1NQYXJzZXJWYWx1ZSogdmFsdWUsIGludCogY29sb3JBcnJheSwgYm9vCiAg
ICAgICAgIHVuaXRUeXBlID0gRlBlcmNlbnQ7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgY29sb3JBcnJheVswXSA9IHN0YXRpY19jYXN0PGludD4odi0+ZlZhbHVlICogKHYt
PnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFID8gMjU2LjAgLyAxMDAu
MCA6IDEuMCkpOworICAgIGNvbG9yQXJyYXlbMF0gPSBjb2xvckludEZyb21WYWx1ZSh2KTsKICAg
ICBmb3IgKGludCBpID0gMTsgaSA8IDM7IGkrKykgewogICAgICAgICB2ID0gYXJncy0+bmV4dCgp
OwogICAgICAgICBpZiAodi0+dW5pdCAhPSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IgJiYgdi0+
aVZhbHVlICE9ICcsJykKQEAgLTM3MzUsNyArMzc2MSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZUNvbG9yUGFyYW1ldGVycyhDU1NQYXJzZXJWYWx1ZSogdmFsdWUsIGludCogY29sb3JBcnJheSwg
Ym9vCiAgICAgICAgIHYgPSBhcmdzLT5uZXh0KCk7CiAgICAgICAgIGlmICghdmFsaWRVbml0KHYs
IHVuaXRUeXBlLCB0cnVlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY29s
b3JBcnJheVtpXSA9IHN0YXRpY19jYXN0PGludD4odi0+ZlZhbHVlICogKHYtPnVuaXQgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFID8gMjU2LjAgLyAxMDAuMCA6IDEuMCkpOwor
ICAgICAgICBjb2xvckFycmF5W2ldID0gY29sb3JJbnRGcm9tVmFsdWUodik7CiAgICAgfQogICAg
IGlmIChwYXJzZUFscGhhKSB7CiAgICAgICAgIHYgPSBhcmdzLT5uZXh0KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>