<?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>72162</bug_id>
          
          <creation_ts>2011-11-11 11:40:44 -0800</creation_ts>
          <short_desc>[chromium] Move setVisibleRect() calls into calculateDrawTransformAndVisibility()</short_desc>
          <delta_ts>2012-01-06 11:11:56 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="W. James MacLean">wjmaclean</reporter>
          <assigned_to name="W. James MacLean">wjmaclean</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>epenner</cc>
    
    <cc>jamesr</cc>
    
    <cc>shawnsingh</cc>
    
    <cc>wangxianzhu</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>500976</commentid>
    <comment_count>0</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-11-11 11:40:44 -0800</bug_when>
    <thetext>[chromium] Move setVisibleRect() calls into calculateDrawTransformAndVisibility()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500977</commentid>
    <comment_count>1</comment_count>
      <attachid>114748</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-11-11 11:42:18 -0800</bug_when>
    <thetext>Created attachment 114748
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500980</commentid>
    <comment_count>2</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-11-11 11:45:46 -0800</bug_when>
    <thetext>This patch isn&apos;t quite right - seems too complicated and fails one layout test (compositing/backface-visibility-hierarchical-transform.html).

Suggestions? I imagine there must be a more elegant way, but it has eluded me thus far.

I tried just computing/setting the visible rect at the end, but this seemed to be missing reflection cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501048</commentid>
    <comment_count>3</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-11-11 13:35:28 -0800</bug_when>
    <thetext>I grappled with this, too, when shuffling things in LayerRendererChromium.  The problem is that the visibleLayerRect requires knowing the targetSurface contentRect, and that contentRect is not known until after the recursion of that entire subtree for the surface is done.  By that time, the layer of interest is no longer in scope.

Solution 1 (simple, but will probably change in the long run):

rename calculateDrawTransformsAndVisibility --&gt; calculateDrawTransformsAndContentRects

Then, create a new wrapper, calculateDrawTransformsAndVisibility
{
    calculateDrawTransformsAndContentRects

    for every surface in renderSurfaceList
        for every layer in renderSurfaceList-&gt;layerList {
            handle special case of this layer actually drawing its RenderSurface rather than the layer itself
            compute visibleLayerRect.
            if visibleLayerRect is empty, remove the layer from the list.
        }
}


Solution 2:  (much more correct and elegant, but will be hard and maybe even not feasible)

I think we should revisit the entire visible rect logic and try to distill it, if possible.  I suspect that it can be cleaned up a LOT.  I&apos;m not 100% aware of why all the rect logic is needed, but I think most of it has to do with clipping, and now that the code exists and works, it might be possible to apply incremental cleanups to reduce the rect complexity there.

Would people be OK with Solution 1, and then wjmaclean and I can work together to get solution two after our culling/scissoring stuff gets done?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501049</commentid>
    <comment_count>4</comment_count>
      <attachid>114748</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-11-11 13:37:27 -0800</bug_when>
    <thetext>Comment on attachment 114748
Patch

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

I suspect the problem here is that calculateVisibleLayerRect uses the content rect of the target render surface, which hasn&apos;t been set yet until the surface (possibly a grandparent) has been processed, because its bounds grow to encompass all of its children.

I&apos;m thinking you could fix this by calculating it on the first pass down the tree by changing calculateVisibleLayerRect to use take the visible rect for the current surface&apos;s layer instead of implicitly using the content bounds for the surface.  The visible rect for the top layer surface is just the viewport, which gets set elsewhere.  You would also need to set the visible rect before you processed all the children.  I&apos;m not 100% sure, but I think approach seems plausible.

You could also then skip layers that were not visible or all the children of surfaces that were not visible, in the same way that we skip layers and surfaces for opacity.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:360
&gt; +        paintContentsIfDirty(replicaLayer, replicaLayer-&gt;visibleLayerRect());

You could just make this paintContentsIfDirty(Layer*)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501052</commentid>
    <comment_count>5</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-11-11 13:41:00 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 114748 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=114748&amp;action=review
&gt; 
&gt; I suspect the problem here is that calculateVisibleLayerRect uses the content rect of the target render surface, which hasn&apos;t been set yet until the surface (possibly a grandparent) has been processed, because its bounds grow to encompass all of its children.
&gt; 
&gt; I&apos;m thinking you could fix this by calculating it on the first pass down the tree by changing calculateVisibleLayerRect to use take the visible rect for the current surface&apos;s layer instead of implicitly using the content bounds for the surface.  The visible rect for the top layer surface is just the viewport, which gets set elsewhere.  You would also need to set the visible rect before you processed all the children.  I&apos;m not 100% sure, but I think approach seems plausible.
&gt; 
&gt; You could also then skip layers that were not visible or all the children of surfaces that were not visible, in the same way that we skip layers and surfaces for opacity.

This solution sounds good to me, as well =)  And then after that we can discuss if its possible to distill the rect logic further.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501060</commentid>
    <comment_count>6</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-11-11 13:46:58 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 114748 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=114748&amp;action=review
&gt; 
&gt; I suspect the problem here is that calculateVisibleLayerRect uses the content rect of the target render surface, which hasn&apos;t been set yet until the surface (possibly a grandparent) has been processed, because its bounds grow to encompass all of its children.
&gt; 
&gt; I&apos;m thinking you could fix this by calculating it on the first pass down the tree by changing calculateVisibleLayerRect to use take the visible rect for the current surface&apos;s layer instead of implicitly using the content bounds for the surface.  The visible rect for the top layer surface is just the viewport, which gets set elsewhere.  You would also need to set the visible rect before you processed all the children.  I&apos;m not 100% sure, but I think approach seems plausible.

OK. Let me take a crack at that, and I&apos;ll see if I can get it to work.

&gt; You could also then skip layers that were not visible or all the children of surfaces that were not visible, in the same way that we skip layers and surfaces for opacity.

Sounds good.

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:360
&gt; &gt; +        paintContentsIfDirty(replicaLayer, replicaLayer-&gt;visibleLayerRect());
&gt; 
&gt; You could just make this paintContentsIfDirty(Layer*)

Yeah, I figured I&apos;d do that once the rest worked properly :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502027</commentid>
    <comment_count>7</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-11-14 09:55:09 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 114748 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=114748&amp;action=review
&gt; 
&gt; I&apos;m thinking you could fix this by calculating it on the first pass down the tree by changing calculateVisibleLayerRect to use take the visible rect for the current surface&apos;s layer instead of implicitly using the content bounds for the surface. 

&gt; The visible rect for the top layer surface is just the viewport, which gets set elsewhere.

Question: I can understand this for the root layer, but if there is more than one RenderSurface, do the visible rects for surfaces that own these extra RenderSurfaces all use the ViewPort too? Or should they do something with their parent layer&apos;s visible rect?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502055</commentid>
    <comment_count>8</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-11-14 10:21:45 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 114748 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=114748&amp;action=review
&gt; &gt; 
&gt; &gt; I&apos;m thinking you could fix this by calculating it on the first pass down the tree by changing calculateVisibleLayerRect to use take the visible rect for the current surface&apos;s layer instead of implicitly using the content bounds for the surface. 
&gt; 
&gt; &gt; The visible rect for the top layer surface is just the viewport, which gets set elsewhere.
&gt; 
&gt; Question: I can understand this for the root layer, but if there is more than one RenderSurface, do the visible rects for surfaces that own these extra RenderSurfaces all use the ViewPort too? Or should they do something with their parent layer&apos;s visible rect?

OK, found where the sub-surface&apos;s contentRect gets set ... can I use the same technique to set the owning layer&apos;s visible rect?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502102</commentid>
    <comment_count>9</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-11-14 11:07:36 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 114748 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=114748&amp;action=review
&gt; &gt; 
&gt; &gt; I&apos;m thinking you could fix this by calculating it on the first pass down the tree by changing calculateVisibleLayerRect to use take the visible rect for the current surface&apos;s layer instead of implicitly using the content bounds for the surface. 
&gt; 
&gt; &gt; The visible rect for the top layer surface is just the viewport, which gets set elsewhere.
&gt; 
&gt; Question: I can understand this for the root layer, but if there is more than one RenderSurface, do the visible rects for surfaces that own these extra RenderSurfaces all use the ViewPort too? Or should they do something with their parent layer&apos;s visible rect?

I was thinking this process could be iterative.  It&apos;s not their parent&apos;s visible rect that you&apos;re looking for here (because this isn&apos;t a bounding box hierarchy and a parent visible rect is entirely independent of a chlid&apos;s visible rect), but rather it&apos;s the visible rect for the target render surface that the layer is being drawn into.

