<?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>42390</bug_id>
          
          <creation_ts>2010-07-15 11:38:29 -0700</creation_ts>
          <short_desc>Multi-layer backgrounds repaint (in low quality) every 0.5 seconds</short_desc>
          <delta_ts>2010-11-22 04:47:12 -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>Layout and Rendering</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>InRadar</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="Stephen White">senorblanco</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>kbalazs</cc>
    
    <cc>levin</cc>
    
    <cc>oliver</cc>
    
    <cc>pfeldman</cc>
    
    <cc>senorblanco</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>252014</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-15 11:38:29 -0700</bug_when>
    <thetext>ImageQualityController (in RenderBoxModelObject.cpp) is broken for multi-layer backgrounds.
Since it only remembers the RenderBoxModelObject* and what IntSize the tile was, an element with multiple layers will get caught by the &quot;animated resize&quot; heuristic and get stuck in a loop where it&apos;s repainted in low quality every 0.5 seconds.

This can be observed with LayoutTests/fast/backgrounds/size/contain-and-cover.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252018</commentid>
    <comment_count>1</comment_count>
      <attachid>61694</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-15 11:42:58 -0700</bug_when>
    <thetext>Created attachment 61694
Proposed patch

Skip the shouldPaintAtLowQuality() check for layers with siblings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252020</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-15 11:46:19 -0700</bug_when>
    <thetext>Attachment 61694 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
Total errors found: 0 in 0 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>252022</commentid>
    <comment_count>3</comment_count>
      <attachid>61696</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-15 11:48:02 -0700</bug_when>
    <thetext>Created attachment 61696
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252153</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-07-15 15:15:26 -0700</bug_when>
    <thetext>Why aren&apos;t the authors of ImageQualityController copied on this bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252431</commentid>
    <comment_count>5</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-16 02:51:08 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Why aren&apos;t the authors of ImageQualityController copied on this bug?

Sorry about that, I was leaving in a hurry last night. Thank you for adding :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252538</commentid>
    <comment_count>6</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-07-16 08:47:39 -0700</bug_when>
    <thetext>Looks good to me (though I&apos;m not a reviewer).  I checked this against the  benchmarks my the original patch, and there were no regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252755</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-07-16 16:42:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/8202530&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252763</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-07-16 16:57:36 -0700</bug_when>
    <thetext>Does this affect some live sites? Can you post a testcase?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252774</commentid>
    <comment_count>9</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-16 17:07:08 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Does this affect some live sites? Can you post a testcase?

I have not seen this on any live sites, but it&apos;s not unlikely. I stumbled upon this problem while working on bug 41201.

Like I said, you can observe this with the in-tree layout test LayoutTests/fast/backgrounds/size/contain-and-cover.html. If you resize that page, only the first &lt;div&gt; will be repainted in high quality after 500ms. The rest are repainted in low quality. This repeats every 500ms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271171</commentid>
    <comment_count>10</comment_count>
      <attachid>61696</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-29 11:42:03 -0700</bug_when>
    <thetext>Comment on attachment 61696
Proposed patch

This seems more like a workaround than a fix. Just turns off the logic for layers that have a next pointer, with no comment or indication in the code why, and no regression test. We can do better.

&gt; -            bool useLowQualityScaling = shouldPaintAtLowQuality(context, image, tileSize);
&gt; +            bool useLowQualityScaling;
&gt; +            if (bgLayer-&gt;next())
&gt; +                useLowQualityScaling = false;
&gt; +            else
&gt; +                useLowQualityScaling = shouldPaintAtLowQuality(context, image, tileSize);

I think the logic would be easier to read like this:

    bool useLowQualityScaling = !bgLayer-&gt;next() &amp;&amp; shouldPaintAtLowQuality(context, image, tileSize);

But still, we need an explanation for why we should paint multiple layer backgrounds always in high quality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272807</commentid>
    <comment_count>11</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-09-01 08:14:42 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 61696 [details])
&gt; This seems more like a workaround than a fix. Just turns off the logic for layers that have a next pointer, with no comment or indication in the code why, and no regression test. We can do better.

You are completely right.

@Stephen: You hacked a bunch on ImageQualityController - could you have a closer look at this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276017</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-09-08 13:13:40 -0700</bug_when>
    <thetext>Stephen: ping!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280234</commentid>
    <comment_count>13</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-09-16 11:40:43 -0700</bug_when>
    <thetext>(In reply to comment #12)

Sorry; was on vacation.  Taking a look now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280248</commentid>
    <comment_count>14</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-09-16 11:59:00 -0700</bug_when>
    <thetext>I can&apos;t repro this on r67642 using Safari, nor Chrome or Chrome&apos;s test_shell.  Andreas, is there some other way I can reproduce this?

The code still looks ok to me, but I don&apos;t know much about multi-image backgrounds, to be honest.  I did see some similar problems in earlier versions of ImageQualityController, when each image had its own timer (when two images were overlapping, one image&apos;s expiring timer would trigger another image&apos;s timer to start, resulting in toggling qualities), but when the timers were unified, those problems went away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280255</commentid>
    <comment_count>15</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-09-16 12:06:14 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; I can&apos;t repro this on r67642 using Safari, nor Chrome or Chrome&apos;s test_shell.  Andreas, is there some other way I can reproduce this?

Just repro&apos;d on ToT Qt. Are you sure that you can&apos;t reproduce? Perhaps it&apos;s just more apparent on Qt since the difference between low and high quality scaling is very noticeable with QPainter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280363</commentid>
    <comment_count>16</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-09-16 14:33:22 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; I can&apos;t repro this on r67642 using Safari, nor Chrome or Chrome&apos;s test_shell.  Andreas, is there some other way I can reproduce this?
&gt; 
&gt; Just repro&apos;d on ToT Qt. Are you sure that you can&apos;t reproduce? Perhaps it&apos;s just more apparent on Qt since the difference between low and high quality scaling is very noticeable with QPainter.

Hmm, I still can&apos;t see the difference visually, but setting some breakpoints reveals that the timer is definitely firing repeatedly.  (Chrome has some further criteria for drawing high quality in platform/graphics/skia which may be obscuring the result, although it&apos;s usually pretty easy to see in Safari).

It definitely looks like there are some ping-pong effects going on here.  I don&apos;t know how much time I&apos;ll have to look into this just now, so if you want to go ahead and commit your patch in the interim (with the fixes Darin suggested), I&apos;m ok with that.  Perhaps leave a comment suggesting that this is only an interim fix until we track down why it&apos;s ping-ponging in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280366</commentid>
    <comment_count>17</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-09-16 14:38:08 -0700</bug_when>
    <thetext>I don&apos;t think the patch makes any sense, so I don&apos;t think we should commit it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295537</commentid>
    <comment_count>18</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-10-18 09:12:01 -0700</bug_when>
    <thetext>I have created a somewhat simpler test case that triggers the bug: http://gist.github.com/632183. The interesting thing is that I could not trigger it with only one box that has two images but just when I added another. Maybe the root of the problem is that we have only one global timer for all box objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295538</commentid>
    <comment_count>19</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-10-18 09:14:41 -0700</bug_when>
    <thetext>D&apos;oh, I pushed it with one div, so you should add the other to trigger the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296798</commentid>
    <comment_count>20</comment_count>
      <attachid>71295</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-10-20 07:59:08 -0700</bug_when>
    <thetext>Created attachment 71295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296805</commentid>
    <comment_count>21</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2010-10-20 08:08:02 -0700</bug_when>
    <thetext>Unfortunately I could not create a test case for this. I have tried it on
Mac and Windows but it seems like only Qt has the visual difference.
Inside the debugger I have seen that the repainting has happened in every 0.5 sec
on those platforms as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296885</commentid>
    <comment_count>22</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-10-20 11:40:35 -0700</bug_when>
    <thetext>Won&apos;t this patch still cause low-quality painting if the same image is used several times in a CSS background?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296935</commentid>
    <comment_count>23</comment_count>
      <attachid>71320</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-10-20 12:30:21 -0700</bug_when>
    <thetext>Created attachment 71320
Testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296938</commentid>
    <comment_count>24</comment_count>
      <attachid>71295</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-10-20 12:34:06 -0700</bug_when>
    <thetext>Comment on attachment 71295
Patch

Patch does not fix the attached testcase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296950</commentid>
    <comment_count>25</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-10-20 13:04:27 -0700</bug_when>
    <thetext>To get this right I think you really need to know what it is that&apos;s drawing the image. You don&apos;t care if the same image is being drawn for different reasons at different sizes, you care about whether the image is being resized for this one particular use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308715</commentid>
    <comment_count>26</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-11-12 12:49:36 -0800</bug_when>
    <thetext>The problem seems to be that, since background-image allows more than one URL per element, neither the Image nor the RenderBoxModelObject (element) alone are enough to uniquely identify the object being drawn.

I&apos;ve put together a patch that replaces the RenderBoxModelObject* key with an {Object, Image} pair, which seems to fix the problem.  Let me know what you guys think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308719</commentid>
    <comment_count>27</comment_count>
      <attachid>73768</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-11-12 13:00:33 -0800</bug_when>
    <thetext>Created attachment 73768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308720</commentid>
    <comment_count>28</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-11-12 13:01:33 -0800</bug_when>
    <thetext>Doesn&apos;t that still have issues if the same image is used multiple times in background-image?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308722</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-12 13:03:37 -0800</bug_when>
    <thetext>Attachment 73768 did not build on chromium:
Build output: http://queues.webkit.org/results/5727029</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308727</commentid>
    <comment_count>30</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-12 13:14:05 -0800</bug_when>
    <thetext>Attachment 73768 did not build on mac:
Build output: http://queues.webkit.org/results/5724030</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308746</commentid>
    <comment_count>31</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-11-12 13:39:13 -0800</bug_when>
    <thetext>Attachment 73768 did not build on chromium:
Build output: http://queues.webkit.org/results/5757028</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308778</commentid>
    <comment_count>32</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-11-12 14:08:38 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; Doesn&apos;t that still have issues if the same image is used multiple times in background-image?

You&apos;re right.  That won&apos;t work for your test case above.

I&apos;m trying another version which includes the bgLayer pointer as part of the key.    This should basically represent the &quot;role&quot; of the image in the background-image.  Ideally, it should just be an index (int), but I couldn&apos;t find an easy way to do that, so I&apos;ve made it a void*, to discourage ImageQualityController from dereferencing it (it should only be used for hashing).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308780</commentid>
    <comment_count>33</comment_count>
      <attachid>73776</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-11-12 14:10:54 -0800</bug_when>
    <thetext>Created attachment 73776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309330</commentid>
    <comment_count>34</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-11-15 10:06:28 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; Created an attachment (id=73776) [details]
&gt; Patch

For your consideration.  ;)

