<?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>52645</bug_id>
          
          <creation_ts>2011-01-18 11:45:53 -0800</creation_ts>
          <short_desc>REGRESSION: Multi-second hangs in ImageQualityController::objectDestroyed()</short_desc>
          <delta_ts>2011-01-27 16:58:25 -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>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Stephen White">senorblanco</assigned_to>
          <cc>abarth</cc>
    
    <cc>adele</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>335968</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-18 11:45:53 -0800</bug_when>
    <thetext>We&apos;re seeing some performance issues in ImageQualityController::objectDestroyed(), which appears to be O(N^2) at least. This is on a version of the IBench test suite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335969</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-18 11:46:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/8869495&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335972</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-18 11:54:40 -0800</bug_when>
    <thetext>Multiple-second pauses! This is quite serious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336003</commentid>
    <comment_count>3</comment_count>
      <attachid>79309</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-18 12:29:21 -0800</bug_when>
    <thetext>Created attachment 79309
Bottom-up shark trace</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336015</commentid>
    <comment_count>4</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-01-18 12:49:45 -0800</bug_when>
    <thetext>I don&apos;t think it&apos;s worse than O(n), it&apos;s just that it&apos;s getting called for every single RenderBoxModelObject.  

The linear search through the hash map for all the objects in pairs is kind of gross.  One alternative would be to make it a HashMap of HashMaps, with the RenderBoxModelObject as the outer key, and the void* pointer as the inner key.  Then we could get rid of the linear search, since we could find all the relevant data for any RBMO in one lookup, and get rid of the second loop since we can just release all the data at once.  There was a reason I didn&apos;t do this the first time around, but I can&apos;t remember what it is now.