Render surfaces themselves don&apos;t have any internal notion of a visible rect, so the visible rect for a CCRenderSurface is really CCRenderSurface::m_owningLayer-&gt;visibleRect().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502119</commentid>
    <comment_count>10</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-11-14 11:19:26 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; (From update of attachment 114748 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=114748&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;m thinking you could fix this by calculating it on the first pass down the tree by changing calculateVisibleLayerRect to use take the visible rect for the current surface&apos;s layer instead of implicitly using the content bounds for the surface. 
&gt; &gt; 
&gt; &gt; &gt; The visible rect for the top layer surface is just the viewport, which gets set elsewhere.
&gt; &gt; 
&gt; &gt; Question: I can understand this for the root layer, but if there is more than one RenderSurface, do the visible rects for surfaces that own these extra RenderSurfaces all use the ViewPort too? Or should they do something with their parent layer&apos;s visible rect?
&gt; 
&gt; I was thinking this process could be iterative.  It&apos;s not their parent&apos;s visible rect that you&apos;re looking for here (because this isn&apos;t a bounding box hierarchy and a parent visible rect is entirely independent of a chlid&apos;s visible rect), but rather it&apos;s the visible rect for the target render surface that the layer is being drawn into.
&gt; 
&gt; Render surfaces themselves don&apos;t have any internal notion of a visible rect, so the visible rect for a CCRenderSurface is really CCRenderSurface::m_owningLayer-&gt;visibleRect().

OK, that helps, but it still leaves open the question of what is the correct way to compute the visible rect for the surface&apos;s owning layer when that layer is not the root layer. At present this seems to be based on the union of the child drawable content rects, as they determine the layer&apos;s drawable content rect which in turn defines the surface&apos;s content rect which in turn is used to define the visible rect. I&apos;m not sure I understand how this leads to an iterative process, since we need to traverse the children first (unless you&apos;re proposing a separate reverse iteration through the layer list?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502140</commentid>
    <comment_count>11</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-11-14 11:43:50 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; OK, that helps, but it still leaves open the question of what is the correct way to compute the visible rect for the surface&apos;s owning layer when that layer is not the root layer. At present this seems to be based on the union of the child drawable content rects, as they determine the layer&apos;s drawable content rect which in turn defines the surface&apos;s content rect which in turn is used to define the visible rect. I&apos;m not sure I understand how this leads to an iterative process, since we need to traverse the children first (unless you&apos;re proposing a separate reverse iteration through the layer list?).

OK, so setting visible rect on a surface-owning layer to the viewport *almost* does it ... we&apos;re zeroing in ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502391</commentid>
    <comment_count>12</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-11-14 15:37:50 -0800</bug_when>
    <thetext>(In reply to comment #10)

&gt; &gt; Render surfaces themselves don&apos;t have any internal notion of a visible rect, so the visible rect for a CCRenderSurface is really CCRenderSurface::m_owningLayer-&gt;visibleRect().
&gt; 
&gt; OK, that helps, but it still leaves open the question of what is the correct way to compute the visible rect for the surface&apos;s owning layer when that layer is not the root layer. At present this seems to be based on the union of the child drawable content rects.

I see what you&apos;re getting at, I think.  I think you&apos;re going to have to touch up calculateVisibleLayerRect for layers that have explicit bounds or clip rects and maybe write a separate function for non-clipped surfaces.  Right now we&apos;re taking a fixed size layer content rect and transforming the target surface space into it and seeing what bounding box that creates.  However, for layers that don&apos;t have a content rect yet (and don&apos;t have a clip rect), we really need to transform the target surface&apos;s visible rect into &quot;infinite&quot; layer space and see what rect that bounds.  I think you could reuse the projectQuad bit of calculateVisibleRect on the target surface visible rect to do that math.


(In case going down this path has gotten too complicated, a second option here is to just add a second pass to walk the tree after calculateDrawTransformAndVisibility() and add a FIXME to combine the two passes in a later patch.  There&apos;s certainly enough goodness in not having setVisibleLayerRect calls while walking the tree, in my opinion.  I was hoping this was going to have less wrinkles to sort out, but that was probably too optimistic.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502875</commentid>
    <comment_count>13</comment_count>
      <attachid>115157</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-11-15 06:51:28 -0800</bug_when>
    <thetext>Created attachment 115157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502878</commentid>
    <comment_count>14</comment_count>
      <attachid>115157</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-11-15 06:52:32 -0800</bug_when>
    <thetext>Comment on attachment 115157
Patch

Just posting for discussion, I don&apos;t expect this patch to be seriously reviewed (and certainly not landed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502881</commentid>
    <comment_count>15</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-11-15 06:57:28 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #10)
&gt; 
&gt; &gt; &gt; Render surfaces themselves don&apos;t have any internal notion of a visible rect, so the visible rect for a CCRenderSurface is really CCRenderSurface::m_owningLayer-&gt;visibleRect().
&gt; &gt; 
&gt; &gt; OK, that helps, but it still leaves open the question of what is the correct way to compute the visible rect for the surface&apos;s owning layer when that layer is not the root layer. At present this seems to be based on the union of the child drawable content rects.
&gt; 
&gt; I see what you&apos;re getting at, I think.  I think you&apos;re going to have to touch up calculateVisibleLayerRect for layers that have explicit bounds or clip rects and maybe write a separate function for non-clipped surfaces.  Right now we&apos;re taking a fixed size layer content rect and transforming the target surface space into it and seeing what bounding box that creates.  However, for layers that don&apos;t have a content rect yet (and don&apos;t have a clip rect), we really need to transform the target surface&apos;s visible rect into &quot;infinite&quot; layer space and see what rect that bounds.  I think you could reuse the projectQuad bit of calculateVisibleRect on the target surface visible rect to do that math.


Sounds good.

Just for interest&apos;s sake, I posted a patch that passes all but four layout tests using the naive approach of starting each surface at the full viewport size. I don&apos;t expect we&apos;ll proceed with it until calculateVisibleRect is fully cleaned up, but post it only for discussion purposes.
 
&gt; (In case going down this path has gotten too complicated, a second option here is to just add a second pass to walk the tree after calculateDrawTransformAndVisibility() and add a FIXME to combine the two passes in a later patch.  There&apos;s certainly enough goodness in not having setVisibleLayerRect calls while walking the tree, in my opinion.  I was hoping this was going to have less wrinkles to sort out, but that was probably too optimistic.)

I&apos;d like to suggest this:

1) In the short term I&apos;d like to do the second-walk option, as it can be reliably done quickly to allow other work to progress.

2) I will, after it lands, and in parallel with other work, land the better version. I may need to request a little &quot;white-board time&quot; with Enne and/or Shawn and/or Nat before I&apos;ll be fully able to complete it, but that&apos;s a worthwhile investment at any rate.

I&apos;ll start working on this plan just in case everyone agrees.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502939</commentid>
    <comment_count>16</comment_count>
      <attachid>115171</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-11-15 08:52:53 -0800</bug_when>
    <thetext>Created attachment 115171
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502940</commentid>
    <comment_count>17</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-11-15 08:53:39 -0800</bug_when>
    <thetext>Here is the second-pass (short-term) approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502950</commentid>
    <comment_count>18</comment_count>
      <attachid>115171</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-11-15 09:06:54 -0800</bug_when>
    <thetext>Comment on attachment 115171
Patch

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

Looks good to me, other than one tiny nit.  Thanks for doing this.  :)

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostCommon.cpp:452
&gt; +        if (!renderSurface-&gt;drawOpacity())
&gt; +            continue;
&gt; +

nit: You shouldn&apos;t need this.  The early out about render surface opacity in calculateDrawEtcEtc should take care of that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502989</commentid>
    <comment_count>19</comment_count>
      <attachid>115183</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-11-15 09:49:11 -0800</bug_when>
    <thetext>Created attachment 115183
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502992</commentid>
    <comment_count>20</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-11-15 09:49:38 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 115171 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=115171&amp;action=review
&gt; 
&gt; Looks good to me, other than one tiny nit.  Thanks for doing this.  :)
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostCommon.cpp:452
&gt; &gt; +        if (!renderSurface-&gt;drawOpacity())
&gt; &gt; +            continue;
&gt; &gt; +
&gt; 
&gt; nit: You shouldn&apos;t need this.  The early out about render surface opacity in calculateDrawEtcEtc should take care of that.

Fixed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503330</commentid>
    <comment_count>21</comment_count>
      <attachid>115183</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-11-15 15:11:22 -0800</bug_when>
    <thetext>Comment on attachment 115183
Patch

Looks good to me mainly based on enne&apos;s review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503491</commentid>
    <comment_count>22</comment_count>
      <attachid>115183</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-15 18:39:04 -0800</bug_when>
    <thetext>Comment on attachment 115183
Patch

Clearing flags on attachment: 115183

Committed r100388: &lt;http://trac.webkit.org/changeset/100388&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503492</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-15 18:39:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529672</commentid>
    <comment_count>24</comment_count>
      <attachid>115183</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-01-04 12:13:40 -0800</bug_when>
    <thetext>Comment on attachment 115183
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:354
&gt; +        paintContentsIfDirty(renderSurfaceLayer-&gt;maskLayer());

2 questions:
1. Why setVisibleLayerRect to the whole content bounds of the renderSurfaceLayer instead of the actual visible rect?
2. Why isn&apos;t this setVisibleLayerRect moved into calculateDrawTransformAndVisibility()?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:361
&gt; +        paintContentsIfDirty(replicaLayer);

Is the visibleLayerRect set in calculateDrawTransformAndVisibility() for the replicaLayer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530617</commentid>
    <comment_count>25</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-01-05 14:08:29 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 115183 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=115183&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:354
&gt; &gt; +        paintContentsIfDirty(renderSurfaceLayer-&gt;maskLayer());
&gt; 
&gt; 2 questions:
&gt; 1. Why setVisibleLayerRect to the whole content bounds of the renderSurfaceLayer instead of the actual visible rect?
&gt; 2. Why isn&apos;t this setVisibleLayerRect moved into calculateDrawTransformAndVisibility()?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:361
&gt; &gt; +        paintContentsIfDirty(replicaLayer);
&gt; 
&gt; Is the visibleLayerRect set in calculateDrawTransformAndVisibility() for the replicaLayer?

I&apos;ll be looking at these rects in detail when making unit testing for CCLayerTreeHostCommon (but not very soon) ...  If you have some time pressure to get these questions answered, let me know and we can discuss offline. =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531180</commentid>
    <comment_count>26</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-01-06 11:11:56 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; I&apos;ll be looking at these rects in detail when making unit testing for CCLayerTreeHostCommon (but not very soon) ...  If you have some time pressure to get these questions answered, let me know and we can discuss offline. =)