(see above)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310787</commentid>
    <comment_count>35</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-11-18 04:25:52 -0800</bug_when>
    <thetext>Landed as r72282.  Closing bug (manually, since webkit-patch got confused).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312264</commentid>
    <comment_count>36</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-11-22 02:23:54 -0800</bug_when>
    <thetext>Needed to roll devtools&apos; part out. Were you landing this manually?

        M       WebKit/chromium/ChangeLog
        M       WebKit/chromium/src/js/devTools.css
Committed r72511</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312296</commentid>
    <comment_count>37</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-11-22 04:47:12 -0800</bug_when>
    <thetext>(In reply to comment #36)
&gt; Needed to roll devtools&apos; part out. Were you landing this manually?

Sorry, don&apos;t know how that snuck in there.  (Yes, I landed this manually.)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61694</attachid>
            <date>2010-07-15 11:42:58 -0700</date>
            <delta_ts>2010-07-15 11:48:02 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>.bug-42390.diff.swp</filename>
            <type>text/plain</type>
            <size>12288</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">YjBWSU0gNy4yAAAAABAAAGZWP0wmEAIANjsAAGtsaW5nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAABmYXJyaXMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfmtsaW5n
L0Rlc2t0b3AvYnVnLTQyMzkwLmRpZmYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AMzIxMAAAAAAjIiEgExJVAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRwAQB/AAAA
AgAAAAAAAAAnAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhZAAALwgAAOcIAAAAEAAA
JwAAAAAAAADNDwAArw8AAJcPAAB/DwAAbg8AADgPAAA2DwAAEQ8AAA8PAADDDgAAjA4AAIoOAAA+
DgAAPA4AAA0OAADLDQAAyQ0AAJMNAACRDQAAWg0AAFgNAAAZDQAAtAwAAJYMAABlDAAANAwAAM4L
AABqCwAACAsAAL0KAABhCgAAOQoAABcKAADoCQAA1gkAAHsJAAD5CAAA7ggAAOcIAADmCAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgICAgfQAgICAgICAgICB9
ACAgICAgICAgICAgICBjb250ZXh0LT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgc3R5bGUoKS0+Y29s
b3JTcGFjZSgpLCBkZXN0UmVjdCwgcGhhc2UsIHRpbGVTaXplLCBjb21wb3NpdGVPcCwgdXNlTG93
UXVhbGl0eVNjYWxpbmcpOwArICAgICAgICAgICAgICAgIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0g
c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgaW1hZ2UsIHRpbGVTaXplKTsAKyAgICAg
ICAgICAgIGVsc2UAKyAgICAgICAgICAgICAgICB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IGZhbHNl
OwArICAgICAgICAgICAgaWYgKGJnTGF5ZXItPm5leHQoKSkAKyAgICAgICAgICAgIGJvb2wgdXNl
TG93UXVhbGl0eVNjYWxpbmc7AC0gICAgICAgICAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5n
ID0gc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgaW1hZ2UsIHRpbGVTaXplKTsAICAg
ICAgICAgICAgIEltYWdlKiBpbWFnZSA9IGJnLT5pbWFnZShjbGllbnRGb3JCYWNrZ3JvdW5kSW1h
Z2UsIHRpbGVTaXplKTsAICAgICAgICAgICAgIFJlbmRlck9iamVjdCogY2xpZW50Rm9yQmFja2dy
b3VuZEltYWdlID0gYmFja2dyb3VuZE9iamVjdCA/IGJhY2tncm91bmRPYmplY3QgOiB0aGlzOwAg
ICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBvcCA9PSBDb21wb3Np
dGVTb3VyY2VPdmVyID8gYmdMYXllci0+Y29tcG9zaXRlKCkgOiBvcDsAQEAgLTYxNCw3ICs2MTQs
MTEgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28AKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwAC0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcABpbmRleCAwNzdiYWViLi44YmFhZTA3IDEwMDY0NABkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwACAgICAgICAgIFtRdF0gUmVtb3ZlIGFuIHVu
dXNlZCB2YXJpYWJsZSBpbiBCaXRtYXBJbWFnZTo6ZHJhdygpACAAICAgICAgICAgUnViYmVyLXN0
YW1wZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uACsAKzIwMTAtMDctMTUgIEFuZHJl
YXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4AKwArICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOgArICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6ACsAKyAgICAgICAgU2tpcCB0aGUg
c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoKSBjaGVjayBmb3IgbGF5ZXJzIHdpdGggc2libGluZ3Mu
ACsAKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMzkw
ACsgICAgICAgIE11bHRpLWxheWVyIGJhY2tncm91bmRzIHJlcGFpbnQgKGluIGxvdyBxdWFsaXR5
KSBldmVyeSAwLjUgc2Vjb25kcwArACsgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgAgACAyMDEwLTA3LTE1ICBBbmRyZWFzIEtsaW5nICA8YW5kcmVhcy5rbGluZ0Bub2tpYS5jb20+
AEBAIC0xLDUgKzEsMTcgQEAAKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cALS0tIGEvV2ViQ29yZS9D
aGFuZ2VMb2cAaW5kZXggNmJmYzNiNC4uMDc5MDc2NCAxMDA2NDQAZGlmZiAtLWdpdCBhL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61696</attachid>
            <date>2010-07-15 11:48:02 -0700</date>
            <delta_ts>2010-10-20 07:59:00 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-42390.diff</filename>
            <type>text/plain</type>
            <size>1817</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NmJmYzNiNC4uMDc5MDc2NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNyBAQAogMjAxMC0wNy0xNSAgQW5kcmVhcyBLbGlu
ZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE11bHRpLWxheWVyIGJhY2tncm91bmRzIHJlcGFpbnQgKGlu
IGxvdyBxdWFsaXR5KSBldmVyeSAwLjUgc2Vjb25kcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDIzOTAKKworICAgICAgICBTa2lwIHRoZSBzaG91bGRQ
YWludEF0TG93UXVhbGl0eSgpIGNoZWNrIGZvciBsYXllcnMgd2l0aCBzaWJsaW5ncy4KKworICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisKKzIw
MTAtMDctMTUgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKwogICAg
ICAgICBSdWJiZXItc3RhbXBlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KIAogICAg
ICAgICBbUXRdIFJlbW92ZSBhbiB1bnVzZWQgdmFyaWFibGUgaW4gQml0bWFwSW1hZ2U6OmRyYXco
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3Bw
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDA3N2Jh
ZWIuLjhiYWFlMDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAKQEAgLTYxNCw3ICs2MTQsMTEgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRG
aWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAg
ICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wID0gb3AgPT0gQ29tcG9zaXRlU291cmNl
T3ZlciA/IGJnTGF5ZXItPmNvbXBvc2l0ZSgpIDogb3A7CiAgICAgICAgICAgICBSZW5kZXJPYmpl
Y3QqIGNsaWVudEZvckJhY2tncm91bmRJbWFnZSA9IGJhY2tncm91bmRPYmplY3QgPyBiYWNrZ3Jv
dW5kT2JqZWN0IDogdGhpczsKICAgICAgICAgICAgIEltYWdlKiBpbWFnZSA9IGJnLT5pbWFnZShj
bGllbnRGb3JCYWNrZ3JvdW5kSW1hZ2UsIHRpbGVTaXplKTsKLSAgICAgICAgICAgIGJvb2wgdXNl
TG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShjb250ZXh0LCBpbWFn
ZSwgdGlsZVNpemUpOworICAgICAgICAgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZzsKKyAg
ICAgICAgICAgIGlmIChiZ0xheWVyLT5uZXh0KCkpCisgICAgICAgICAgICAgICAgdXNlTG93UXVh
bGl0eVNjYWxpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB1
c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIGlt
YWdlLCB0aWxlU2l6ZSk7CiAgICAgICAgICAgICBjb250ZXh0LT5kcmF3VGlsZWRJbWFnZShpbWFn
ZSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBkZXN0UmVjdCwgcGhhc2UsIHRpbGVTaXplLCBjb21w
b3NpdGVPcCwgdXNlTG93UXVhbGl0eVNjYWxpbmcpOwogICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71295</attachid>
            <date>2010-10-20 07:59:08 -0700</date>
            <delta_ts>2010-11-12 13:00:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42390-20101020165906.patch</filename>
            <type>text/plain</type>
            <size>4113</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWNiYjFlOTczNjkxOGYzMDdiNTIxNWM1ZjU4MjA2YmI4MDJmNWQyNy4uMWZhOGYxZWFiMWM5YzEz
YjJlMGNkNTczZjZhNjM3MmE1NTc3YzhlMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0xMC0yMCAgQmFs
YXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTXVsdGktbGF5ZXIgYmFja2dyb3VuZHMgcmVwYWlu
dCAoaW4gbG93IHF1YWxpdHkpIGV2ZXJ5IDAuNSBzZWNvbmRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjM5MAorICAgICAgICBQYXRjaCBieSBaYWxh
biBCdWp0YXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRB
dExvd1F1YWxpdHkpOgorICAgICAgICBEbyBub3Qgc3dpdGNoIGludG8gYW5pbWF0ZWQgcmVzaXpl
IG1vZGUgd2hlbiB3ZSBoYXZlIG11bHRpcGx5IHN0YXRpYworICAgICAgICBpbWFnZXMgYXQgdGhl
IHNhbWUgYm94LgorCiAyMDEwLTEwLTIwICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5uLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IGVjMDY1YTZiYjk2NDU5YzJjNzgy
MTRiYjMzMGI0MDMxNGJhZTZlMjcuLjkzZTEyMDE1Y2QzMmQ0NWVhNmIxYzg3MmMwMWNhOTVhNWM1
YjJhZWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAg
LTQyLDYgKzQyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIGJv
b2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnNfd2FzRmxvYXRpbmcgPSBmYWxzZTsKIGJvb2wgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnNfaGFkTGF5ZXIgPSBmYWxzZTsKQEAgLTUwLDcgKzUxLDggQEAg
Ym9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c19sYXllcldhc1NlbGZQYWludGluZyA9IGZhbHNl
Owogc3RhdGljIGNvbnN0IGRvdWJsZSBjSW50ZXJwb2xhdGlvbkN1dG9mZiA9IDgwMC4gKiA4MDAu
Owogc3RhdGljIGNvbnN0IGRvdWJsZSBjTG93UXVhbGl0eVRpbWVUaHJlc2hvbGQgPSAwLjUwMDsg
Ly8gNTAwIG1zCiAKLXR5cGVkZWYgSGFzaE1hcDxSZW5kZXJCb3hNb2RlbE9iamVjdCosIEludFNp
emU+IExhc3RQYWludFNpemVNYXA7Cit0eXBlZGVmIHBhaXI8SW1hZ2UqLCBJbnRTaXplPiBJbWFn
ZVNpemVQYWlyOwordHlwZWRlZiBIYXNoTWFwPFJlbmRlckJveE1vZGVsT2JqZWN0KiwgSW1hZ2VT
aXplUGFpcj4gTGFzdFBhaW50U2l6ZU1hcDsKIAogY2xhc3MgSW1hZ2VRdWFsaXR5Q29udHJvbGxl
ciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CkBAIC04MSw3ICs4Myw3IEBAIHZvaWQg
SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6b2JqZWN0RGVzdHJveWVkKFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiBvYmplY3QpCiAgICAgICAgIG1fdGltZXIuc3RvcCgpOwogICAgIH0KIH0KLSAgICAKKwog
dm9pZCBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpoaWdoUXVhbGl0eVJlcGFpbnRUaW1lckZpcmVk
KFRpbWVyPEltYWdlUXVhbGl0eUNvbnRyb2xsZXI+KikKIHsKICAgICBpZiAobV9hbmltYXRlZFJl
c2l6ZUlzQWN0aXZlKSB7CkBAIC0xMDgsNiArMTEwLDcgQEAgYm9vbCBJbWFnZVF1YWxpdHlDb250
cm9sbGVyOjpzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IFIKICAgICBJbnRTaXplIGltYWdlU2l6ZShpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgp
KTsKIAogICAgIC8vIExvb2sgb3Vyc2VsdmVzIHVwIGluIHRoZSBoYXNodGFibGUuCisgICAgSW1h
Z2VTaXplUGFpciBpbWFnZVNpemVQYWlyID0gbWFrZV9wYWlyKGltYWdlLCBzaXplKTsKICAgICBM
YXN0UGFpbnRTaXplTWFwOjppdGVyYXRvciBpID0gbV9sYXN0UGFpbnRTaXplTWFwLmZpbmQob2Jq
ZWN0KTsKIAogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgY3VycmVudFRyYW5zZm9ybSA9IGNv
bnRleHQtPmdldENUTSgpOwpAQCAtMTI4LDE2ICsxMzEsMTYgQEAgYm9vbCBJbWFnZVF1YWxpdHlD
b250cm9sbGVyOjpzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIFIKICAgICB9CiAgICAgLy8gSWYgYW4gYW5pbWF0ZWQgcmVzaXplIGlzIGFjdGl2ZSwgcGFp
bnQgaW4gbG93IHF1YWxpdHkgYW5kIGtpY2sgdGhlIHRpbWVyIGFoZWFkLgogICAgIGlmIChtX2Fu
aW1hdGVkUmVzaXplSXNBY3RpdmUpIHsKLSAgICAgICAgbV9sYXN0UGFpbnRTaXplTWFwLnNldChv
YmplY3QsIHNpemUpOworICAgICAgICBtX2xhc3RQYWludFNpemVNYXAuc2V0KG9iamVjdCwgaW1h
Z2VTaXplUGFpcik7CiAgICAgICAgIHJlc3RhcnRUaW1lcigpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9Ci0gICAgLy8gSWYgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSByZXNpemluZyB0aGlz
IGltYWdlLCBvciBpdHMgc2l6ZSBpcyB0aGUKLSAgICAvLyBzYW1lIGFzIHRoZSBsYXN0IHJlc2l6
ZSwgZHJhdyBhdCBoaWdoIHJlcywgYnV0IHJlY29yZCB0aGUgcGFpbnQKLSAgICAvLyBzaXplIGFu
ZCBzZXQgdGhlIHRpbWVyLgotICAgIGlmIChpID09IG1fbGFzdFBhaW50U2l6ZU1hcC5lbmQoKSB8
fCBzaXplID09IGktPnNlY29uZCkgeworICAgIC8vIElmIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUg
cmVzaXppbmcgdGhpcyBpbWFnZSwgb3IgdGhpcyBpcyBhIGRpZmZlcmVudCBpbWFnZSBvbiB0aGUg
c2FtZSBib3gKKyAgICAvLyAoYmFja2dyb3VuZC9mb3JlZ3JvdW5kIGltYWdlKSwgb3IgaXRzIHNp
emUgaXMgdGhlIHNhbWUgYXMgdGhlIGxhc3QgcmVzaXplLCBkcmF3IGF0IGhpZ2ggcmVzLAorICAg
IC8vIGJ1dCByZWNvcmQgdGhlIHBhaW50IHNpemUgYW5kIHNldCB0aGUgdGltZXIuCisgICAgaWYg
KGkgPT0gbV9sYXN0UGFpbnRTaXplTWFwLmVuZCgpIHx8IGltYWdlICE9IGktPnNlY29uZC5maXJz
dCB8fCBzaXplID09IGktPnNlY29uZC5zZWNvbmQpIHsKICAgICAgICAgcmVzdGFydFRpbWVyKCk7
Ci0gICAgICAgIG1fbGFzdFBhaW50U2l6ZU1hcC5zZXQob2JqZWN0LCBzaXplKTsKKyAgICAgICAg
bV9sYXN0UGFpbnRTaXplTWFwLnNldChvYmplY3QsIGltYWdlU2l6ZVBhaXIpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIElmIHRoZSB0aW1lciBpcyBubyBsb25nZXIgYWN0
aXZlLCBkcmF3IGF0IGhpZ2ggcXVhbGl0eSBhbmQgZG9uJ3QKQEAgLTE0OSw3ICsxNTIsNyBAQCBi
b29sIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgUgogICAgIC8vIFRoaXMgb2JqZWN0IGhhcyBiZWVuIHJlc2l6
ZWQgdG8gdHdvIGRpZmZlcmVudCBzaXplcyB3aGlsZSB0aGUgdGltZXIKICAgICAvLyBpcyBhY3Rp
dmUsIHNvIGRyYXcgYXQgbG93IHF1YWxpdHksIHNldCB0aGUgZmxhZyBmb3IgYW5pbWF0ZWQgcmVz
aXplcyBhbmQKICAgICAvLyB0aGUgb2JqZWN0IHRvIHRoZSBsaXN0IGZvciBoaWdoIHF1YWxpdHkg
cmVkcmF3LgotICAgIG1fbGFzdFBhaW50U2l6ZU1hcC5zZXQob2JqZWN0LCBzaXplKTsKKyAgICBt
X2xhc3RQYWludFNpemVNYXAuc2V0KG9iamVjdCwgaW1hZ2VTaXplUGFpcik7CiAgICAgbV9hbmlt
YXRlZFJlc2l6ZUlzQWN0aXZlID0gdHJ1ZTsKICAgICByZXN0YXJ0VGltZXIoKTsKICAgICByZXR1
cm4gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>71320</attachid>
            <date>2010-10-20 12:30:21 -0700</date>
            <delta_ts>2010-10-20 12:30:21 -0700</delta_ts>
            <desc>Testcase</desc>
            <filename>css-backgrounds-image-quality.html</filename>
            <type>text/html</type>
            <size>663</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+Cgo8aHRtbD4KPGhlYWQ+CiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBt
ZWRpYT0ic2NyZWVuIj4KICAgIC5ib3ggewogICAgICBoZWlnaHQ6IDQwMHB4OwogICAgICB3aWR0
aDogNDAwcHg7CiAgICAgIGJhY2tncm91bmQtaW1hZ2U6CiAgICAgICAgdXJsKGh0dHA6Ly9pbWFn
ZXMuYXBwbGUuY29tL2hvbWUvaW1hZ2VzL21hY2Jvb2thaXJfaGVybzIwMTAxMDIwLmpwZyksCiAg
ICAgICAgdXJsKGh0dHA6Ly9pbWFnZXMuYXBwbGUuY29tL2hvbWUvaW1hZ2VzL21hY2Jvb2thaXJf
aGVybzIwMTAxMDIwLmpwZyksCiAgICAgICAgdXJsKGh0dHA6Ly9pbWFnZXMuYXBwbGUuY29tL2hv
bWUvaW1hZ2VzL21hY2Jvb2thaXJfaGVybzIwMTAxMDIwLmpwZyk7Ci8qICAgICAgLXdlYmtpdC10
cmFuc2Zvcm06IHNjYWxlKDEuMSk7Ki8KICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTBweCAx
MHB4LCA1MHB4IDUwcHgsIDIwcHgsIDIwcHg7CiAgICAgIGJhY2tncm91bmQtc2l6ZTogMzAwcHgg
MzAwcHgsIDQwMHB4IDQwMHB4LCA0MTBweCA0MTBweDsKICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6
IG5vLXJlcGVhdDsKICAgIH0KICAgIAogIDwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+CgogIDxkaXYg
Y2xhc3M9ImJveCI+PC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73768</attachid>
            <date>2010-11-12 13:00:33 -0800</date>
            <delta_ts>2010-11-12 14:10:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42390-20101112160031.patch</filename>
            <type>text/plain</type>
            <size>5756</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTkzNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTAtMTEtMTIgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRml4IGZvciBtdWx0aXBsZSB1cmxzIGluIGEgYmFja2dyb3VuZC1pbWFnZSBjYXVzaW5n
IHJlcGVhdGVkIHJlcGFpbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDIzOTAKKworICAgICAgICBDaGFuZ2UgdGhlIGtleSBvZiBSZW5kZXJCb3hN
b2RlbE9iamVjdCdzIExhc3RQYWludFNpemVNYXAgdG8gaW5jbHVkZQorICAgICAgICB0aGUgSW1h
Z2UgYmVpbmcgZHJhd24sIHNvIHRoYXQgc2VwYXJhdGUgb2JqZWN0cyBjb250YWluaW5nIHRoZSBz
YW1lCisgICAgICAgIHBhaXIgb2YgdXJsJ3MgaW4gdGhlaXIgYmFja2dyb3VuZC1pbWFnZSBjYW4g
YmUgdW5pcXVlbHkgaWRlbnRpZmllZC4KKworICAgICAgICBDb3ZlcmVkIGJ5IGZhc3QvYmFja2dy
b3VuZHMvc2l6ZS9jb250YWluLWFuZC1jb3Zlci5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VRdWFsaXR5
Q29udHJvbGxlcjo6a2V5RGVzdHJveWVkKToKKyAgICAgICAgVGhlIG9sZCBvYmplY3REZXN0cm95
ZWQoKSBpcyByZW5hbWVkIHRvIGtleURlc3Ryb3llZCgpLgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VRdWFsaXR5Q29udHJvbGxlcjo6b2JqZWN0RGVzdHJveWVkKToKKyAgICAgICAgVGhlIG5ldyBv
YmplY3REZXN0cm95ZWQoKSBpdGVyYXRlcyBvdmVyIGFsbCBvdXRzdGFuZGluZyByZXNpemVzCisg
ICAgICAgIHRvIHJlbW92ZSBhbnkgcmVzaXplcyBwZXJ0YWluaW5nIHRvIHRoaXMgb2JqZWN0Lgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6aGlnaFF1YWxpdHlSZXBh
aW50VGltZXJGaXJlZCk6CisgICAgICAgIFJldHJpZXZlIHRoZSBSZW5kZXJCb3hNb2RlbE9iamVj
dCBmcm9tIHRoZSBwYWlyJ3MgImZpcnN0IiBtZW1iZXIuCisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZVF1YWxpdHlDb250cm9sbGVyOjpzaG91bGRQYWludEF0TG93UXVhbGl0eSk6CisgICAgICAgIENy
ZWF0ZSBhIGtleSBmcm9tIHRoZSB7b2JqZWN0LCBpbWFnZX0gcGFpciwgYW5kIHVzZSBpdCB0byBh
Y2Nlc3MKKyAgICAgICAgdGhlIHJlcGFpbnQgc2l6ZSBtYXAuCisKIDIwMTAtMTEtMTIgIEhlbGRl
ciBDb3JyZWlhICA8aGVsZGVyQHNlbmNoYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
cmVhcyBLbGluZy4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAJKHJldmlzaW9uIDcxOTM3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMiArNTAsMTQgQEAgYm9vbCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6c19sYXllcldhc1NlbAogc3RhdGljIGNvbnN0IGRvdWJsZSBjSW50
ZXJwb2xhdGlvbkN1dG9mZiA9IDgwMC4gKiA4MDAuOwogc3RhdGljIGNvbnN0IGRvdWJsZSBjTG93
UXVhbGl0eVRpbWVUaHJlc2hvbGQgPSAwLjUwMDsgLy8gNTAwIG1zCiAKLXR5cGVkZWYgSGFzaE1h
cDxSZW5kZXJCb3hNb2RlbE9iamVjdCosIEludFNpemU+IExhc3RQYWludFNpemVNYXA7Cit0eXBl
ZGVmIHBhaXI8UmVuZGVyQm94TW9kZWxPYmplY3QqLCBJbWFnZSo+IExhc3RQYWludFNpemVNYXBL
ZXk7Cit0eXBlZGVmIEhhc2hNYXA8TGFzdFBhaW50U2l6ZU1hcEtleSwgSW50U2l6ZT4gTGFzdFBh
aW50U2l6ZU1hcDsKIAogY2xhc3MgSW1hZ2VRdWFsaXR5Q29udHJvbGxlciA6IHB1YmxpYyBOb25j
b3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcigpOwogICAgIGJv
b2wgc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyQm94TW9k
ZWxPYmplY3QqLCBJbWFnZSosIGNvbnN0IEludFNpemUmKTsKKyAgICB2b2lkIGtleURlc3Ryb3ll
ZChMYXN0UGFpbnRTaXplTWFwS2V5IGtleSk7CiAgICAgdm9pZCBvYmplY3REZXN0cm95ZWQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqKTsKIAogcHJpdmF0ZToKQEAgLTczLDIxICs3NSwzMSBAQCBJbWFn
ZVF1YWxpdHlDb250cm9sbGVyOjpJbWFnZVF1YWxpdHlDb250CiB7CiB9CiAKLXZvaWQgSW1hZ2VR
dWFsaXR5Q29udHJvbGxlcjo6b2JqZWN0RGVzdHJveWVkKFJlbmRlckJveE1vZGVsT2JqZWN0KiBv
YmplY3QpCit2b2lkIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OmtleURlc3Ryb3llZChMYXN0UGFp
bnRTaXplTWFwS2V5IGtleSkKIHsKLSAgICBtX2xhc3RQYWludFNpemVNYXAucmVtb3ZlKG9iamVj
dCk7CisgICAgbV9sYXN0UGFpbnRTaXplTWFwLnJlbW92ZShrZXkpOwogICAgIGlmIChtX2xhc3RQ
YWludFNpemVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fYW5pbWF0ZWRSZXNpemVJc0FjdGl2
ZSA9IGZhbHNlOwogICAgICAgICBtX3RpbWVyLnN0b3AoKTsKICAgICB9CiB9CiAgICAgCit2b2lk
IEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6Om9iamVjdERlc3Ryb3llZChSZW5kZXJCb3hNb2RlbE9i
amVjdCogb2JqZWN0KQoreworICAgIHN0ZDo6dmVjdG9yPExhc3RQYWludFNpemVNYXBLZXk+IGtl
eXNUb0RpZTsKKyAgICBmb3IgKExhc3RQYWludFNpemVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9sYXN0
UGFpbnRTaXplTWFwLmJlZ2luKCk7IGl0ICE9IG1fbGFzdFBhaW50U2l6ZU1hcC5lbmQoKTsgKytp
dCkKKyAgICAgICAgaWYgKGl0LT5maXJzdC5maXJzdCA9PSBvYmplY3QpCisgICAgICAgICAgICBr
ZXlzVG9EaWUucHVzaF9iYWNrKGl0LT5maXJzdCk7CisgICAgZm9yIChzdGQ6OnZlY3RvcjxMYXN0
UGFpbnRTaXplTWFwS2V5Pjo6aXRlcmF0b3IgaXQgPSBrZXlzVG9EaWUuYmVnaW4oKTsgaXQgIT0g
a2V5c1RvRGllLmVuZCgpOyArK2l0KQorICAgICAgICBrZXlEZXN0cm95ZWQoKml0KTsKK30KKyAg
ICAKIHZvaWQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6aGlnaFF1YWxpdHlSZXBhaW50VGltZXJG
aXJlZChUaW1lcjxJbWFnZVF1YWxpdHlDb250cm9sbGVyPiopCiB7CiAgICAgaWYgKG1fYW5pbWF0
ZWRSZXNpemVJc0FjdGl2ZSkgewogICAgICAgICBtX2FuaW1hdGVkUmVzaXplSXNBY3RpdmUgPSBm
YWxzZTsKICAgICAgICAgZm9yIChMYXN0UGFpbnRTaXplTWFwOjppdGVyYXRvciBpdCA9IG1fbGFz
dFBhaW50U2l6ZU1hcC5iZWdpbigpOyBpdCAhPSBtX2xhc3RQYWludFNpemVNYXAuZW5kKCk7ICsr
aXQpCi0gICAgICAgICAgICBpdC0+Zmlyc3QtPnJlcGFpbnQoKTsKKyAgICAgICAgICAgIGl0LT5m
aXJzdC5maXJzdC0+cmVwYWludCgpOwogICAgIH0KIH0KIApAQCAtMTA4LDE0ICsxMjAsMTUgQEAg
Ym9vbCBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpzaG91bGRQYWludAogICAgIEludFNpemUgaW1h
Z2VTaXplKGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCkpOwogCiAgICAgLy8gTG9vayBv
dXJzZWx2ZXMgdXAgaW4gdGhlIGhhc2h0YWJsZS4KLSAgICBMYXN0UGFpbnRTaXplTWFwOjppdGVy
YXRvciBpID0gbV9sYXN0UGFpbnRTaXplTWFwLmZpbmQob2JqZWN0KTsKKyAgICBMYXN0UGFpbnRT
aXplTWFwS2V5IGtleShvYmplY3QsIGltYWdlKTsKKyAgICBMYXN0UGFpbnRTaXplTWFwOjppdGVy
YXRvciBpID0gbV9sYXN0UGFpbnRTaXplTWFwLmZpbmQoa2V5KTsKIAogICAgIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgY3VycmVudFRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENUTSgpOwogICAgIGJv
b2wgY29udGV4dElzU2NhbGVkID0gIWN1cnJlbnRUcmFuc2Zvcm0uaXNJZGVudGl0eU9yVHJhbnNs
YXRpb25PckZsaXBwZWQoKTsKICAgICBpZiAoIWNvbnRleHRJc1NjYWxlZCAmJiBpbWFnZVNpemUg
PT0gc2l6ZSkgewogICAgICAgICAvLyBUaGVyZSBpcyBubyBzY2FsZSBpbiBlZmZlY3QuIElmIHdl
IGhhZCBhIHNjYWxlIGluIGVmZmVjdCBiZWZvcmUsIHdlIGNhbiBqdXN0IHJlbW92ZSB0aGlzIG9i
amVjdCBmcm9tIHRoZSBsaXN0LgogICAgICAgICBpZiAoaSAhPSBtX2xhc3RQYWludFNpemVNYXAu
ZW5kKCkpCi0gICAgICAgICAgICBtX2xhc3RQYWludFNpemVNYXAucmVtb3ZlKG9iamVjdCk7Cisg
ICAgICAgICAgICBtX2xhc3RQYWludFNpemVNYXAucmVtb3ZlKGtleSk7CiAKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KQEAgLTEyOCw3ICsxNDEsNyBAQCBib29sIEltYWdlUXVhbGl0eUNv
bnRyb2xsZXI6OnNob3VsZFBhaW50CiAgICAgfQogICAgIC8vIElmIGFuIGFuaW1hdGVkIHJlc2l6
ZSBpcyBhY3RpdmUsIHBhaW50IGluIGxvdyBxdWFsaXR5IGFuZCBraWNrIHRoZSB0aW1lciBhaGVh
ZC4KICAgICBpZiAobV9hbmltYXRlZFJlc2l6ZUlzQWN0aXZlKSB7Ci0gICAgICAgIG1fbGFzdFBh
aW50U2l6ZU1hcC5zZXQob2JqZWN0LCBzaXplKTsKKyAgICAgICAgbV9sYXN0UGFpbnRTaXplTWFw
LnNldChrZXksIHNpemUpOwogICAgICAgICByZXN0YXJ0VGltZXIoKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMTM3LDE5ICsxNTAsMTkgQEAgYm9vbCBJbWFnZVF1YWxpdHlDb250
cm9sbGVyOjpzaG91bGRQYWludAogICAgIC8vIHNpemUgYW5kIHNldCB0aGUgdGltZXIuCiAgICAg
aWYgKGkgPT0gbV9sYXN0UGFpbnRTaXplTWFwLmVuZCgpIHx8IHNpemUgPT0gaS0+c2Vjb25kKSB7
CiAgICAgICAgIHJlc3RhcnRUaW1lcigpOwotICAgICAgICBtX2xhc3RQYWludFNpemVNYXAuc2V0
KG9iamVjdCwgc2l6ZSk7CisgICAgICAgIG1fbGFzdFBhaW50U2l6ZU1hcC5zZXQoa2V5LCBzaXpl
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBJZiB0aGUgdGltZXIgaXMg
bm8gbG9uZ2VyIGFjdGl2ZSwgZHJhdyBhdCBoaWdoIHF1YWxpdHkgYW5kIGRvbid0CiAgICAgLy8g
c2V0IHRoZSB0aW1lci4KICAgICBpZiAoIW1fdGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICBv
YmplY3REZXN0cm95ZWQob2JqZWN0KTsKKyAgICAgICAga2V5RGVzdHJveWVkKGtleSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gVGhpcyBvYmplY3QgaGFzIGJlZW4gcmVz
aXplZCB0byB0d28gZGlmZmVyZW50IHNpemVzIHdoaWxlIHRoZSB0aW1lcgogICAgIC8vIGlzIGFj
dGl2ZSwgc28gZHJhdyBhdCBsb3cgcXVhbGl0eSwgc2V0IHRoZSBmbGFnIGZvciBhbmltYXRlZCBy
ZXNpemVzIGFuZAogICAgIC8vIHRoZSBvYmplY3QgdG8gdGhlIGxpc3QgZm9yIGhpZ2ggcXVhbGl0
eSByZWRyYXcuCi0gICAgbV9sYXN0UGFpbnRTaXplTWFwLnNldChvYmplY3QsIHNpemUpOworICAg
IG1fbGFzdFBhaW50U2l6ZU1hcC5zZXQoa2V5LCBzaXplKTsKICAgICBtX2FuaW1hdGVkUmVzaXpl
SXNBY3RpdmUgPSB0cnVlOwogICAgIHJlc3RhcnRUaW1lcigpOwogICAgIHJldHVybiB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73776</attachid>
            <date>2010-11-12 14:10:54 -0800</date>
            <delta_ts>2010-11-17 13:52:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42390-20101112171052.patch</filename>
            <type>text/plain</type>
            <size>9996</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTk0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMTAtMTEtMTIgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRml4IGZvciBtdWx0aXBsZSB1cmxzIGluIGEgYmFja2dyb3VuZC1pbWFnZSBjYXVzaW5n
IHJlcGVhdGVkIHJlcGFpbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDIzOTAKKworICAgICAgICBDaGFuZ2UgdGhlIGtleSBvZiBSZW5kZXJCb3hN
b2RlbE9iamVjdCdzIExhc3RQYWludFNpemVNYXAgdG8gaW5jbHVkZQorICAgICAgICB0aGUgbGF5
ZXIgb2YgdGhlIGVsZW1lbnQgYmVpbmcgZHJhd24sIHNvIHRoYXQgdGhlIHNhbWUgVVJMIHVzZWQK
KyAgICAgICAgcmVwZWF0ZWQgaW4gdGhlIHNhbWUgYmFja2dyb3VuZC1pbWFnZSwgb3IgYW5vdGhl
ciBlbGVtZW50J3MKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZSwgY2FuIGJlIHVuaXF1ZWx5IGlk
ZW50aWZpZWQuICBUaGUgbGF5ZXIgaXMgYSB2b2lkCisgICAgICAgIHBvaW50ZXIsIHNpbmNlIGl0
IGlzIG9ubHkgdXNlZCBhcyBwYXJ0IG9mIHRoZSBrZXkgYW5kIHVzaW5nIGEKKyAgICAgICAgdm9p
ZCBwb2ludGVyIHdpbGwgZGlzY291cmFnZSBkZXJlZmVyZW5jaW5nIGl0LiAgVGhpcyBwb2ludGVy
IGlzIE5VTEwKKyAgICAgICAgd2hlbiBjYWxsZWQgZnJvbSBSZW5kZXJJbWFnZSAoPGltZz4gZWxl
bWVudHMpLgorCisgICAgICAgIENvdmVyZWQgYnkgZmFzdC9iYWNrZ3JvdW5kcy9zaXplL2NvbnRh
aW4tYW5kLWNvdmVyLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVF1YWxpdHlDb250cm9sbGVyOjprZXlE
ZXN0cm95ZWQpOgorICAgICAgICBUaGUgb2xkIG9iamVjdERlc3Ryb3llZCgpIGlzIHJlbmFtZWQg
dG8ga2V5RGVzdHJveWVkKCkuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVF1YWxpdHlDb250cm9s
bGVyOjpvYmplY3REZXN0cm95ZWQpOgorICAgICAgICBUaGUgbmV3IG9iamVjdERlc3Ryb3llZCgp
IGl0ZXJhdGVzIG92ZXIgYWxsIG91dHN0YW5kaW5nIHJlc2l6ZXMKKyAgICAgICAgdG8gcmVtb3Zl
IGFueSByZXNpemVzIHBlcnRhaW5pbmcgdG8gdGhpcyBvYmplY3QuCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpoaWdoUXVhbGl0eVJlcGFpbnRUaW1lckZpcmVkKToK
KyAgICAgICAgUmV0cmlldmUgdGhlIFJlbmRlckJveE1vZGVsT2JqZWN0IGZyb20gdGhlIHBhaXIn
cyAiZmlyc3QiIG1lbWJlci4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUXVhbGl0eUNvbnRyb2xs
ZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KToKKyAgICAgICAgQ3JlYXRlIGEga2V5IGZyb20g
dGhlIHtvYmplY3QsIGxheWVyfSBwYWlyLCBhbmQgdXNlIGl0IHRvIGFjY2VzcworICAgICAgICB0
aGUgcmVwYWludCBzaXplIG1hcC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpzaG91bGRQYWludEF0TG93UXVhbGl0eSk6CisgICAgICAgIFBsdW1iIHRoZSBsYXllciB0
aHJvdWdoIHRvIHRoZSBpbWFnZSBxdWFsaXR5IGNvbnRyb2xsZXIuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAg
IFBhc3MgdGhlIGJnTGF5ZXIgd2hlbiBjaGVja2luZyAKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgQWRkIHRoZSB2b2lkKiBsYXllciBwYXJhbWV0
ZXIgdG8gc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0
KToKKyAgICAgICAgUGFzcyAwIChudWxsKSBmb3IgdGhlIGxheWVyIHBhcmFtZXRlciBpbiB0aGlz
IGNhc2UuCisKIDIwMTAtMTEtMTIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCBYQ29kZSBwcm9qZWN0IGZpeC4KSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJldmlzaW9uIDcxOTM3KQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MCwxMiArNTAsMTQgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c19sYXllcldhc1Nl
bAogc3RhdGljIGNvbnN0IGRvdWJsZSBjSW50ZXJwb2xhdGlvbkN1dG9mZiA9IDgwMC4gKiA4MDAu
Owogc3RhdGljIGNvbnN0IGRvdWJsZSBjTG93UXVhbGl0eVRpbWVUaHJlc2hvbGQgPSAwLjUwMDsg
Ly8gNTAwIG1zCiAKLXR5cGVkZWYgSGFzaE1hcDxSZW5kZXJCb3hNb2RlbE9iamVjdCosIEludFNp
emU+IExhc3RQYWludFNpemVNYXA7Cit0eXBlZGVmIHBhaXI8UmVuZGVyQm94TW9kZWxPYmplY3Qq
LCBjb25zdCB2b2lkKj4gTGFzdFBhaW50U2l6ZU1hcEtleTsKK3R5cGVkZWYgSGFzaE1hcDxMYXN0
UGFpbnRTaXplTWFwS2V5LCBJbnRTaXplPiBMYXN0UGFpbnRTaXplTWFwOwogCiBjbGFzcyBJbWFn
ZVF1YWxpdHlDb250cm9sbGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKICAgICBJ
bWFnZVF1YWxpdHlDb250cm9sbGVyKCk7Ci0gICAgYm9vbCBzaG91bGRQYWludEF0TG93UXVhbGl0
eShHcmFwaGljc0NvbnRleHQqLCBSZW5kZXJCb3hNb2RlbE9iamVjdCosIEltYWdlKiwgY29uc3Qg
SW50U2l6ZSYpOworICAgIGJvb2wgc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250
ZXh0KiwgUmVuZGVyQm94TW9kZWxPYmplY3QqLCBJbWFnZSosIGNvbnN0IHZvaWQqIGxheWVyLCBj
b25zdCBJbnRTaXplJik7CisgICAgdm9pZCBrZXlEZXN0cm95ZWQoTGFzdFBhaW50U2l6ZU1hcEtl
eSBrZXkpOwogICAgIHZvaWQgb2JqZWN0RGVzdHJveWVkKFJlbmRlckJveE1vZGVsT2JqZWN0Kik7
CiAKIHByaXZhdGU6CkBAIC03MywyMSArNzUsMzEgQEAgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6
SW1hZ2VRdWFsaXR5Q29udAogewogfQogCi12b2lkIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6Om9i
amVjdERlc3Ryb3llZChSZW5kZXJCb3hNb2RlbE9iamVjdCogb2JqZWN0KQordm9pZCBJbWFnZVF1
YWxpdHlDb250cm9sbGVyOjprZXlEZXN0cm95ZWQoTGFzdFBhaW50U2l6ZU1hcEtleSBrZXkpCiB7
Ci0gICAgbV9sYXN0UGFpbnRTaXplTWFwLnJlbW92ZShvYmplY3QpOworICAgIG1fbGFzdFBhaW50
U2l6ZU1hcC5yZW1vdmUoa2V5KTsKICAgICBpZiAobV9sYXN0UGFpbnRTaXplTWFwLmlzRW1wdHko
KSkgewogICAgICAgICBtX2FuaW1hdGVkUmVzaXplSXNBY3RpdmUgPSBmYWxzZTsKICAgICAgICAg
bV90aW1lci5zdG9wKCk7CiAgICAgfQogfQogICAgIAordm9pZCBJbWFnZVF1YWxpdHlDb250cm9s
bGVyOjpvYmplY3REZXN0cm95ZWQoUmVuZGVyQm94TW9kZWxPYmplY3QqIG9iamVjdCkKK3sKKyAg
ICBWZWN0b3I8TGFzdFBhaW50U2l6ZU1hcEtleT4ga2V5c1RvRGllOworICAgIGZvciAoTGFzdFBh
aW50U2l6ZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2xhc3RQYWludFNpemVNYXAuYmVnaW4oKTsgaXQg
IT0gbV9sYXN0UGFpbnRTaXplTWFwLmVuZCgpOyArK2l0KQorICAgICAgICBpZiAoaXQtPmZpcnN0
LmZpcnN0ID09IG9iamVjdCkKKyAgICAgICAgICAgIGtleXNUb0RpZS5hcHBlbmQoaXQtPmZpcnN0
KTsKKyAgICBmb3IgKFZlY3RvcjxMYXN0UGFpbnRTaXplTWFwS2V5Pjo6aXRlcmF0b3IgaXQgPSBr
ZXlzVG9EaWUuYmVnaW4oKTsgaXQgIT0ga2V5c1RvRGllLmVuZCgpOyArK2l0KQorICAgICAgICBr
ZXlEZXN0cm95ZWQoKml0KTsKK30KKyAgICAKIHZvaWQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6
aGlnaFF1YWxpdHlSZXBhaW50VGltZXJGaXJlZChUaW1lcjxJbWFnZVF1YWxpdHlDb250cm9sbGVy
PiopCiB7CiAgICAgaWYgKG1fYW5pbWF0ZWRSZXNpemVJc0FjdGl2ZSkgewogICAgICAgICBtX2Fu
aW1hdGVkUmVzaXplSXNBY3RpdmUgPSBmYWxzZTsKICAgICAgICAgZm9yIChMYXN0UGFpbnRTaXpl
TWFwOjppdGVyYXRvciBpdCA9IG1fbGFzdFBhaW50U2l6ZU1hcC5iZWdpbigpOyBpdCAhPSBtX2xh
c3RQYWludFNpemVNYXAuZW5kKCk7ICsraXQpCi0gICAgICAgICAgICBpdC0+Zmlyc3QtPnJlcGFp
bnQoKTsKKyAgICAgICAgICAgIGl0LT5maXJzdC5maXJzdC0+cmVwYWludCgpOwogICAgIH0KIH0K
IApAQCAtOTYsNyArMTA4LDcgQEAgdm9pZCBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpyZXN0YXJ0
VGltZQogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KGNMb3dRdWFsaXR5VGltZVRocmVzaG9sZCk7
CiB9CiAKLWJvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRBdExvd1F1YWxp
dHkoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogb2JqZWN0
LCBJbWFnZSogaW1hZ2UsIGNvbnN0IEludFNpemUmIHNpemUpCitib29sIEltYWdlUXVhbGl0eUNv
bnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgUmVuZGVyQm94TW9kZWxPYmplY3QqIG9iamVjdCwgSW1hZ2UqIGltYWdlLCBjb25zdCB2b2lk
ICpsYXllciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICAvLyBJZiB0aGUgaW1hZ2UgaXMg
bm90IGEgYml0bWFwIGltYWdlLCB0aGVuIG5vbmUgb2YgdGhpcyBpcyByZWxldmFudCBhbmQgd2Ug
anVzdCBwYWludCBhdCBoaWdoCiAgICAgLy8gcXVhbGl0eS4KQEAgLTEwOCwxNCArMTIwLDE1IEBA
IGJvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnQKICAgICBJbnRTaXplIGlt
YWdlU2l6ZShpbWFnZS0+d2lkdGgoKSwgaW1hZ2UtPmhlaWdodCgpKTsKIAogICAgIC8vIExvb2sg
b3Vyc2VsdmVzIHVwIGluIHRoZSBoYXNodGFibGUuCi0gICAgTGFzdFBhaW50U2l6ZU1hcDo6aXRl
cmF0b3IgaSA9IG1fbGFzdFBhaW50U2l6ZU1hcC5maW5kKG9iamVjdCk7CisgICAgTGFzdFBhaW50
U2l6ZU1hcEtleSBrZXkob2JqZWN0LCBsYXllcik7CisgICAgTGFzdFBhaW50U2l6ZU1hcDo6aXRl
cmF0b3IgaSA9IG1fbGFzdFBhaW50U2l6ZU1hcC5maW5kKGtleSk7CiAKICAgICBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGN1cnJlbnRUcmFuc2Zvcm0gPSBjb250ZXh0LT5nZXRDVE0oKTsKICAgICBi
b29sIGNvbnRleHRJc1NjYWxlZCA9ICFjdXJyZW50VHJhbnNmb3JtLmlzSWRlbnRpdHlPclRyYW5z
bGF0aW9uT3JGbGlwcGVkKCk7CiAgICAgaWYgKCFjb250ZXh0SXNTY2FsZWQgJiYgaW1hZ2VTaXpl
ID09IHNpemUpIHsKICAgICAgICAgLy8gVGhlcmUgaXMgbm8gc2NhbGUgaW4gZWZmZWN0LiBJZiB3
ZSBoYWQgYSBzY2FsZSBpbiBlZmZlY3QgYmVmb3JlLCB3ZSBjYW4ganVzdCByZW1vdmUgdGhpcyBv
YmplY3QgZnJvbSB0aGUgbGlzdC4KICAgICAgICAgaWYgKGkgIT0gbV9sYXN0UGFpbnRTaXplTWFw
LmVuZCgpKQotICAgICAgICAgICAgbV9sYXN0UGFpbnRTaXplTWFwLnJlbW92ZShvYmplY3QpOwor
ICAgICAgICAgICAgbV9sYXN0UGFpbnRTaXplTWFwLnJlbW92ZShrZXkpOwogCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkBAIC0xMjgsNyArMTQxLDcgQEAgYm9vbCBJbWFnZVF1YWxpdHlD
b250cm9sbGVyOjpzaG91bGRQYWludAogICAgIH0KICAgICAvLyBJZiBhbiBhbmltYXRlZCByZXNp
emUgaXMgYWN0aXZlLCBwYWludCBpbiBsb3cgcXVhbGl0eSBhbmQga2ljayB0aGUgdGltZXIgYWhl
YWQuCiAgICAgaWYgKG1fYW5pbWF0ZWRSZXNpemVJc0FjdGl2ZSkgewotICAgICAgICBtX2xhc3RQ
YWludFNpemVNYXAuc2V0KG9iamVjdCwgc2l6ZSk7CisgICAgICAgIG1fbGFzdFBhaW50U2l6ZU1h
cC5zZXQoa2V5LCBzaXplKTsKICAgICAgICAgcmVzdGFydFRpbWVyKCk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KQEAgLTEzNywxOSArMTUwLDE5IEBAIGJvb2wgSW1hZ2VRdWFsaXR5Q29u
dHJvbGxlcjo6c2hvdWxkUGFpbnQKICAgICAvLyBzaXplIGFuZCBzZXQgdGhlIHRpbWVyLgogICAg
IGlmIChpID09IG1fbGFzdFBhaW50U2l6ZU1hcC5lbmQoKSB8fCBzaXplID09IGktPnNlY29uZCkg
ewogICAgICAgICByZXN0YXJ0VGltZXIoKTsKLSAgICAgICAgbV9sYXN0UGFpbnRTaXplTWFwLnNl
dChvYmplY3QsIHNpemUpOworICAgICAgICBtX2xhc3RQYWludFNpemVNYXAuc2V0KGtleSwgc2l6
ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gSWYgdGhlIHRpbWVyIGlz
IG5vIGxvbmdlciBhY3RpdmUsIGRyYXcgYXQgaGlnaCBxdWFsaXR5IGFuZCBkb24ndAogICAgIC8v
IHNldCB0aGUgdGltZXIuCiAgICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpIHsKLSAgICAgICAg
b2JqZWN0RGVzdHJveWVkKG9iamVjdCk7CisgICAgICAgIGtleURlc3Ryb3llZChrZXkpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFRoaXMgb2JqZWN0IGhhcyBiZWVuIHJl
c2l6ZWQgdG8gdHdvIGRpZmZlcmVudCBzaXplcyB3aGlsZSB0aGUgdGltZXIKICAgICAvLyBpcyBh
Y3RpdmUsIHNvIGRyYXcgYXQgbG93IHF1YWxpdHksIHNldCB0aGUgZmxhZyBmb3IgYW5pbWF0ZWQg
cmVzaXplcyBhbmQKICAgICAvLyB0aGUgb2JqZWN0IHRvIHRoZSBsaXN0IGZvciBoaWdoIHF1YWxp
dHkgcmVkcmF3LgotICAgIG1fbGFzdFBhaW50U2l6ZU1hcC5zZXQob2JqZWN0LCBzaXplKTsKKyAg
ICBtX2xhc3RQYWludFNpemVNYXAuc2V0KGtleSwgc2l6ZSk7CiAgICAgbV9hbmltYXRlZFJlc2l6
ZUlzQWN0aXZlID0gdHJ1ZTsKICAgICByZXN0YXJ0VGltZXIoKTsKICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTE4Myw5ICsxOTYsOSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzZXRTZWxlY3Rp
b25TCiAgICAgICAgIGNiLT5zZXRTZWxlY3Rpb25TdGF0ZShzKTsKIH0KIAotYm9vbCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBJbWFnZSogaW1hZ2UsIGNvbnN0IEludFNpemUmIHNpemUpCitib29sIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIEltYWdlKiBpbWFnZSwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IEludFNpemUmIHNp
emUpCiB7Ci0gICAgcmV0dXJuIGltYWdlUXVhbGl0eUNvbnRyb2xsZXIoKS0+c2hvdWxkUGFpbnRB
dExvd1F1YWxpdHkoY29udGV4dCwgdGhpcywgaW1hZ2UsIHNpemUpOworICAgIHJldHVybiBpbWFn
ZVF1YWxpdHlDb250cm9sbGVyKCktPnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIHRo
aXMsIGltYWdlLCBsYXllciwgc2l6ZSk7CiB9CiAKIFJlbmRlckJveE1vZGVsT2JqZWN0OjpSZW5k
ZXJCb3hNb2RlbE9iamVjdChOb2RlKiBub2RlKQpAQCAtNjg0LDcgKzY5Nyw3IEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWUKICAgICAgICAgICAgIENvbXBvc2l0ZU9w
ZXJhdG9yIGNvbXBvc2l0ZU9wID0gb3AgPT0gQ29tcG9zaXRlU291cmNlT3ZlciA/IGJnTGF5ZXIt
PmNvbXBvc2l0ZSgpIDogb3A7CiAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIGNsaWVudEZvckJh
Y2tncm91bmRJbWFnZSA9IGJhY2tncm91bmRPYmplY3QgPyBiYWNrZ3JvdW5kT2JqZWN0IDogdGhp
czsKICAgICAgICAgICAgIEltYWdlKiBpbWFnZSA9IGJnLT5pbWFnZShjbGllbnRGb3JCYWNrZ3Jv
dW5kSW1hZ2UsIHRpbGVTaXplKTsKLSAgICAgICAgICAgIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxp
bmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShjb250ZXh0LCBpbWFnZSwgdGlsZVNpemUpOwor
ICAgICAgICAgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dR
dWFsaXR5KGNvbnRleHQsIGltYWdlLCBiZ0xheWVyLCB0aWxlU2l6ZSk7CiAgICAgICAgICAgICBj
b250ZXh0LT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBkZXN0
UmVjdCwgcGhhc2UsIHRpbGVTaXplLCBjb21wb3NpdGVPcCwgdXNlTG93UXVhbGl0eVNjYWxpbmcp
OwogICAgICAgICB9CiAgICAgfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5oCShyZXZpc2lvbiA3MTkzNykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6
CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShj
b25zdCBGaWxsTGF5ZXIqLCBpbnQgdHgsIGludCB0eSwgaW50IHcsIGludCBoLCBJbnRSZWN0JiBk
ZXN0UmVjdCwgSW50UG9pbnQmIHBoYXNlLCBJbnRTaXplJiB0aWxlU2l6ZSk7CiAKLSAgICBib29s
IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCosIEltYWdlKiwgY29uc3Qg
SW50U2l6ZSYpOworICAgIGJvb2wgc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250
ZXh0KiwgSW1hZ2UqLCBjb25zdCB2b2lkKiwgY29uc3QgSW50U2l6ZSYpOwogCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgYm9vbCBpc0JveE1vZGVsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkocmV2aXNpb24gNzE5MzcpCisrKyBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1MSw3
ICszNTEsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludEludG9SZWN0KEdyYXBoaWNzCiAKICAg
ICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsdCA9IChub2RlKCkgJiYgbm9kZSgpLT5oYXNUYWdO
YW1lKGltZ1RhZykpID8gc3RhdGljX2Nhc3Q8SFRNTEltYWdlRWxlbWVudCo+KG5vZGUoKSkgOiAw
OwogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gaW1hZ2VFbHQgPyBp
bWFnZUVsdC0+Y29tcG9zaXRlT3BlcmF0b3IoKSA6IENvbXBvc2l0ZVNvdXJjZU92ZXI7Ci0gICAg
Ym9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRl
eHQsIG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKSwgcmVjdC5zaXplKCkpOworICAgIGJvb2wgdXNl
TG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShjb250ZXh0LCBtX2lt
YWdlUmVzb3VyY2UtPmltYWdlKCksIDAsIHJlY3Quc2l6ZSgpKTsKICAgICBjb250ZXh0LT5kcmF3
SW1hZ2UobV9pbWFnZVJlc291cmNlLT5pbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkp
LCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIHJlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCB1c2VMb3dR
dWFsaXR5U2NhbGluZyk7CiB9CiAK
</data>
<flag name="review"
          id="64273"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>