Another alternative would be to put a flag bit on each RenderBoxModelObject when it gets put in the ImageQualityController, and only call objectDestroyed() if the flag is set.  In the sample trace, it&apos;s getting called for a TableCell, which is never going to end up in the ImageQualityController.  I can&apos;t see a free bit anywhere on RBMO, though.  :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336135</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-01-18 15:12:09 -0800</bug_when>
    <thetext>(In reply to comment #4)
Stephen, an O(n) algorithm that runs once for every object is O(n) * O(n) = O(n^2).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336138</commentid>
    <comment_count>6</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-01-18 15:14:25 -0800</bug_when>
    <thetext>Yes, I understand.  I thought he was saying the function itself was O(n^2).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336258</commentid>
    <comment_count>7</comment_count>
      <attachid>79372</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-01-18 17:55:55 -0800</bug_when>
    <thetext>Created attachment 79372
Testing patch

This is a rough draft attempt at a fix (not heavily tested) using the HashMap of HashMaps idea.  Simon, could you try patch this against your benchmark?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336261</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-18 18:06:08 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; The linear search through the hash map for all the objects in pairs is kind of gross.

Right. It’s unacceptable. We should have done review- on the original patch because of this.

&gt; One alternative would be to make it a HashMap of HashMaps, with the RenderBoxModelObject as the outer key, and the void* pointer as the inner key.

We will need to do this.

&gt; Another alternative would be to put a flag bit on each RenderBoxModelObject when it gets put in the ImageQualityController, and only call objectDestroyed() if the flag is set.

I suspect we will also need to add this bit.

We can’t afford an additional hash table lookup for every single destruction of a RenderBoxModelObject. This pattern has come up in the past and we have  used the combination of flag bit and hash table for it there. See, for example, the &quot;rare data&quot; map in Node.cpp.

There actually is a bit available in RenderObject.h. It claims there are 32 used bits and there are no free bits available, but there are 31 bits used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336272</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-18 18:22:34 -0800</bug_when>
    <thetext>Seems a shame to waste a RenderObject bit on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336275</commentid>
    <comment_count>10</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-01-18 18:24:42 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #4)
&gt; &gt; The linear search through the hash map for all the objects in pairs is kind of gross.
&gt; 
&gt; Right. It’s unacceptable. We should have done review- on the original patch because of this.
&gt; 
&gt; &gt; One alternative would be to make it a HashMap of HashMaps, with the RenderBoxModelObject as the outer key, and the void* pointer as the inner key.
&gt; 
&gt; We will need to do this.
&gt; 
&gt; &gt; Another alternative would be to put a flag bit on each RenderBoxModelObject when it gets put in the ImageQualityController, and only call objectDestroyed() if the flag is set.
&gt; 
&gt; I suspect we will also need to add this bit.
&gt; 
&gt; We can’t afford an additional hash table lookup for every single destruction of a RenderBoxModelObject.

Note that before my patches, back in r61340, there was still a lookup for every object, as long as any image draws were outstanding.  However, we used to delete the ImageQualityController (then called RenderBoxModelScaleData) when all image draws had expired.  If that was acceptable then, we could go back to doing that.  It would save having to use a bit, although it would still do the lookup when image draws are outstanding (as it did before).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336324</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-18 20:45:20 -0800</bug_when>
    <thetext>I verified that there is 1 bit spare on RenderObject, and that RenderBoxModelObject is 64 bytes and has no spare padding. So maybe you&apos;ll have to use that bit on RO.

I question whether we need the m_isDragging bit in RO. Seems like this could be stored externally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336575</commentid>
    <comment_count>12</comment_count>
      <attachid>79434</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-01-19 09:29:26 -0800</bug_when>
    <thetext>Created attachment 79434
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336578</commentid>
    <comment_count>13</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-01-19 09:32:26 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Created an attachment (id=79434) [details]
&gt; Patch

This one is a proper patch, with the ImageQualityController deletion as above, a ChangeLog and a modicum of testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336643</commentid>
    <comment_count>14</comment_count>
      <attachid>79451</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-01-19 10:56:16 -0800</bug_when>
    <thetext>Created attachment 79451
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336650</commentid>
    <comment_count>15</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-01-19 11:03:36 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Created an attachment (id=79451) [details]
&gt; Patch

Further testing showed that the previous patch regressed the fix introduced in r72282.  This version passes that test, although it relies on IntSize(0, 0) being a good &quot;out of band&quot; value.  I think this is ok -- visually, it doesn&apos;t much matter what we do on a (0, 0) resize.

(Sigh.  Now I remember why I didn&apos;t like using nested HashMaps.  AFAICT, if the outer hash map lookup fails, it&apos;s impossible to initialize an iterator to the inner hash map to represent &quot;not found&quot;, since there&apos;s no inner hash map to get the end() of.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336693</commentid>
    <comment_count>16</comment_count>
      <attachid>79451</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-19 12:18:29 -0800</bug_when>
    <thetext>Comment on attachment 79451
Patch

Do we have any feel for how often RenderObjects are destroyed while repaints are pending?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336705</commentid>
    <comment_count>17</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-01-19 12:29:51 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 79451 [details])
&gt; Do we have any feel for how often RenderObjects are destroyed while repaints are pending?

In short:  feel, yes, data, no.

I would imagine it would happen a lot for something like iBench, where I&apos;m guessing it tears down the page immediately after drawing it.  In real life browsing, not so much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336796</commentid>
    <comment_count>18</comment_count>
      <attachid>79451</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-19 14:22:24 -0800</bug_when>
    <thetext>Comment on attachment 79451
Patch

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

How can we measure the performance impact of deleting and recreating the controller?

I’ll say review+ even though I have some uncertainties.

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:147
&gt; +    IntSize oldSize = innerMap ? innerMap-&gt;get(layer) : IntSize();

How about using a separate bool haveOldSize or isFirstResize instead of treating 0, 0 as a magic value?

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:170
&gt; -    // If this is the first time resizing this image, or its size is the
&gt; +    // If this is the first time resizing  this image, or its size is the

Why the change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337524</commentid>
    <comment_count>19</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-01-20 12:45:58 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 79451 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79451&amp;action=review
&gt; 
&gt; How can we measure the performance impact of deleting and recreating the controller?

Good question.  I&apos;m hoping Simon&apos;s iBench runs will tell us.

&gt; 
&gt; I’ll say review+ even though I have some uncertainties.
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:147
&gt; &gt; +    IntSize oldSize = innerMap ? innerMap-&gt;get(layer) : IntSize();
&gt; 
&gt; How about using a separate bool haveOldSize or isFirstResize instead of treating 0, 0 as a magic value?

Good idea; done.

&gt; &gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:170
&gt; &gt; -    // If this is the first time resizing this image, or its size is the
&gt; &gt; +    // If this is the first time resizing  this image, or its size is the
&gt; 
&gt; Why the change?

Mistake; fixed.

Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337530</commentid>
    <comment_count>20</comment_count>
      <attachid>79639</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-01-20 12:52:17 -0800</bug_when>
    <thetext>Created attachment 79639
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337736</commentid>
    <comment_count>21</comment_count>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2011-01-20 17:05:31 -0800</bug_when>
    <thetext>I tested the patch on iBench today. Sorry, it took me so long, I was having network issues yesterday that didn&apos;t allow for good numbers.

The pauses no longer occur and ImageQualityController::objectDestroyed now only counts for .2% of the samples on iBench.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337771</commentid>
    <comment_count>22</comment_count>
      <attachid>79639</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-20 18:07:19 -0800</bug_when>
    <thetext>Comment on attachment 79639
Patch

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

It’s not good that objectDestroyed shows up on the profile for the iBench HTML test at all, but this is much better than before.

&gt; Source/WebCore/ChangeLog:16
&gt; +        Fix performance regression in ImageQualityController::objectDestroyed().
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=52645
&gt; +
&gt; +        * rendering/RenderBoxModelObject.cpp:
&gt; +        (WebCore::ImageQualityController::isEmpty):
&gt; +        (WebCore::ImageQualityController::removeLayer):
&gt; +        (WebCore::ImageQualityController::set):
&gt; +        (WebCore::ImageQualityController::objectDestroyed):
&gt; +        (WebCore::ImageQualityController::highQualityRepaintTimerFired):
&gt; +        (WebCore::ImageQualityController::shouldPaintAtLowQuality):
&gt; +        (WebCore::imageQualityController):
&gt; +        (WebCore::RenderBoxModelObject::~RenderBoxModelObject):

This is not a great change log entry. It doesn’t explain why this is a good change or even say what the change is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340933</commentid>
    <comment_count>23</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2011-01-27 10:43:18 -0800</bug_when>
    <thetext>What&apos;s the status here?  Is it going to land soon?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340936</commentid>
    <comment_count>24</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-01-27 10:50:33 -0800</bug_when>
    <thetext>Sorry for the delay.  I&apos;ve been travelling and am not in my usual office.  I&apos;m just going to clean up the ChangeLog a bit as Darin suggested, and hopefully will land it today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340941</commentid>
    <comment_count>25</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2011-01-27 10:57:19 -0800</bug_when>
    <thetext>great, thanks!

(In reply to comment #24)
&gt; Sorry for the delay.  I&apos;ve been travelling and am not in my usual office.  I&apos;m just going to clean up the ChangeLog a bit as Darin suggested, and hopefully will land it today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340981</commentid>
    <comment_count>26</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-01-27 11:58:44 -0800</bug_when>
    <thetext>Committed r76825: &lt;http://trac.webkit.org/changeset/76825&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340995</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-27 12:36:01 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/76825 might have broken GTK Linux 64-bit Debug
The following tests are not passing:
accessibility/crashing-a-tag-in-map.html
css1/box_properties/clear.html
css1/box_properties/float.html
css1/box_properties/height.html
css1/box_properties/width.html
css1/formatting_model/height_of_lines.html
css1/formatting_model/replaced_elements.html
css1/text_properties/vertical_align.html
css2.1/t0803-c5501-imrgn-t-00-b-ag.html
css2.1/t0803-c5502-mrgn-r-00-c-ag.html
css2.1/t0803-c5503-imrgn-b-00-b-a.html
css2.1/t0803-c5504-mrgn-l-00-c-ag.html
css2.1/t0803-c5505-mrgn-00-b-ag.html
css2.1/t0803-c5505-mrgn-03-c-ag.html
css2.1/t0804-c5509-padn-l-03-f-g.html
css2.1/t0804-c5510-padn-00-b-ag.html
css2.1/t0905-c414-flt-01-d-g.html
css2.1/t0905-c414-flt-wrap-01-d-g.html
css2.1/t0905-c5525-fltclr-00-c-ag.html
css2.1/t0905-c5525-fltmrgn-00-c-ag.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341026</commentid>
    <comment_count>28</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-27 13:52:25 -0800</bug_when>
    <thetext>This patch caused a whole bunch of tests to crash on chromium port as well:
css1/box_properties/clear.html
css1/box_properties/float.html
css1/box_properties/height.html
css1/box_properties/width.html
css1/formatting_model/height_of_lines.html
css1/formatting_model/replaced_elements.html
css1/text_properties/vertical_align.html
css2.1/t0803-c5501-imrgn-t-00-b-ag.html
css2.1/t0803-c5502-mrgn-r-00-c-ag.html
css2.1/t0803-c5503-imrgn-b-00-b-a.html
css2.1/t0803-c5504-mrgn-l-00-c-ag.html
css2.1/t0803-c5505-mrgn-00-b-ag.html
css2.1/t0803-c5505-mrgn-03-c-ag.html
css2.1/t0804-c5509-padn-l-03-f-g.html
css2.1/t0804-c5510-padn-00-b-ag.html
css2.1/t0905-c414-flt-01-d-g.html
css2.1/t0905-c414-flt-wrap-01-d-g.html
css2.1/t0905-c5525-fltclr-00-c-ag.html
css2.1/t0905-c5525-fltmrgn-00-c-ag.html
css2.1/t0905-c5526-fltclr-00-c-ag.html
css2.1/t090501-c414-flt-02-d-g.html
css2.1/t090501-c414-flt-03-b-g.html
css2.1/t090501-c414-flt-ln-01-d-g.html
css2.1/t090501-c5525-flt-l-00-b-g.html
css2.1/t090501-c5525-flt-r-00-b-g.html
css2.1/t1002-c5523-width-00-b-g.html
css2.1/t1002-c5523-width-01-b-g.html
css2.1/t100304-c43-rpl-bbx-00-d-g.html
css2.1/t100304-c43-rpl-bbx-01-d-g.html
css2.1/t1004-c43-rpl-bbx-00-d-ag.html
css2.1/t1004-c43-rpl-ibx-00-d-ag.html
css2.1/t1004-c5524-width-00-b-g.html
css2.1/t1005-c5524-width-00-b-g.html
css2.1/t1005-c5524-width-01-b-g.html
css2.1/t1008-c44-ln-box-00-d-ag.html
css2.1/t1008-c44-ln-box-01-d-ag.html
css2.1/t1008-c44-ln-box-02-d-ag.html
css2.1/t1008-c44-ln-box-03-d-ag.html
css2.1/t100801-c544-valgn-00-a-ag.html
css2.1/t100801-c544-valgn-01-d-ag.html
css2.1/t100801-c544-valgn-02-d-agi.html
css2.1/t100801-c544-valgn-03-d-agi.html
css2.1/t100801-c544-valgn-04-d-agi.html
fast/block/positioning/replaced-inside-fixed-top-bottom.html
fast/blockflow/block-level-images.html
fast/canvas/canvas-as-image-incremental-repaint.html
fast/canvas/canvas-as-image.html
fast/css/content-dynamic.html
fast/dom/Window/btoa-pnglet.html
fast/events/pointer-events-2.html
fast/forms/input-appearance-height.html
fast/forms/input-type-change.html

I&apos;m rolling out the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341028</commentid>
    <comment_count>29</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-27 13:54:03 -0800</bug_when>
    <thetext>Any information on what the crash was? The long list of tests has some value, but the backtrace of the crash would be even more helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341030</commentid>
    <comment_count>30</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-27 13:56:46 -0800</bug_when>
    <thetext>You can see GTK assertion failures at http://build.webkit.org/results/GTK%20Linux%2032-bit%20Debug/r76827%20(13457)/results.html

css1/box_properties/clear.html got this:

ASSERTION FAILED: !HashTranslator::equal(KeyTraits::emptyValue(), key)
(../../JavaScriptCore/wtf/HashTable.h:465 void WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::checkKey(const T&amp;) [with T = const void*, HashTranslator = WTF::HashMapTranslator&lt;std::pair&lt;const void*, WebCore::IntSize&gt;, WTF::PairHashTraits&lt;WTF::HashTraits&lt;const void*&gt;, WTF::HashTraits&lt;WebCore::IntSize&gt; &gt;, WTF::PtrHash&lt;const void*&gt; &gt;, Key = const void*, Value = std::pair&lt;const void*, WebCore::IntSize&gt;, Extractor = WTF::PairFirstExtractor&lt;std::pair&lt;const void*, WebCore::IntSize&gt; &gt;, HashFunctions = WTF::PtrHash&lt;const void*&gt;, Traits = WTF::PairHashTraits&lt;WTF::HashTraits&lt;const void*&gt;, WTF::HashTraits&lt;WebCore::IntSize&gt; &gt;, KeyTraits = WTF::HashTraits&lt;const void*&gt;])
[50151:267:856657279602876:ERROR:process_util_posix.cc(106)] Received signal 11
	0   DumpRenderTree                      0x00003bba _mh_execute_header + 11194
	1   DumpRenderTree                      0x005acf73 start + 5831647
	2   libSystem.B.dylib                   0x95f5c2bb _sigtramp + 43
	3   ???                                 0xffffffff 0x0 + 4294967295
	4   DumpRenderTree                      0x013b4fb9 float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 393667
	5   DumpRenderTree                      0x013b5311 float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 394523
	6   DumpRenderTree                      0x013b5360 float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 394602
	7   DumpRenderTree                      0x013aec60 float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 368234
	8   DumpRenderTree                      0x013af532 float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 370492
	9   DumpRenderTree                      0x013af6ba float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 370884
	10  DumpRenderTree                      0x013cc176 float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 488320
	11  DumpRenderTree                      0x013ccd20 float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 491306
	12  DumpRenderTree                      0x0142509d float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 852647
	13  DumpRenderTree                      0x013cc4ac float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 489142
	14  DumpRenderTree                      0x0136333c float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 58694
	15  DumpRenderTree                      0x01369ea3 float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 86189
	16  DumpRenderTree                      0x0136a21d float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 87079
	17  DumpRenderTree                      0x014382fb float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 931077
	18  DumpRenderTree                      0x0143ccc8 float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 949970
	19  DumpRenderTree                      0x0143c768 float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 948594
	20  DumpRenderTree                      0x0143cd96 float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 950176
	21  DumpRenderTree                      0x01430c46 float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 900688
	22  DumpRenderTree                      0x01430fc9 float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 901587
	23  DumpRenderTree                      0x01369291 float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 83099
	24  DumpRenderTree                      0x01369499 float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 83619
	25  DumpRenderTree                      0x01369daf float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 85945
	26  DumpRenderTree                      0x0136a21d float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 87079
	27  DumpRenderTree                      0x01369291 float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 83099
	28  DumpRenderTree                      0x01369499 float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 83619
	29  DumpRenderTree                      0x01369daf float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 85945
	30  DumpRenderTree                      0x0136a21d float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 87079
	31  DumpRenderTree                      0x013df821 float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 567851
	32  DumpRenderTree                      0x013e03c5 float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 570831
	33  DumpRenderTree                      0x013dfa3a float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 568388
	34  DumpRenderTree                      0x013e04b3 float WebCore::narrowPrecisionToFloat&lt;double&gt;(double) + 571069
	35  DumpRenderTree                      0x012dc39b float WebCore::narrowPrecisionToCGFloat&lt;double&gt;(double) + 5695527
	36  DumpRenderTree                      0x00e85262 float WebCore::narrowPrecisionToCGFloat&lt;double&gt;(double) + 1144558
	37  DumpRenderTree                      0x000aacbd start + 579881
	38  DumpRenderTree                      0x000aad91 start + 580093
	39  DumpRenderTree                      0x000d95a6 start + 770578
	40  DumpRenderTree                      0x00057bbc start + 239656
	41  DumpRenderTree                      0x00057e3a start + 240294
	42  DumpRenderTree                      0x0004f735 start + 205729
	43  DumpRenderTree                      0x0004f916 start + 206210
	44  DumpRenderTree                      0x00039f70 start + 117724
	45  DumpRenderTree                      0x00039fdb start + 117831
	46  DumpRenderTree                      0x0005908e start + 244986
	47  DumpRenderTree                      0x0005912a start + 245142
	48  DumpRenderTree                      0x0007ba2f start + 386715
	49  DumpRenderTree                      0x0124e758 float WebCore::narrowPrecisionToCGFloat&lt;double&gt;(double) + 5114852
	50  DumpRenderTree                      0x0124e8c8 float WebCore::narrowPrecisionToCGFloat&lt;double&gt;(double) + 5115220
	51  DumpRenderTree                      0x0124e979 float WebCore::narrowPrecisionToCGFloat&lt;double&gt;(double) + 5115397
	52  DumpRenderTree                      0x01233951 float WebCore::narrowPrecisionToCGFloat&lt;double&gt;(double) + 5004765
	53  DumpRenderTree                      0x01273f00 float WebCore::narrowPrecisionToCGFloat&lt;double&gt;(double) + 5268364
	54  DumpRenderTree                      0x0126a2ed float WebCore::narrowPrecisionToCGFloat&lt;double&gt;(double) + 5228409
	55  DumpRenderTree                      0x0009051d start + 471433
	56  DumpRenderTree                      0x01a04ee7 webkit::npapi::CarbonPluginWindowTracker::CreateDummyWindowForDelegate(void*) + 398985
	57  DumpRenderTree                      0x01a222b1 webkit::npapi::CarbonPluginWindowTracker::CreateDummyWindowForDelegate(void*) + 518739
	58  DumpRenderTree                      0x01a2272b webkit::npapi::CarbonPluginWindowTracker::CreateDummyWindowForDelegate(void*) + 519885
	59  DumpRenderTree                      0x01a22766 webkit::npapi::CarbonPluginWindowTracker::CreateDummyWindowForDelegate(void*) + 519944
	60  DumpRenderTree                      0x00584dd7 start + 5667395
	61  DumpRenderTree                      0x00584f61 start + 5667789
ax: bbadbeef, bx: 13b26f6, cx: 0, dx: 0
di: bfffb848, si: bfffb848, bp: bfffb6b8, sp: bfffb680, ss: 1f, flags: 10286
ip: 13b2744, cs: 17, ds: 1f, es: 1f, fs: 0, gs: 37</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341033</commentid>
    <comment_count>31</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-27 14:00:55 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/76826 is also on the blame list but given the tests in which crash occurred, that change is unlikely the cause.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341037</commentid>
    <comment_count>32</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-01-27 14:02:33 -0800</bug_when>
    <thetext>This change also caused crashes on Leopard:
http://build.webkit.org/results/Leopard%20Intel%20Debug%20(Tests)/r76826%20(26653)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341040</commentid>
    <comment_count>33</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-27 14:09:13 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; ASSERTION FAILED: !HashTranslator::equal(KeyTraits::emptyValue(), key)
&gt; (../../JavaScriptCore/wtf/HashTable.h:465 void WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::checkKey(const T&amp;) [with T = const void*, HashTranslator = WTF::HashMapTranslator&lt;std::pair&lt;const void*, WebCore::IntSize&gt;, WTF::PairHashTraits&lt;WTF::HashTraits&lt;const void*&gt;, WTF::HashTraits&lt;WebCore::IntSize&gt; &gt;, WTF::PtrHash&lt;const void*&gt; &gt;, Key = const void*, Value = std::pair&lt;const void*, WebCore::IntSize&gt;, Extractor = WTF::PairFirstExtractor&lt;std::pair&lt;const void*, WebCore::IntSize&gt; &gt;, HashFunctions = WTF::PtrHash&lt;const void*&gt;, Traits = WTF::PairHashTraits&lt;WTF::HashTraits&lt;const void*&gt;, WTF::HashTraits&lt;WebCore::IntSize&gt; &gt;, KeyTraits = WTF::HashTraits&lt;const void*&gt;])

This means that someone is calling a function on a hash table with 0 for the key. Either a find, contains, get, or even set or add. If the rest of the backtrace was accurate, we could see exactly which call, but that should be enough to go on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341052</commentid>
    <comment_count>34</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-01-27 14:25:45 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; (In reply to comment #30)
&gt; &gt; ASSERTION FAILED: !HashTranslator::equal(KeyTraits::emptyValue(), key)
&gt; &gt; (../../JavaScriptCore/wtf/HashTable.h:465 void WTF::HashTable&lt;Key, Value, Extractor, HashFunctions, Traits, KeyTraits&gt;::checkKey(const T&amp;) [with T = const void*, HashTranslator = WTF::HashMapTranslator&lt;std::pair&lt;const void*, WebCore::IntSize&gt;, WTF::PairHashTraits&lt;WTF::HashTraits&lt;const void*&gt;, WTF::HashTraits&lt;WebCore::IntSize&gt; &gt;, WTF::PtrHash&lt;const void*&gt; &gt;, Key = const void*, Value = std::pair&lt;const void*, WebCore::IntSize&gt;, Extractor = WTF::PairFirstExtractor&lt;std::pair&lt;const void*, WebCore::IntSize&gt; &gt;, HashFunctions = WTF::PtrHash&lt;const void*&gt;, Traits = WTF::PairHashTraits&lt;WTF::HashTraits&lt;const void*&gt;, WTF::HashTraits&lt;WebCore::IntSize&gt; &gt;, KeyTraits = WTF::HashTraits&lt;const void*&gt;])
&gt; 
&gt; This means that someone is calling a function on a hash table with 0 for the key. Either a find, contains, get, or even set or add. If the rest of the backtrace was accurate, we could see exactly which call, but that should be enough to go on.

I didn&apos;t realize that 0 was invalid as a hash key.  That&apos;s going to be a problem.  Basically, the layer in the innerMap is only valid in the background case (only layers have backgrounds).  For the non-background image case, the layer is always 0.  That pointer is never dereferenced; it&apos;s just &quot;data&quot;, so I suppose I could use 0x1, or even pass the RenderBoxModelObject address again, as long as it&apos;s the same value at lookup time.

Sorry for the mess (my bad for only building Release and not Debug).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341055</commentid>
    <comment_count>35</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-01-27 14:28:12 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; (only layers have backgrounds)

&quot;Wait a minute. Strike that. Reverse it.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341083</commentid>
    <comment_count>36</comment_count>
      <attachid>80369</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-01-27 15:31:37 -0800</bug_when>
    <thetext>Created attachment 80369
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341100</commentid>
    <comment_count>37</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-01-27 16:13:22 -0800</bug_when>
    <thetext>(In reply to comment #36)
&gt; Created an attachment (id=80369) [details]
&gt; Patch

This patch is the same as the previous, except that in the non-background image case it passes the Image pointer instead of 0 as the (void*) layer (see RenderImage.cpp).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341132</commentid>
    <comment_count>38</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-01-27 16:58:25 -0800</bug_when>
    <thetext>Committed r76866: &lt;http://trac.webkit.org/changeset/76866&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>79309</attachid>
            <date>2011-01-18 12:29:21 -0800</date>
            <delta_ts>2011-01-18 12:29:21 -0800</delta_ts>
            <desc>Bottom-up shark trace</desc>
            <filename>52645_trace.txt</filename>
            <type>text/plain</type>
            <size>9631</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">IyBHZW5lcmF0ZWQgZnJvbSB0aGUgdmlzaWJsZSBwb3J0aW9uIG9mIHRoZSBvdXRsaW5lIHZpZXcK
KyAyMy4zJSwgV2ViQ29yZTo6SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6b2JqZWN0RGVzdHJveWVk
KFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0KiksIFdlYkNvcmUKfCArIDIzLjMlLCBXZWJD
b3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6flJlbmRlckJveE1vZGVsT2JqZWN0KCksIFdlYkNv
cmUKfCB8ICsgOC4wJSwgV2ViQ29yZTo6UmVuZGVyQmxvY2s6On5SZW5kZXJCbG9jaygpLCBXZWJD
b3JlCnwgfCB8ICsgNi43JSwgV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjp+UmVuZGVyVGFibGVD
ZWxsKCksIFdlYkNvcmUKfCB8IHwgfCArIDYuNyUsIFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YXJl
bmFEZWxldGUoV2ViQ29yZTo6UmVuZGVyQXJlbmEqLCB2b2lkKiksIFdlYkNvcmUKfCB8IHwgfCB8
ICsgNi43JSwgV2ViQ29yZTo6UmVuZGVyQm94OjpkZXN0cm95KCksIFdlYkNvcmUKfCB8IHwgfCB8
IHwgKyA2LjclLCBXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmRlc3Ryb3koKSwgV2ViQ29yZQp8
IHwgfCB8IHwgfCB8ICsgNi43JSwgV2ViQ29yZTo6Tm9kZTo6ZGV0YWNoKCksIFdlYkNvcmUKfCB8
IHwgfCB8IHwgfCB8ICsgNi43JSwgV2ViQ29yZTo6RWxlbWVudDo6ZGV0YWNoKCksIFdlYkNvcmUK
fCB8IHwgfCB8IHwgfCB8IHwgKyA2LjclLCBXZWJDb3JlOjpDb250YWluZXJOb2RlOjpkZXRhY2go
KSwgV2ViQ29yZQp8IHwgfCB8IHwgfCB8IHwgfCB8ICsgNi43JSwgV2ViQ29yZTo6RWxlbWVudDo6
ZGV0YWNoKCksIFdlYkNvcmUKfCB8IHwgfCB8IHwgfCB8IHwgfCB8ICsgNi43JSwgV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6ZGV0YWNoKCksIFdlYkNvcmUKfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
KyA2LjclLCBXZWJDb3JlOjpFbGVtZW50OjpkZXRhY2goKSwgV2ViQ29yZQp8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8ICsgNi43JSwgV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6ZGV0YWNoKCksIFdl
YkNvcmUKfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8ICsgNi43JSwgV2ViQ29yZTo6RWxlbWVu
dDo6ZGV0YWNoKCksIFdlYkNvcmUKfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgKyA2Ljcl
LCBXZWJDb3JlOjpDb250YWluZXJOb2RlOjpkZXRhY2goKSwgV2ViQ29yZQp8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8ICsgNi43JSwgV2ViQ29yZTo6RWxlbWVudDo6ZGV0YWNoKCksIFdl
YkNvcmUKfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8ICsgNi43JSwgV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6ZGV0YWNoKCksIFdlYkNvcmUKfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgKyA2LjclLCBXZWJDb3JlOjpFbGVtZW50OjpkZXRhY2goKSwgV2ViQ29yZQp8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8ICsgNi43JSwgV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6ZGV0YWNoKCksIFdlYkNvcmUKfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8ICsgNi4wJSwgV2ViQ29yZTo6RWxlbWVudDo6ZGV0YWNoKCksIFdlYkNvcmUK
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgKyA2LjAlLCBXZWJDb3Jl
OjpDb250YWluZXJOb2RlOjpkZXRhY2goKSwgV2ViQ29yZQp8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8ICsgNi4wJSwgV2ViQ29yZTo6RWxlbWVudDo6ZGV0YWNoKCks
IFdlYkNvcmUKfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8ICsg
Ni4wJSwgV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6ZGV0YWNoKCksIFdlYkNvcmUKfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgKyA1LjUlLCBXZWJDb3JlOjpF
bGVtZW50OjpkZXRhY2goKSwgV2ViQ29yZQp8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8ICsgNS41JSwgV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6ZGV0YWNo
KCksIFdlYkNvcmUKfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8ICsgNS41JSwgV2ViQ29yZTo6RWxlbWVudDo6ZGV0YWNoKCksIFdlYkNvcmUKfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgKyA1LjUlLCBX
ZWJDb3JlOjpDb250YWluZXJOb2RlOjpkZXRhY2goKSwgV2ViQ29yZQp8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IC0gNC4wJSwgV2ViQ29yZTo6
RG9jdW1lbnQ6OmRldGFjaCgpLCBXZWJDb3JlCnwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgKyAxLjUlLCBXZWJDb3JlOjpFbGVtZW50OjpkZXRh
Y2goKSwgV2ViQ29yZQp8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgKyAxLjUlLCBXZWJDb3JlOjpDb250YWluZXJOb2RlOjpkZXRhY2goKSwg
V2ViQ29yZQp8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCArIDEuNSUsIFdlYkNvcmU6OkVsZW1lbnQ6OmRldGFjaCgpLCBXZWJDb3JlCnwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgKyAxLjUlLCBXZWJDb3JlOjpDb250YWluZXJOb2RlOjpkZXRhY2goKSwgV2ViQ29yZQp8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgKyAxLjUlLCBXZWJDb3JlOjpFbGVtZW50OjpkZXRhY2goKSwgV2ViQ29yZQp8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCAr
IDEuNSUsIFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmRldGFjaCgpLCBXZWJDb3JlCnwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgKyAxLjUlLCBXZWJDb3JlOjpFbGVtZW50OjpkZXRhY2goKSwgV2ViQ29yZQp8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgKyAxLjUlLCBXZWJDb3JlOjpDb250YWluZXJOb2RlOjpkZXRhY2goKSwgV2ViQ29yZQp8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCArIDEuMSUsIFdlYkNvcmU6OkVsZW1lbnQ6OmRldGFjaCgpLCBXZWJDb3JlCnwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgKyAxLjElLCBXZWJDb3JlOjpDb250YWluZXJOb2RlOjpkZXRhY2goKSwg
V2ViQ29yZQp8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgKyAxLjAlLCBXZWJDb3JlOjpFbGVtZW50OjpkZXRh
Y2goKSwgV2ViQ29yZQp8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCArIDEuMCUsIFdlYkNvcmU6OkNvbnRh
aW5lck5vZGU6OmRldGFjaCgpLCBXZWJDb3JlCnwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgKyAxLjAl
LCBXZWJDb3JlOjpFbGVtZW50OjpkZXRhY2goKSwgV2ViQ29yZQp8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgKyAxLjAlLCBXZWJDb3JlOjpDb250YWluZXJOb2RlOjpkZXRhY2goKSwgV2ViQ29yZQp8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCArIDEuMCUsIFdlYkNvcmU6OkVsZW1lbnQ6OmRldGFj
aCgpLCBXZWJDb3JlCnwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgKyAxLjAlLCBXZWJDb3Jl
OjpDb250YWluZXJOb2RlOjpkZXRhY2goKSwgV2ViQ29yZQp8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgLSAwLjglLCBXZWJDb3JlOjpEb2N1bWVudDo6ZGV0YWNoKCksIFdlYkNvcmUKfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8ICsgMC4zJSwgV2ViQ29yZTo6RWxlbWVudDo6ZGV0
YWNoKCksIFdlYkNvcmUKfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgKyAwLjMlLCBX
ZWJDb3JlOjpDb250YWluZXJOb2RlOjpkZXRhY2goKSwgV2ViQ29yZQp8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8ICsgMC4yJSwgV2ViQ29yZTo6RWxlbWVudDo6ZGV0YWNoKCksIFdl
YkNvcmUKfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8ICsgMC4yJSwgV2ViQ29y
ZTo6Q29udGFpbmVyTm9kZTo6ZGV0YWNoKCksIFdlYkNvcmUKfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgKyAwLjIlLCBXZWJDb3JlOjpFbGVtZW50OjpkZXRhY2goKSwgV2Vi
Q29yZQp8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8ICsgMC4yJSwgV2Vi
Q29yZTo6Q29udGFpbmVyTm9kZTo6ZGV0YWNoKCksIFdlYkNvcmUKfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8ICsgMC4yJSwgV2ViQ29yZTo6RWxlbWVudDo6ZGV0YWNo
KCksIFdlYkNvcmUKfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
KyAwLjIlLCBXZWJDb3JlOjpDb250YWluZXJOb2RlOjpkZXRhY2goKSwgV2ViQ29yZQp8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IC0gMC4xJSwgV2ViQ29yZTo6
RG9jdW1lbnQ6OmRldGFjaCgpLCBXZWJDb3JlCnwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgKyAwLjElLCBXZWJDb3JlOjpFbGVtZW50OjpkZXRhY2goKSwgV2Vi
Q29yZQp8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgKyAw
LjElLCBXZWJDb3JlOjpDb250YWluZXJOb2RlOjpkZXRhY2goKSwgV2ViQ29yZQp8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCArIDAuMSUsIFdlYkNvcmU6
OkVsZW1lbnQ6OmRldGFjaCgpLCBXZWJDb3JlCnwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgKyAwLjElLCBXZWJDb3JlOjpDb250YWluZXJOb2RlOjpk
ZXRhY2goKSwgV2ViQ29yZQp8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgLSAwLjElLCBXZWJDb3JlOjpEb2N1bWVudDo6ZGV0YWNoKCksIFdlYkNv
cmUKfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
ICsgMC4wJSwgV2ViQ29yZTo6RWxlbWVudDo6ZGV0YWNoKCksIFdlYkNvcmUKfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgKyAwLjAlLCBXZWJD
b3JlOjpDb250YWluZXJOb2RlOjpkZXRhY2goKSwgV2ViQ29yZQp8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8ICsgMC4wJSwgV2ViQ29yZTo6
RWxlbWVudDo6ZGV0YWNoKCksIFdlYkNvcmUKfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8ICsgMC4wJSwgV2ViQ29yZTo6Q29udGFpbmVy
Tm9kZTo6ZGV0YWNoKCksIFdlYkNvcmUKfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgKyAwLjAlLCBXZWJDb3JlOjpFbGVtZW50Ojpk
ZXRhY2goKSwgV2ViQ29yZQp8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8ICsgMC4wJSwgV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6
ZGV0YWNoKCksIFdlYkNvcmUKfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IC0gMC4wJSwgV2ViQ29yZTo6RG9jdW1lbnQ6OmRl
dGFjaCgpLCBXZWJDb3JlCnwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCArIDAuMCUsIFdlYkNvcmU6OkVsZW1lbnQ6OmRldGFj
aCgpLCBXZWJDb3JlCnwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8ICsgMC4wJSwgV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6
ZGV0YWNoKCksIFdlYkNvcmUKfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCArIDAuMCUsIFdlYkNvcmU6OkRvY3VtZW50
OjpkZXRhY2goKSwgV2ViQ29yZQp8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgKyAwLjAlLCBXZWJDb3JlOjpDYWNo
ZWRGcmFtZTo6ZGVzdHJveSgpLCBXZWJDb3JlCnwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8ICsgMC4wJSwgV2Vi
Q29yZTo6Q2FjaGVkUGFnZTo6ZGVzdHJveSgpLCBXZWJDb3JlCnwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
KyAwLjAlLCBXZWJDb3JlOjpQYWdlQ2FjaGU6OnJlbGVhc2VBdXRvcmVsZWFzZWRQYWdlc05vdygp
LCBXZWJDb3JlCnwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCArIDAuMCUsIFdlYkNvcmU6OlRocmVhZFRp
bWVyczo6c2hhcmVkVGltZXJGaXJlZEludGVybmFsKCksIFdlYkNvcmUKfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgKyAwLjAlLCBXZWJDb3JlOjp0aW1lckZpcmVkKF9fQ0ZSdW5Mb29wVGltZXIqLCB2
b2lkKiksIFdlYkNvcmUKfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCArIDAuMCUsIF9fQ0ZSdW5M
b29wRG9UaW1lciwgQ29yZUZvdW5kYXRpb24KfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8ICsg
MC4wJSwgX19DRlJ1bkxvb3BSdW4sIENvcmVGb3VuZGF0aW9uCnwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8
IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwg
fCB8IHwgfCB8ICsgMC4wJSwgQ0ZSdW5Mb29wUnVuU3BlY2lmaWMsIENvcmVGb3VuZGF0aW9uCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79372</attachid>
            <date>2011-01-18 17:55:55 -0800</date>
            <delta_ts>2011-01-19 09:29:21 -0800</delta_ts>
            <desc>Testing patch</desc>
            <filename>iqc_slowdown_fix.patch</filename>
            <type>text/plain</type>
            <size>5923</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAkocmV2aXNpb24gNzYwNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1MCw4IEBACiBz
dGF0aWMgY29uc3QgZG91YmxlIGNJbnRlcnBvbGF0aW9uQ3V0b2ZmID0gODAwLiAqIDgwMC47CiBz
dGF0aWMgY29uc3QgZG91YmxlIGNMb3dRdWFsaXR5VGltZVRocmVzaG9sZCA9IDAuNTAwOyAvLyA1
MDAgbXMKIAotdHlwZWRlZiBwYWlyPFJlbmRlckJveE1vZGVsT2JqZWN0KiwgY29uc3Qgdm9pZCo+
IExhc3RQYWludFNpemVNYXBLZXk7Ci10eXBlZGVmIEhhc2hNYXA8TGFzdFBhaW50U2l6ZU1hcEtl
eSwgSW50U2l6ZT4gTGFzdFBhaW50U2l6ZU1hcDsKK3R5cGVkZWYgSGFzaE1hcDxjb25zdCB2b2lk
KiwgSW50U2l6ZT4gTGF5ZXJTaXplTWFwOwordHlwZWRlZiBIYXNoTWFwPFJlbmRlckJveE1vZGVs
T2JqZWN0KiwgTGF5ZXJTaXplTWFwPiBPYmplY3RMYXllclNpemVNYXA7CiAKIC8vIFRoZSBIYXNo
TWFwIGZvciBzdG9yaW5nIGNvbnRpbnVhdGlvbiBwb2ludGVycy4KIC8vIEFuIGlubGluZSBjYW4g
YmUgc3BsaXQgd2l0aCBibG9ja3Mgb2NjdXJpbmcgaW4gYmV0d2VlbiB0aGUgaW5saW5lIGNvbnRl
bnQuCkBAIC02NywxNCArNjcsMTUgQEAKIHB1YmxpYzoKICAgICBJbWFnZVF1YWxpdHlDb250cm9s
bGVyKCk7CiAgICAgYm9vbCBzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQq
LCBSZW5kZXJCb3hNb2RlbE9iamVjdCosIEltYWdlKiwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0
IEludFNpemUmKTsKLSAgICB2b2lkIGtleURlc3Ryb3llZChMYXN0UGFpbnRTaXplTWFwS2V5IGtl
eSk7CisgICAgdm9pZCByZW1vdmVMYXllcihSZW5kZXJCb3hNb2RlbE9iamVjdCosIExheWVyU2l6
ZU1hcCogaW5uZXJNYXAsIGNvbnN0IHZvaWQqIGxheWVyKTsKKyAgICB2b2lkIHNldChSZW5kZXJC
b3hNb2RlbE9iamVjdCosIExheWVyU2l6ZU1hcCogaW5uZXJNYXAsIGNvbnN0IHZvaWQqIGxheWVy
LCBjb25zdCBJbnRTaXplJiBzaXplKTsKICAgICB2b2lkIG9iamVjdERlc3Ryb3llZChSZW5kZXJC
b3hNb2RlbE9iamVjdCopOwogCiBwcml2YXRlOgogICAgIHZvaWQgaGlnaFF1YWxpdHlSZXBhaW50
VGltZXJGaXJlZChUaW1lcjxJbWFnZVF1YWxpdHlDb250cm9sbGVyPiopOwogICAgIHZvaWQgcmVz
dGFydFRpbWVyKCk7CiAKLSAgICBMYXN0UGFpbnRTaXplTWFwIG1fbGFzdFBhaW50U2l6ZU1hcDsK
KyAgICBPYmplY3RMYXllclNpemVNYXAgbV9vYmplY3RMYXllclNpemVNYXA7CiAgICAgVGltZXI8
SW1hZ2VRdWFsaXR5Q29udHJvbGxlcj4gbV90aW1lcjsKICAgICBib29sIG1fYW5pbWF0ZWRSZXNp
emVJc0FjdGl2ZTsKIH07CkBAIC04NSwzMSArODYsNDIgQEAKIHsKIH0KIAotdm9pZCBJbWFnZVF1
YWxpdHlDb250cm9sbGVyOjprZXlEZXN0cm95ZWQoTGFzdFBhaW50U2l6ZU1hcEtleSBrZXkpCit2
b2lkIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnJlbW92ZUxheWVyKFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiBvYmplY3QsIExheWVyU2l6ZU1hcCogaW5uZXJNYXAsIGNvbnN0IHZvaWQqIGxheWVyKQog
ewotICAgIG1fbGFzdFBhaW50U2l6ZU1hcC5yZW1vdmUoa2V5KTsKLSAgICBpZiAobV9sYXN0UGFp
bnRTaXplTWFwLmlzRW1wdHkoKSkgewotICAgICAgICBtX2FuaW1hdGVkUmVzaXplSXNBY3RpdmUg
PSBmYWxzZTsKLSAgICAgICAgbV90aW1lci5zdG9wKCk7CisgICAgaWYgKGlubmVyTWFwKSB7Cisg
ICAgICAgIGlubmVyTWFwLT5yZW1vdmUobGF5ZXIpOworICAgICAgICBpZiAoaW5uZXJNYXAtPmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgb2JqZWN0RGVzdHJveWVkKG9iamVjdCk7CisgICAgICAg
IH0KICAgICB9CiB9CiAgICAgCit2b2lkIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNldChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogb2JqZWN0LCBMYXllclNpemVNYXAqIGlubmVyTWFwLCBjb25zdCB2
b2lkKiBsYXllciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAoaW5uZXJNYXApIHsK
KyAgICAgICAgaW5uZXJNYXAtPnNldChsYXllciwgc2l6ZSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgTGF5ZXJTaXplTWFwIG5ld0lubmVyTWFwOworICAgICAgICBuZXdJbm5lck1hcC5zZXQobGF5
ZXIsIHNpemUpOworICAgICAgICBtX29iamVjdExheWVyU2l6ZU1hcC5zZXQob2JqZWN0LCBuZXdJ
bm5lck1hcCk7CisgICAgfQorfQorICAgIAogdm9pZCBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpv
YmplY3REZXN0cm95ZWQoUmVuZGVyQm94TW9kZWxPYmplY3QqIG9iamVjdCkKIHsKLSAgICBWZWN0
b3I8TGFzdFBhaW50U2l6ZU1hcEtleT4ga2V5c1RvRGllOwotICAgIGZvciAoTGFzdFBhaW50U2l6
ZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2xhc3RQYWludFNpemVNYXAuYmVnaW4oKTsgaXQgIT0gbV9s
YXN0UGFpbnRTaXplTWFwLmVuZCgpOyArK2l0KQotICAgICAgICBpZiAoaXQtPmZpcnN0LmZpcnN0
ID09IG9iamVjdCkKLSAgICAgICAgICAgIGtleXNUb0RpZS5hcHBlbmQoaXQtPmZpcnN0KTsKLSAg
ICBmb3IgKFZlY3RvcjxMYXN0UGFpbnRTaXplTWFwS2V5Pjo6aXRlcmF0b3IgaXQgPSBrZXlzVG9E
aWUuYmVnaW4oKTsgaXQgIT0ga2V5c1RvRGllLmVuZCgpOyArK2l0KQotICAgICAgICBrZXlEZXN0
cm95ZWQoKml0KTsKKyAgICBtX29iamVjdExheWVyU2l6ZU1hcC5yZW1vdmUob2JqZWN0KTsKKyAg
ICBpZiAobV9vYmplY3RMYXllclNpemVNYXAuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fYW5pbWF0
ZWRSZXNpemVJc0FjdGl2ZSA9IGZhbHNlOworICAgICAgICBtX3RpbWVyLnN0b3AoKTsKKyAgICB9
CiB9Ci0gICAgCisKIHZvaWQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6aGlnaFF1YWxpdHlSZXBh
aW50VGltZXJGaXJlZChUaW1lcjxJbWFnZVF1YWxpdHlDb250cm9sbGVyPiopCiB7CiAgICAgaWYg
KG1fYW5pbWF0ZWRSZXNpemVJc0FjdGl2ZSkgewogICAgICAgICBtX2FuaW1hdGVkUmVzaXplSXNB
Y3RpdmUgPSBmYWxzZTsKLSAgICAgICAgZm9yIChMYXN0UGFpbnRTaXplTWFwOjppdGVyYXRvciBp
dCA9IG1fbGFzdFBhaW50U2l6ZU1hcC5iZWdpbigpOyBpdCAhPSBtX2xhc3RQYWludFNpemVNYXAu
ZW5kKCk7ICsraXQpCi0gICAgICAgICAgICBpdC0+Zmlyc3QuZmlyc3QtPnJlcGFpbnQoKTsKKyAg
ICAgICAgZm9yIChPYmplY3RMYXllclNpemVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9vYmplY3RMYXll
clNpemVNYXAuYmVnaW4oKTsgaXQgIT0gbV9vYmplY3RMYXllclNpemVNYXAuZW5kKCk7ICsraXQp
CisgICAgICAgICAgICBpdC0+Zmlyc3QtPnJlcGFpbnQoKTsKICAgICB9CiB9CiAKQEAgLTEyOSwx
NyArMTQxLDE1IEBACiAgICAgLy8gaXMgYWN0dWFsbHkgYmVpbmcgc2NhbGVkLgogICAgIEludFNp
emUgaW1hZ2VTaXplKGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCkpOwogCi0gICAgLy8g
TG9vayBvdXJzZWx2ZXMgdXAgaW4gdGhlIGhhc2h0YWJsZS4KLSAgICBMYXN0UGFpbnRTaXplTWFw
S2V5IGtleShvYmplY3QsIGxheWVyKTsKLSAgICBMYXN0UGFpbnRTaXplTWFwOjppdGVyYXRvciBp
ID0gbV9sYXN0UGFpbnRTaXplTWFwLmZpbmQoa2V5KTsKKyAgICAvLyBMb29rIG91cnNlbHZlcyB1
cCBpbiB0aGUgaGFzaHRhYmxlcy4KKyAgICBPYmplY3RMYXllclNpemVNYXA6Oml0ZXJhdG9yIGkg
PSBtX29iamVjdExheWVyU2l6ZU1hcC5maW5kKG9iamVjdCk7CisgICAgTGF5ZXJTaXplTWFwKiBp
bm5lck1hcCA9IGkgIT0gbV9vYmplY3RMYXllclNpemVNYXAuZW5kKCkgPyAmaS0+c2Vjb25kIDog
MDsKIAogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgY3VycmVudFRyYW5zZm9ybSA9IGNvbnRl
eHQtPmdldENUTSgpOwogICAgIGJvb2wgY29udGV4dElzU2NhbGVkID0gIWN1cnJlbnRUcmFuc2Zv
cm0uaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKTsKICAgICBpZiAoIWNvbnRleHRJ
c1NjYWxlZCAmJiBpbWFnZVNpemUgPT0gc2l6ZSkgewogICAgICAgICAvLyBUaGVyZSBpcyBubyBz
Y2FsZSBpbiBlZmZlY3QuIElmIHdlIGhhZCBhIHNjYWxlIGluIGVmZmVjdCBiZWZvcmUsIHdlIGNh
biBqdXN0IHJlbW92ZSB0aGlzIG9iamVjdCBmcm9tIHRoZSBsaXN0LgotICAgICAgICBpZiAoaSAh
PSBtX2xhc3RQYWludFNpemVNYXAuZW5kKCkpCi0gICAgICAgICAgICBtX2xhc3RQYWludFNpemVN
YXAucmVtb3ZlKGtleSk7Ci0KKyAgICAgICAgcmVtb3ZlTGF5ZXIob2JqZWN0LCBpbm5lck1hcCwg
bGF5ZXIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNTEsMjggKzE2MSwy
OCBAQAogICAgIH0KICAgICAvLyBJZiBhbiBhbmltYXRlZCByZXNpemUgaXMgYWN0aXZlLCBwYWlu
dCBpbiBsb3cgcXVhbGl0eSBhbmQga2ljayB0aGUgdGltZXIgYWhlYWQuCiAgICAgaWYgKG1fYW5p
bWF0ZWRSZXNpemVJc0FjdGl2ZSkgewotICAgICAgICBtX2xhc3RQYWludFNpemVNYXAuc2V0KGtl
eSwgc2l6ZSk7CisgICAgICAgIHNldChvYmplY3QsIGlubmVyTWFwLCBsYXllciwgc2l6ZSk7CiAg
ICAgICAgIHJlc3RhcnRUaW1lcigpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAg
Ly8gSWYgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSByZXNpemluZyB0aGlzIGltYWdlLCBvciBpdHMg
c2l6ZSBpcyB0aGUKKyAgICAvLyBJZiB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHJlc2l6aW5nICB0
aGlzIGltYWdlLCBvciBpdHMgc2l6ZSBpcyB0aGUKICAgICAvLyBzYW1lIGFzIHRoZSBsYXN0IHJl
c2l6ZSwgZHJhdyBhdCBoaWdoIHJlcywgYnV0IHJlY29yZCB0aGUgcGFpbnQKICAgICAvLyBzaXpl
IGFuZCBzZXQgdGhlIHRpbWVyLgotICAgIGlmIChpID09IG1fbGFzdFBhaW50U2l6ZU1hcC5lbmQo
KSB8fCBzaXplID09IGktPnNlY29uZCkgeworICAgIGlmIChpID09IG1fb2JqZWN0TGF5ZXJTaXpl
TWFwLmVuZCgpIHx8IHNpemUgPT0gaW5uZXJNYXAtPmdldChsYXllcikpIHsKICAgICAgICAgcmVz
dGFydFRpbWVyKCk7Ci0gICAgICAgIG1fbGFzdFBhaW50U2l6ZU1hcC5zZXQoa2V5LCBzaXplKTsK
KyAgICAgICAgc2V0KG9iamVjdCwgaW5uZXJNYXAsIGxheWVyLCBzaXplKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBJZiB0aGUgdGltZXIgaXMgbm8gbG9uZ2VyIGFjdGl2
ZSwgZHJhdyBhdCBoaWdoIHF1YWxpdHkgYW5kIGRvbid0CiAgICAgLy8gc2V0IHRoZSB0aW1lci4K
ICAgICBpZiAoIW1fdGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICBrZXlEZXN0cm95ZWQoa2V5
KTsKKyAgICAgICAgcmVtb3ZlTGF5ZXIob2JqZWN0LCBpbm5lck1hcCwgbGF5ZXIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFRoaXMgb2JqZWN0IGhhcyBiZWVuIHJlc2l6
ZWQgdG8gdHdvIGRpZmZlcmVudCBzaXplcyB3aGlsZSB0aGUgdGltZXIKICAgICAvLyBpcyBhY3Rp
dmUsIHNvIGRyYXcgYXQgbG93IHF1YWxpdHksIHNldCB0aGUgZmxhZyBmb3IgYW5pbWF0ZWQgcmVz
aXplcyBhbmQKICAgICAvLyB0aGUgb2JqZWN0IHRvIHRoZSBsaXN0IGZvciBoaWdoIHF1YWxpdHkg
cmVkcmF3LgotICAgIG1fbGFzdFBhaW50U2l6ZU1hcC5zZXQoa2V5LCBzaXplKTsKKyAgICBzZXQo
b2JqZWN0LCBpbm5lck1hcCwgbGF5ZXIsIHNpemUpOwogICAgIG1fYW5pbWF0ZWRSZXNpemVJc0Fj
dGl2ZSA9IHRydWU7CiAgICAgcmVzdGFydFRpbWVyKCk7CiAgICAgcmV0dXJuIHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79434</attachid>
            <date>2011-01-19 09:29:26 -0800</date>
            <delta_ts>2011-01-19 10:56:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52645-20110119122924.patch</filename>
            <type>text/plain</type>
            <size>8257</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2MTI5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDEtMTkgIFN0ZXBoZW4g
V2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gaW4g
SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6b2JqZWN0RGVzdHJveWVkKCkuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjY0NQorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
UXVhbGl0eUNvbnRyb2xsZXI6OmlzRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VRdWFs
aXR5Q29udHJvbGxlcjo6cmVtb3ZlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VRdWFs
aXR5Q29udHJvbGxlcjo6c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUXVhbGl0eUNvbnRy
b2xsZXI6Om9iamVjdERlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVF1YWxpdHlD
b250cm9sbGVyOjpoaWdoUXVhbGl0eVJlcGFpbnRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OmltYWdlUXVhbGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6On5SZW5kZXJCb3hNb2RlbE9iamVjdCk6CisKIDIwMTEt
MDEtMTkgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gNzYxMjkp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1MCw4IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnNfbGF5ZXJXYXNTZWwKIHN0YXRpYyBjb25zdCBkb3VibGUgY0ludGVycG9sYXRpb25DdXRvZmYg
PSA4MDAuICogODAwLjsKIHN0YXRpYyBjb25zdCBkb3VibGUgY0xvd1F1YWxpdHlUaW1lVGhyZXNo
b2xkID0gMC41MDA7IC8vIDUwMCBtcwogCi10eXBlZGVmIHBhaXI8UmVuZGVyQm94TW9kZWxPYmpl
Y3QqLCBjb25zdCB2b2lkKj4gTGFzdFBhaW50U2l6ZU1hcEtleTsKLXR5cGVkZWYgSGFzaE1hcDxM
YXN0UGFpbnRTaXplTWFwS2V5LCBJbnRTaXplPiBMYXN0UGFpbnRTaXplTWFwOwordHlwZWRlZiBI
YXNoTWFwPGNvbnN0IHZvaWQqLCBJbnRTaXplPiBMYXllclNpemVNYXA7Cit0eXBlZGVmIEhhc2hN
YXA8UmVuZGVyQm94TW9kZWxPYmplY3QqLCBMYXllclNpemVNYXA+IE9iamVjdExheWVyU2l6ZU1h
cDsKIAogLy8gVGhlIEhhc2hNYXAgZm9yIHN0b3JpbmcgY29udGludWF0aW9uIHBvaW50ZXJzLgog
Ly8gQW4gaW5saW5lIGNhbiBiZSBzcGxpdCB3aXRoIGJsb2NrcyBvY2N1cmluZyBpbiBiZXR3ZWVu
IHRoZSBpbmxpbmUgY29udGVudC4KQEAgLTY3LDE0ICs2NywxNiBAQCBjbGFzcyBJbWFnZVF1YWxp
dHlDb250cm9sbGVyIDogcHVibGljIE5vCiBwdWJsaWM6CiAgICAgSW1hZ2VRdWFsaXR5Q29udHJv
bGxlcigpOwogICAgIGJvb2wgc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0
KiwgUmVuZGVyQm94TW9kZWxPYmplY3QqLCBJbWFnZSosIGNvbnN0IHZvaWQqIGxheWVyLCBjb25z
dCBJbnRTaXplJik7Ci0gICAgdm9pZCBrZXlEZXN0cm95ZWQoTGFzdFBhaW50U2l6ZU1hcEtleSBr
ZXkpOworICAgIHZvaWQgcmVtb3ZlTGF5ZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqLCBMYXllclNp
emVNYXAqIGlubmVyTWFwLCBjb25zdCB2b2lkKiBsYXllcik7CisgICAgdm9pZCBzZXQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqLCBMYXllclNpemVNYXAqIGlubmVyTWFwLCBjb25zdCB2b2lkKiBsYXll
ciwgY29uc3QgSW50U2l6ZSYpOwogICAgIHZvaWQgb2JqZWN0RGVzdHJveWVkKFJlbmRlckJveE1v
ZGVsT2JqZWN0Kik7CisgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gbV9vYmplY3RMYXllclNp
emVNYXAuaXNFbXB0eSgpOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBoaWdoUXVhbGl0eVJlcGFp
bnRUaW1lckZpcmVkKFRpbWVyPEltYWdlUXVhbGl0eUNvbnRyb2xsZXI+Kik7CiAgICAgdm9pZCBy
ZXN0YXJ0VGltZXIoKTsKIAotICAgIExhc3RQYWludFNpemVNYXAgbV9sYXN0UGFpbnRTaXplTWFw
OworICAgIE9iamVjdExheWVyU2l6ZU1hcCBtX29iamVjdExheWVyU2l6ZU1hcDsKICAgICBUaW1l
cjxJbWFnZVF1YWxpdHlDb250cm9sbGVyPiBtX3RpbWVyOwogICAgIGJvb2wgbV9hbmltYXRlZFJl
c2l6ZUlzQWN0aXZlOwogfTsKQEAgLTg1LDMxICs4Nyw0MSBAQCBJbWFnZVF1YWxpdHlDb250cm9s
bGVyOjpJbWFnZVF1YWxpdHlDb250CiB7CiB9CiAKLXZvaWQgSW1hZ2VRdWFsaXR5Q29udHJvbGxl
cjo6a2V5RGVzdHJveWVkKExhc3RQYWludFNpemVNYXBLZXkga2V5KQordm9pZCBJbWFnZVF1YWxp
dHlDb250cm9sbGVyOjpyZW1vdmVMYXllcihSZW5kZXJCb3hNb2RlbE9iamVjdCogb2JqZWN0LCBM
YXllclNpemVNYXAqIGlubmVyTWFwLCBjb25zdCB2b2lkKiBsYXllcikKIHsKLSAgICBtX2xhc3RQ
YWludFNpemVNYXAucmVtb3ZlKGtleSk7Ci0gICAgaWYgKG1fbGFzdFBhaW50U2l6ZU1hcC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgbV9hbmltYXRlZFJlc2l6ZUlzQWN0aXZlID0gZmFsc2U7Ci0gICAg
ICAgIG1fdGltZXIuc3RvcCgpOworICAgIGlmIChpbm5lck1hcCkgeworICAgICAgICBpbm5lck1h
cC0+cmVtb3ZlKGxheWVyKTsKKyAgICAgICAgaWYgKGlubmVyTWFwLT5pc0VtcHR5KCkpCisgICAg
ICAgICAgICBvYmplY3REZXN0cm95ZWQob2JqZWN0KTsKICAgICB9CiB9CiAgICAgCi12b2lkIElt
YWdlUXVhbGl0eUNvbnRyb2xsZXI6Om9iamVjdERlc3Ryb3llZChSZW5kZXJCb3hNb2RlbE9iamVj
dCogb2JqZWN0KQordm9pZCBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpzZXQoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIG9iamVjdCwgTGF5ZXJTaXplTWFwKiBpbm5lck1hcCwgY29uc3Qgdm9pZCogbGF5
ZXIsIGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAgVmVjdG9yPExhc3RQYWludFNpemVNYXBL
ZXk+IGtleXNUb0RpZTsKLSAgICBmb3IgKExhc3RQYWludFNpemVNYXA6Oml0ZXJhdG9yIGl0ID0g
bV9sYXN0UGFpbnRTaXplTWFwLmJlZ2luKCk7IGl0ICE9IG1fbGFzdFBhaW50U2l6ZU1hcC5lbmQo
KTsgKytpdCkKLSAgICAgICAgaWYgKGl0LT5maXJzdC5maXJzdCA9PSBvYmplY3QpCi0gICAgICAg
ICAgICBrZXlzVG9EaWUuYXBwZW5kKGl0LT5maXJzdCk7Ci0gICAgZm9yIChWZWN0b3I8TGFzdFBh
aW50U2l6ZU1hcEtleT46Oml0ZXJhdG9yIGl0ID0ga2V5c1RvRGllLmJlZ2luKCk7IGl0ICE9IGtl
eXNUb0RpZS5lbmQoKTsgKytpdCkKLSAgICAgICAga2V5RGVzdHJveWVkKCppdCk7CisgICAgaWYg
KGlubmVyTWFwKQorICAgICAgICBpbm5lck1hcC0+c2V0KGxheWVyLCBzaXplKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgTGF5ZXJTaXplTWFwIG5ld0lubmVyTWFwOworICAgICAgICBuZXdJbm5lck1h
cC5zZXQobGF5ZXIsIHNpemUpOworICAgICAgICBtX29iamVjdExheWVyU2l6ZU1hcC5zZXQob2Jq
ZWN0LCBuZXdJbm5lck1hcCk7CisgICAgfQogfQogICAgIAordm9pZCBJbWFnZVF1YWxpdHlDb250
cm9sbGVyOjpvYmplY3REZXN0cm95ZWQoUmVuZGVyQm94TW9kZWxPYmplY3QqIG9iamVjdCkKK3sK
KyAgICBtX29iamVjdExheWVyU2l6ZU1hcC5yZW1vdmUob2JqZWN0KTsKKyAgICBpZiAobV9vYmpl
Y3RMYXllclNpemVNYXAuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fYW5pbWF0ZWRSZXNpemVJc0Fj
dGl2ZSA9IGZhbHNlOworICAgICAgICBtX3RpbWVyLnN0b3AoKTsKKyAgICB9Cit9CisKIHZvaWQg
SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6aGlnaFF1YWxpdHlSZXBhaW50VGltZXJGaXJlZChUaW1l
cjxJbWFnZVF1YWxpdHlDb250cm9sbGVyPiopCiB7CiAgICAgaWYgKG1fYW5pbWF0ZWRSZXNpemVJ
c0FjdGl2ZSkgewogICAgICAgICBtX2FuaW1hdGVkUmVzaXplSXNBY3RpdmUgPSBmYWxzZTsKLSAg
ICAgICAgZm9yIChMYXN0UGFpbnRTaXplTWFwOjppdGVyYXRvciBpdCA9IG1fbGFzdFBhaW50U2l6
ZU1hcC5iZWdpbigpOyBpdCAhPSBtX2xhc3RQYWludFNpemVNYXAuZW5kKCk7ICsraXQpCi0gICAg
ICAgICAgICBpdC0+Zmlyc3QuZmlyc3QtPnJlcGFpbnQoKTsKKyAgICAgICAgZm9yIChPYmplY3RM
YXllclNpemVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9vYmplY3RMYXllclNpemVNYXAuYmVnaW4oKTsg
aXQgIT0gbV9vYmplY3RMYXllclNpemVNYXAuZW5kKCk7ICsraXQpCisgICAgICAgICAgICBpdC0+
Zmlyc3QtPnJlcGFpbnQoKTsKICAgICB9CiB9CiAKQEAgLTEyOSwxNyArMTQxLDE1IEBAIGJvb2wg
SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnQKICAgICAvLyBpcyBhY3R1YWxseSBi
ZWluZyBzY2FsZWQuCiAgICAgSW50U2l6ZSBpbWFnZVNpemUoaW1hZ2UtPndpZHRoKCksIGltYWdl
LT5oZWlnaHQoKSk7CiAKLSAgICAvLyBMb29rIG91cnNlbHZlcyB1cCBpbiB0aGUgaGFzaHRhYmxl
LgotICAgIExhc3RQYWludFNpemVNYXBLZXkga2V5KG9iamVjdCwgbGF5ZXIpOwotICAgIExhc3RQ
YWludFNpemVNYXA6Oml0ZXJhdG9yIGkgPSBtX2xhc3RQYWludFNpemVNYXAuZmluZChrZXkpOwor
ICAgIC8vIExvb2sgb3Vyc2VsdmVzIHVwIGluIHRoZSBoYXNodGFibGVzLgorICAgIE9iamVjdExh
eWVyU2l6ZU1hcDo6aXRlcmF0b3IgaSA9IG1fb2JqZWN0TGF5ZXJTaXplTWFwLmZpbmQob2JqZWN0
KTsKKyAgICBMYXllclNpemVNYXAqIGlubmVyTWFwID0gaSAhPSBtX29iamVjdExheWVyU2l6ZU1h
cC5lbmQoKSA/ICZpLT5zZWNvbmQgOiAwOwogCiAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBj
dXJyZW50VHJhbnNmb3JtID0gY29udGV4dC0+Z2V0Q1RNKCk7CiAgICAgYm9vbCBjb250ZXh0SXNT
Y2FsZWQgPSAhY3VycmVudFRyYW5zZm9ybS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBl
ZCgpOwogICAgIGlmICghY29udGV4dElzU2NhbGVkICYmIGltYWdlU2l6ZSA9PSBzaXplKSB7CiAg
ICAgICAgIC8vIFRoZXJlIGlzIG5vIHNjYWxlIGluIGVmZmVjdC4gSWYgd2UgaGFkIGEgc2NhbGUg
aW4gZWZmZWN0IGJlZm9yZSwgd2UgY2FuIGp1c3QgcmVtb3ZlIHRoaXMgb2JqZWN0IGZyb20gdGhl
IGxpc3QuCi0gICAgICAgIGlmIChpICE9IG1fbGFzdFBhaW50U2l6ZU1hcC5lbmQoKSkKLSAgICAg
ICAgICAgIG1fbGFzdFBhaW50U2l6ZU1hcC5yZW1vdmUoa2V5KTsKLQorICAgICAgICByZW1vdmVM
YXllcihvYmplY3QsIGlubmVyTWFwLCBsYXllcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKQEAgLTE1MSwzNyArMTYxLDQwIEBAIGJvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6
c2hvdWxkUGFpbnQKICAgICB9CiAgICAgLy8gSWYgYW4gYW5pbWF0ZWQgcmVzaXplIGlzIGFjdGl2
ZSwgcGFpbnQgaW4gbG93IHF1YWxpdHkgYW5kIGtpY2sgdGhlIHRpbWVyIGFoZWFkLgogICAgIGlm
IChtX2FuaW1hdGVkUmVzaXplSXNBY3RpdmUpIHsKLSAgICAgICAgbV9sYXN0UGFpbnRTaXplTWFw
LnNldChrZXksIHNpemUpOworICAgICAgICBzZXQob2JqZWN0LCBpbm5lck1hcCwgbGF5ZXIsIHNp
emUpOwogICAgICAgICByZXN0YXJ0VGltZXIoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQotICAgIC8vIElmIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgcmVzaXppbmcgdGhpcyBpbWFnZSwg
b3IgaXRzIHNpemUgaXMgdGhlCisgICAgLy8gSWYgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSByZXNp
emluZyAgdGhpcyBpbWFnZSwgb3IgaXRzIHNpemUgaXMgdGhlCiAgICAgLy8gc2FtZSBhcyB0aGUg
bGFzdCByZXNpemUsIGRyYXcgYXQgaGlnaCByZXMsIGJ1dCByZWNvcmQgdGhlIHBhaW50CiAgICAg
Ly8gc2l6ZSBhbmQgc2V0IHRoZSB0aW1lci4KLSAgICBpZiAoaSA9PSBtX2xhc3RQYWludFNpemVN
YXAuZW5kKCkgfHwgc2l6ZSA9PSBpLT5zZWNvbmQpIHsKKyAgICBpZiAoaSA9PSBtX29iamVjdExh
eWVyU2l6ZU1hcC5lbmQoKSB8fCBzaXplID09IGlubmVyTWFwLT5nZXQobGF5ZXIpKSB7CiAgICAg
ICAgIHJlc3RhcnRUaW1lcigpOwotICAgICAgICBtX2xhc3RQYWludFNpemVNYXAuc2V0KGtleSwg
c2l6ZSk7CisgICAgICAgIHNldChvYmplY3QsIGlubmVyTWFwLCBsYXllciwgc2l6ZSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gSWYgdGhlIHRpbWVyIGlzIG5vIGxvbmdl
ciBhY3RpdmUsIGRyYXcgYXQgaGlnaCBxdWFsaXR5IGFuZCBkb24ndAogICAgIC8vIHNldCB0aGUg
dGltZXIuCiAgICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpIHsKLSAgICAgICAga2V5RGVzdHJv
eWVkKGtleSk7CisgICAgICAgIHJlbW92ZUxheWVyKG9iamVjdCwgaW5uZXJNYXAsIGxheWVyKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBUaGlzIG9iamVjdCBoYXMgYmVl
biByZXNpemVkIHRvIHR3byBkaWZmZXJlbnQgc2l6ZXMgd2hpbGUgdGhlIHRpbWVyCiAgICAgLy8g
aXMgYWN0aXZlLCBzbyBkcmF3IGF0IGxvdyBxdWFsaXR5LCBzZXQgdGhlIGZsYWcgZm9yIGFuaW1h
dGVkIHJlc2l6ZXMgYW5kCiAgICAgLy8gdGhlIG9iamVjdCB0byB0aGUgbGlzdCBmb3IgaGlnaCBx
dWFsaXR5IHJlZHJhdy4KLSAgICBtX2xhc3RQYWludFNpemVNYXAuc2V0KGtleSwgc2l6ZSk7Cisg
ICAgc2V0KG9iamVjdCwgaW5uZXJNYXAsIGxheWVyLCBzaXplKTsKICAgICBtX2FuaW1hdGVkUmVz
aXplSXNBY3RpdmUgPSB0cnVlOwogICAgIHJlc3RhcnRUaW1lcigpOwogICAgIHJldHVybiB0cnVl
OwogfQogCitzdGF0aWMgSW1hZ2VRdWFsaXR5Q29udHJvbGxlciogZ0ltYWdlUXVhbGl0eUNvbnRy
b2xsZXIgPSAwOworCiBzdGF0aWMgSW1hZ2VRdWFsaXR5Q29udHJvbGxlciogaW1hZ2VRdWFsaXR5
Q29udHJvbGxlcigpCiB7Ci0gICAgc3RhdGljIEltYWdlUXVhbGl0eUNvbnRyb2xsZXIqIGNvbnRy
b2xsZXIgPSBuZXcgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjsKLSAgICByZXR1cm4gY29udHJvbGxl
cjsKKyAgICBpZiAoIWdJbWFnZVF1YWxpdHlDb250cm9sbGVyKQorICAgICAgICBnSW1hZ2VRdWFs
aXR5Q29udHJvbGxlciA9IG5ldyBJbWFnZVF1YWxpdHlDb250cm9sbGVyOworICAgIHJldHVybiBn
SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjsKIH0KIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
c2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUgcykKQEAgLTIyMiw3ICsyMzUsMTMgQEAg
UmVuZGVyQm94TW9kZWxPYmplY3Q6On5SZW5kZXJCb3hNb2RlbE9iagogICAgIC8vIE91ciBsYXll
ciBzaG91bGQgaGF2ZSBiZWVuIGRlc3Ryb3llZCBhbmQgY2xlYXJlZCBieSBub3cKICAgICBBU1NF
UlQoIWhhc0xheWVyKCkpOwogICAgIEFTU0VSVCghbV9sYXllcik7Ci0gICAgaW1hZ2VRdWFsaXR5
Q29udHJvbGxlcigpLT5vYmplY3REZXN0cm95ZWQodGhpcyk7CisgICAgaWYgKGdJbWFnZVF1YWxp
dHlDb250cm9sbGVyKSB7CisgICAgICAgIGdJbWFnZVF1YWxpdHlDb250cm9sbGVyLT5vYmplY3RE
ZXN0cm95ZWQodGhpcyk7CisgICAgICAgIGlmIChnSW1hZ2VRdWFsaXR5Q29udHJvbGxlci0+aXNF
bXB0eSgpKSB7CisgICAgICAgICAgICBkZWxldGUgZ0ltYWdlUXVhbGl0eUNvbnRyb2xsZXI7Cisg
ICAgICAgICAgICBnSW1hZ2VRdWFsaXR5Q29udHJvbGxlciA9IDA7CisgICAgICAgIH0KKyAgICB9
CiB9CiAKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRlc3Ryb3lMYXllcigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79451</attachid>
            <date>2011-01-19 10:56:16 -0800</date>
            <delta_ts>2011-01-20 12:52:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52645-20110119135614.patch</filename>
            <type>text/plain</type>
            <size>8380</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2MTI5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDEtMTkgIFN0ZXBoZW4g
V2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gaW4g
SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6b2JqZWN0RGVzdHJveWVkKCkuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjY0NQorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
UXVhbGl0eUNvbnRyb2xsZXI6OmlzRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VRdWFs
aXR5Q29udHJvbGxlcjo6cmVtb3ZlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VRdWFs
aXR5Q29udHJvbGxlcjo6c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUXVhbGl0eUNvbnRy
b2xsZXI6Om9iamVjdERlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVF1YWxpdHlD
b250cm9sbGVyOjpoaWdoUXVhbGl0eVJlcGFpbnRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OmltYWdlUXVhbGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6On5SZW5kZXJCb3hNb2RlbE9iamVjdCk6CisKIDIwMTEt
MDEtMTkgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gNzYxMjkp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MCw4ICs1MCw4IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnNfbGF5ZXJXYXNTZWwKIHN0YXRpYyBjb25zdCBkb3VibGUgY0ludGVycG9sYXRpb25DdXRvZmYg
PSA4MDAuICogODAwLjsKIHN0YXRpYyBjb25zdCBkb3VibGUgY0xvd1F1YWxpdHlUaW1lVGhyZXNo
b2xkID0gMC41MDA7IC8vIDUwMCBtcwogCi10eXBlZGVmIHBhaXI8UmVuZGVyQm94TW9kZWxPYmpl
Y3QqLCBjb25zdCB2b2lkKj4gTGFzdFBhaW50U2l6ZU1hcEtleTsKLXR5cGVkZWYgSGFzaE1hcDxM
YXN0UGFpbnRTaXplTWFwS2V5LCBJbnRTaXplPiBMYXN0UGFpbnRTaXplTWFwOwordHlwZWRlZiBI
YXNoTWFwPGNvbnN0IHZvaWQqLCBJbnRTaXplPiBMYXllclNpemVNYXA7Cit0eXBlZGVmIEhhc2hN
YXA8UmVuZGVyQm94TW9kZWxPYmplY3QqLCBMYXllclNpemVNYXA+IE9iamVjdExheWVyU2l6ZU1h
cDsKIAogLy8gVGhlIEhhc2hNYXAgZm9yIHN0b3JpbmcgY29udGludWF0aW9uIHBvaW50ZXJzLgog
Ly8gQW4gaW5saW5lIGNhbiBiZSBzcGxpdCB3aXRoIGJsb2NrcyBvY2N1cmluZyBpbiBiZXR3ZWVu
IHRoZSBpbmxpbmUgY29udGVudC4KQEAgLTY3LDE0ICs2NywxNiBAQCBjbGFzcyBJbWFnZVF1YWxp
dHlDb250cm9sbGVyIDogcHVibGljIE5vCiBwdWJsaWM6CiAgICAgSW1hZ2VRdWFsaXR5Q29udHJv
bGxlcigpOwogICAgIGJvb2wgc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0
KiwgUmVuZGVyQm94TW9kZWxPYmplY3QqLCBJbWFnZSosIGNvbnN0IHZvaWQqIGxheWVyLCBjb25z
dCBJbnRTaXplJik7Ci0gICAgdm9pZCBrZXlEZXN0cm95ZWQoTGFzdFBhaW50U2l6ZU1hcEtleSBr
ZXkpOworICAgIHZvaWQgcmVtb3ZlTGF5ZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqLCBMYXllclNp
emVNYXAqIGlubmVyTWFwLCBjb25zdCB2b2lkKiBsYXllcik7CisgICAgdm9pZCBzZXQoUmVuZGVy
Qm94TW9kZWxPYmplY3QqLCBMYXllclNpemVNYXAqIGlubmVyTWFwLCBjb25zdCB2b2lkKiBsYXll
ciwgY29uc3QgSW50U2l6ZSYpOwogICAgIHZvaWQgb2JqZWN0RGVzdHJveWVkKFJlbmRlckJveE1v
ZGVsT2JqZWN0Kik7CisgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gbV9vYmplY3RMYXllclNp
emVNYXAuaXNFbXB0eSgpOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBoaWdoUXVhbGl0eVJlcGFp
bnRUaW1lckZpcmVkKFRpbWVyPEltYWdlUXVhbGl0eUNvbnRyb2xsZXI+Kik7CiAgICAgdm9pZCBy
ZXN0YXJ0VGltZXIoKTsKIAotICAgIExhc3RQYWludFNpemVNYXAgbV9sYXN0UGFpbnRTaXplTWFw
OworICAgIE9iamVjdExheWVyU2l6ZU1hcCBtX29iamVjdExheWVyU2l6ZU1hcDsKICAgICBUaW1l
cjxJbWFnZVF1YWxpdHlDb250cm9sbGVyPiBtX3RpbWVyOwogICAgIGJvb2wgbV9hbmltYXRlZFJl
c2l6ZUlzQWN0aXZlOwogfTsKQEAgLTg1LDMxICs4Nyw0MSBAQCBJbWFnZVF1YWxpdHlDb250cm9s
bGVyOjpJbWFnZVF1YWxpdHlDb250CiB7CiB9CiAKLXZvaWQgSW1hZ2VRdWFsaXR5Q29udHJvbGxl
cjo6a2V5RGVzdHJveWVkKExhc3RQYWludFNpemVNYXBLZXkga2V5KQordm9pZCBJbWFnZVF1YWxp
dHlDb250cm9sbGVyOjpyZW1vdmVMYXllcihSZW5kZXJCb3hNb2RlbE9iamVjdCogb2JqZWN0LCBM
YXllclNpemVNYXAqIGlubmVyTWFwLCBjb25zdCB2b2lkKiBsYXllcikKIHsKLSAgICBtX2xhc3RQ
YWludFNpemVNYXAucmVtb3ZlKGtleSk7Ci0gICAgaWYgKG1fbGFzdFBhaW50U2l6ZU1hcC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgbV9hbmltYXRlZFJlc2l6ZUlzQWN0aXZlID0gZmFsc2U7Ci0gICAg
ICAgIG1fdGltZXIuc3RvcCgpOworICAgIGlmIChpbm5lck1hcCkgeworICAgICAgICBpbm5lck1h
cC0+cmVtb3ZlKGxheWVyKTsKKyAgICAgICAgaWYgKGlubmVyTWFwLT5pc0VtcHR5KCkpCisgICAg
ICAgICAgICBvYmplY3REZXN0cm95ZWQob2JqZWN0KTsKICAgICB9CiB9CiAgICAgCi12b2lkIElt
YWdlUXVhbGl0eUNvbnRyb2xsZXI6Om9iamVjdERlc3Ryb3llZChSZW5kZXJCb3hNb2RlbE9iamVj
dCogb2JqZWN0KQordm9pZCBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpzZXQoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIG9iamVjdCwgTGF5ZXJTaXplTWFwKiBpbm5lck1hcCwgY29uc3Qgdm9pZCogbGF5
ZXIsIGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAgVmVjdG9yPExhc3RQYWludFNpemVNYXBL
ZXk+IGtleXNUb0RpZTsKLSAgICBmb3IgKExhc3RQYWludFNpemVNYXA6Oml0ZXJhdG9yIGl0ID0g
bV9sYXN0UGFpbnRTaXplTWFwLmJlZ2luKCk7IGl0ICE9IG1fbGFzdFBhaW50U2l6ZU1hcC5lbmQo
KTsgKytpdCkKLSAgICAgICAgaWYgKGl0LT5maXJzdC5maXJzdCA9PSBvYmplY3QpCi0gICAgICAg
ICAgICBrZXlzVG9EaWUuYXBwZW5kKGl0LT5maXJzdCk7Ci0gICAgZm9yIChWZWN0b3I8TGFzdFBh
aW50U2l6ZU1hcEtleT46Oml0ZXJhdG9yIGl0ID0ga2V5c1RvRGllLmJlZ2luKCk7IGl0ICE9IGtl
eXNUb0RpZS5lbmQoKTsgKytpdCkKLSAgICAgICAga2V5RGVzdHJveWVkKCppdCk7CisgICAgaWYg
KGlubmVyTWFwKQorICAgICAgICBpbm5lck1hcC0+c2V0KGxheWVyLCBzaXplKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgTGF5ZXJTaXplTWFwIG5ld0lubmVyTWFwOworICAgICAgICBuZXdJbm5lck1h
cC5zZXQobGF5ZXIsIHNpemUpOworICAgICAgICBtX29iamVjdExheWVyU2l6ZU1hcC5zZXQob2Jq
ZWN0LCBuZXdJbm5lck1hcCk7CisgICAgfQogfQogICAgIAordm9pZCBJbWFnZVF1YWxpdHlDb250
cm9sbGVyOjpvYmplY3REZXN0cm95ZWQoUmVuZGVyQm94TW9kZWxPYmplY3QqIG9iamVjdCkKK3sK
KyAgICBtX29iamVjdExheWVyU2l6ZU1hcC5yZW1vdmUob2JqZWN0KTsKKyAgICBpZiAobV9vYmpl
Y3RMYXllclNpemVNYXAuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fYW5pbWF0ZWRSZXNpemVJc0Fj
dGl2ZSA9IGZhbHNlOworICAgICAgICBtX3RpbWVyLnN0b3AoKTsKKyAgICB9Cit9CisKIHZvaWQg
SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6aGlnaFF1YWxpdHlSZXBhaW50VGltZXJGaXJlZChUaW1l
cjxJbWFnZVF1YWxpdHlDb250cm9sbGVyPiopCiB7CiAgICAgaWYgKG1fYW5pbWF0ZWRSZXNpemVJ
c0FjdGl2ZSkgewogICAgICAgICBtX2FuaW1hdGVkUmVzaXplSXNBY3RpdmUgPSBmYWxzZTsKLSAg
ICAgICAgZm9yIChMYXN0UGFpbnRTaXplTWFwOjppdGVyYXRvciBpdCA9IG1fbGFzdFBhaW50U2l6
ZU1hcC5iZWdpbigpOyBpdCAhPSBtX2xhc3RQYWludFNpemVNYXAuZW5kKCk7ICsraXQpCi0gICAg
ICAgICAgICBpdC0+Zmlyc3QuZmlyc3QtPnJlcGFpbnQoKTsKKyAgICAgICAgZm9yIChPYmplY3RM
YXllclNpemVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9vYmplY3RMYXllclNpemVNYXAuYmVnaW4oKTsg
aXQgIT0gbV9vYmplY3RMYXllclNpemVNYXAuZW5kKCk7ICsraXQpCisgICAgICAgICAgICBpdC0+
Zmlyc3QtPnJlcGFpbnQoKTsKICAgICB9CiB9CiAKQEAgLTEyOSwxNyArMTQxLDE2IEBAIGJvb2wg
SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnQKICAgICAvLyBpcyBhY3R1YWxseSBi
ZWluZyBzY2FsZWQuCiAgICAgSW50U2l6ZSBpbWFnZVNpemUoaW1hZ2UtPndpZHRoKCksIGltYWdl
LT5oZWlnaHQoKSk7CiAKLSAgICAvLyBMb29rIG91cnNlbHZlcyB1cCBpbiB0aGUgaGFzaHRhYmxl
LgotICAgIExhc3RQYWludFNpemVNYXBLZXkga2V5KG9iamVjdCwgbGF5ZXIpOwotICAgIExhc3RQ
YWludFNpemVNYXA6Oml0ZXJhdG9yIGkgPSBtX2xhc3RQYWludFNpemVNYXAuZmluZChrZXkpOwor
ICAgIC8vIExvb2sgb3Vyc2VsdmVzIHVwIGluIHRoZSBoYXNodGFibGVzLgorICAgIE9iamVjdExh
eWVyU2l6ZU1hcDo6aXRlcmF0b3IgaSA9IG1fb2JqZWN0TGF5ZXJTaXplTWFwLmZpbmQob2JqZWN0
KTsKKyAgICBMYXllclNpemVNYXAqIGlubmVyTWFwID0gaSAhPSBtX29iamVjdExheWVyU2l6ZU1h
cC5lbmQoKSA/ICZpLT5zZWNvbmQgOiAwOworICAgIEludFNpemUgb2xkU2l6ZSA9IGlubmVyTWFw
ID8gaW5uZXJNYXAtPmdldChsYXllcikgOiBJbnRTaXplKCk7CiAKICAgICBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGN1cnJlbnRUcmFuc2Zvcm0gPSBjb250ZXh0LT5nZXRDVE0oKTsKICAgICBib29s
IGNvbnRleHRJc1NjYWxlZCA9ICFjdXJyZW50VHJhbnNmb3JtLmlzSWRlbnRpdHlPclRyYW5zbGF0
aW9uT3JGbGlwcGVkKCk7CiAgICAgaWYgKCFjb250ZXh0SXNTY2FsZWQgJiYgaW1hZ2VTaXplID09
IHNpemUpIHsKICAgICAgICAgLy8gVGhlcmUgaXMgbm8gc2NhbGUgaW4gZWZmZWN0LiBJZiB3ZSBo
YWQgYSBzY2FsZSBpbiBlZmZlY3QgYmVmb3JlLCB3ZSBjYW4ganVzdCByZW1vdmUgdGhpcyBvYmpl
Y3QgZnJvbSB0aGUgbGlzdC4KLSAgICAgICAgaWYgKGkgIT0gbV9sYXN0UGFpbnRTaXplTWFwLmVu
ZCgpKQotICAgICAgICAgICAgbV9sYXN0UGFpbnRTaXplTWFwLnJlbW92ZShrZXkpOwotCisgICAg
ICAgIHJlbW92ZUxheWVyKG9iamVjdCwgaW5uZXJNYXAsIGxheWVyKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIApAQCAtMTQ5LDM5ICsxNjAsNDQgQEAgYm9vbCBJbWFnZVF1YWxpdHlD
b250cm9sbGVyOjpzaG91bGRQYWludAogICAgICAgICBpZiAodG90YWxQaXhlbHMgPiBjSW50ZXJw
b2xhdGlvbkN1dG9mZikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKwogICAgIC8v
IElmIGFuIGFuaW1hdGVkIHJlc2l6ZSBpcyBhY3RpdmUsIHBhaW50IGluIGxvdyBxdWFsaXR5IGFu
ZCBraWNrIHRoZSB0aW1lciBhaGVhZC4KICAgICBpZiAobV9hbmltYXRlZFJlc2l6ZUlzQWN0aXZl
KSB7Ci0gICAgICAgIG1fbGFzdFBhaW50U2l6ZU1hcC5zZXQoa2V5LCBzaXplKTsKKyAgICAgICAg
c2V0KG9iamVjdCwgaW5uZXJNYXAsIGxheWVyLCBzaXplKTsKICAgICAgICAgcmVzdGFydFRpbWVy
KCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICAvLyBJZiB0aGlzIGlzIHRoZSBm
aXJzdCB0aW1lIHJlc2l6aW5nIHRoaXMgaW1hZ2UsIG9yIGl0cyBzaXplIGlzIHRoZQorICAgIC8v
IElmIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgcmVzaXppbmcgIHRoaXMgaW1hZ2UsIG9yIGl0cyBz
aXplIGlzIHRoZQogICAgIC8vIHNhbWUgYXMgdGhlIGxhc3QgcmVzaXplLCBkcmF3IGF0IGhpZ2gg
cmVzLCBidXQgcmVjb3JkIHRoZSBwYWludAogICAgIC8vIHNpemUgYW5kIHNldCB0aGUgdGltZXIu
Ci0gICAgaWYgKGkgPT0gbV9sYXN0UGFpbnRTaXplTWFwLmVuZCgpIHx8IHNpemUgPT0gaS0+c2Vj
b25kKSB7CisgICAgaWYgKG9sZFNpemUgPT0gSW50U2l6ZSgpIHx8IG9sZFNpemUgPT0gc2l6ZSkg
ewogICAgICAgICByZXN0YXJ0VGltZXIoKTsKLSAgICAgICAgbV9sYXN0UGFpbnRTaXplTWFwLnNl
dChrZXksIHNpemUpOworICAgICAgICBzZXQob2JqZWN0LCBpbm5lck1hcCwgbGF5ZXIsIHNpemUp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIElmIHRoZSB0aW1lciBpcyBu
byBsb25nZXIgYWN0aXZlLCBkcmF3IGF0IGhpZ2ggcXVhbGl0eSBhbmQgZG9uJ3QKICAgICAvLyBz
ZXQgdGhlIHRpbWVyLgogICAgIGlmICghbV90aW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGtl
eURlc3Ryb3llZChrZXkpOworICAgICAgICByZW1vdmVMYXllcihvYmplY3QsIGlubmVyTWFwLCBs
YXllcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLy8gVGhpcyBvYmplY3Qg
aGFzIGJlZW4gcmVzaXplZCB0byB0d28gZGlmZmVyZW50IHNpemVzIHdoaWxlIHRoZSB0aW1lcgog
ICAgIC8vIGlzIGFjdGl2ZSwgc28gZHJhdyBhdCBsb3cgcXVhbGl0eSwgc2V0IHRoZSBmbGFnIGZv
ciBhbmltYXRlZCByZXNpemVzIGFuZAogICAgIC8vIHRoZSBvYmplY3QgdG8gdGhlIGxpc3QgZm9y
IGhpZ2ggcXVhbGl0eSByZWRyYXcuCi0gICAgbV9sYXN0UGFpbnRTaXplTWFwLnNldChrZXksIHNp
emUpOworICAgIHNldChvYmplY3QsIGlubmVyTWFwLCBsYXllciwgc2l6ZSk7CiAgICAgbV9hbmlt
YXRlZFJlc2l6ZUlzQWN0aXZlID0gdHJ1ZTsKICAgICByZXN0YXJ0VGltZXIoKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAorc3RhdGljIEltYWdlUXVhbGl0eUNvbnRyb2xsZXIqIGdJbWFnZVF1YWxp
dHlDb250cm9sbGVyID0gMDsKKwogc3RhdGljIEltYWdlUXVhbGl0eUNvbnRyb2xsZXIqIGltYWdl
UXVhbGl0eUNvbnRyb2xsZXIoKQogewotICAgIHN0YXRpYyBJbWFnZVF1YWxpdHlDb250cm9sbGVy
KiBjb250cm9sbGVyID0gbmV3IEltYWdlUXVhbGl0eUNvbnRyb2xsZXI7Ci0gICAgcmV0dXJuIGNv
bnRyb2xsZXI7CisgICAgaWYgKCFnSW1hZ2VRdWFsaXR5Q29udHJvbGxlcikKKyAgICAgICAgZ0lt
YWdlUXVhbGl0eUNvbnRyb2xsZXIgPSBuZXcgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjsKKworICAg
IHJldHVybiBnSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjsKIH0KIAogdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6c2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUgcykKQEAgLTIyMiw3ICsy
MzgsMTMgQEAgUmVuZGVyQm94TW9kZWxPYmplY3Q6On5SZW5kZXJCb3hNb2RlbE9iagogICAgIC8v
IE91ciBsYXllciBzaG91bGQgaGF2ZSBiZWVuIGRlc3Ryb3llZCBhbmQgY2xlYXJlZCBieSBub3cK
ICAgICBBU1NFUlQoIWhhc0xheWVyKCkpOwogICAgIEFTU0VSVCghbV9sYXllcik7Ci0gICAgaW1h
Z2VRdWFsaXR5Q29udHJvbGxlcigpLT5vYmplY3REZXN0cm95ZWQodGhpcyk7CisgICAgaWYgKGdJ
bWFnZVF1YWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIGdJbWFnZVF1YWxpdHlDb250cm9sbGVy
LT5vYmplY3REZXN0cm95ZWQodGhpcyk7CisgICAgICAgIGlmIChnSW1hZ2VRdWFsaXR5Q29udHJv
bGxlci0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBkZWxldGUgZ0ltYWdlUXVhbGl0eUNvbnRy
b2xsZXI7CisgICAgICAgICAgICBnSW1hZ2VRdWFsaXR5Q29udHJvbGxlciA9IDA7CisgICAgICAg
IH0KKyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRlc3Ryb3lMYXllcigp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79639</attachid>
            <date>2011-01-20 12:52:17 -0800</date>
            <delta_ts>2011-01-27 15:31:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52645-20110120155215.patch</filename>
            <type>text/plain</type>
            <size>8475</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2MjcxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDEtMTkgIFN0ZXBoZW4g
V2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gaW4g
SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6b2JqZWN0RGVzdHJveWVkKCkuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjY0NQorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
UXVhbGl0eUNvbnRyb2xsZXI6OmlzRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VRdWFs
aXR5Q29udHJvbGxlcjo6cmVtb3ZlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VRdWFs
aXR5Q29udHJvbGxlcjo6c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUXVhbGl0eUNvbnRy
b2xsZXI6Om9iamVjdERlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVF1YWxpdHlD
b250cm9sbGVyOjpoaWdoUXVhbGl0eVJlcGFpbnRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OmltYWdlUXVhbGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6On5SZW5kZXJCb3hNb2RlbE9iamVjdCk6CisKIDIwMTEt
MDEtMjAgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiA3NjI3MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUwLDggKzUwLDggQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c19s
YXllcldhc1NlbAogc3RhdGljIGNvbnN0IGRvdWJsZSBjSW50ZXJwb2xhdGlvbkN1dG9mZiA9IDgw
MC4gKiA4MDAuOwogc3RhdGljIGNvbnN0IGRvdWJsZSBjTG93UXVhbGl0eVRpbWVUaHJlc2hvbGQg
PSAwLjUwMDsgLy8gNTAwIG1zCiAKLXR5cGVkZWYgcGFpcjxSZW5kZXJCb3hNb2RlbE9iamVjdCos
IGNvbnN0IHZvaWQqPiBMYXN0UGFpbnRTaXplTWFwS2V5OwotdHlwZWRlZiBIYXNoTWFwPExhc3RQ
YWludFNpemVNYXBLZXksIEludFNpemU+IExhc3RQYWludFNpemVNYXA7Cit0eXBlZGVmIEhhc2hN
YXA8Y29uc3Qgdm9pZCosIEludFNpemU+IExheWVyU2l6ZU1hcDsKK3R5cGVkZWYgSGFzaE1hcDxS
ZW5kZXJCb3hNb2RlbE9iamVjdCosIExheWVyU2l6ZU1hcD4gT2JqZWN0TGF5ZXJTaXplTWFwOwog
CiAvLyBUaGUgSGFzaE1hcCBmb3Igc3RvcmluZyBjb250aW51YXRpb24gcG9pbnRlcnMuCiAvLyBB
biBpbmxpbmUgY2FuIGJlIHNwbGl0IHdpdGggYmxvY2tzIG9jY3VyaW5nIGluIGJldHdlZW4gdGhl
IGlubGluZSBjb250ZW50LgpAQCAtNjgsMTQgKzY4LDE2IEBAIGNsYXNzIEltYWdlUXVhbGl0eUNv
bnRyb2xsZXIgewogcHVibGljOgogICAgIEltYWdlUXVhbGl0eUNvbnRyb2xsZXIoKTsKICAgICBi
b29sIHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCosIFJlbmRlckJveE1v
ZGVsT2JqZWN0KiwgSW1hZ2UqLCBjb25zdCB2b2lkKiBsYXllciwgY29uc3QgSW50U2l6ZSYpOwot
ICAgIHZvaWQga2V5RGVzdHJveWVkKExhc3RQYWludFNpemVNYXBLZXkga2V5KTsKKyAgICB2b2lk
IHJlbW92ZUxheWVyKFJlbmRlckJveE1vZGVsT2JqZWN0KiwgTGF5ZXJTaXplTWFwKiBpbm5lck1h
cCwgY29uc3Qgdm9pZCogbGF5ZXIpOworICAgIHZvaWQgc2V0KFJlbmRlckJveE1vZGVsT2JqZWN0
KiwgTGF5ZXJTaXplTWFwKiBpbm5lck1hcCwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IEludFNp
emUmKTsKICAgICB2b2lkIG9iamVjdERlc3Ryb3llZChSZW5kZXJCb3hNb2RlbE9iamVjdCopOwor
ICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuIG1fb2JqZWN0TGF5ZXJTaXplTWFwLmlzRW1wdHko
KTsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgaGlnaFF1YWxpdHlSZXBhaW50VGltZXJGaXJlZChU
aW1lcjxJbWFnZVF1YWxpdHlDb250cm9sbGVyPiopOwogICAgIHZvaWQgcmVzdGFydFRpbWVyKCk7
CiAKLSAgICBMYXN0UGFpbnRTaXplTWFwIG1fbGFzdFBhaW50U2l6ZU1hcDsKKyAgICBPYmplY3RM
YXllclNpemVNYXAgbV9vYmplY3RMYXllclNpemVNYXA7CiAgICAgVGltZXI8SW1hZ2VRdWFsaXR5
Q29udHJvbGxlcj4gbV90aW1lcjsKICAgICBib29sIG1fYW5pbWF0ZWRSZXNpemVJc0FjdGl2ZTsK
IH07CkBAIC04NiwzMSArODgsNDEgQEAgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6SW1hZ2VRdWFs
aXR5Q29udAogewogfQogCi12b2lkIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OmtleURlc3Ryb3ll
ZChMYXN0UGFpbnRTaXplTWFwS2V5IGtleSkKK3ZvaWQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6
cmVtb3ZlTGF5ZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqIG9iamVjdCwgTGF5ZXJTaXplTWFwKiBp
bm5lck1hcCwgY29uc3Qgdm9pZCogbGF5ZXIpCiB7Ci0gICAgbV9sYXN0UGFpbnRTaXplTWFwLnJl
bW92ZShrZXkpOwotICAgIGlmIChtX2xhc3RQYWludFNpemVNYXAuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIG1fYW5pbWF0ZWRSZXNpemVJc0FjdGl2ZSA9IGZhbHNlOwotICAgICAgICBtX3RpbWVyLnN0
b3AoKTsKKyAgICBpZiAoaW5uZXJNYXApIHsKKyAgICAgICAgaW5uZXJNYXAtPnJlbW92ZShsYXll
cik7CisgICAgICAgIGlmIChpbm5lck1hcC0+aXNFbXB0eSgpKQorICAgICAgICAgICAgb2JqZWN0
RGVzdHJveWVkKG9iamVjdCk7CiAgICAgfQogfQogICAgIAotdm9pZCBJbWFnZVF1YWxpdHlDb250
cm9sbGVyOjpvYmplY3REZXN0cm95ZWQoUmVuZGVyQm94TW9kZWxPYmplY3QqIG9iamVjdCkKK3Zv
aWQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2V0KFJlbmRlckJveE1vZGVsT2JqZWN0KiBvYmpl
Y3QsIExheWVyU2l6ZU1hcCogaW5uZXJNYXAsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBJbnRT
aXplJiBzaXplKQogewotICAgIFZlY3RvcjxMYXN0UGFpbnRTaXplTWFwS2V5PiBrZXlzVG9EaWU7
Ci0gICAgZm9yIChMYXN0UGFpbnRTaXplTWFwOjppdGVyYXRvciBpdCA9IG1fbGFzdFBhaW50U2l6
ZU1hcC5iZWdpbigpOyBpdCAhPSBtX2xhc3RQYWludFNpemVNYXAuZW5kKCk7ICsraXQpCi0gICAg
ICAgIGlmIChpdC0+Zmlyc3QuZmlyc3QgPT0gb2JqZWN0KQotICAgICAgICAgICAga2V5c1RvRGll
LmFwcGVuZChpdC0+Zmlyc3QpOwotICAgIGZvciAoVmVjdG9yPExhc3RQYWludFNpemVNYXBLZXk+
OjppdGVyYXRvciBpdCA9IGtleXNUb0RpZS5iZWdpbigpOyBpdCAhPSBrZXlzVG9EaWUuZW5kKCk7
ICsraXQpCi0gICAgICAgIGtleURlc3Ryb3llZCgqaXQpOworICAgIGlmIChpbm5lck1hcCkKKyAg
ICAgICAgaW5uZXJNYXAtPnNldChsYXllciwgc2l6ZSk7CisgICAgZWxzZSB7CisgICAgICAgIExh
eWVyU2l6ZU1hcCBuZXdJbm5lck1hcDsKKyAgICAgICAgbmV3SW5uZXJNYXAuc2V0KGxheWVyLCBz
aXplKTsKKyAgICAgICAgbV9vYmplY3RMYXllclNpemVNYXAuc2V0KG9iamVjdCwgbmV3SW5uZXJN
YXApOworICAgIH0KIH0KICAgICAKK3ZvaWQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6b2JqZWN0
RGVzdHJveWVkKFJlbmRlckJveE1vZGVsT2JqZWN0KiBvYmplY3QpCit7CisgICAgbV9vYmplY3RM
YXllclNpemVNYXAucmVtb3ZlKG9iamVjdCk7CisgICAgaWYgKG1fb2JqZWN0TGF5ZXJTaXplTWFw
LmlzRW1wdHkoKSkgeworICAgICAgICBtX2FuaW1hdGVkUmVzaXplSXNBY3RpdmUgPSBmYWxzZTsK
KyAgICAgICAgbV90aW1lci5zdG9wKCk7CisgICAgfQorfQorCiB2b2lkIEltYWdlUXVhbGl0eUNv
bnRyb2xsZXI6OmhpZ2hRdWFsaXR5UmVwYWludFRpbWVyRmlyZWQoVGltZXI8SW1hZ2VRdWFsaXR5
Q29udHJvbGxlcj4qKQogewogICAgIGlmIChtX2FuaW1hdGVkUmVzaXplSXNBY3RpdmUpIHsKICAg
ICAgICAgbV9hbmltYXRlZFJlc2l6ZUlzQWN0aXZlID0gZmFsc2U7Ci0gICAgICAgIGZvciAoTGFz
dFBhaW50U2l6ZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2xhc3RQYWludFNpemVNYXAuYmVnaW4oKTsg
aXQgIT0gbV9sYXN0UGFpbnRTaXplTWFwLmVuZCgpOyArK2l0KQotICAgICAgICAgICAgaXQtPmZp
cnN0LmZpcnN0LT5yZXBhaW50KCk7CisgICAgICAgIGZvciAoT2JqZWN0TGF5ZXJTaXplTWFwOjpp
dGVyYXRvciBpdCA9IG1fb2JqZWN0TGF5ZXJTaXplTWFwLmJlZ2luKCk7IGl0ICE9IG1fb2JqZWN0
TGF5ZXJTaXplTWFwLmVuZCgpOyArK2l0KQorICAgICAgICAgICAgaXQtPmZpcnN0LT5yZXBhaW50
KCk7CiAgICAgfQogfQogCkBAIC0xMzAsMTcgKzE0MiwyNCBAQCBib29sIEltYWdlUXVhbGl0eUNv
bnRyb2xsZXI6OnNob3VsZFBhaW50CiAgICAgLy8gaXMgYWN0dWFsbHkgYmVpbmcgc2NhbGVkLgog
ICAgIEludFNpemUgaW1hZ2VTaXplKGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCkpOwog
Ci0gICAgLy8gTG9vayBvdXJzZWx2ZXMgdXAgaW4gdGhlIGhhc2h0YWJsZS4KLSAgICBMYXN0UGFp
bnRTaXplTWFwS2V5IGtleShvYmplY3QsIGxheWVyKTsKLSAgICBMYXN0UGFpbnRTaXplTWFwOjpp
dGVyYXRvciBpID0gbV9sYXN0UGFpbnRTaXplTWFwLmZpbmQoa2V5KTsKKyAgICAvLyBMb29rIG91
cnNlbHZlcyB1cCBpbiB0aGUgaGFzaHRhYmxlcy4KKyAgICBPYmplY3RMYXllclNpemVNYXA6Oml0
ZXJhdG9yIGkgPSBtX29iamVjdExheWVyU2l6ZU1hcC5maW5kKG9iamVjdCk7CisgICAgTGF5ZXJT
aXplTWFwKiBpbm5lck1hcCA9IGkgIT0gbV9vYmplY3RMYXllclNpemVNYXAuZW5kKCkgPyAmaS0+
c2Vjb25kIDogMDsKKyAgICBJbnRTaXplIG9sZFNpemU7CisgICAgYm9vbCBpc0ZpcnN0UmVzaXpl
ID0gdHJ1ZTsKKyAgICBpZiAoaW5uZXJNYXApIHsKKyAgICAgICAgTGF5ZXJTaXplTWFwOjppdGVy
YXRvciBqID0gaW5uZXJNYXAtPmZpbmQobGF5ZXIpOworICAgICAgICBpZiAoaiAhPSBpbm5lck1h
cC0+ZW5kKCkpIHsKKyAgICAgICAgICAgIGlzRmlyc3RSZXNpemUgPSBmYWxzZTsKKyAgICAgICAg
ICAgIG9sZFNpemUgPSBqLT5zZWNvbmQ7CisgICAgICAgIH0KKyAgICB9CiAKICAgICBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGN1cnJlbnRUcmFuc2Zvcm0gPSBjb250ZXh0LT5nZXRDVE0oKTsKICAg
ICBib29sIGNvbnRleHRJc1NjYWxlZCA9ICFjdXJyZW50VHJhbnNmb3JtLmlzSWRlbnRpdHlPclRy
YW5zbGF0aW9uT3JGbGlwcGVkKCk7CiAgICAgaWYgKCFjb250ZXh0SXNTY2FsZWQgJiYgaW1hZ2VT
aXplID09IHNpemUpIHsKICAgICAgICAgLy8gVGhlcmUgaXMgbm8gc2NhbGUgaW4gZWZmZWN0LiBJ
ZiB3ZSBoYWQgYSBzY2FsZSBpbiBlZmZlY3QgYmVmb3JlLCB3ZSBjYW4ganVzdCByZW1vdmUgdGhp
cyBvYmplY3QgZnJvbSB0aGUgbGlzdC4KLSAgICAgICAgaWYgKGkgIT0gbV9sYXN0UGFpbnRTaXpl
TWFwLmVuZCgpKQotICAgICAgICAgICAgbV9sYXN0UGFpbnRTaXplTWFwLnJlbW92ZShrZXkpOwot
CisgICAgICAgIHJlbW92ZUxheWVyKG9iamVjdCwgaW5uZXJNYXAsIGxheWVyKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTUwLDM5ICsxNjksNDQgQEAgYm9vbCBJbWFnZVF1
YWxpdHlDb250cm9sbGVyOjpzaG91bGRQYWludAogICAgICAgICBpZiAodG90YWxQaXhlbHMgPiBj
SW50ZXJwb2xhdGlvbkN1dG9mZikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKwog
ICAgIC8vIElmIGFuIGFuaW1hdGVkIHJlc2l6ZSBpcyBhY3RpdmUsIHBhaW50IGluIGxvdyBxdWFs
aXR5IGFuZCBraWNrIHRoZSB0aW1lciBhaGVhZC4KICAgICBpZiAobV9hbmltYXRlZFJlc2l6ZUlz
QWN0aXZlKSB7Ci0gICAgICAgIG1fbGFzdFBhaW50U2l6ZU1hcC5zZXQoa2V5LCBzaXplKTsKKyAg
ICAgICAgc2V0KG9iamVjdCwgaW5uZXJNYXAsIGxheWVyLCBzaXplKTsKICAgICAgICAgcmVzdGFy
dFRpbWVyKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAvLyBJZiB0aGlzIGlz
IHRoZSBmaXJzdCB0aW1lIHJlc2l6aW5nIHRoaXMgaW1hZ2UsIG9yIGl0cyBzaXplIGlzIHRoZQog
ICAgIC8vIHNhbWUgYXMgdGhlIGxhc3QgcmVzaXplLCBkcmF3IGF0IGhpZ2ggcmVzLCBidXQgcmVj
b3JkIHRoZSBwYWludAogICAgIC8vIHNpemUgYW5kIHNldCB0aGUgdGltZXIuCi0gICAgaWYgKGkg
PT0gbV9sYXN0UGFpbnRTaXplTWFwLmVuZCgpIHx8IHNpemUgPT0gaS0+c2Vjb25kKSB7CisgICAg
aWYgKGlzRmlyc3RSZXNpemUgfHwgb2xkU2l6ZSA9PSBzaXplKSB7CiAgICAgICAgIHJlc3RhcnRU
aW1lcigpOwotICAgICAgICBtX2xhc3RQYWludFNpemVNYXAuc2V0KGtleSwgc2l6ZSk7CisgICAg
ICAgIHNldChvYmplY3QsIGlubmVyTWFwLCBsYXllciwgc2l6ZSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgLy8gSWYgdGhlIHRpbWVyIGlzIG5vIGxvbmdlciBhY3RpdmUsIGRy
YXcgYXQgaGlnaCBxdWFsaXR5IGFuZCBkb24ndAogICAgIC8vIHNldCB0aGUgdGltZXIuCiAgICAg
aWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpIHsKLSAgICAgICAga2V5RGVzdHJveWVkKGtleSk7Cisg
ICAgICAgIHJlbW92ZUxheWVyKG9iamVjdCwgaW5uZXJNYXAsIGxheWVyKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBUaGlzIG9iamVjdCBoYXMgYmVlbiByZXNpemVkIHRv
IHR3byBkaWZmZXJlbnQgc2l6ZXMgd2hpbGUgdGhlIHRpbWVyCiAgICAgLy8gaXMgYWN0aXZlLCBz
byBkcmF3IGF0IGxvdyBxdWFsaXR5LCBzZXQgdGhlIGZsYWcgZm9yIGFuaW1hdGVkIHJlc2l6ZXMg
YW5kCiAgICAgLy8gdGhlIG9iamVjdCB0byB0aGUgbGlzdCBmb3IgaGlnaCBxdWFsaXR5IHJlZHJh
dy4KLSAgICBtX2xhc3RQYWludFNpemVNYXAuc2V0KGtleSwgc2l6ZSk7CisgICAgc2V0KG9iamVj
dCwgaW5uZXJNYXAsIGxheWVyLCBzaXplKTsKICAgICBtX2FuaW1hdGVkUmVzaXplSXNBY3RpdmUg
PSB0cnVlOwogICAgIHJlc3RhcnRUaW1lcigpOwogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0
aWMgSW1hZ2VRdWFsaXR5Q29udHJvbGxlciogZ0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIgPSAwOwor
CiBzdGF0aWMgSW1hZ2VRdWFsaXR5Q29udHJvbGxlciogaW1hZ2VRdWFsaXR5Q29udHJvbGxlcigp
CiB7Ci0gICAgc3RhdGljIEltYWdlUXVhbGl0eUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBuZXcg
SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjsKLSAgICByZXR1cm4gY29udHJvbGxlcjsKKyAgICBpZiAo
IWdJbWFnZVF1YWxpdHlDb250cm9sbGVyKQorICAgICAgICBnSW1hZ2VRdWFsaXR5Q29udHJvbGxl
ciA9IG5ldyBJbWFnZVF1YWxpdHlDb250cm9sbGVyOworCisgICAgcmV0dXJuIGdJbWFnZVF1YWxp
dHlDb250cm9sbGVyOwogfQogCiB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzZXRTZWxlY3Rp
b25TdGF0ZShTZWxlY3Rpb25TdGF0ZSBzKQpAQCAtMjIzLDcgKzI0NywxMyBAQCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6flJlbmRlckJveE1vZGVsT2JqCiAgICAgLy8gT3VyIGxheWVyIHNob3VsZCBo
YXZlIGJlZW4gZGVzdHJveWVkIGFuZCBjbGVhcmVkIGJ5IG5vdwogICAgIEFTU0VSVCghaGFzTGF5
ZXIoKSk7CiAgICAgQVNTRVJUKCFtX2xheWVyKTsKLSAgICBpbWFnZVF1YWxpdHlDb250cm9sbGVy
KCktPm9iamVjdERlc3Ryb3llZCh0aGlzKTsKKyAgICBpZiAoZ0ltYWdlUXVhbGl0eUNvbnRyb2xs
ZXIpIHsKKyAgICAgICAgZ0ltYWdlUXVhbGl0eUNvbnRyb2xsZXItPm9iamVjdERlc3Ryb3llZCh0
aGlzKTsKKyAgICAgICAgaWYgKGdJbWFnZVF1YWxpdHlDb250cm9sbGVyLT5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgIGRlbGV0ZSBnSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjsKKyAgICAgICAgICAg
IGdJbWFnZVF1YWxpdHlDb250cm9sbGVyID0gMDsKKyAgICAgICAgfQorICAgIH0KIH0KIAogdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZGVzdHJveUxheWVyKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80369</attachid>
            <date>2011-01-27 15:31:37 -0800</date>
            <delta_ts>2011-01-27 16:13:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52645-20110127153136.patch</filename>
            <type>text/plain</type>
            <size>11086</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2ODU0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAKKzIwMTEtMDEtMjcgIFN0ZXBoZW4g
V2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gaW4g
SW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6b2JqZWN0RGVzdHJveWVkKCkuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjY0NQorCisgICAgICAgIEluIHI3
MjI4MiwgSSBpbmFkdmVydGVudGx5IGludHJvZHVjZWQgdGhpcyByZWdyZXNzaW9uIGJ5IHVzaW5n
IGEKKyAgICAgICAgbGluZWFyIHNlYXJjaCB0aHJvdWdoIHRoZSBoYXNoIG1hcCBvbiBvYmplY3Qg
ZGVzdHJ1Y3Rpb24uICBUaGlzIHdhcworICAgICAgICBiZWNhdXNlIHRoZSBoYXNoIGtleSBjb25z
aXN0ZWQgb2YgYm90aCBvYmplY3QgcG9pbnRlciBhbmQgbGF5ZXIgaWQsCisgICAgICAgIGJ1dCBv
biBvYmplY3QgZGVzdHJ1Y3Rpb24gd2Ugb25seSBrbm93IHRoZSBvYmplY3QgcG9pbnRlciwgcmVx
dWlyaW5nCisgICAgICAgIGEgc2VhcmNoIHRvIGZpbmQgYWxsIHRoZSBsYXllcnMuIAorICAgICAg
ICBCeSByZXBsYWNpbmcgdGhlIGhhc2ggbWFwIHdpdGggdHdvIG5lc3RlZCBoYXNoIG1hcHMsIHdo
ZXJlIHRoZSBvdXRlciBrZXkKKyAgICAgICAgaXMgdGhlIG9iamVjdCBhbmQgdGhlIGlubmVyIGtl
eSBpcyB0aGUgbGF5ZXIsIHdlIGNhbiBmaW5kIGFsbCB0aGUKKyAgICAgICAgcmVsZXZhbnQgZGF0
YSBmb3IgYW4gb2JqZWN0IGluIG9uZSBoYXNoIGxvb2t1cC4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIFJlcGxhY2UgdGhlIChvYmplY3Qs
bGF5ZXIpLT5zaXplIEhhc2hNYXAgd2l0aCBvYmplY3QtPmxheWVyIGFuZAorICAgICAgICBsYXll
ci0+c2l6ZSBIYXNoTWFwcy4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUXVhbGl0eUNvbnRyb2xs
ZXI6OmlzRW1wdHkpOgorICAgICAgICBJbXBsZW1lbnQgaXNFbXB0eSgpIGZvciB0aGUgb3V0ZXIg
SGFzaE1hcC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnJlbW92
ZUxheWVyKToKKyAgICAgICAgV2hlbiBhIGxheWVyIGlzIHJlbW92ZWQsIHJlbW92ZSBpdCBmcm9t
IHRoZSBpbm5lciBoYXNoIG1hcC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUXVhbGl0eUNvbnRy
b2xsZXI6OnNldCk6CisgICAgICAgIEltcGxlbWVudCBzZXQoKTogIGlmIHRoZSBpbm5lciBtYXAg
ZXhpc3RzLCBzZXQgdGhlIGxheWVyLT5zaXplIHR1cGxlCisgICAgICAgIGRpcmVjdGx5LiAgSWYg
bm90LCBjcmVhdGUgYSBuZXcgaW5uZXIgbWFwLCBzZXQgdGhlIHR1cGxlLCBhbmQgaW5zZXJ0Cisg
ICAgICAgIGl0IGluIHRoZSBvdXRlciBtYXAuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVF1YWxp
dHlDb250cm9sbGVyOjpvYmplY3REZXN0cm95ZWQpOgorICAgICAgICBMb29rIHVwIHRoZSBvYmpl
Y3QgaW4gdGhlIG91dGVyIG1hcCBvbmx5LgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VRdWFsaXR5
Q29udHJvbGxlcjo6aGlnaFF1YWxpdHlSZXBhaW50VGltZXJGaXJlZCk6CisgICAgICAgIENvc21l
dGljIGNoYW5nZXMgZm9yIHRoZSByZW5hbWVkIG5vdy1vdXRlciBoYXNoIG1hcC4KKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5
KToKKyAgICAgICAgRG8gYm90aCBvdXRlciBhbmQgaW5uZXIgaGFzaCBtYXAgbG9va3Vwcy4gIENh
bGwgc2V0KCkgdG8gYWRkL3VwZGF0ZQorICAgICAgICBlbnRyaWVzIHRvIHRoZSBoYXNoIG1hcHMu
ICBrZXlEZXN0cm95ZWQoKSBpcyBub3cgcmVtb3ZlTGF5ZXIoKS4KKyAgICAgICAgKFdlYkNvcmU6
OmltYWdlUXVhbGl0eUNvbnRyb2xsZXIpOgorICAgICAgICBNYWtlIHRoZSBJbWFnZVF1YWxpdHlD
b250cm9sbGVyIGEgZmlsZS1zdGF0aWMgZ2xvYmFsLCBzbyBpdCBjYW4gYmUKKyAgICAgICAgY3Jl
YXRlZCBhbmQgZGVzdHJveWVkIG9uIHRoZSBmbHkuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3hNb2RlbE9iamVjdDo6flJlbmRlckJveE1vZGVsT2JqZWN0KToKKyAgICAgICAgSWYgdGhlcmUg
aXMgbm8gSW1hZ2VRdWFsaXR5Q29udHJvbGxlciwgZG9uJ3QgY2FsbCBvYmplY3REZXN0cm95ZWQo
KS4KKyAgICAgICAgSWYgaXQncyBlbXB0eSwgZGVsZXRlIGl0LgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRJ
bnRvUmVjdCk6CisgICAgICAgIEFsc28gcGFzcyB0aGUgSW1hZ2UqIGFzIHRoZSAodm9pZCopIGxh
eWVyLCBzaW5jZSAwIGlzIG5vdCBhIHZhbGlkCisgICAgICAgIEhhc2hNYXAga2V5LgorCiAyMDEx
LTAxLTI3ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQgV2luQ0UgYnVpbGQgZml4IGZvciByNzY4MjQuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJldmlzaW9u
IDc2ODU0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsOCArNTAsOCBAQCBib29sIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpzX2xheWVyV2FzU2VsCiBzdGF0aWMgY29uc3QgZG91YmxlIGNJbnRlcnBvbGF0aW9u
Q3V0b2ZmID0gODAwLiAqIDgwMC47CiBzdGF0aWMgY29uc3QgZG91YmxlIGNMb3dRdWFsaXR5VGlt
ZVRocmVzaG9sZCA9IDAuNTAwOyAvLyA1MDAgbXMKIAotdHlwZWRlZiBwYWlyPFJlbmRlckJveE1v
ZGVsT2JqZWN0KiwgY29uc3Qgdm9pZCo+IExhc3RQYWludFNpemVNYXBLZXk7Ci10eXBlZGVmIEhh
c2hNYXA8TGFzdFBhaW50U2l6ZU1hcEtleSwgSW50U2l6ZT4gTGFzdFBhaW50U2l6ZU1hcDsKK3R5
cGVkZWYgSGFzaE1hcDxjb25zdCB2b2lkKiwgSW50U2l6ZT4gTGF5ZXJTaXplTWFwOwordHlwZWRl
ZiBIYXNoTWFwPFJlbmRlckJveE1vZGVsT2JqZWN0KiwgTGF5ZXJTaXplTWFwPiBPYmplY3RMYXll
clNpemVNYXA7CiAKIC8vIFRoZSBIYXNoTWFwIGZvciBzdG9yaW5nIGNvbnRpbnVhdGlvbiBwb2lu
dGVycy4KIC8vIEFuIGlubGluZSBjYW4gYmUgc3BsaXQgd2l0aCBibG9ja3Mgb2NjdXJpbmcgaW4g
YmV0d2VlbiB0aGUgaW5saW5lIGNvbnRlbnQuCkBAIC02OCwxNCArNjgsMTYgQEAgY2xhc3MgSW1h
Z2VRdWFsaXR5Q29udHJvbGxlciB7CiBwdWJsaWM6CiAgICAgSW1hZ2VRdWFsaXR5Q29udHJvbGxl
cigpOwogICAgIGJvb2wgc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0Kiwg
UmVuZGVyQm94TW9kZWxPYmplY3QqLCBJbWFnZSosIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBJ
bnRTaXplJik7Ci0gICAgdm9pZCBrZXlEZXN0cm95ZWQoTGFzdFBhaW50U2l6ZU1hcEtleSBrZXkp
OworICAgIHZvaWQgcmVtb3ZlTGF5ZXIoUmVuZGVyQm94TW9kZWxPYmplY3QqLCBMYXllclNpemVN
YXAqIGlubmVyTWFwLCBjb25zdCB2b2lkKiBsYXllcik7CisgICAgdm9pZCBzZXQoUmVuZGVyQm94
TW9kZWxPYmplY3QqLCBMYXllclNpemVNYXAqIGlubmVyTWFwLCBjb25zdCB2b2lkKiBsYXllciwg
Y29uc3QgSW50U2l6ZSYpOwogICAgIHZvaWQgb2JqZWN0RGVzdHJveWVkKFJlbmRlckJveE1vZGVs
T2JqZWN0Kik7CisgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gbV9vYmplY3RMYXllclNpemVN
YXAuaXNFbXB0eSgpOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBoaWdoUXVhbGl0eVJlcGFpbnRU
aW1lckZpcmVkKFRpbWVyPEltYWdlUXVhbGl0eUNvbnRyb2xsZXI+Kik7CiAgICAgdm9pZCByZXN0
YXJ0VGltZXIoKTsKIAotICAgIExhc3RQYWludFNpemVNYXAgbV9sYXN0UGFpbnRTaXplTWFwOwor
ICAgIE9iamVjdExheWVyU2l6ZU1hcCBtX29iamVjdExheWVyU2l6ZU1hcDsKICAgICBUaW1lcjxJ
bWFnZVF1YWxpdHlDb250cm9sbGVyPiBtX3RpbWVyOwogICAgIGJvb2wgbV9hbmltYXRlZFJlc2l6
ZUlzQWN0aXZlOwogfTsKQEAgLTg2LDMxICs4OCw0MSBAQCBJbWFnZVF1YWxpdHlDb250cm9sbGVy
OjpJbWFnZVF1YWxpdHlDb250CiB7CiB9CiAKLXZvaWQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6
a2V5RGVzdHJveWVkKExhc3RQYWludFNpemVNYXBLZXkga2V5KQordm9pZCBJbWFnZVF1YWxpdHlD
b250cm9sbGVyOjpyZW1vdmVMYXllcihSZW5kZXJCb3hNb2RlbE9iamVjdCogb2JqZWN0LCBMYXll
clNpemVNYXAqIGlubmVyTWFwLCBjb25zdCB2b2lkKiBsYXllcikKIHsKLSAgICBtX2xhc3RQYWlu
dFNpemVNYXAucmVtb3ZlKGtleSk7Ci0gICAgaWYgKG1fbGFzdFBhaW50U2l6ZU1hcC5pc0VtcHR5
KCkpIHsKLSAgICAgICAgbV9hbmltYXRlZFJlc2l6ZUlzQWN0aXZlID0gZmFsc2U7Ci0gICAgICAg
IG1fdGltZXIuc3RvcCgpOworICAgIGlmIChpbm5lck1hcCkgeworICAgICAgICBpbm5lck1hcC0+
cmVtb3ZlKGxheWVyKTsKKyAgICAgICAgaWYgKGlubmVyTWFwLT5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBvYmplY3REZXN0cm95ZWQob2JqZWN0KTsKICAgICB9CiB9CiAgICAgCi12b2lkIEltYWdl
UXVhbGl0eUNvbnRyb2xsZXI6Om9iamVjdERlc3Ryb3llZChSZW5kZXJCb3hNb2RlbE9iamVjdCog
b2JqZWN0KQordm9pZCBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpzZXQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIG9iamVjdCwgTGF5ZXJTaXplTWFwKiBpbm5lck1hcCwgY29uc3Qgdm9pZCogbGF5ZXIs
IGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAgVmVjdG9yPExhc3RQYWludFNpemVNYXBLZXk+
IGtleXNUb0RpZTsKLSAgICBmb3IgKExhc3RQYWludFNpemVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9s
YXN0UGFpbnRTaXplTWFwLmJlZ2luKCk7IGl0ICE9IG1fbGFzdFBhaW50U2l6ZU1hcC5lbmQoKTsg
KytpdCkKLSAgICAgICAgaWYgKGl0LT5maXJzdC5maXJzdCA9PSBvYmplY3QpCi0gICAgICAgICAg
ICBrZXlzVG9EaWUuYXBwZW5kKGl0LT5maXJzdCk7Ci0gICAgZm9yIChWZWN0b3I8TGFzdFBhaW50
U2l6ZU1hcEtleT46Oml0ZXJhdG9yIGl0ID0ga2V5c1RvRGllLmJlZ2luKCk7IGl0ICE9IGtleXNU
b0RpZS5lbmQoKTsgKytpdCkKLSAgICAgICAga2V5RGVzdHJveWVkKCppdCk7CisgICAgaWYgKGlu
bmVyTWFwKQorICAgICAgICBpbm5lck1hcC0+c2V0KGxheWVyLCBzaXplKTsKKyAgICBlbHNlIHsK
KyAgICAgICAgTGF5ZXJTaXplTWFwIG5ld0lubmVyTWFwOworICAgICAgICBuZXdJbm5lck1hcC5z
ZXQobGF5ZXIsIHNpemUpOworICAgICAgICBtX29iamVjdExheWVyU2l6ZU1hcC5zZXQob2JqZWN0
LCBuZXdJbm5lck1hcCk7CisgICAgfQogfQogICAgIAordm9pZCBJbWFnZVF1YWxpdHlDb250cm9s
bGVyOjpvYmplY3REZXN0cm95ZWQoUmVuZGVyQm94TW9kZWxPYmplY3QqIG9iamVjdCkKK3sKKyAg
ICBtX29iamVjdExheWVyU2l6ZU1hcC5yZW1vdmUob2JqZWN0KTsKKyAgICBpZiAobV9vYmplY3RM
YXllclNpemVNYXAuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fYW5pbWF0ZWRSZXNpemVJc0FjdGl2
ZSA9IGZhbHNlOworICAgICAgICBtX3RpbWVyLnN0b3AoKTsKKyAgICB9Cit9CisKIHZvaWQgSW1h
Z2VRdWFsaXR5Q29udHJvbGxlcjo6aGlnaFF1YWxpdHlSZXBhaW50VGltZXJGaXJlZChUaW1lcjxJ
bWFnZVF1YWxpdHlDb250cm9sbGVyPiopCiB7CiAgICAgaWYgKG1fYW5pbWF0ZWRSZXNpemVJc0Fj
dGl2ZSkgewogICAgICAgICBtX2FuaW1hdGVkUmVzaXplSXNBY3RpdmUgPSBmYWxzZTsKLSAgICAg
ICAgZm9yIChMYXN0UGFpbnRTaXplTWFwOjppdGVyYXRvciBpdCA9IG1fbGFzdFBhaW50U2l6ZU1h
cC5iZWdpbigpOyBpdCAhPSBtX2xhc3RQYWludFNpemVNYXAuZW5kKCk7ICsraXQpCi0gICAgICAg
ICAgICBpdC0+Zmlyc3QuZmlyc3QtPnJlcGFpbnQoKTsKKyAgICAgICAgZm9yIChPYmplY3RMYXll
clNpemVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9vYmplY3RMYXllclNpemVNYXAuYmVnaW4oKTsgaXQg
IT0gbV9vYmplY3RMYXllclNpemVNYXAuZW5kKCk7ICsraXQpCisgICAgICAgICAgICBpdC0+Zmly
c3QtPnJlcGFpbnQoKTsKICAgICB9CiB9CiAKQEAgLTEzMCwxNyArMTQyLDI0IEBAIGJvb2wgSW1h
Z2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnQKICAgICAvLyBpcyBhY3R1YWxseSBiZWlu
ZyBzY2FsZWQuCiAgICAgSW50U2l6ZSBpbWFnZVNpemUoaW1hZ2UtPndpZHRoKCksIGltYWdlLT5o
ZWlnaHQoKSk7CiAKLSAgICAvLyBMb29rIG91cnNlbHZlcyB1cCBpbiB0aGUgaGFzaHRhYmxlLgot
ICAgIExhc3RQYWludFNpemVNYXBLZXkga2V5KG9iamVjdCwgbGF5ZXIpOwotICAgIExhc3RQYWlu
dFNpemVNYXA6Oml0ZXJhdG9yIGkgPSBtX2xhc3RQYWludFNpemVNYXAuZmluZChrZXkpOworICAg
IC8vIExvb2sgb3Vyc2VsdmVzIHVwIGluIHRoZSBoYXNodGFibGVzLgorICAgIE9iamVjdExheWVy
U2l6ZU1hcDo6aXRlcmF0b3IgaSA9IG1fb2JqZWN0TGF5ZXJTaXplTWFwLmZpbmQob2JqZWN0KTsK
KyAgICBMYXllclNpemVNYXAqIGlubmVyTWFwID0gaSAhPSBtX29iamVjdExheWVyU2l6ZU1hcC5l
bmQoKSA/ICZpLT5zZWNvbmQgOiAwOworICAgIEludFNpemUgb2xkU2l6ZTsKKyAgICBib29sIGlz
Rmlyc3RSZXNpemUgPSB0cnVlOworICAgIGlmIChpbm5lck1hcCkgeworICAgICAgICBMYXllclNp
emVNYXA6Oml0ZXJhdG9yIGogPSBpbm5lck1hcC0+ZmluZChsYXllcik7CisgICAgICAgIGlmIChq
ICE9IGlubmVyTWFwLT5lbmQoKSkgeworICAgICAgICAgICAgaXNGaXJzdFJlc2l6ZSA9IGZhbHNl
OworICAgICAgICAgICAgb2xkU2l6ZSA9IGotPnNlY29uZDsKKyAgICAgICAgfQorICAgIH0KIAog
ICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgY3VycmVudFRyYW5zZm9ybSA9IGNvbnRleHQtPmdl
dENUTSgpOwogICAgIGJvb2wgY29udGV4dElzU2NhbGVkID0gIWN1cnJlbnRUcmFuc2Zvcm0uaXNJ
ZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKTsKICAgICBpZiAoIWNvbnRleHRJc1NjYWxl
ZCAmJiBpbWFnZVNpemUgPT0gc2l6ZSkgewogICAgICAgICAvLyBUaGVyZSBpcyBubyBzY2FsZSBp
biBlZmZlY3QuIElmIHdlIGhhZCBhIHNjYWxlIGluIGVmZmVjdCBiZWZvcmUsIHdlIGNhbiBqdXN0
IHJlbW92ZSB0aGlzIG9iamVjdCBmcm9tIHRoZSBsaXN0LgotICAgICAgICBpZiAoaSAhPSBtX2xh
c3RQYWludFNpemVNYXAuZW5kKCkpCi0gICAgICAgICAgICBtX2xhc3RQYWludFNpemVNYXAucmVt
b3ZlKGtleSk7Ci0KKyAgICAgICAgcmVtb3ZlTGF5ZXIob2JqZWN0LCBpbm5lck1hcCwgbGF5ZXIp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNTAsMzkgKzE2OSw0NCBAQCBi
b29sIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50CiAgICAgICAgIGlmICh0b3Rh
bFBpeGVscyA+IGNJbnRlcnBvbGF0aW9uQ3V0b2ZmKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQorCiAgICAgLy8gSWYgYW4gYW5pbWF0ZWQgcmVzaXplIGlzIGFjdGl2ZSwgcGFpbnQg
aW4gbG93IHF1YWxpdHkgYW5kIGtpY2sgdGhlIHRpbWVyIGFoZWFkLgogICAgIGlmIChtX2FuaW1h
dGVkUmVzaXplSXNBY3RpdmUpIHsKLSAgICAgICAgbV9sYXN0UGFpbnRTaXplTWFwLnNldChrZXks
IHNpemUpOworICAgICAgICBzZXQob2JqZWN0LCBpbm5lck1hcCwgbGF5ZXIsIHNpemUpOwogICAg
ICAgICByZXN0YXJ0VGltZXIoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIC8v
IElmIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgcmVzaXppbmcgdGhpcyBpbWFnZSwgb3IgaXRzIHNp
emUgaXMgdGhlCiAgICAgLy8gc2FtZSBhcyB0aGUgbGFzdCByZXNpemUsIGRyYXcgYXQgaGlnaCBy
ZXMsIGJ1dCByZWNvcmQgdGhlIHBhaW50CiAgICAgLy8gc2l6ZSBhbmQgc2V0IHRoZSB0aW1lci4K
LSAgICBpZiAoaSA9PSBtX2xhc3RQYWludFNpemVNYXAuZW5kKCkgfHwgc2l6ZSA9PSBpLT5zZWNv
bmQpIHsKKyAgICBpZiAoaXNGaXJzdFJlc2l6ZSB8fCBvbGRTaXplID09IHNpemUpIHsKICAgICAg
ICAgcmVzdGFydFRpbWVyKCk7Ci0gICAgICAgIG1fbGFzdFBhaW50U2l6ZU1hcC5zZXQoa2V5LCBz
aXplKTsKKyAgICAgICAgc2V0KG9iamVjdCwgaW5uZXJNYXAsIGxheWVyLCBzaXplKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBJZiB0aGUgdGltZXIgaXMgbm8gbG9uZ2Vy
IGFjdGl2ZSwgZHJhdyBhdCBoaWdoIHF1YWxpdHkgYW5kIGRvbid0CiAgICAgLy8gc2V0IHRoZSB0
aW1lci4KICAgICBpZiAoIW1fdGltZXIuaXNBY3RpdmUoKSkgewotICAgICAgICBrZXlEZXN0cm95
ZWQoa2V5KTsKKyAgICAgICAgcmVtb3ZlTGF5ZXIob2JqZWN0LCBpbm5lck1hcCwgbGF5ZXIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFRoaXMgb2JqZWN0IGhhcyBiZWVu
IHJlc2l6ZWQgdG8gdHdvIGRpZmZlcmVudCBzaXplcyB3aGlsZSB0aGUgdGltZXIKICAgICAvLyBp
cyBhY3RpdmUsIHNvIGRyYXcgYXQgbG93IHF1YWxpdHksIHNldCB0aGUgZmxhZyBmb3IgYW5pbWF0
ZWQgcmVzaXplcyBhbmQKICAgICAvLyB0aGUgb2JqZWN0IHRvIHRoZSBsaXN0IGZvciBoaWdoIHF1
YWxpdHkgcmVkcmF3LgotICAgIG1fbGFzdFBhaW50U2l6ZU1hcC5zZXQoa2V5LCBzaXplKTsKKyAg
ICBzZXQob2JqZWN0LCBpbm5lck1hcCwgbGF5ZXIsIHNpemUpOwogICAgIG1fYW5pbWF0ZWRSZXNp
emVJc0FjdGl2ZSA9IHRydWU7CiAgICAgcmVzdGFydFRpbWVyKCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK3N0YXRpYyBJbWFnZVF1YWxpdHlDb250cm9sbGVyKiBnSW1hZ2VRdWFsaXR5Q29udHJv
bGxlciA9IDA7CisKIHN0YXRpYyBJbWFnZVF1YWxpdHlDb250cm9sbGVyKiBpbWFnZVF1YWxpdHlD
b250cm9sbGVyKCkKIHsKLSAgICBzdGF0aWMgSW1hZ2VRdWFsaXR5Q29udHJvbGxlciogY29udHJv
bGxlciA9IG5ldyBJbWFnZVF1YWxpdHlDb250cm9sbGVyOwotICAgIHJldHVybiBjb250cm9sbGVy
OworICAgIGlmICghZ0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIGdJbWFnZVF1YWxp
dHlDb250cm9sbGVyID0gbmV3IEltYWdlUXVhbGl0eUNvbnRyb2xsZXI7CisKKyAgICByZXR1cm4g
Z0ltYWdlUXVhbGl0eUNvbnRyb2xsZXI7CiB9CiAKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlIHMpCkBAIC0yMjMsNyArMjQ3LDEzIEBA
IFJlbmRlckJveE1vZGVsT2JqZWN0Ojp+UmVuZGVyQm94TW9kZWxPYmoKICAgICAvLyBPdXIgbGF5
ZXIgc2hvdWxkIGhhdmUgYmVlbiBkZXN0cm95ZWQgYW5kIGNsZWFyZWQgYnkgbm93CiAgICAgQVNT
RVJUKCFoYXNMYXllcigpKTsKICAgICBBU1NFUlQoIW1fbGF5ZXIpOwotICAgIGltYWdlUXVhbGl0
eUNvbnRyb2xsZXIoKS0+b2JqZWN0RGVzdHJveWVkKHRoaXMpOworICAgIGlmIChnSW1hZ2VRdWFs
aXR5Q29udHJvbGxlcikgeworICAgICAgICBnSW1hZ2VRdWFsaXR5Q29udHJvbGxlci0+b2JqZWN0
RGVzdHJveWVkKHRoaXMpOworICAgICAgICBpZiAoZ0ltYWdlUXVhbGl0eUNvbnRyb2xsZXItPmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgZGVsZXRlIGdJbWFnZVF1YWxpdHlDb250cm9sbGVyOwor
ICAgICAgICAgICAgZ0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIgPSAwOworICAgICAgICB9CisgICAg
fQogfQogCiB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkZXN0cm95TGF5ZXIoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCShyZXZpc2lvbiA3Njg1NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3Niw3ICszNzYsOCBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludEludG9SZWN0KEdy
YXBoaWNzCiAKICAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZUVsdCA9IChub2RlKCkgJiYgbm9k
ZSgpLT5oYXNUYWdOYW1lKGltZ1RhZykpID8gc3RhdGljX2Nhc3Q8SFRNTEltYWdlRWxlbWVudCo+
KG5vZGUoKSkgOiAwOwogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0g
aW1hZ2VFbHQgPyBpbWFnZUVsdC0+Y29tcG9zaXRlT3BlcmF0b3IoKSA6IENvbXBvc2l0ZVNvdXJj
ZU92ZXI7Ci0gICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dR
dWFsaXR5KGNvbnRleHQsIG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKS5nZXQoKSwgMCwgcmVjdC5z
aXplKCkpOworICAgIEltYWdlKiBpbWFnZSA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoKS5nZXQo
KTsKKyAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFpbnRBdExvd1F1YWxp
dHkoY29udGV4dCwgaW1hZ2UsIGltYWdlLCByZWN0LnNpemUoKSk7CiAgICAgY29udGV4dC0+ZHJh
d0ltYWdlKG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgp
KS5nZXQoKSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCByZWN0LCBjb21wb3NpdGVPcGVyYXRvciwg
dXNlTG93UXVhbGl0eVNjYWxpbmcpOwogfQogCg==
</data>
<flag name="review"
          id="71847"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>