Thanks. Just filed bug 75717 for tracking that.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114748</attachid>
            <date>2011-11-11 11:42:18 -0800</date>
            <delta_ts>2011-11-15 06:51:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72162-20111111144217.patch</filename>
            <type>text/plain</type>
            <size>5023</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk4NDkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzZjQ4YTUxYzc0NDg1NzRi
M2RlYTRjMGU0ZGI4M2QzMTNmODE4N2U4Li5mYmU2NjFlZTY0MDA2MjNiMmJjOGRmNTc3ZDI3OTg5
MDQwOTc2NTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMTEtMTEgIFcuIEph
bWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gTW92ZSBzZXRWaXNpYmxlUmVjdCgpIGNhbGxzIGludG8gY2FsY3VsYXRlRHJhd1RyYW5zZm9y
bUFuZFZpc2liaWxpdHkoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzIxNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgZnVuY3Rpb25hbGl0eSwgdXNlIGV4aXN0aW5nIHRlc3RzLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBs
aWNhRm9yUmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6
OnBhaW50TGF5ZXJDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGN1
bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsKToKKwogMjAxMS0xMS0xMCAg
QWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFNob3cgbWVkaWEgcXVlcmllcyBhc3NvY2lhdGVkIHdpdGggc3BlY2lmaWMgQ1NT
IHJ1bGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA2NTZhMjg2
ZThmN2MzMTE1ZWU2YjliZjAwMzZiYWE3ZGE5NzI3ZGNjLi41ZDM2ZTAwZGE5Y2EyZTkxMmVlY2Zk
YWJiNTJkMWZlYzljNmI5OTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAKQEAgLTU4MSwxMCArNTgxLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdM
YXllcihDQ0xheWVySW1wbCogbGF5ZXIsIENDUmVuZGVyU3VyZmFjZSogdGFyZ2UKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIEludFJlY3QgdmlzaWJsZUxheWVyUmVjdCA9IENDTGF5ZXJU
cmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdDxDQ0xheWVySW1wbD4obGF5
ZXIpOwotICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVMYXllclJlY3QpOwot
Ci0gICAgaWYgKHZpc2libGVMYXllclJlY3QuaXNFbXB0eSgpKQorICAgIGlmIChsYXllci0+dmlz
aWJsZUxheWVyUmVjdCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGxh
eWVyLT51c2VzTGF5ZXJDbGlwcGluZygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
aW5kZXggYzFhZDM5YmE5NjA5ZWM0MzJkNzBhMzY0YTk4ZDUxMWYxNmU2MTc5Zi4uZjgwMmEzZTU2
NzhiMGFjNDgwYzIxNzA2M2Y5ODQ4MWEzOTk5MDVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuY3BwCkBAIC0zNTYsMTEgKzM1Niw4IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWlu
dE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTCiAK
ICAgICBMYXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJl
cGxpY2FMYXllcigpOwogICAgIGlmIChyZXBsaWNhTGF5ZXIpIHsKLQotICAgICAgICBJbnRSZWN0
IHZpc2libGVMYXllclJlY3QgPSBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZVZpc2li
bGVMYXllclJlY3Q8TGF5ZXJDaHJvbWl1bT4ocmVuZGVyU3VyZmFjZUxheWVyKTsKLQogICAgICAg
ICByZXBsaWNhTGF5ZXItPnNldExheWVyVHJlZUhvc3QodGhpcyk7Ci0gICAgICAgIHBhaW50Q29u
dGVudHNJZkRpcnR5KHJlcGxpY2FMYXllciwgdmlzaWJsZUxheWVyUmVjdCk7CisgICAgICAgIHBh
aW50Q29udGVudHNJZkRpcnR5KHJlcGxpY2FMYXllciwgcmVwbGljYUxheWVyLT52aXNpYmxlTGF5
ZXJSZWN0KCkpOwogCiAgICAgICAgIGlmIChyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpKSB7CiAg
ICAgICAgICAgICByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5zZXRMYXllclRyZWVIb3N0KHRo
aXMpOwpAQCAtNDAxLDEwICszOTgsOCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXll
ckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdAogCiAgICAg
ICAgICAgICBBU1NFUlQobGF5ZXItPm9wYWNpdHkoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIWxh
eWVyLT5ib3VuZHMoKS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBJbnRS
ZWN0IHZpc2libGVMYXllclJlY3QgPSBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZVZp
c2libGVMYXllclJlY3Q8TGF5ZXJDaHJvbWl1bT4obGF5ZXIpOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShsYXllciwgdmlzaWJsZUxheWVyUmVjdCk7CisK
KyAgICAgICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KGxheWVyLCBsYXllci0+dmlzaWJsZUxh
eWVyUmVjdCgpKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RDb21tb24uY3BwCmluZGV4IGI5YTJhZDM3NzZhZWU4MDEyZDliYzQ4YTAyOGU5NzUx
NWI1M2ExNzcuLjA5MWY2MDYwYTZlMmE1NWFhNGYyZjA1N2VjMjA2ZGY3YmMxMGI2MGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcApAQCAtNDMxLDYgKzQzMSwy
MCBAQCBzdGF0aWMgdm9pZCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRl
cm5hbChMYXllclR5cGUqIGxheWVyLCBMYXllcgogICAgIC8vIHNraXAgdGhlIHNvcnRpbmcgYXMg
dGhlIHBhcmVudCB3aWxsIHNvcnQgYWxsIHRoZSBkZXNjZW5kYW50cyBhbnl3YXkuCiAgICAgaWYg
KGRlc2NlbmRhbnRzLnNpemUoKSAmJiBsYXllci0+cHJlc2VydmVzM0QoKSAmJiAoIWxheWVyLT5w
YXJlbnQoKSB8fCAhbGF5ZXItPnBhcmVudCgpLT5wcmVzZXJ2ZXMzRCgpKSkKICAgICAgICAgc29y
dExheWVycygmZGVzY2VuZGFudHMuYXQoc29ydGluZ1N0YXJ0SW5kZXgpLCBkZXNjZW5kYW50cy5l
bmQoKSwgbGF5ZXJTb3J0ZXIpOworCisgICAgLy8gUmV2aWV3IGNvbW1lbnQ6IGFwcGFyZW50bHkg
d2UgY2Fubm90IHNldCB0aGUgdmlzaWJsZUxheWVyUmVjdCgpIG9uIGEgbGF5ZXIgdW50aWwgd2Un
dmUKKyAgICAvLyBwcm9jZXNzZWQgaXRzIHBhcmVudD8gTm90IHN1cmUgd2h5LiBPcmlnaW5hbGx5
IHRyaWVkIHRoZSB0d28gbGluZXMgaW4gdGhlIGlmLWNsYXVzZQorICAgIC8vIGJlbG93IG9uIHRo
ZWlyIG93biwgYnV0IHdhcyBtaXNzaW5nIHJlZmxlY3Rpb24gbGF5b3V0IHRlc3RzLgorICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbGF5ZXItPmNoaWxkcmVuKCkuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgTGF5ZXJUeXBlKiBjaGlsZCA9IGxheWVyLT5jaGlsZHJlbigpW2ldLmdldCgpOworICAg
ICAgICBjb25zdCBJbnRSZWN0IHZpc2libGVMYXllclJlY3QgPSBDQ0xheWVyVHJlZUhvc3RDb21t
b246OmNhbGN1bGF0ZVZpc2libGVMYXllclJlY3Q8TGF5ZXJUeXBlPihjaGlsZCk7CisgICAgICAg
IGNoaWxkLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVMYXllclJlY3QpOworICAgIH0KKwor
ICAgIGlmICghbGF5ZXItPnBhcmVudCgpKSB7CisgICAgICAgIGNvbnN0IEludFJlY3QgdmlzaWJs
ZUxheWVyUmVjdCA9IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUxheWVy
UmVjdDxMYXllclR5cGU+KGxheWVyKTsKKyAgICAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJl
Y3QodmlzaWJsZUxheWVyUmVjdCk7CisgICAgfQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXll
clR5cGU+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115157</attachid>
            <date>2011-11-15 06:51:28 -0800</date>
            <delta_ts>2011-11-15 08:52:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72162-20111115095127.patch</filename>
            <type>text/plain</type>
            <size>9518</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWYzYzQ2MzQ1NjlmZmIx
MWEyZjdlZDA1NmViZTNiYmI1YWVlODhiMC4uYTA2MDAzYjlhZjcyN2M0MTU4ZDBhZDUyM2RlMmNm
YWNlYThmMzZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDExLTExLTE1ICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIE1vdmUgc2V0VmlzaWJsZVJlY3QoKSBjYWxscyBpbnRvIGNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1BbmRWaXNpYmlsaXR5KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcyMTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gYmVoYXZpb3VyIGNoYW5nZSwgdXNlIGV4aXN0aW5nIHRlc3RzLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xheWVyc0lu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0xh
eWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNl
Q2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN1cmZhY2VDaHJvbWl1bTo6b3du
aW5nTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0
ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5k
ZXJTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXll
ckNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlRHJhd1Ry
YW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6b3duaW5nTGF5ZXIpOgorCiAyMDEx
LTExLTE0ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBjb25zb2xlJ3MgcHJvdG9jb2wgcGF5bG9hZCBkb2VzIG5vdCBoYXZlIHVy
bCBhbmQgbGluZSBwcm9wZXJ0aWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAKaW5kZXggYzE1MGUzN2JhZjBiMjBhY2MzMjZiMGUxYmRlODJiNzAyNmNhMTYwMC4uOGVjYWNj
NzFhMTA0Zjc4N2E5OGQ5N2VmMTM3OGE5M2YzMjdjZTcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0zNTUsNiArMzU1LDcgQEAgdm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdMYXllcnNJbnRlcm5hbCgpCiAgICAgaWYgKCFyb290RHJhd0xheWVyLT5y
ZW5kZXJTdXJmYWNlKCkpCiAgICAgICAgIHJvb3REcmF3TGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZh
Y2UoKTsKICAgICByb290RHJhd0xheWVyLT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0
KEludFJlY3QoSW50UG9pbnQoKSwgdmlld3BvcnRTaXplKCkpKTsKKyAgICByb290RHJhd0xheWVy
LT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgdmlld3BvcnRTaXplKCkp
KTsKIAogICAgIHJvb3REcmF3TGF5ZXItPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQoKSwg
dmlld3BvcnRTaXplKCkpKTsKIApAQCAtNTg0LDEwICs1ODUsNyBAQCB2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZHJhd0xheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgQ0NSZW5kZXJTdXJmYWNl
KiB0YXJnZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgSW50UmVjdCB2aXNpYmxlTGF5
ZXJSZWN0ID0gQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0
PENDTGF5ZXJJbXBsPihsYXllcik7Ci0gICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3Qodmlz
aWJsZUxheWVyUmVjdCk7Ci0KLSAgICBpZiAodmlzaWJsZUxheWVyUmVjdC5pc0VtcHR5KCkpCisg
ICAgaWYgKGxheWVyLT52aXNpYmxlTGF5ZXJSZWN0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAobGF5ZXItPnVzZXNMYXllckNsaXBwaW5nKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRl
clN1cmZhY2VDaHJvbWl1bS5oCmluZGV4IDkzZThkODZjNjcxNzFjMjc3ZWMxNzVjNjE5ZGJlODgw
YjcyZjQxOGIuLjM0ZGNjODRhOWQxMDdlMGYxNmMxYWE3OGM1Y2U2MWQzZGVjNWJlOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1
cmZhY2VDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oCkBAIC04Myw2ICs4Myw4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0TWFza0xheWVyKExheWVyQ2hyb21pdW0qIG1hc2tMYXllcikgeyBtX21h
c2tMYXllciA9IG1hc2tMYXllcjsgfQogCisgICAgTGF5ZXJDaHJvbWl1bSogb3duaW5nTGF5ZXIo
KSB7IHJldHVybiBtX293bmluZ0xheWVyOyB9CisKIHByaXZhdGU6CiAgICAgTGF5ZXJDaHJvbWl1
bSogbV9vd25pbmdMYXllcjsKICAgICBMYXllckNocm9taXVtKiBtX21hc2tMYXllcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDRmMmMxZmI2MjY0ZWU3YzNhOWU2MTc1Mzdh
MDI4OTgyZjhhYjMzZmUuLmY5OTJiYjlhNTg2YzJmYTMyMTJmNzdhYWY1ZDAzMTdjZGVlZmU1YWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMzE1LDYgKzMxNSw3IEBAIHZv
aWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVy
KQogICAgIGlmICghcm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCkpCiAgICAgICAgIHJvb3RMYXll
ci0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwogICAgIHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgp
LT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50KDAsIDApLCB2aWV3cG9ydFNpemUoKSkp
OworICAgIHJvb3RMYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KDAs
IDApLCB2aWV3cG9ydFNpemUoKSkpOwogCiAgICAgSW50UmVjdCByb290Q2xpcFJlY3QoSW50UG9p
bnQoKSwgdmlld3BvcnRTaXplKCkpOwogICAgIHJvb3RMYXllci0+c2V0Q2xpcFJlY3Qocm9vdENs
aXBSZWN0KTsKQEAgLTMzNSwxMiArMzM2LDEwIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRh
dGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogICAgIHBhaW50TGF5ZXJDb250ZW50
cyhtX3VwZGF0ZUxpc3QpOwogfQogCi1zdGF0aWMgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShM
YXllckNocm9taXVtKiBsYXllciwgY29uc3QgSW50UmVjdCYgdmlzaWJsZUxheWVyUmVjdCkKK3N0
YXRpYyB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KExheWVyQ2hyb21pdW0qIGxheWVyKQogewot
ICAgIGlmIChsYXllci0+ZHJhd3NDb250ZW50KCkpIHsKLSAgICAgICAgbGF5ZXItPnNldFZpc2li
bGVMYXllclJlY3QodmlzaWJsZUxheWVyUmVjdCk7CisgICAgaWYgKGxheWVyLT5kcmF3c0NvbnRl
bnQoKSkKICAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KCk7Ci0gICAgfQogfQog
CiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZh
Y2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyKQpAQCAtMzUxLDIwICszNTAsMjAg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJm
YWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclMKIAogICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXIt
Pm1hc2tMYXllcigpKSB7CiAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCkt
PnNldExheWVyVHJlZUhvc3QodGhpcyk7Ci0gICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJl
bmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCksIEludFJlY3QoSW50UG9pbnQoKSwgcmVuZGVy
U3VyZmFjZUxheWVyLT5jb250ZW50Qm91bmRzKCkpKTsKKyAgICAgICAgcmVuZGVyU3VyZmFjZUxh
eWVyLT5tYXNrTGF5ZXIoKS0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCks
IHJlbmRlclN1cmZhY2VMYXllci0+Y29udGVudEJvdW5kcygpKSk7CisgICAgICAgIHBhaW50Q29u
dGVudHNJZkRpcnR5KHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCkpOwogICAgIH0KIAog
ICAgIExheWVyQ2hyb21pdW0qIHJlcGxpY2FMYXllciA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVw
bGljYUxheWVyKCk7CiAgICAgaWYgKHJlcGxpY2FMYXllcikgewogCi0gICAgICAgIEludFJlY3Qg
dmlzaWJsZUxheWVyUmVjdCA9IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJs
ZUxheWVyUmVjdDxMYXllckNocm9taXVtPihyZW5kZXJTdXJmYWNlTGF5ZXIpOwotCiAgICAgICAg
IHJlcGxpY2FMYXllci0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKLSAgICAgICAgcGFpbnRDb250
ZW50c0lmRGlydHkocmVwbGljYUxheWVyLCB2aXNpYmxlTGF5ZXJSZWN0KTsKKyAgICAgICAgcGFp
bnRDb250ZW50c0lmRGlydHkocmVwbGljYUxheWVyKTsKIAogICAgICAgICBpZiAocmVwbGljYUxh
eWVyLT5tYXNrTGF5ZXIoKSkgewogICAgICAgICAgICAgcmVwbGljYUxheWVyLT5tYXNrTGF5ZXIo
KS0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKLSAgICAgICAgICAgIHBhaW50Q29udGVudHNJZkRp
cnR5KHJlcGxpY2FMYXllci0+bWFza0xheWVyKCksIEludFJlY3QoSW50UG9pbnQoKSwgcmVwbGlj
YUxheWVyLT5tYXNrTGF5ZXIoKS0+Y29udGVudEJvdW5kcygpKSk7CisgICAgICAgICAgICByZXBs
aWNhTGF5ZXItPm1hc2tMYXllcigpLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9p
bnQoKSwgcmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKS0+Y29udGVudEJvdW5kcygpKSk7CisgICAg
ICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpKTsK
ICAgICAgICAgfQogICAgIH0KIH0KQEAgLTQwMiw5ICs0MDEsNyBAQCB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdAogICAgICAgICAgICAgQVNTRVJUKGxheWVyLT5vcGFjaXR5KCkpOwogICAgICAgICAg
ICAgQVNTRVJUKCFsYXllci0+Ym91bmRzKCkuaXNFbXB0eSgpKTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgSW50UmVjdCB2aXNpYmxlTGF5ZXJSZWN0ID0gQ0NMYXllclRyZWVIb3N0Q29tbW9u
OjpjYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0PExheWVyQ2hyb21pdW0+KGxheWVyKTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkobGF5ZXIsIHZpc2libGVM
YXllclJlY3QpOworICAgICAgICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkobGF5ZXIpOwogICAg
ICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5j
cHAKaW5kZXggOTU4ODViNDIzYTBhODQxNjAwNTgwM2QzZjgwMDQ3OGZmOTY0MGJjZi4uYzM5ZjVl
YjI4MjRkODMwODNkNzJmZGRlZmY0YTZkNTdjZDdhNDljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RDb21tb24uY3BwCkBAIC0zMTAsMTEgKzMxMCwxNSBAQCBzdGF0aWMgdm9p
ZCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbChMYXllclR5cGUq
IGxheWVyLCBMYXllcgogICAgIGxheWVyU2NyZWVuU3BhY2VUcmFuc2Zvcm0udHJhbnNsYXRlM2Qo
LTAuNSAqIGJvdW5kcy53aWR0aCgpLCAtMC41ICogYm91bmRzLmhlaWdodCgpLCAwKTsKICAgICBs
YXllci0+c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0obGF5ZXJTY3JlZW5TcGFjZVRyYW5zZm9ybSk7
CiAKLSAgICBpZiAobGF5ZXItPnJlbmRlclN1cmZhY2UoKSkKKyAgICBpZiAobGF5ZXItPnJlbmRl
clN1cmZhY2UoKSkgeworICAgICAgICBpZiAobGF5ZXIgIT0gcm9vdExheWVyKQorICAgICAgICAg
ICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3Qocm9vdExheWVyLT52aXNpYmxlTGF5ZXJSZWN0
KCkpOwogICAgICAgICBsYXllci0+c2V0VGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVy
U3VyZmFjZSgpKTsKLSAgICBlbHNlIHsKKyAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQobGF5
ZXItPnBhcmVudCgpKTsKICAgICAgICAgbGF5ZXItPnNldFRhcmdldFJlbmRlclN1cmZhY2UobGF5
ZXItPnBhcmVudCgpLT50YXJnZXRSZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBJbnRSZWN0IHZp
c2libGVMYXllclJlY3QgPSBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZVZpc2libGVM
YXllclJlY3Q8TGF5ZXJUeXBlPihsYXllcik7CisgICAgICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5
ZXJSZWN0KHZpc2libGVMYXllclJlY3QpOwogICAgIH0KIAogICAgIC8vIGRyYXdhYmxlQ29udGVu
dFJlY3QoKSBpcyBhbHdheXMgc3RvcmVkIGluIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgKaW5kZXggNTI5YjNiMzIwY2Y3
MjQ0ZTJlNDE5OGVmMTk3ZTVjNDNkYzViNjlhYy4uMzU1ZWM1MWY4NDkxMGZmZWNkZjUxYjI0YmI5
ZjI2YzlkZGI5YmMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgK
QEAgLTYwLDcgKzYwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgogSW50UmVjdCBD
Q0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZVZpc2libGVMYXllclJlY3QoTGF5ZXJUeXBl
KiBsYXllcikKIHsKICAgICBBU1NFUlQobGF5ZXItPnRhcmdldFJlbmRlclN1cmZhY2UoKSk7Ci0g
ICAgSW50UmVjdCB0YXJnZXRTdXJmYWNlUmVjdCA9IGxheWVyLT50YXJnZXRSZW5kZXJTdXJmYWNl
KCktPmNvbnRlbnRSZWN0KCk7CisgICAgSW50UmVjdCB0YXJnZXRTdXJmYWNlUmVjdCA9IGxheWVy
LT50YXJnZXRSZW5kZXJTdXJmYWNlKCktPm93bmluZ0xheWVyKCktPnZpc2libGVMYXllclJlY3Qo
KTsKIAogICAgIGlmIChsYXllci0+dXNlc0xheWVyQ2xpcHBpbmcoKSkKICAgICAgICAgdGFyZ2V0
U3VyZmFjZVJlY3QuaW50ZXJzZWN0KGxheWVyLT5jbGlwUmVjdCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJTdXJmYWNlLmgKaW5kZXggZDgyM2E2Njk2Y2JkODk0ZjM2MWU3N2RiY2MyNzQ4OTNlYjMxMDgz
YS4uZDZmNDU3ZGMyNzNjZGYzZGMxN2U1NjkzZGUwMDA4ZTA0MGVkYmU3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJm
YWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJTdXJmYWNlLmgKQEAgLTk3LDYgKzk3LDggQEAgcHVibGljOgogICAgIE1hbmFnZWRU
ZXh0dXJlKiBjb250ZW50c1RleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzVGV4dHVy
ZS5nZXQoKTsgfQogCiAgICAgaW50IG93bmluZ0xheWVySWQoKSBjb25zdDsKKyAgICBDQ0xheWVy
SW1wbCogb3duaW5nTGF5ZXIoKSB7IHJldHVybiBtX293bmluZ0xheWVyOyB9CisKIHByaXZhdGU6
CiAgICAgdm9pZCBkcmF3TGF5ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgQ0NMYXllckltcGwq
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115171</attachid>
            <date>2011-11-15 08:52:53 -0800</date>
            <delta_ts>2011-11-15 09:49:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72162-20111115115252.patch</filename>
            <type>text/plain</type>
            <size>8381</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODEwYjc3YmNlNDU1YWZk
MjdmNmFhYjRlMDZjNGM0YWM0MzIyMzhhNi4uZmY3OTE5YjU4ZDQzZGJiMmVhODc4NjY1N2IzZTk5
NWYwNzFmMjE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDExLTExLTE1ICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIE1vdmUgc2V0VmlzaWJsZVJlY3QoKSBjYWxscyBpbnRvIGNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1BbmRWaXNpYmlsaXR5KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcyMTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVmYWN0b3Jpbmcgb2YgZXhpc3RpbmcgZnVuY3Rpb25hbGl0eSwgc28gdXNlcyBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50Q29udGVu
dHNJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNr
QW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRy
ZWVIb3N0OjpwYWludExheWVyQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp3YWxrTGF5ZXJzQW5kQ2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZp
c2liaWxpdHkpOgorCiAyMDExLTExLTE1ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBtb3ZlIGdlbmVyaWMgY29kZSBmcm9tIERl
dlRvb2xzLmpzIGludG8gdGhlIFdlYkNvcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcAppbmRleCAxMzRiYjA1MmMyNzhmMGQzOGE0ZjE5NmFmYWJlMGU5ZDk0OTkwOGU3Li4w
OGY5YjA1ZDEyZDhhMTFhMjhiNDMwYTg1MzJiMzlmYjJmYTkyZDNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTU3OSwxMCArNTc5LDcgQEAgdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcihDQ0xheWVySW1wbCogbGF5ZXIsIENDUmVuZGVyU3Vy
ZmFjZSogdGFyZ2UKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEludFJlY3QgdmlzaWJs
ZUxheWVyUmVjdCA9IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUxheWVy
UmVjdDxDQ0xheWVySW1wbD4obGF5ZXIpOwotICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0
KHZpc2libGVMYXllclJlY3QpOwotCi0gICAgaWYgKHZpc2libGVMYXllclJlY3QuaXNFbXB0eSgp
KQorICAgIGlmIChsYXllci0+dmlzaWJsZUxheWVyUmVjdCgpLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKGxheWVyLT51c2VzTGF5ZXJDbGlwcGluZygpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggYmE0MzBlYzUxN2IwMjdhNzY2ZTYzZGFhZWUwNjhm
ODI5MWY0NDhmMS4uYzIxZjM5NzMzNjY5MTQwOGMxMDRmMTA2ZTViOTI0NjRiYzM2NWNlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0zMzYsMTIgKzMzNiwxMCBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikK
ICAgICBwYWludExheWVyQ29udGVudHMobV91cGRhdGVMaXN0KTsKIH0KIAotc3RhdGljIHZvaWQg
cGFpbnRDb250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIGNvbnN0IEludFJlY3Qm
IHZpc2libGVMYXllclJlY3QpCitzdGF0aWMgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShMYXll
ckNocm9taXVtKiBsYXllcikKIHsKLSAgICBpZiAobGF5ZXItPmRyYXdzQ29udGVudCgpKSB7Ci0g
ICAgICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVMYXllclJlY3QpOworICAg
IGlmIChsYXllci0+ZHJhd3NDb250ZW50KCkpCiAgICAgICAgIGxheWVyLT5wYWludENvbnRlbnRz
SWZEaXJ0eSgpOwotICAgIH0KIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0Fu
ZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXll
cikKQEAgLTM1MiwyMCArMzUwLDIwIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tB
bmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTCiAKICAgICBp
ZiAocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSkgewogICAgICAgICByZW5kZXJTdXJm
YWNlTGF5ZXItPm1hc2tMYXllcigpLT5zZXRMYXllclRyZWVIb3N0KHRoaXMpOwotICAgICAgICBw
YWludENvbnRlbnRzSWZEaXJ0eShyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCBJbnRS
ZWN0KEludFBvaW50KCksIHJlbmRlclN1cmZhY2VMYXllci0+Y29udGVudEJvdW5kcygpKSk7Cisg
ICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCktPnNldFZpc2libGVMYXllclJl
Y3QoSW50UmVjdChJbnRQb2ludCgpLCByZW5kZXJTdXJmYWNlTGF5ZXItPmNvbnRlbnRCb3VuZHMo
KSkpOworICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZW5kZXJTdXJmYWNlTGF5ZXItPm1h
c2tMYXllcigpKTsKICAgICB9CiAKICAgICBMYXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIgPSBy
ZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpOwogICAgIGlmIChyZXBsaWNhTGF5ZXIp
IHsKIAotICAgICAgICBJbnRSZWN0IHZpc2libGVMYXllclJlY3QgPSBDQ0xheWVyVHJlZUhvc3RD
b21tb246OmNhbGN1bGF0ZVZpc2libGVMYXllclJlY3Q8TGF5ZXJDaHJvbWl1bT4ocmVuZGVyU3Vy
ZmFjZUxheWVyKTsKLQogICAgICAgICByZXBsaWNhTGF5ZXItPnNldExheWVyVHJlZUhvc3QodGhp
cyk7Ci0gICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJlcGxpY2FMYXllciwgdmlzaWJsZUxh
eWVyUmVjdCk7CisgICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJlcGxpY2FMYXllcik7CiAK
ICAgICAgICAgaWYgKHJlcGxpY2FMYXllci0+bWFza0xheWVyKCkpIHsKICAgICAgICAgICAgIHJl
cGxpY2FMYXllci0+bWFza0xheWVyKCktPnNldExheWVyVHJlZUhvc3QodGhpcyk7Ci0gICAgICAg
ICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLCBJbnRS
ZWN0KEludFBvaW50KCksIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCktPmNvbnRlbnRCb3VuZHMo
KSkpOworICAgICAgICAgICAgcmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0VmlzaWJsZUxh
eWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCktPmNv
bnRlbnRCb3VuZHMoKSkpOworICAgICAgICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkocmVwbGlj
YUxheWVyLT5tYXNrTGF5ZXIoKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC00MDIsMTAgKzQw
MCw4IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5
ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiAKICAgICAgICAgICAgIEFTU0VSVChsYXll
ci0+b3BhY2l0eSgpKTsKICAgICAgICAgICAgIEFTU0VSVCghbGF5ZXItPmJvdW5kcygpLmlzRW1w
dHkoKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEludFJlY3QgdmlzaWJsZUxheWVyUmVj
dCA9IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdDxMYXll
ckNocm9taXVtPihsYXllcik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHBhaW50Q29udGVu
dHNJZkRpcnR5KGxheWVyLCB2aXNpYmxlTGF5ZXJSZWN0KTsKKworICAgICAgICAgICAgcGFpbnRD
b250ZW50c0lmRGlydHkobGF5ZXIpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKaW5kZXggM2IyM2M5OTJhODAxYzU2MDk1Mjhi
ODA3ZWU4MmY5Y2YxZDJkNWZiMi4uYzFjZmZmOTBmZGRkNmMwMTJmZjU3ZTgyYjc2OTYyZmYyYzk2
ZGI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCkBAIC00
MzcsMTQgKzQzNywzOCBAQCBzdGF0aWMgdm9pZCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZp
c2liaWxpdHlJbnRlcm5hbChMYXllclR5cGUqIGxheWVyLCBMYXllcgogICAgICAgICBzb3J0TGF5
ZXJzKCZkZXNjZW5kYW50cy5hdChzb3J0aW5nU3RhcnRJbmRleCksIGRlc2NlbmRhbnRzLmVuZCgp
LCBsYXllclNvcnRlcik7CiB9CiAKKy8vIEZJWE1FOiBJbnN0ZWFkIG9mIHVzaW5nIHRoZSBmb2xs
b3dpbmcgZnVuY3Rpb24gdG8gc2V0IHZpc2liaWxpdHkgcmVjdHMgb24gYSBzZWNvbmQKKy8vIHRy
ZWUgcGFzcywgcmV2aXNlIGNhbGN1bGF0ZVZpc2libGVMYXllclJlY3QoKSBzbyB0aGF0IHRoaXMg
Y2FuIGJlIGRvbmUgaW4gYSBzaW5nbGUKKy8vIHBhc3MgaW5zaWRlIGNhbGN1bGF0ZURyYXdUcmFu
c2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsPD4oKS4KK3RlbXBsYXRlPHR5cGVuYW1lIExheWVy
VHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+CitzdGF0aWMgdm9pZCB3YWxrTGF5ZXJz
QW5kQ2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdHMoY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllclR5
cGU+ID4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCit7CisgICAgZm9yIChpbnQgc3VyZmFjZUlu
ZGV4ID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5zaXplKCkgLSAxOyBzdXJmYWNlSW5kZXggPj0g
MCA7IC0tc3VyZmFjZUluZGV4KSB7CisgICAgICAgIExheWVyVHlwZSogcmVuZGVyU3VyZmFjZUxh
eWVyID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOworICAgICAg
ICBSZW5kZXJTdXJmYWNlVHlwZSogcmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2VMYXllci0+
cmVuZGVyU3VyZmFjZSgpOworCisgICAgICAgIGlmICghcmVuZGVyU3VyZmFjZS0+ZHJhd09wYWNp
dHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFZlY3RvcjxSZWZQdHI8TGF5
ZXJUeXBlPiA+JiBsYXllckxpc3QgPSByZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBsYXllckluZGV4ID0gMDsgbGF5ZXJJbmRleCA8IGxheWVyTGlzdC5z
aXplKCk7ICsrbGF5ZXJJbmRleCkgeworICAgICAgICAgICAgTGF5ZXJUeXBlKiBsYXllciA9IGxh
eWVyTGlzdFtsYXllckluZGV4XS5nZXQoKTsKKyAgICAgICAgICAgIEludFJlY3QgdmlzaWJsZUxh
eWVyUmVjdCA9IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUxheWVyUmVj
dDxMYXllclR5cGU+KGxheWVyKTsKKyAgICAgICAgICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJS
ZWN0KHZpc2libGVMYXllclJlY3QpOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIENDTGF5
ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KExh
eWVyQ2hyb21pdW0qIGxheWVyLCBMYXllckNocm9taXVtKiByb290TGF5ZXIsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBmdWxsSGllcmFyY2h5TWF0cml4LCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4mIHJl
bmRlclN1cmZhY2VMYXllckxpc3QsIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiYgbGF5
ZXJMaXN0LCBpbnQgbWF4VGV4dHVyZVNpemUpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNhbGN1
bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsPExheWVyQ2hyb21pdW0sIFJl
bmRlclN1cmZhY2VDaHJvbWl1bSwgdm9pZCo+KGxheWVyLCByb290TGF5ZXIsIHBhcmVudE1hdHJp
eCwgZnVsbEhpZXJhcmNoeU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgbGF5ZXJMaXN0
LCAwLCBtYXhUZXh0dXJlU2l6ZSk7CisgICAgV2ViQ29yZTo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9y
bXNBbmRWaXNpYmlsaXR5SW50ZXJuYWw8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9t
aXVtLCB2b2lkKj4obGF5ZXIsIHJvb3RMYXllciwgcGFyZW50TWF0cml4LCBmdWxsSGllcmFyY2h5
TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBsYXllckxpc3QsIDAsIG1heFRleHR1cmVT
aXplKTsKKyAgICB3YWxrTGF5ZXJzQW5kQ2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdHM8TGF5ZXJD
aHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPihyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsK
IH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1z
QW5kVmlzaWJpbGl0eShDQ0xheWVySW1wbCogbGF5ZXIsIENDTGF5ZXJJbXBsKiByb290TGF5ZXIs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBmdWxsSGllcmFyY2h5TWF0cml4LCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJ
bXBsPiA+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBs
PiA+JiBsYXllckxpc3QsIENDTGF5ZXJTb3J0ZXIqIGxheWVyU29ydGVyLCBpbnQgbWF4VGV4dHVy
ZVNpemUpCiB7Ci0gICAgcmV0dXJuIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0
eUludGVybmFsPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2UsIENDTGF5ZXJTb3J0ZXI+KGxh
eWVyLCByb290TGF5ZXIsIHBhcmVudE1hdHJpeCwgZnVsbEhpZXJhcmNoeU1hdHJpeCwgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdCwgbGF5ZXJMaXN0LCBsYXllclNvcnRlciwgbWF4VGV4dHVyZVNpemUp
OworICAgIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsPENDTGF5
ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2UsIENDTGF5ZXJTb3J0ZXI+KGxheWVyLCByb290TGF5ZXIs
IHBhcmVudE1hdHJpeCwgZnVsbEhpZXJhcmNoeU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCwgbGF5ZXJMaXN0LCBsYXllclNvcnRlciwgbWF4VGV4dHVyZVNpemUpOworICAgIHdhbGtMYXll
cnNBbmRDYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0czxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJm
YWNlPihyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115183</attachid>
            <date>2011-11-15 09:49:11 -0800</date>
            <delta_ts>2012-01-04 12:13:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72162-20111115124909.patch</filename>
            <type>text/plain</type>
            <size>8312</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODEwYjc3YmNlNDU1YWZk
MjdmNmFhYjRlMDZjNGM0YWM0MzIyMzhhNi4uZmY3OTE5YjU4ZDQzZGJiMmVhODc4NjY1N2IzZTk5
NWYwNzFmMjE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDExLTExLTE1ICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIE1vdmUgc2V0VmlzaWJsZVJlY3QoKSBjYWxscyBpbnRvIGNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1BbmRWaXNpYmlsaXR5KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcyMTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVmYWN0b3Jpbmcgb2YgZXhpc3RpbmcgZnVuY3Rpb25hbGl0eSwgc28gdXNlcyBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50Q29udGVu
dHNJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNr
QW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRy
ZWVIb3N0OjpwYWludExheWVyQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp3YWxrTGF5ZXJzQW5kQ2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZp
c2liaWxpdHkpOgorCiAyMDExLTExLTE1ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBtb3ZlIGdlbmVyaWMgY29kZSBmcm9tIERl
dlRvb2xzLmpzIGludG8gdGhlIFdlYkNvcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcAppbmRleCAxMzRiYjA1MmMyNzhmMGQzOGE0ZjE5NmFmYWJlMGU5ZDk0OTkwOGU3Li4w
OGY5YjA1ZDEyZDhhMTFhMjhiNDMwYTg1MzJiMzlmYjJmYTkyZDNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTU3OSwxMCArNTc5LDcgQEAgdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcihDQ0xheWVySW1wbCogbGF5ZXIsIENDUmVuZGVyU3Vy
ZmFjZSogdGFyZ2UKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEludFJlY3QgdmlzaWJs
ZUxheWVyUmVjdCA9IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUxheWVy
UmVjdDxDQ0xheWVySW1wbD4obGF5ZXIpOwotICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0
KHZpc2libGVMYXllclJlY3QpOwotCi0gICAgaWYgKHZpc2libGVMYXllclJlY3QuaXNFbXB0eSgp
KQorICAgIGlmIChsYXllci0+dmlzaWJsZUxheWVyUmVjdCgpLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKGxheWVyLT51c2VzTGF5ZXJDbGlwcGluZygpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggYmE0MzBlYzUxN2IwMjdhNzY2ZTYzZGFhZWUwNjhm
ODI5MWY0NDhmMS4uYzIxZjM5NzMzNjY5MTQwOGMxMDRmMTA2ZTViOTI0NjRiYzM2NWNlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0zMzYsMTIgKzMzNiwxMCBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikK
ICAgICBwYWludExheWVyQ29udGVudHMobV91cGRhdGVMaXN0KTsKIH0KIAotc3RhdGljIHZvaWQg
cGFpbnRDb250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIGNvbnN0IEludFJlY3Qm
IHZpc2libGVMYXllclJlY3QpCitzdGF0aWMgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShMYXll
ckNocm9taXVtKiBsYXllcikKIHsKLSAgICBpZiAobGF5ZXItPmRyYXdzQ29udGVudCgpKSB7Ci0g
ICAgICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVMYXllclJlY3QpOworICAg
IGlmIChsYXllci0+ZHJhd3NDb250ZW50KCkpCiAgICAgICAgIGxheWVyLT5wYWludENvbnRlbnRz
SWZEaXJ0eSgpOwotICAgIH0KIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0Fu
ZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXll
cikKQEAgLTM1MiwyMCArMzUwLDIwIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tB
bmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTCiAKICAgICBp
ZiAocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSkgewogICAgICAgICByZW5kZXJTdXJm
YWNlTGF5ZXItPm1hc2tMYXllcigpLT5zZXRMYXllclRyZWVIb3N0KHRoaXMpOwotICAgICAgICBw
YWludENvbnRlbnRzSWZEaXJ0eShyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCBJbnRS
ZWN0KEludFBvaW50KCksIHJlbmRlclN1cmZhY2VMYXllci0+Y29udGVudEJvdW5kcygpKSk7Cisg
ICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCktPnNldFZpc2libGVMYXllclJl
Y3QoSW50UmVjdChJbnRQb2ludCgpLCByZW5kZXJTdXJmYWNlTGF5ZXItPmNvbnRlbnRCb3VuZHMo
KSkpOworICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZW5kZXJTdXJmYWNlTGF5ZXItPm1h
c2tMYXllcigpKTsKICAgICB9CiAKICAgICBMYXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIgPSBy
ZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpOwogICAgIGlmIChyZXBsaWNhTGF5ZXIp
IHsKIAotICAgICAgICBJbnRSZWN0IHZpc2libGVMYXllclJlY3QgPSBDQ0xheWVyVHJlZUhvc3RD
b21tb246OmNhbGN1bGF0ZVZpc2libGVMYXllclJlY3Q8TGF5ZXJDaHJvbWl1bT4ocmVuZGVyU3Vy
ZmFjZUxheWVyKTsKLQogICAgICAgICByZXBsaWNhTGF5ZXItPnNldExheWVyVHJlZUhvc3QodGhp
cyk7Ci0gICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJlcGxpY2FMYXllciwgdmlzaWJsZUxh
eWVyUmVjdCk7CisgICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJlcGxpY2FMYXllcik7CiAK
ICAgICAgICAgaWYgKHJlcGxpY2FMYXllci0+bWFza0xheWVyKCkpIHsKICAgICAgICAgICAgIHJl
cGxpY2FMYXllci0+bWFza0xheWVyKCktPnNldExheWVyVHJlZUhvc3QodGhpcyk7Ci0gICAgICAg
ICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLCBJbnRS
ZWN0KEludFBvaW50KCksIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCktPmNvbnRlbnRCb3VuZHMo
KSkpOworICAgICAgICAgICAgcmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0VmlzaWJsZUxh
eWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCktPmNv
bnRlbnRCb3VuZHMoKSkpOworICAgICAgICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkocmVwbGlj
YUxheWVyLT5tYXNrTGF5ZXIoKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC00MDIsMTAgKzQw
MCw4IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5
ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiAKICAgICAgICAgICAgIEFTU0VSVChsYXll
ci0+b3BhY2l0eSgpKTsKICAgICAgICAgICAgIEFTU0VSVCghbGF5ZXItPmJvdW5kcygpLmlzRW1w
dHkoKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEludFJlY3QgdmlzaWJsZUxheWVyUmVj
dCA9IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdDxMYXll
ckNocm9taXVtPihsYXllcik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHBhaW50Q29udGVu
dHNJZkRpcnR5KGxheWVyLCB2aXNpYmxlTGF5ZXJSZWN0KTsKKworICAgICAgICAgICAgcGFpbnRD
b250ZW50c0lmRGlydHkobGF5ZXIpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKaW5kZXggM2IyM2M5OTJhODAxYzU2MDk1Mjhi
ODA3ZWU4MmY5Y2YxZDJkNWZiMi4uNzIzOTE5MWIxMzdkNGI4N2M4ODVhOGM4MWZiOGEwNzc1YjAx
YTYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCkBAIC00
MzcsMTQgKzQzNywzNSBAQCBzdGF0aWMgdm9pZCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZp
c2liaWxpdHlJbnRlcm5hbChMYXllclR5cGUqIGxheWVyLCBMYXllcgogICAgICAgICBzb3J0TGF5
ZXJzKCZkZXNjZW5kYW50cy5hdChzb3J0aW5nU3RhcnRJbmRleCksIGRlc2NlbmRhbnRzLmVuZCgp
LCBsYXllclNvcnRlcik7CiB9CiAKKy8vIEZJWE1FOiBJbnN0ZWFkIG9mIHVzaW5nIHRoZSBmb2xs
b3dpbmcgZnVuY3Rpb24gdG8gc2V0IHZpc2liaWxpdHkgcmVjdHMgb24gYSBzZWNvbmQKKy8vIHRy
ZWUgcGFzcywgcmV2aXNlIGNhbGN1bGF0ZVZpc2libGVMYXllclJlY3QoKSBzbyB0aGF0IHRoaXMg
Y2FuIGJlIGRvbmUgaW4gYSBzaW5nbGUKKy8vIHBhc3MgaW5zaWRlIGNhbGN1bGF0ZURyYXdUcmFu
c2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsPD4oKS4KK3RlbXBsYXRlPHR5cGVuYW1lIExheWVy
VHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+CitzdGF0aWMgdm9pZCB3YWxrTGF5ZXJz
QW5kQ2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdHMoY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllclR5
cGU+ID4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCit7CisgICAgZm9yIChpbnQgc3VyZmFjZUlu
ZGV4ID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5zaXplKCkgLSAxOyBzdXJmYWNlSW5kZXggPj0g
MCA7IC0tc3VyZmFjZUluZGV4KSB7CisgICAgICAgIExheWVyVHlwZSogcmVuZGVyU3VyZmFjZUxh
eWVyID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOworICAgICAg
ICBSZW5kZXJTdXJmYWNlVHlwZSogcmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2VMYXllci0+
cmVuZGVyU3VyZmFjZSgpOworCisgICAgICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJUeXBlPiA+JiBs
YXllckxpc3QgPSByZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBsYXllckluZGV4ID0gMDsgbGF5ZXJJbmRleCA8IGxheWVyTGlzdC5zaXplKCk7ICsrbGF5
ZXJJbmRleCkgeworICAgICAgICAgICAgTGF5ZXJUeXBlKiBsYXllciA9IGxheWVyTGlzdFtsYXll
ckluZGV4XS5nZXQoKTsKKyAgICAgICAgICAgIEludFJlY3QgdmlzaWJsZUxheWVyUmVjdCA9IEND
TGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdDxMYXllclR5cGU+
KGxheWVyKTsKKyAgICAgICAgICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVM
YXllclJlY3QpOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIENDTGF5ZXJUcmVlSG9zdENv
bW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KExheWVyQ2hyb21pdW0q
IGxheWVyLCBMYXllckNocm9taXVtKiByb290TGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmdWxsSGllcmFy
Y2h5TWF0cml4LCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4mIHJlbmRlclN1cmZhY2VM
YXllckxpc3QsIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiYgbGF5ZXJMaXN0LCBpbnQg
bWF4VGV4dHVyZVNpemUpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNhbGN1bGF0ZURyYXdUcmFu
c2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VD
aHJvbWl1bSwgdm9pZCo+KGxheWVyLCByb290TGF5ZXIsIHBhcmVudE1hdHJpeCwgZnVsbEhpZXJh
cmNoeU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgbGF5ZXJMaXN0LCAwLCBtYXhUZXh0
dXJlU2l6ZSk7CisgICAgV2ViQ29yZTo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmls
aXR5SW50ZXJuYWw8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCB2b2lkKj4o
bGF5ZXIsIHJvb3RMYXllciwgcGFyZW50TWF0cml4LCBmdWxsSGllcmFyY2h5TWF0cml4LCByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0LCBsYXllckxpc3QsIDAsIG1heFRleHR1cmVTaXplKTsKKyAgICB3
YWxrTGF5ZXJzQW5kQ2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdHM8TGF5ZXJDaHJvbWl1bSwgUmVu
ZGVyU3VyZmFjZUNocm9taXVtPihyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKIH0KIAogdm9pZCBD
Q0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0
eShDQ0xheWVySW1wbCogbGF5ZXIsIENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBmdWxsSGllcmFyY2h5TWF0cml4LCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+JiByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0LCBWZWN0b3I8UmVmUHRyPENDTGF5ZXJJbXBsPiA+JiBsYXllckxp
c3QsIENDTGF5ZXJTb3J0ZXIqIGxheWVyU29ydGVyLCBpbnQgbWF4VGV4dHVyZVNpemUpCiB7Ci0g
ICAgcmV0dXJuIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsPEND
TGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2UsIENDTGF5ZXJTb3J0ZXI+KGxheWVyLCByb290TGF5
ZXIsIHBhcmVudE1hdHJpeCwgZnVsbEhpZXJhcmNoeU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVy
TGlzdCwgbGF5ZXJMaXN0LCBsYXllclNvcnRlciwgbWF4VGV4dHVyZVNpemUpOworICAgIGNhbGN1
bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsPENDTGF5ZXJJbXBsLCBDQ1Jl
bmRlclN1cmZhY2UsIENDTGF5ZXJTb3J0ZXI+KGxheWVyLCByb290TGF5ZXIsIHBhcmVudE1hdHJp
eCwgZnVsbEhpZXJhcmNoeU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgbGF5ZXJMaXN0
LCBsYXllclNvcnRlciwgbWF4VGV4dHVyZVNpemUpOworICAgIHdhbGtMYXllcnNBbmRDYWxjdWxh
dGVWaXNpYmxlTGF5ZXJSZWN0czxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPihyZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>