<?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>52311</bug_id>
          
          <creation_ts>2011-01-12 10:57:45 -0800</creation_ts>
          <short_desc>[chromium] Add command-line flag to enable composite to offscreen texture.</short_desc>
          <delta_ts>2011-02-17 12:43:09 -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>Other</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></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>abarth</cc>
    
    <cc>backer</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>enne</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>rjkroege</cc>
    
    <cc>senorblanco</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>333166</commentid>
    <comment_count>0</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-12 10:57:45 -0800</bug_when>
    <thetext>[chromium] Add command-line flag to enable composite to offscreen texture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333168</commentid>
    <comment_count>1</comment_count>
      <attachid>78708</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-12 11:01:45 -0800</bug_when>
    <thetext>Created attachment 78708
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333177</commentid>
    <comment_count>2</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-01-12 11:12:34 -0800</bug_when>
    <thetext>Attachment 78708 did not build on qt:
Build output: http://queues.webkit.org/results/7476094</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333191</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-01-12 11:28:15 -0800</bug_when>
    <thetext>Attachment 78708 did not build on win:
Build output: http://queues.webkit.org/results/7473119</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333212</commentid>
    <comment_count>4</comment_count>
      <attachid>78717</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-12 12:04:14 -0800</bug_when>
    <thetext>Created attachment 78717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333238</commentid>
    <comment_count>5</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-12 12:35:56 -0800</bug_when>
    <thetext>This patch provides plumbing for a new command line switch: --enable-composite-to-texture

I&apos;m still doing some testing on it (hence the lack of an review-request flag), but I&apos;d appreciate any feedback on whether I&apos;m doing it correctly, or if there&apos;s a better way.

In particular, is my use of page()-&gt;settings() in WebViewImpl.cpp OK, or should I plumb this differently?

The function copyOffscreenTextureToDisplay() is (nearly) the same as in https://bugs.webkit.org/show_bug.cgi?id=50833, and is only required to allow automated testing with the new flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333265</commentid>
    <comment_count>6</comment_count>
      <attachid>78717</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-01-12 13:53:26 -0800</bug_when>
    <thetext>Comment on attachment 78717
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:643
&gt; +        GLC(m_context, m_context-&gt;bindFramebuffer(GraphicsContext3D::FRAMEBUFFER, 0));

It would be nice to re-factor LayerRendererChromium::useRenderSurface() such that when you pass zero as your render surface and m_compositeOffscreen == true then it renders to the display. I think it would be fairly straightforward. It looks like all it would take would be to:

Replace:
if (renderSurface == m_defaultRenderSurface &amp;&amp; !m_compositeOffscreen)

by:
if ((renderSurface == m_defaultRenderSurface &amp;&amp; !m_compositeOffscreen) || (!renderSurface &amp;&amp; m_compositeOffscreen))

Then you won&apos;t need to call bindFramebuffer, setDrawViewportRect or m_currentRenderSurface == 0  here.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:647
&gt; +        m_context-&gt;colorMask(true, true, true, true);

You can avoid doing this clear every frame if you just do it once when setCompositeOffscreen(true) is called and keep the color mask set to (true, true, true, false).

&gt; WebKit/chromium/src/WebSettingsImpl.cpp:287
&gt; +void WebSettingsImpl::setCompositeToTextureEnabled(bool enabled)

Since this is a setting that&apos;s only applicable to Chromium and not the other WebKit ports, I don&apos;t think it should be propagated down to the Settings class. The right way to do this would be to add another member to WebSettingsImpl and store the setting value there.  WebViewImpl has access to WebSettingsImpl via WebViewImpl::settings()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333327</commentid>
    <comment_count>7</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-12 15:03:17 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 78717 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78717&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:643
&gt; &gt; +        GLC(m_context, m_context-&gt;bindFramebuffer(GraphicsContext3D::FRAMEBUFFER, 0));
&gt; 
&gt; It would be nice to re-factor LayerRendererChromium::useRenderSurface() such that when you pass zero as your render surface and m_compositeOffscreen == true then it renders to the display. I think it would be fairly straightforward. It looks like all it would take would be to:
&gt; 
&gt; Replace:
&gt; if (renderSurface == m_defaultRenderSurface &amp;&amp; !m_compositeOffscreen)
&gt; 
&gt; by:
&gt; if ((renderSurface == m_defaultRenderSurface &amp;&amp; !m_compositeOffscreen) || (!renderSurface &amp;&amp; m_compositeOffscreen))
&gt; 
&gt; Then you won&apos;t need to call bindFramebuffer, setDrawViewportRect or m_currentRenderSurface == 0  here.

I can make this change, although at present I don&apos;t think it&apos;s possible to call useRenderSurface() with a zero-valued surface if m_compositeOffscreen is true.

&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:647
&gt; &gt; +        m_context-&gt;colorMask(true, true, true, true);
&gt; 
&gt; You can avoid doing this clear every frame if you just do it once when setCompositeOffscreen(true) is called and keep the color mask set to (true, true, true, false).
&gt; 
&gt; &gt; WebKit/chromium/src/WebSettingsImpl.cpp:287
&gt; &gt; +void WebSettingsImpl::setCompositeToTextureEnabled(bool enabled)
&gt; 
&gt; Since this is a setting that&apos;s only applicable to Chromium and not the other WebKit ports, I don&apos;t think it should be propagated down to the Settings class. The right way to do this would be to add another member to WebSettingsImpl and store the setting value there.  WebViewImpl has access to WebSettingsImpl via WebViewImpl::settings()

No problem ... I&apos;ve uploaded a new patch ... let me know if the new patch is what you have in mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333329</commentid>
    <comment_count>8</comment_count>
      <attachid>78738</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-12 15:04:02 -0800</bug_when>
    <thetext>Created attachment 78738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333331</commentid>
    <comment_count>9</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-12 15:06:17 -0800</bug_when>
    <thetext>(In reply to comment #7)

Sorry, forgot one bullet item:

&gt; &gt; You can avoid doing this clear every frame if you just do it once when setCompositeOffscreen(true) is called and keep the color mask set to (true, true, true, false).
&gt; &gt; 

Will this work if setCompositeOffscreen(true) isn&apos;t called inside of doComposite(), i.e. it&apos;s called once when the render layer is created an then never again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333384</commentid>
    <comment_count>10</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-01-12 16:04:05 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 78717 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78717&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:643
&gt; &gt; &gt; +        GLC(m_context, m_context-&gt;bindFramebuffer(GraphicsContext3D::FRAMEBUFFER, 0));
&gt; &gt; 
&gt; &gt; It would be nice to re-factor LayerRendererChromium::useRenderSurface() such that when you pass zero as your render surface and m_compositeOffscreen == true then it renders to the display. I think it would be fairly straightforward. It looks like all it would take would be to:
&gt; &gt; 
&gt; &gt; Replace:
&gt; &gt; if (renderSurface == m_defaultRenderSurface &amp;&amp; !m_compositeOffscreen)
&gt; &gt; 
&gt; &gt; by:
&gt; &gt; if ((renderSurface == m_defaultRenderSurface &amp;&amp; !m_compositeOffscreen) || (!renderSurface &amp;&amp; m_compositeOffscreen))
&gt; &gt; 
&gt; &gt; Then you won&apos;t need to call bindFramebuffer, setDrawViewportRect or m_currentRenderSurface == 0  here.
&gt; 
&gt; I can make this change, although at present I don&apos;t think it&apos;s possible to call useRenderSurface() with a zero-valued surface if m_compositeOffscreen is true.

What I was suggesting is that if you make this change, you should be able to call useRenderSurface(0) here instead of making all the individual calls.  Would that work? 

&gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:647
&gt; &gt; &gt; +        m_context-&gt;colorMask(true, true, true, true);
&gt; &gt; 
&gt; &gt; You can avoid doing this clear every frame if you just do it once when setCompositeOffscreen(true) is called and keep the color mask set to (true, true, true, false).
&gt; &gt; 
&gt; &gt; &gt; WebKit/chromium/src/WebSettingsImpl.cpp:287
&gt; &gt; &gt; +void WebSettingsImpl::setCompositeToTextureEnabled(bool enabled)
&gt; &gt; 
&gt; &gt; Since this is a setting that&apos;s only applicable to Chromium and not the other WebKit ports, I don&apos;t think it should be propagated down to the Settings class. The right way to do this would be to add another member to WebSettingsImpl and store the setting value there.  WebViewImpl has access to WebSettingsImpl via WebViewImpl::settings()
&gt; 
&gt; No problem ... I&apos;ve uploaded a new patch ... let me know if the new patch is what you have in mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333387</commentid>
    <comment_count>11</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-01-12 16:06:15 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #7)
&gt; 
&gt; Sorry, forgot one bullet item:
&gt; 
&gt; &gt; &gt; You can avoid doing this clear every frame if you just do it once when setCompositeOffscreen(true) is called and keep the color mask set to (true, true, true, false).
&gt; &gt; &gt; 
&gt; 
&gt; Will this work if setCompositeOffscreen(true) isn&apos;t called inside of doComposite(), i.e. it&apos;s called once when the render layer is created an then never again?

It should, in theory. If you clear the alpha channel of the backbuffer once at the very beginning and then mask alpha writes off, then the alpha channel should stay clean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333686</commentid>
    <comment_count>12</comment_count>
      <attachid>78809</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-13 07:56:16 -0800</bug_when>
    <thetext>Created attachment 78809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333689</commentid>
    <comment_count>13</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-13 08:02:52 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; What I was suggesting is that if you make this change, you should be able to call useRenderSurface(0) here instead of making all the individual calls.  Would that work?

Ahh, so you&apos;re suggesting using it to simplify copyOffscreenTextureToDisplay()? If so, then yes, it seems to work well (see new patch). If this is not what you had in mind let me know.

(In reply to comment #11)
&gt; &gt; 
&gt; &gt; Will this work if setCompositeOffscreen(true) isn&apos;t called inside of doComposite(), i.e. it&apos;s called once when the render layer is created an then never again?
&gt; 
&gt; It should, in theory. If you clear the alpha channel of the backbuffer once at the very beginning and then mask alpha writes off, then the alpha channel should stay clean.

OK, I&apos;ve implemented this, and it seems to test OK. I&apos;ve moved the call to setCompositeOffscreen() to WebViewImpl::resize() to avoid clearing the screen on each and every call to doComposite(), but making sure to clear whenever the screen size changes. Question: is WebViewImpl::resize() guaranteed to be called at least once before doComposite()? I&apos;m guessing &apos;yes&apos;, and it seems to test OK, but I&apos;m not 100% sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333776</commentid>
    <comment_count>14</comment_count>
      <attachid>78809</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-01-13 10:27:44 -0800</bug_when>
    <thetext>Comment on attachment 78809
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:639
&gt; +        setDrawViewportRect(IntRect(0, 0, m_rootLayerTextureWidth, m_rootLayerTextureHeight), true);

Could the two calls above be replaced by &quot;useRenderSurface(0)&quot; ?

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:643
&gt; +        m_context-&gt;clearColor(1, 0, 0, 1); // Clear to red to detect regions not composite.

&quot;not composite&quot; -&gt; &quot;not composited&quot; ?

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:658
&gt; +        m_currentRenderSurface = 0; // Need to do this, or else next call to useRenderSurface will still be bound to

I don&apos;t believe you need to make this call now.  It should be taken care of when calling useRenderSurface(0)

&gt; WebKit/chromium/src/WebViewImpl.cpp:972
&gt; +        m_layerRenderer-&gt;setCompositeOffscreen(settings()-&gt;compositeToTextureEnabled()); // Clears display.

You probably need to define a separate clearDisplay() method in m_layerRenderer as setCompositeOffScreen uses m_rootLayerTextureWidth/Height which won&apos;t be correct while resizing.  However, I&apos;m getting a bit confused now as to why we need to clear the window.. DrawLayers does a clear that affects the alpha channel so the resulting offscreen texture should always have alpha = 1.  Why do we need to clear again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333895</commentid>
    <comment_count>15</comment_count>
      <attachid>78846</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-13 12:55:42 -0800</bug_when>
    <thetext>Created attachment 78846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333897</commentid>
    <comment_count>16</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-13 13:00:40 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 78809 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78809&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:639
&gt; &gt; +        setDrawViewportRect(IntRect(0, 0, m_rootLayerTextureWidth, m_rootLayerTextureHeight), true);
&gt; 
&gt; Could the two calls above be replaced by &quot;useRenderSurface(0)&quot; ?

Yes, but these calls are now gone - see below.

&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:643
&gt; &gt; +        m_context-&gt;clearColor(1, 0, 0, 1); // Clear to red to detect regions not composite.
&gt; 
&gt; &quot;not composite&quot; -&gt; &quot;not composited&quot; ?

fixed.

&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:658
&gt; &gt; +        m_currentRenderSurface = 0; // Need to do this, or else next call to useRenderSurface will still be bound to
&gt; 
&gt; I don&apos;t believe you need to make this call now.  It should be taken care of when calling useRenderSurface(0)

Yes, removed.

&gt; &gt; WebKit/chromium/src/WebViewImpl.cpp:972
&gt; &gt; +        m_layerRenderer-&gt;setCompositeOffscreen(settings()-&gt;compositeToTextureEnabled()); // Clears display.
&gt; 
&gt; You probably need to define a separate clearDisplay() method in m_layerRenderer as setCompositeOffScreen uses m_rootLayerTextureWidth/Height which won&apos;t be correct while resizing.  However, I&apos;m getting a bit confused now as to why we need to clear the window.. DrawLayers does a clear that affects the alpha channel so the resulting offscreen texture should always have alpha = 1.  Why do we need to clear again?

The need to clear arose as part of fixing an incorrect test result for compositing/geometry/fixed-position.html (only during offscreen compositing), but recent changes (possibly outside this patch?) seem to have made clearing unnecessary. I have removed this code from setCompositeOffscreen() and moved the call to setCompositeOffscreen() back to doComposite(), as it no longer has high overhead associated with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333911</commentid>
    <comment_count>17</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-13 13:34:00 -0800</bug_when>
    <thetext>Just to update: I have successfully tested the current version of the patch on both Mac and Linux (with compositing-to-texture both &apos;on&apos; and &apos;off&apos;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333914</commentid>
    <comment_count>18</comment_count>
      <attachid>78846</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-01-13 13:46:07 -0800</bug_when>
    <thetext>Comment on attachment 78846
Patch

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

&gt; WebKit/chromium/src/WebViewImpl.cpp:972
&gt; +        m_layerRenderer-&gt;setCompositeOffscreen(settings()-&gt;compositeToTextureEnabled());

Is this the right place to make this call?  Shouldn&apos;t it be made inside doComposite()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333924</commentid>
    <comment_count>19</comment_count>
      <attachid>78854</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-13 14:05:40 -0800</bug_when>
    <thetext>Created attachment 78854
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333925</commentid>
    <comment_count>20</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-13 14:07:25 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 78846 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78846&amp;action=review
&gt; 
&gt; &gt; WebKit/chromium/src/WebViewImpl.cpp:972
&gt; &gt; +        m_layerRenderer-&gt;setCompositeOffscreen(settings()-&gt;compositeToTextureEnabled());
&gt; 
&gt; Is this the right place to make this call?  Shouldn&apos;t it be made inside doComposite()?

It was, but somehow when I created a git branch to commit from, it didn&apos;t get that change (I tried rebasing, which apparently didn&apos;t do what I expected).

Should be OK now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333927</commentid>
    <comment_count>21</comment_count>
      <attachid>78854</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-01-13 14:15:47 -0800</bug_when>
    <thetext>Comment on attachment 78854
Patch

One more question: Does setCompositeOffScreen() still need to set the layerRenderer for the root layer?  When we&apos;re compositing off screen, we&apos;ll pass 0 as the argument to this function so prepareContentsTexture() will never be called.  I think this could simplify setCompositeOffScreen to the point that it just sets the value of m_compositeOffscreen.  Or maybe I&apos;m missing something here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334283</commentid>
    <comment_count>22</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-14 06:44:59 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 78854 [details])
&gt; One more question: Does setCompositeOffScreen() still need to set the layerRenderer for the root layer?  When we&apos;re compositing off screen, we&apos;ll pass 0 as the argument to this function so prepareContentsTexture() will never be called.  I think this could simplify setCompositeOffScreen to the point that it just sets the value of m_compositeOffscreen.  Or maybe I&apos;m missing something here.

I don&apos;t think this will work.

When compositing to a texture, instead of to the screen, the RenderSurfaceChromium object that manages the texture we&apos;re compositing into needs to create a GL texture, and to do this it needs to call prepareContentsTexture() and this in turn requires a non-null pointer to a layerRenderer so that it knows what texture manager and which context to associate the texture with ...

Commenting out the call &quot;m_rootLayer-&gt;setLayerRenderer(this);&quot; in setCompositeOffscreen() leads to a null-pointer dereference in the current code and thus &quot;Aw, snap!&quot;.

I assume when you say &quot;we&apos;ll pass 0 as the argument to this function&quot; you mean that final display of the texture (in the testing code path) will call useRenderSurface(0).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334296</commentid>
    <comment_count>23</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-14 07:24:25 -0800</bug_when>
    <thetext>&gt; ... the RenderSurfaceChromium object that manages the texture we&apos;re compositing into needs to create a GL texture, and to do this it needs to call prepareContentsTexture() and this in turn requires a non-null pointer to a layerRenderer so that it knows what texture manager and which context to associate the texture with ...
&gt; 

I was thinking ... it seems odd to be able to create a RenderSurfaceChromium with no LayerRenderer since subsequent calls to prepareContentTexture don&apos;t check for this condition, and thus die.

Is there any way to have a default LayerRenderer, perhaps created and stored as a static var in RenderSurfaceChromium, which is used if no LayerRenderer is specified?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334333</commentid>
    <comment_count>24</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-01-14 08:56:03 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; (From update of attachment 78854 [details] [details])
&gt; &gt; One more question: Does setCompositeOffScreen() still need to set the layerRenderer for the root layer?  When we&apos;re compositing off screen, we&apos;ll pass 0 as the argument to this function so prepareContentsTexture() will never be called.  I think this could simplify setCompositeOffScreen to the point that it just sets the value of m_compositeOffscreen.  Or maybe I&apos;m missing something here.
&gt; 
&gt; I don&apos;t think this will work.
&gt; 
&gt; When compositing to a texture, instead of to the screen, the RenderSurfaceChromium object that manages the texture we&apos;re compositing into needs to create a GL texture, and to do this it needs to call prepareContentsTexture() and this in turn requires a non-null pointer to a layerRenderer so that it knows what texture manager and which context to associate the texture with ...
&gt; 
&gt; Commenting out the call &quot;m_rootLayer-&gt;setLayerRenderer(this);&quot; in setCompositeOffscreen() leads to a null-pointer dereference in the current code and thus &quot;Aw, snap!&quot;.

Oh, I see. Good point.  Here&apos;s something we could do: Modify LayerRendererChromium::setRootLayer() to call setLayerRenderer.  This seems like a more natural place to make the call, and hopefully it will be made only as needed.  If that works then LayerRendererChromium::setCompositeOffscreen() could be simplified as:

void LayerRendererChromium::setCompositeOffscreen(bool compositeOffscreen)
{
    if (m_compositeOffscreen == compositeOffscreen)
       return;

    m_compositeOffscreen = compositeOffscreen;

    if (!m_compositeOffscreen)
        m_rootLayer-&gt;m_renderSurface.clear();
}


&gt; 
&gt; I assume when you say &quot;we&apos;ll pass 0 as the argument to this function&quot; you mean that final display of the texture (in the testing code path) will call useRenderSurface(0).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334492</commentid>
    <comment_count>25</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-14 12:13:28 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; 
&gt; Oh, I see. Good point.  Here&apos;s something we could do: Modify LayerRendererChromium::setRootLayer() to call setLayerRenderer.  This seems like a more natural place to make the call, and hopefully it will be made only as needed.  If that works then LayerRendererChromium::setCompositeOffscreen() could be simplified as:
&gt; 
&gt; void LayerRendererChromium::setCompositeOffscreen(bool compositeOffscreen)
&gt; {
&gt;     if (m_compositeOffscreen == compositeOffscreen)
&gt;        return;
&gt; 
&gt;     m_compositeOffscreen = compositeOffscreen;
&gt; 
&gt;     if (!m_compositeOffscreen)
&gt;         m_rootLayer-&gt;m_renderSurface.clear();
&gt; }

Sounds good, although I&apos;ve run into one slight hitch: when I make the modification (see diff below), one test starts failing --- compositing/iframes/composited-iframe-alignment.html renders upside down! It renders right-side up without this change. Off the top of my head, I don&apos;t know why this is.


diff --git a/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp b/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
index ce7b868..7c163ad 100644
--- a/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
+++ b/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
@@ -340,6 +340,8 @@ void LayerRendererChromium::present()
 void LayerRendererChromium::setRootLayer(PassRefPtr&lt;LayerChromium&gt; layer)
 {
     m_rootLayer = layer;
+    if (m_rootLayer)
+        m_rootLayer-&gt;setLayerRenderer(this);
     m_rootLayerTiler-&gt;invalidateEntireLayer();
     if (m_horizontalScrollbarTiler)
         m_horizontalScrollbarTiler-&gt;invalidateEntireLayer();
@@ -621,18 +623,12 @@ void LayerRendererChromium::updateLayersRecursive(LayerChromium* layer, const Tr
 
 void LayerRendererChromium::setCompositeOffscreen(bool compositeOffscreen)
 {
-    m_compositeOffscreen = compositeOffscreen;
+    if (m_compositeOffscreen == compositeOffscreen)
+       return;
 
-    if (!m_rootLayer) {
-        m_compositeOffscreen = false;
-        return;
-    }
+    m_compositeOffscreen = compositeOffscreen;
 
-    if (m_compositeOffscreen) {
-        // Need to explicitly set a LayerRendererChromium for the layer with the offscreen texture,
-        // or else the call to prepareContentsTexture() in useRenderSurface() will fail.
-        m_rootLayer-&gt;setLayerRenderer(this);
-    } else
+    if (!m_compositeOffscreen &amp;&amp; m_rootLayer)
         m_rootLayer-&gt;m_renderSurface.clear();
 }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334519</commentid>
    <comment_count>26</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-01-14 12:34:47 -0800</bug_when>
    <thetext> 
&gt; Sounds good, although I&apos;ve run into one slight hitch: when I make the modification (see diff below), one test starts failing --- compositing/iframes/composited-iframe-alignment.html renders upside down! It renders right-side up without this change. Off the top of my head, I don&apos;t know why this is.

Strange... I don&apos;t think I see why that would happen..  Is this repeatable or is there maybe a race condition somewhere that this seems to tickle?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334609</commentid>
    <comment_count>27</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-14 14:23:20 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; &gt; Sounds good, although I&apos;ve run into one slight hitch: when I make the modification (see diff below), one test starts failing --- compositing/iframes/composited-iframe-alignment.html renders upside down! It renders right-side up without this change. Off the top of my head, I don&apos;t know why this is.
&gt; 
&gt; Strange... I don&apos;t think I see why that would happen..  Is this repeatable or is there maybe a race condition somewhere that this seems to tickle?

I think I&apos;m suffering from a git problem. Now the previous version of the patch is giving me problems. I&apos;ll get back to this Monday morning :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334635</commentid>
    <comment_count>28</comment_count>
      <attachid>79007</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-14 14:52:43 -0800</bug_when>
    <thetext>Created attachment 79007
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334639</commentid>
    <comment_count>29</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-14 14:55:27 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; Created an attachment (id=79007) [details]
&gt; Patch

OK, I&apos;ve un-snarled my repo ... here&apos;s the patch, but I haven&apos;t fully tested it (compositing/iframes/composited-iframe-alignment.html looks OK in Debug/chrome, but I haven&apos;t tried it in DumpRenderTree). Will continue this Monday ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335332</commentid>
    <comment_count>30</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-17 08:02:52 -0800</bug_when>
    <thetext>OK, here&apos;s the latest update:

- I updated my repo to pull in the WebKit re-structuring changes from the weekend
- I&apos;ve re-tested my patch
  - DumpRenderTree seems to crash on many tests ...
  - ... but those same tests seem to pass on chrome

This doesn&apos;t seem to be related to moving the call to setLayerRenderer() into setRootLayer() - and DRT was working with offscreen compositing last week -has DRT changed recently? Is there any reason why it would behave this differently?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335839</commentid>
    <comment_count>31</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-18 08:38:27 -0800</bug_when>
    <thetext>(In reply to comment #30)

I&apos;ve found the problem - good news is I was mistaken, and it&apos;s not DRT&apos;s fault.

The problem stems from using 

useRenderSurface(0);

in the call to copyOffscreenTextureToDisplay(). This has the side effect of setting 

m_currentRenderSurface = renderSurface; // = 0

which then causes a null pointer dereference in when we call m_defaultRenderSurface-&gt;draw(), since it calls setScissorToRect(), which attempts

int scissorX = scissorRect.x() - m_currentRenderSurface-&gt;m_contentRect.x();

Should I modify setScissorToRect() to handle this case (use rootLayer rect instead?), or stop using useRenderSurface(0)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335878</commentid>
    <comment_count>32</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-01-18 09:54:08 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; (In reply to comment #30)
&gt; 
&gt; I&apos;ve found the problem - good news is I was mistaken, and it&apos;s not DRT&apos;s fault.
&gt; 
&gt; The problem stems from using 
&gt; 
&gt; useRenderSurface(0);
&gt; 
&gt; in the call to copyOffscreenTextureToDisplay(). This has the side effect of setting 
&gt; 
&gt; m_currentRenderSurface = renderSurface; // = 0
&gt; 
&gt; which then causes a null pointer dereference in when we call m_defaultRenderSurface-&gt;draw(), since it calls setScissorToRect(), which attempts
&gt; 
&gt; int scissorX = scissorRect.x() - m_currentRenderSurface-&gt;m_contentRect.x();
&gt; 
&gt; Should I modify setScissorToRect() to handle this case (use rootLayer rect instead?), or stop using useRenderSurface(0)?

Oops.  Good catch.  Modifying setScissorRect is reasonable as the method needs to be able to deal with drawing directly to the window.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336076</commentid>
    <comment_count>33</comment_count>
      <attachid>79326</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-18 14:06:00 -0800</bug_when>
    <thetext>Created attachment 79326
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336087</commentid>
    <comment_count>34</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-18 14:18:07 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; Created an attachment (id=79326) [details]
&gt; Patch

OK, this patch is an attempt to recover after the confusion of the last patch, where I suspect I was quite testing what I thought I was testing ...

Comments:

1) I have added a function called clearFramebuffer() to LayerRendererChromium and called it from initializeSharedObjects() to clear the display. Without this, a large number of tests fail on a Skia assertion

SkASSERT(r &lt; a)

suggesting the alpha channel is unhappy. Placing it in initializeSharedObjects() means it gets cleared only once.

Question: is there any reason we should also do clearFramebuffer(m_offscreenFramebufferId)?

2) I have proposed a fix for setScissorRect() for the use case useRenderSurface(0) ... let me know if using thew contentRect from m_defaultRenderSurface seems correct. It seems to display OK for all cases I&apos;ve tried.

3) Similarly, I&apos;ve had to test for renderSurface == 0 in useRenderSurface and default to setting the drawViewPortRect according to m_defaultRenderSurface when renderSurface is 0.

4) A small number of test cases seem to have slight changes in pixel intensities --- imperceptible to my eye --- that seem to again be related to alpha channel values. One in particular, compositing/iframes/composited-iframe-alignment.html, tests fine if I delete the line clearFramebuffer(0) from initializeSharedObjects(), but this of course messes up a bunch of other tests (see (1)).

I would like to proceed with the patch despite these tests (can we temporarily mark them as expected-fail for offscreen compositing, or rebaseline for the offscreen case?). I will continue to try and hunt down the cause, but I think this will be easier once offscreen-compositing is part of the test suite (to prevent any other regressions).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336179</commentid>
    <comment_count>35</comment_count>
      <attachid>79326</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-01-18 16:06:59 -0800</bug_when>
    <thetext>Comment on attachment 79326
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:732
&gt; +    IntRect contentRect(m_defaultRenderSurface-&gt;m_contentRect);

To avoid double assignment you could write this as:
IntRect contentRect = (m_currentRenderSurface ? m_currentRenderSurface-&gt;m_contentRect : m_defaultRenderSurface-&gt;m_contentRect)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336188</commentid>
    <comment_count>36</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-01-18 16:15:32 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; (In reply to comment #33)
&gt; &gt; Created an attachment (id=79326) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; OK, this patch is an attempt to recover after the confusion of the last patch, where I suspect I was quite testing what I thought I was testing ...
&gt; 
&gt; Comments:
&gt; 
&gt; 1) I have added a function called clearFramebuffer() to LayerRendererChromium and called it from initializeSharedObjects() to clear the display. Without this, a large number of tests fail on a Skia assertion
&gt; 
&gt; SkASSERT(r &lt; a)
&gt; 

I think there&apos;s a good opportunity now that you&apos;re getting the assert to understand what&apos;s going wrong here.  Clearing the framebuffer at init time seems to mostly work but I&apos;m curious why (and why it causes that one failure) and whether it&apos;s masking some other problem.  

Have you tried calling:

m_context-&gt;colorMask(true, true, true, true)

in copyOffscreenTextureToDisplay() before drawing ?  The texture attached to the m_defaultRenderSurface should have a clear alpha channel.



&gt; suggesting the alpha channel is unhappy. Placing it in initializeSharedObjects() means it gets cleared only once.
&gt; 
&gt; Question: is there any reason we should also do clearFramebuffer(m_offscreenFramebufferId)?
&gt; 
&gt; 2) I have proposed a fix for setScissorRect() for the use case useRenderSurface(0) ... let me know if using thew contentRect from m_defaultRenderSurface seems correct. It seems to display OK for all cases I&apos;ve tried.
&gt; 
&gt; 3) Similarly, I&apos;ve had to test for renderSurface == 0 in useRenderSurface and default to setting the drawViewPortRect according to m_defaultRenderSurface when renderSurface is 0.
&gt; 
&gt; 4) A small number of test cases seem to have slight changes in pixel intensities --- imperceptible to my eye --- that seem to again be related to alpha channel values. One in particular, compositing/iframes/composited-iframe-alignment.html, tests fine if I delete the line clearFramebuffer(0) from initializeSharedObjects(), but this of course messes up a bunch of other tests (see (1)).
&gt; 
&gt; I would like to proceed with the patch despite these tests (can we temporarily mark them as expected-fail for offscreen compositing, or rebaseline for the offscreen case?). I will continue to try and hunt down the cause, but I think this will be easier once offscreen-compositing is part of the test suite (to prevent any other regressions).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336523</commentid>
    <comment_count>37</comment_count>
      <attachid>79426</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-19 07:48:55 -0800</bug_when>
    <thetext>Created attachment 79426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336527</commentid>
    <comment_count>38</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-19 07:57:00 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; (From update of attachment 79326 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79326&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:732
&gt; &gt; +    IntRect contentRect(m_defaultRenderSurface-&gt;m_contentRect);
&gt; 
&gt; To avoid double assignment you could write this as:
&gt; IntRect contentRect = (m_currentRenderSurface ? m_currentRenderSurface-&gt;m_contentRect : m_defaultRenderSurface-&gt;m_contentRect)

Thanks ... I always seem to forget that assignment in a declaration invokes the copy-constructor.

(In reply to comment #36)

&gt;I think there&apos;s a good opportunity now that you&apos;re getting the assert to  understand what&apos;s going wrong here.  Clearing the framebuffer at init time seems to mostly work but I&apos;m curious why (and why it causes that one failure) and whether it&apos;s masking some other problem.  
&gt;
&gt;Have you tried calling:

&gt;m_context-&gt;colorMask(true, true, true, true)

&gt;in copyOffscreenTextureToDisplay() before drawing ?  The texture attached to the m_defaultRenderSurface should have a clear alpha channel.

This helps in that I can remove the code that clears the display in initializeSharedObjects(); I have updated to do this and remove clearFramebuffer() as it is not used now.

However, it doesn&apos;t clear up why we are getting those sporadic intensity changes. I suspect somehow the alpha channel is behind this, but I haven&apos;t figured out where/how this happens. I wondered if the call to clear() in drawLayers() might be somehow treating the texture differently from the display, although I can find no evidence for this.

The two interesting features are:

1) The sporadic pixels are most often (but not always) associated with text, and

2) their frequency tends to increase as x increases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336548</commentid>
    <comment_count>39</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-19 08:32:19 -0800</bug_when>
    <thetext>(In reply to comment #38)

Another data point: these sporadic pixel intensity changes don&apos;t seem to occur on Mac, except in one test --- fast/canvas/shadow-offset-7.html : this test works fine on Linux, and on Mac comparing actual vs. expected output gives no perceptible difference).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336757</commentid>
    <comment_count>40</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-01-19 13:46:10 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; (In reply to comment #35)
&gt; &gt; (From update of attachment 79326 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79326&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:732
&gt; &gt; &gt; +    IntRect contentRect(m_defaultRenderSurface-&gt;m_contentRect);
&gt; &gt; 
&gt; &gt; To avoid double assignment you could write this as:
&gt; &gt; IntRect contentRect = (m_currentRenderSurface ? m_currentRenderSurface-&gt;m_contentRect : m_defaultRenderSurface-&gt;m_contentRect)
&gt; 
&gt; Thanks ... I always seem to forget that assignment in a declaration invokes the copy-constructor.
&gt; 
&gt; (In reply to comment #36)
&gt; 
&gt; &gt;I think there&apos;s a good opportunity now that you&apos;re getting the assert to  understand what&apos;s going wrong here.  Clearing the framebuffer at init time seems to mostly work but I&apos;m curious why (and why it causes that one failure) and whether it&apos;s masking some other problem.  
&gt; &gt;
&gt; &gt;Have you tried calling:
&gt; 
&gt; &gt;m_context-&gt;colorMask(true, true, true, true)
&gt; 
&gt; &gt;in copyOffscreenTextureToDisplay() before drawing ?  The texture attached to the m_defaultRenderSurface should have a clear alpha channel.
&gt; 
&gt; This helps in that I can remove the code that clears the display in initializeSharedObjects(); I have updated to do this and remove clearFramebuffer() as it is not used now.
&gt; 
&gt; However, it doesn&apos;t clear up why we are getting those sporadic intensity changes. I suspect somehow the alpha channel is behind this, but I haven&apos;t figured out where/how this happens. I wondered if the call to clear() in drawLayers() might be somehow treating the texture differently from the display, although I can find no evidence for this.
&gt; 

When you say sporadic, do you mean different tests failing in every run or it always the same tests that fail? 


&gt; The two interesting features are:
&gt; 
&gt; 1) The sporadic pixels are most often (but not always) associated with text, and
&gt; 
&gt; 2) their frequency tends to increase as x increases.

What is &quot;x&quot; ? The horizontal coordinate in the page?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336764</commentid>
    <comment_count>41</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-01-19 13:53:26 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; (In reply to comment #35)
&gt; &gt; (From update of attachment 79326 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79326&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:732
&gt; &gt; &gt; +    IntRect contentRect(m_defaultRenderSurface-&gt;m_contentRect);
&gt; &gt; 
&gt; &gt; To avoid double assignment you could write this as:
&gt; &gt; IntRect contentRect = (m_currentRenderSurface ? m_currentRenderSurface-&gt;m_contentRect : m_defaultRenderSurface-&gt;m_contentRect)
&gt; 
&gt; Thanks ... I always seem to forget that assignment in a declaration invokes the copy-constructor.
&gt; 
&gt; (In reply to comment #36)
&gt; 
&gt; &gt;I think there&apos;s a good opportunity now that you&apos;re getting the assert to  understand what&apos;s going wrong here.  Clearing the framebuffer at init time seems to mostly work but I&apos;m curious why (and why it causes that one failure) and whether it&apos;s masking some other problem.  
&gt; &gt;
&gt; &gt;Have you tried calling:
&gt; 
&gt; &gt;m_context-&gt;colorMask(true, true, true, true)
&gt; 
&gt; &gt;in copyOffscreenTextureToDisplay() before drawing ?  The texture attached to the m_defaultRenderSurface should have a clear alpha channel.
&gt; 
&gt; This helps in that I can remove the code that clears the display in initializeSharedObjects(); I have updated to do this and remove clearFramebuffer() as it is not used now.
&gt; 
&gt; However, it doesn&apos;t clear up why we are getting those sporadic intensity changes. I suspect somehow the alpha channel is behind this, but I haven&apos;t figured out where/how this happens. I wondered if the call to clear() in drawLayers() might be somehow treating the texture differently from the display, although I can find no evidence for this.

Also, are the differences now limited to the color channels?  Is alpha always 1.0? 


&gt; 
&gt; The two interesting features are:
&gt; 
&gt; 1) The sporadic pixels are most often (but not always) associated with text, and

Does it look like it&apos;s around the edges of letters?  I wonder if it&apos;s somehow caused by subpixel AA in text...

&gt; 
&gt; 2) their frequency tends to increase as x increases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336778</commentid>
    <comment_count>42</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-19 14:08:08 -0800</bug_when>
    <thetext>(In reply to comment #40)
&gt; 
&gt; When you say sporadic, do you mean different tests failing in every run or it always the same tests that fail? 

Always the same tests. &apos;Sporadic&apos; in the sense that there is no strong pattern as to which pixels are affected, although I suspect the output is identical from one trial to the next.
 
&gt; What is &quot;x&quot; ? The horizontal coordinate in the page?

Yes .... sorry, I should have been more specific :-)

(In reply to comment #41)
&gt;Also, are the differences now limited to the color channels?  Is alpha always 1.0? 

I&apos;m guessing ImageDiff just shows color channel differences ... I don&apos;t know for sure. I suppose it could be alpha ... but the -actual.png images appear to just be RGB, so if alpha is related it&apos;s been multiplied in.

&gt; Does it look like it&apos;s around the edges of letters?  I wonder if it&apos;s somehow caused by subpixel AA in text...

It looks like it, although it&apos;s hard to tell ... the testing font is so &apos;skinny&apos; in most of the tests that it&apos;s not always obvious if there are any interior pixels. On fast/canvas/canvas-text-alignment-diff.png it certainly looks to be limited to exterior font pixels. I&apos;ll upload the actual output from this test as an attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336780</commentid>
    <comment_count>43</comment_count>
      <attachid>79479</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-19 14:10:14 -0800</bug_when>
    <thetext>Created attachment 79479
Example of image-mistach diff image for fast/canvas/canvas-text-alignment-diff.png</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342556</commentid>
    <comment_count>44</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-31 06:54:00 -0800</bug_when>
    <thetext>Any word on the status of this?

Since the purpose of this CL is to get a command-line switch working for off-screen compositing (so it can be added to the testing system), I&apos;d like to push ahead with this patch, and use test expectations to handle the subtle pixel differences until they can be resolved in a separate patch.

To recap - there are 14 tests that have a small number of pixel differences that are imperceptible to the human eye (mine at least). Typically they occur near edges towards the right-hand side of the window, and involve intensity differences of 2 or less (out of 255). They only occur on Linux (Skia? nVidia graphics driver?) and not on Mac. I suspect they&apos;re somehow alpha-channel related, but have not yet figured out what the difference is between compositing to the screen vs. a texture bound to a frame buffer object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342652</commentid>
    <comment_count>45</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-01-31 10:19:37 -0800</bug_when>
    <thetext>Are you still seeing diffs, even after:

http://trac.webkit.org/changeset/76299</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342653</commentid>
    <comment_count>46</comment_count>
      <attachid>79426</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-01-31 10:21:41 -0800</bug_when>
    <thetext>Comment on attachment 79426
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:645
&gt; +        m_context-&gt;colorMask(true, true, true, true);

Now that the color mask is set to (t,t,t,t) in the LayerRendererChromium ln 266, you should avoid resetting it here.  I wonder if this will clear the problems you&apos;re seeing..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342845</commentid>
    <comment_count>47</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-01-31 15:12:10 -0800</bug_when>
    <thetext>(In reply to comment #45)
&gt; Are you still seeing diffs, even after:
&gt;
&gt; http://trac.webkit.org/changeset/76299

Yes.

The changeset you mention was helpful in resolving the only pixel difference I was encountering on Mac, but it does not resolve the pixel differences I&apos;m seeing on Linux.

(In reply to comment #46)
&gt; (From update of attachment 79426 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79426&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:645
&gt; &gt; +        m_context-&gt;colorMask(true, true, true, true);
&gt; 
&gt; Now that the color mask is set to (t,t,t,t) in the LayerRendererChromium ln 266, you should avoid resetting it here.  I wonder if this will clear the problems you&apos;re seeing..

No, it doesn&apos;t help. I tried all 4 combinations of including/removing each of the two calls to colorMask() and the results are the same in each case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342941</commentid>
    <comment_count>48</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-01-31 17:46:27 -0800</bug_when>
    <thetext>(In reply to comment #47)
&gt; (In reply to comment #45)
&gt; &gt; Are you still seeing diffs, even after:
&gt; &gt;
&gt; &gt; http://trac.webkit.org/changeset/76299
&gt; 
&gt; Yes.
&gt; 
&gt; The changeset you mention was helpful in resolving the only pixel difference I was encountering on Mac, but it does not resolve the pixel differences I&apos;m seeing on Linux.
&gt; 
&gt; (In reply to comment #46)
&gt; &gt; (From update of attachment 79426 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79426&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:645
&gt; &gt; &gt; +        m_context-&gt;colorMask(true, true, true, true);
&gt; &gt; 
&gt; &gt; Now that the color mask is set to (t,t,t,t) in the LayerRendererChromium ln 266, you should avoid resetting it here.  I wonder if this will clear the problems you&apos;re seeing..
&gt; 
&gt; No, it doesn&apos;t help. I tried all 4 combinations of including/removing each of the two calls to colorMask() and the results are the same in each case.

They colorMask calls should be removed anyway as they&apos;re not consistent anymore with the state that the compositor uses (compositor expects color to be unmasked most of the time).  

My only other guess for the differences you&apos;re seeing is that something is off by a fraction of a pixel and you&apos;re seeing slight stretching. Our textures are by default using LINEAR filtering.  You could try setting the TEXTURE_MIN_FILTER, TEXTURE_MAG_FILTER to NEAREST .  You could do that in RenderSurface::prepareContentsTexture, after the call to reserve() you can bind the texture and set the filter modes.

The reason I&apos;d like to get to the bottom of this is that it would be nice to know that you can use the off-screen path as your primary render path which means that you&apos;d need the layout tests to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343216</commentid>
    <comment_count>49</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-02-01 07:41:53 -0800</bug_when>
    <thetext>(In reply to comment #48)
&gt; 
&gt; They colorMask calls should be removed anyway as they&apos;re not consistent anymore with the state that the compositor uses (compositor expects color to be unmasked most of the time).  

Done.
 
&gt; My only other guess for the differences you&apos;re seeing is that something is off by a fraction of a pixel and you&apos;re seeing slight stretching. Our textures are by default using LINEAR filtering.  You could try setting the TEXTURE_MIN_FILTER, TEXTURE_MAG_FILTER to NEAREST .  You could do that in RenderSurface::prepareContentsTexture, after the call to reserve() you can bind the texture and set the filter modes.

This seems to have helped. 12 of the 14 failing tests now pass, and the two remaining failures have considerably fewer pixels failing. The the remaining failures are

fast/canvas/canvas-text-alignment.html
fast/canvas/canvas-text-baseline.html

All of the remaining pixel mis-matches are along high-contrast edges (vertical and horizontal lines).

&gt; The reason I&apos;d like to get to the bottom of this is that it would be nice to know that you can use the off-screen path as your primary render path which means that you&apos;d need the layout tests to work.

Rest assured, I don&apos;t want *any* failing testswhen we finish, but I also want to head off regressions that might sneak in in the meantime since the offscreen path is not being tested at present.

I&apos;ll test the new version of the patch on Mac and then upload it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343326</commentid>
    <comment_count>50</comment_count>
      <attachid>80782</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-02-01 10:30:22 -0800</bug_when>
    <thetext>Created attachment 80782
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343972</commentid>
    <comment_count>51</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-02-02 07:34:38 -0800</bug_when>
    <thetext>(In reply to comment #50)
&gt; Created an attachment (id=80782) [details]
&gt; Patch

I tried changing LINEAR -&gt; NEAREST in Canvas2DLayerChromium (and even tried disabling the &quot;CLAMP_TO_EDGE&quot; setting), but it doesn&apos;t seem to help with the two remaining failing tests. (I&apos;ve tried playing with a number of other &quot;LINEAR&quot; -&gt; &quot;NEAREST&quot; changes as ell, but nothing helped with these tests.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347349</commentid>
    <comment_count>52</comment_count>
      <attachid>81633</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-02-08 07:22:49 -0800</bug_when>
    <thetext>Created attachment 81633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347350</commentid>
    <comment_count>53</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-02-08 07:23:58 -0800</bug_when>
    <thetext>(In reply to comment #52)
&gt; Created an attachment (id=81633) [details]
&gt; Patch

Updated patch to account for recent changes, down to two failing pixel tests (2Dcanvas vs. wide CSS borders interaction).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347475</commentid>
    <comment_count>54</comment_count>
      <attachid>81633</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-02-08 10:04:43 -0800</bug_when>
    <thetext>Comment on attachment 81633
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:761
&gt; +//        scissorY = m_currentRenderSurface-&gt;m_contentRect.height() - (scissorRect.bottom() - m_currentRenderSurface-&gt;m_contentRect.y()); // mine - old

Commented out lines need to be removed.

&gt; Source/WebCore/platform/graphics/chromium/RenderSurfaceChromium.cpp:180
&gt; +    GLC(context3D, context3D-&gt;texParameteri(GraphicsContext3D::TEXTURE_2D, GraphicsContext3D::TEXTURE_MIN_FILTER, GraphicsContext3D::NEAREST));

I suggested turning the filtering to NEAREST just to help troubleshoot the failing tests. Generally we want LINEAR filtering when drawing render surfaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347510</commentid>
    <comment_count>55</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-02-08 10:51:24 -0800</bug_when>
    <thetext>(In reply to comment #54)
&gt; (From update of attachment 81633 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=81633&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:761
&gt; &gt; +//        scissorY = m_currentRenderSurface-&gt;m_contentRect.height() - (scissorRect.bottom() - m_currentRenderSurface-&gt;m_contentRect.y()); // mine - old
&gt; 
&gt; Commented out lines need to be removed.

I will fix this. I forgot to remove comments I made while resolving a merge.
 
&gt; &gt; Source/WebCore/platform/graphics/chromium/RenderSurfaceChromium.cpp:180
&gt; &gt; +    GLC(context3D, context3D-&gt;texParameteri(GraphicsContext3D::TEXTURE_2D, GraphicsContext3D::TEXTURE_MIN_FILTER, GraphicsContext3D::NEAREST));
&gt; 
&gt; I suggested turning the filtering to NEAREST just to help troubleshoot the failing tests. Generally we want LINEAR filtering when drawing render surfaces.

OK. I&apos;ll go back and look at it again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347743</commentid>
    <comment_count>56</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-02-08 15:29:59 -0800</bug_when>
    <thetext>Here&apos;s a shot in the dark - feedback is appreciated ...

Hypothesis: the failing pixels are due to precision limitations in the shader computations (most likely the fragment shader, but possibly a combination of both). This becomes pronounced when trying to sample a large texture in a single chunk.

For Desktop GL we get max 23 bits (float mantissa) for shader floats, although for OpenGLES we&apos;re only guaranteed 2^(-10) precision in fragment shaders using mediump (i.e. 10 bits, highp not guaranteed to be available).

Observation: The failures always seem to occur when (i) rendering pixels with large x or y values (i.e. close to 1.0 normalized), (ii) always at high contrast edges (usually 0 -&gt; 255 transitions from what I&apos;ve seen), and (iii) in some cases it is most tenacious when two or more textures are composited together. (iv) All the tests render properly on my Mac workstation.

Some Numbers (back-of-the-envelope calculations only):

# of bits required (for the texture coordinate) to safely linearly sample across a 0-&gt;255 boundary, assuming rounding: 9 bits (must be off by less than 0.5 of an intensity value).

# of bits to represent an 800 pixel-wide texture = 10 bits

That&apos;s about 19 bits ... and we also have to account for errors in accumulating transforms, etc. Could we be just hitting the limit of precision of the GPUs? (Does the FX380 in the Linux z600 have poorer precision than the card in the Mac? The Radeon card in my Mac guarantees IEEE standard) Even if this is not the problem for the desktop GL cards, it may well be for OpenGL ES implementations on mobile devices.

Rendering direct to display may suffer from the same problem, but it&apos;s not so obvious since the baselines are done w.r.t. this case.

Note that as texture coordinates approach 1.0, the effective resolution drops (e.g. we can easily represent 0.0 + 2^(-23) but not so easily 0.9 + 2^(-23), so perhaps this explains why the problem becomes more prevalent as the coordinates move to the right/up (close to 1.0).

If this is true, then the fact that NEAREST sampling solves most of the cases is not surprising.

Conclusion: This *may* be a problem that is not due to any error in the code. It may also be that it will reduce/disappear when tiling is applied to all layers (although the notion of fuzzy testing may need consideration too).

We can try to devise appropriate tests if the idea seems worth further investigation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352522</commentid>
    <comment_count>57</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-02-16 18:48:37 -0800</bug_when>
    <thetext>Hi James,
  Interesting analysis, however I don&apos;t think in this case it&apos;s a 23 vs 10 bit precision issue. Even though we pretend to be running OGL ES, on linux we&apos;re really running on desktop GL and the mediump qualifier gets ignored (as it&apos;s not supported in desktop GL).  In addition, if you&apos;re running the tests via DRT I believe that even if you run them on your desktop we will be using MESA and not the real h/w. That said, I agree that the issues you&apos;re seeing could very well be related to numerical imprecision when sampling the render target texture to do the final render into the frame buffer.   At this point I don&apos;t want to let them block this patch.  




(In reply to comment #56)
&gt; Here&apos;s a shot in the dark - feedback is appreciated ...
&gt; 
&gt; Hypothesis: the failing pixels are due to precision limitations in the shader computations (most likely the fragment shader, but possibly a combination of both). This becomes pronounced when trying to sample a large texture in a single chunk.
&gt; 
&gt; For Desktop GL we get max 23 bits (float mantissa) for shader floats, although for OpenGLES we&apos;re only guaranteed 2^(-10) precision in fragment shaders using mediump (i.e. 10 bits, highp not guaranteed to be available).
&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352526</commentid>
    <comment_count>58</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-02-16 18:56:08 -0800</bug_when>
    <thetext>Vangelis, can I consider your comment above an unofficial r+?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352640</commentid>
    <comment_count>59</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-02-17 00:17:02 -0800</bug_when>
    <thetext>(In reply to comment #58)
&gt; Vangelis, can I consider your comment above an unofficial r+?

There are a few comments in the last patch that need to be addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352884</commentid>
    <comment_count>60</comment_count>
      <attachid>82803</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-02-17 07:46:43 -0800</bug_when>
    <thetext>Created attachment 82803
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352891</commentid>
    <comment_count>61</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2011-02-17 07:53:10 -0800</bug_when>
    <thetext>(In reply to comment #57)
&gt; Hi James,
&gt;   Interesting analysis, however I don&apos;t think in this case it&apos;s a 23 vs 10 bit precision issue. Even though we pretend to be running OGL ES, on linux we&apos;re really running on desktop GL and the mediump qualifier gets ignored (as it&apos;s not supported in desktop GL).  In addition, if you&apos;re running the tests via DRT I believe that even if you run them on your desktop we will be using MESA and not the real h/w. 

Sorry, I didn&apos;t mean to suggest that in this case we we&apos;re dealing with the OpenGLES 10-bit minimum guarantee. I mentioned this only because future hardware we may target may have significantly lower precision than we are currently using. The analysis in my previous comment was only meant to show that even with full float precision we may be getting into the realm where precision is a limiting factor for larger textures.

&gt;That said, I agree that the issues you&apos;re seeing could very well be related to numerical imprecision when sampling the render target texture to do the final render into the frame buffer.   At this point I don&apos;t want to let them block this patch.  

Great, thanks!

(In reply to comment #59)
&gt;(In reply to comment #58)
&gt;&gt; Vangelis, can I consider your comment above an unofficial r+?
&gt;
&gt; There are a few comments in the last patch that need to be addressed.

I have submitted a new patch that

1) updates the patch to the current tree state,

2) removes the commented lines of code from the previous patch as requested, and

3) restores LINEAR texture sampling (or removes NEAREST, depending on how you want to look at it).

I think this is everything that was outstanding. Let me know if there&apos;s anything else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352959</commentid>
    <comment_count>62</comment_count>
      <attachid>82803</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-02-17 09:16:09 -0800</bug_when>
    <thetext>Comment on attachment 82803
Patch

(unofficial) r+ from me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353000</commentid>
    <comment_count>63</comment_count>
      <attachid>82803</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-02-17 10:14:47 -0800</bug_when>
    <thetext>Comment on attachment 82803
Patch

Official r+ from me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353088</commentid>
    <comment_count>64</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-17 12:30:57 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 82803:

http/tests/xmlhttprequest/remember-bad-password.html bug 51733 (author: ap@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353092</commentid>
    <comment_count>65</comment_count>
      <attachid>82803</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-17 12:33:51 -0800</bug_when>
    <thetext>Comment on attachment 82803
Patch

Clearing flags on attachment: 82803

Committed r78853: &lt;http://trac.webkit.org/changeset/78853&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353093</commentid>
    <comment_count>66</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-17 12:33:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353104</commentid>
    <comment_count>67</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-17 12:43:09 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/78853 might have broken Windows Release (Build)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78708</attachid>
            <date>2011-01-12 11:01:45 -0800</date>
            <delta_ts>2011-01-12 12:04:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52311-20110112140151.patch</filename>
            <type>text/plain</type>
            <size>11550</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmM2EyN2QwM2U5ZDJmMWQ0NDZjZGFlMTU3NzM3ODZjMGI4ZWNkNTVhLi4w
N2EzZGFhMzhhOGNjZWUwZjMyMjQ4YmNmNTk3MmE0ZTU4NmIwZDRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjQgQEAKKzIwMTEtMDEtMTIgIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtjaHJvbWl1bV0gQWRkIGNvbW1hbmQtbGluZSBmbGFnIHRvIGVuYWJsZSBjb21wb3NpdGUg
dG8gb2Zmc2NyZWVuIHRleHR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MjMxMQorCisgICAgICAgIEFkZCBwbHVtYmluZyB0byBhbGxvdyBjb21t
YW5kLWxpbmUgc3dpdGNoIHRvIGVuYWJsZSBvZmZzY3JlZW4gY29tcG9zaXRpbmcuIEZ1bmN0aW9u
CisgICAgICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weU9mZnNjcmVlblRleHR1cmVUb0Rp
c3BsYXkgdXNlZCBmb3Igbm93IHRvIG1pbWljCisgICAgICAgIG5vcm1hbCByZW5kZXJlciBvcGVy
YXRpb24uCisKKyAgICAgICAgRXhpc3RpbmcgZnVuY3Rpb25hbGl0eSBub3QgY2hhbmdlZDsgb2Zm
c2NyZWVuIGNvbXBvc2l0aW5nIHdpbGwgYmUgdGVzdGVkIHZpYSBHUFUgdGVzdCBmcmFtZXdvcmsu
CisKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRp
bmdzOjpzZXRDb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKToKKyAgICAgICAgKiBwYWdlL1NldHRp
bmdzLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6Y29tcG9zaXRlVG9UZXh0dXJlRW5h
YmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
Y29weU9mZnNjcmVlblRleHR1cmVUb0Rpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorCiAyMDExLTAxLTEyICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQu
IEZpeCBXTUwgY29tcGlsYXRpb24gb24gTWFjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRl
eCAxMDA1MzM4MTM2YTkwOThlODczYWRiZTlhNmE4ZjViNTllYWU2YzJjLi5kMWUwNjVmMGMwMzZl
NjYyYTY1MTMzZTNmZjdjNjIyYzEyZTllMzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApA
QCAtNTk0LDYgKzU5NCwxMSBAQCB2b2lkIFNldHRpbmdzOjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgc2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJh
bWVzKG1fcGFnZSk7CiB9CiAKK3ZvaWQgU2V0dGluZ3M6OnNldENvbXBvc2l0ZVRvVGV4dHVyZUVu
YWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZCA9
IGVuYWJsZWQ7Cit9CisKIHZvaWQgU2V0dGluZ3M6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdG
b3IzRFRyYW5zZm9ybXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBtX2FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdGb3IzRFRyYW5zZm9ybXNFbmFibGVkID0gZW5hYmxlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaAppbmRleCBmNDYzMGRlNGE5NDJkMWY1MzYxMjIzMmY2ZDMwNjZhOWEyNzE0ZjZjLi5l
NWRmYjI0ZmY3M2VkYjJmYTgyYjVmM2RmZDcyYTFiY2JiZDJiYmVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5oCkBAIC0yNzksNiArMjc5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGJvb2wpOwogICAgICAgICBib29s
IGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVy
YXRlZENvbXBvc2l0aW5nRW5hYmxlZDsgfQogCisgICAgICAgIHZvaWQgc2V0Q29tcG9zaXRlVG9U
ZXh0dXJlRW5hYmxlZChib29sKTsKKyAgICAgICAgYm9vbCBjb21wb3NpdGVUb1RleHR1cmVFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3NpdGVUb1RleHR1cmVFbmFibGVkOyB9CisKICAg
ICAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RUcmFuc2Zvcm1zRW5hYmxl
ZChib29sKTsKICAgICAgICAgYm9vbCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RUcmFuc2Zv
cm1zRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvcjNE
VHJhbnNmb3Jtc0VuYWJsZWQ7IH0KIApAQCAtNDI0LDYgKzQyNyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgYm9vbCBtX2Rvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZCA6IDE7
CiAgICAgICAgIGJvb2wgbV94c3NBdWRpdG9yRW5hYmxlZCA6IDE7CiAgICAgICAgIGJvb2wgbV9h
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCA6IDE7CisgICAgICAgIGJvb2wgbV9jb21wb3Np
dGVUb1RleHR1cmVFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdGb3IzRFRyYW5zZm9ybXNFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1fYWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0ZvclBsdWdpbnNFbmFibGVkIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDhkNzdiZWFlOWI1MzYyMjczYjM4YTk4ZTljNmM0Mzcz
YjQ0NmY0YjQuLmNlN2I4NjhjOWMzNDM0YTI4ODJiZDZiMmExZTk4MjBkMjE1NTM2Y2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtNjM2LDYgKzYzNiwzMSBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0Q29tcG9zaXRlT2Zmc2NyZWVuKGJvb2wgY29t
cG9zaXRlT2Zmc2NyZWVuKQogICAgICAgICBtX3Jvb3RMYXllci0+bV9yZW5kZXJTdXJmYWNlLmNs
ZWFyKCk7CiB9CiAKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5T2Zmc2NyZWVuVGV4
dHVyZVRvRGlzcGxheSgpCit7CisgICAgaWYgKG1fY29tcG9zaXRlT2Zmc2NyZWVuKSB7CisgICAg
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIDApKTsK
KyAgICAgICAgc2V0RHJhd1ZpZXdwb3J0UmVjdChtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5tX2Nv
bnRlbnRSZWN0LCB0cnVlKTsKKworICAgICAgICAvLyBSZXNldCBhbHBoYSBjaGFubmVsIHRvIDEu
MC4KKyAgICAgICAgbV9jb250ZXh0LT5jb2xvck1hc2sodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7
CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcigxLCAwLCAwLCAxKTsgLy8gQ2xlYXIgdG8g
cmVkIHRvIGRldGVjdCByZWdpb25zIG5vdCBjb21wb3NpdGUuCisgICAgICAgIG1fY29udGV4dC0+
Y2xlYXIoR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZFUl9CSVQpOworICAgICAgICBtX2Nv
bnRleHQtPmNvbG9yTWFzayh0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSk7CisKKyAgICAgICAgbV9k
ZWZhdWx0UmVuZGVyU3VyZmFjZS0+bV9kcmF3VHJhbnNmb3JtLm1ha2VJZGVudGl0eSgpOworICAg
ICAgICBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5tX2RyYXdUcmFuc2Zvcm0udHJhbnNsYXRlM2Qo
MC41ICogbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+bV9jb250ZW50UmVjdC53aWR0aCgpLCAwLjUg
KiBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5tX2NvbnRlbnRSZWN0LmhlaWdodCgpLCAwKTsKKwor
ICAgICAgICBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5tX2RyYXdPcGFjaXR5ID0gMTsKKworICAg
ICAgICBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5kcmF3KCk7CisKKyAgICAgICAgbV9jdXJyZW50
UmVuZGVyU3VyZmFjZSA9IDA7IC8vIE5lZWQgdG8gZG8gdGhpcywgb3IgZWxzZSBuZXh0IGNhbGwg
dG8gdXNlUmVuZGVyU3VyZmFjZSB3aWxsIHN0aWxsIGJlIGJvdW5kIHRvCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBmcmFtZUJ1ZmZlciAwLCBhbmQgdXBkYXRlcyB3aWxs
IGZhaWwuCisgICAgfQorfQorCiBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVy
U3VyZmFjZShSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhY2UpCiB7CiAgICAgaWYg
KG1fY3VycmVudFJlbmRlclN1cmZhY2UgPT0gcmVuZGVyU3VyZmFjZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmgKaW5kZXggM2QzZTc4NGM0Y2ExODVkOTNjZjNhOGUxODZlMWEwNDNl
Nzg2ZjYzZi4uZWM5ZGQxMDUwY2RkZjM3ZGVlMDEwZTM0OWQ1YTJkZTMwMmFlOGFmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTkwLDYgKzkwLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0Q29tcG9zaXRlT2Zmc2NyZWVuKGJvb2wpOwogICAgIGJvb2wgaXNDb21wb3Np
dGluZ09mZnNjcmVlbigpIHsgcmV0dXJuIG1fY29tcG9zaXRlT2Zmc2NyZWVuOyB9CiAgICAgTGF5
ZXJUZXh0dXJlKiBnZXRPZmZzY3JlZW5MYXllclRleHR1cmUoKSB7IHJldHVybiBtX2NvbXBvc2l0
ZU9mZnNjcmVlbiA/IG1fcm9vdExheWVyLT5tX3JlbmRlclN1cmZhY2UtPm1fY29udGVudHNUZXh0
dXJlLmdldCgpIDogMDsgfQorICAgIHZvaWQgY29weU9mZnNjcmVlblRleHR1cmVUb0Rpc3BsYXko
KTsKIAogICAgIHZvaWQgc2V0Um9vdExheWVyQ2FudmFzU2l6ZShjb25zdCBJbnRTaXplJik7CiAK
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGJhZTllYTFlMTMyNzBjZjgyYWMxOTgxYzE3ODlmODYwNTkzMzUxYjUu
LjgwN2RmOWM1Mzc0MWJmN2Q5YWE3MmQwN2YzZjE1MDJjNzBlZTcxMWUgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIxIEBACisyMDExLTAxLTEyICBXLiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbY2hyb21pdW1dIEFkZCBjb21tYW5kLWxpbmUgZmxhZyB0byBlbmFibGUgY29tcG9z
aXRlIHRvIG9mZnNjcmVlbiB0ZXh0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTIzMTEKKworICAgICAgICBBZGQgcGx1bWJpbmcgdG8gYWxsb3cg
Y29tbWFuZC1saW5lIHN3aXRjaCB0byBlbmFibGUgb2Zmc2NyZWVuIGNvbXBvc2l0aW5nLiBGdW5j
dGlvbgorICAgICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlPZmZzY3JlZW5UZXh0dXJl
VG9EaXNwbGF5IHVzZWQgZm9yIG5vdyB0byBtaW1pYworICAgICAgICBub3JtYWwgcmVuZGVyZXIg
b3BlcmF0aW9uLgorCisgICAgICAgICogcHVibGljL1dlYlNldHRpbmdzLmg6CisgICAgICAgICog
c3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1w
bDo6c2V0Q29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZCk6CisgICAgICAgICogc3JjL1dlYlNldHRp
bmdzSW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpkb0NvbXBvc2l0ZSk6CisKIDIwMTAtMTItMjkgIFl1cnkgU2VtaWto
YXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwg
RmVsZG1hbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3Mu
aCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAppbmRleCAwNDY3Yzk2NmFh
NWZkYTIzZGRlMzQ3OGQwNGQyOWRhYjI3MTY2YTdjLi5hNDQ0MzZhYmY2ZmI4YmNhZTNkYzY5MTFi
NDQ5ZWVlNGY0OGFiZmVhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNl
dHRpbmdzLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCkBAIC05
Myw2ICs5Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVy
cyhib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEVkaXRpbmdCZWhhdmlvcihFZGl0aW5n
QmVoYXZpb3IpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb21wb3NpdGVUb1RleHR1
cmVFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0ZvcjNEVHJhbnNmb3Jtc0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yVmlkZW9FbmFibGVkKGJvb2wpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckNhbnZhc0VuYWJsZWQo
Ym9vbCkgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0lt
cGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCmluZGV4IGU2
MDU2MmMwNTFiOWUxNzQ5OWEwNTNhMTAxYjQzM2ZhM2YxOGM3OGQuLjIwYzg5MzU1ZjhlN2ZiZDlj
MThkYWFjZTliNzdiM2VlYzA0NDJkY2EgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdz
SW1wbC5jcHAKQEAgLTI4NCw2ICsyODQsMTEgQEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3NldHRpbmdz
LT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChlbmFibGVkKTsKIH0KIAordm9pZCBX
ZWJTZXR0aW5nc0ltcGw6OnNldENvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoYm9vbCBlbmFibGVk
KQoreworICAgIG1fc2V0dGluZ3MtPnNldENvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoZW5hYmxl
ZCk7Cit9CisKIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Rm9yM0RUcmFuc2Zvcm1zRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV9zZXR0aW5ncy0+
c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvcjNEVHJhbnNmb3Jtc0VuYWJsZWQoZW5hYmxlZCk7
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCBmZmRjOGQzOTMxNzAxNjQ5
Yjc5NTEzZjYyZWE2NWNhOTBjMTIyZTcyLi41ZjhlYzI3ODdjMGJiNmYyZTliNWMwOTY1NDY1Y2Fj
M2U4YmQxYjgxIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1w
bC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTg4LDYg
Kzg4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RGVidWdCb3JkZXJzKGJv
b2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRFZGl0aW5nQmVoYXZpb3IoRWRpdGluZ0JlaGF2aW9y
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoYm9v
bCk7CisgICAgdmlydHVhbCB2b2lkIHNldENvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoYm9vbCk7
CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3IzRFRyYW5zZm9y
bXNFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nRm9yVmlkZW9FbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRm9yUGx1Z2luc0VuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCmluZGV4IDQ0ZWZlZWE2MmEyNGIyODQxNzZhN2Y2MWNiOTRlYzg2MjYzZTQ4ZjAu
Ljg1NGY2N2Y3YjIwYTI1Y2JmYWMzOTY0NzRlNDJhNjI3NzVhNWQwZDYgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCkBAIC0yMzk0LDggKzIzOTQsMTMgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6ZG9Db21wb3NpdGUoKQogCiAgICAgV2ViVmlld0ltcGxUaWxlUGFpbnRJbnRlcmZhY2UgdGls
ZVBhaW50KHRoaXMpOwogCisgICAgYm9vbCBjb21wb3NpdGVUb1RleHR1cmUgPSBwYWdlKCktPnNl
dHRpbmdzKCktPmNvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoKTsKKwogICAgIFdlYlZpZXdJbXBs
U2Nyb2xsYmFyUGFpbnRJbnRlcmZhY2Ugc2Nyb2xsYmFyUGFpbnQodGhpcyk7CisgICAgbV9sYXll
clJlbmRlcmVyLT5zZXRDb21wb3NpdGVPZmZzY3JlZW4oY29tcG9zaXRlVG9UZXh0dXJlKTsKICAg
ICBtX2xheWVyUmVuZGVyZXItPmRyYXdMYXllcnModmlzaWJsZVJlY3QsIGNvbnRlbnRSZWN0LCBz
Y3JvbGwsIHRpbGVQYWludCwgc2Nyb2xsYmFyUGFpbnQpOworICAgIGlmIChjb21wb3NpdGVUb1Rl
eHR1cmUpCisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+Y29weU9mZnNjcmVlblRleHR1cmVUb0Rp
c3BsYXkoKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6cmVhbGxvY2F0ZVJlbmRlcmVyKCkKZGlm
ZiAtLWdpdCBhL1dlYktpdDIvQ2hhbmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGRj
YmRlZjk4NDNjNTgwMGYyZjkwMTNmOTQxNGFkYWIxYjBiMDdkZi4uYTZlMDZkMGMwYzA2MmJhZjBl
YzAwMTJiZmY1YmY2MjdlOGE1OGE2NiAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wMS0xMiAgVy4gSmFt
ZXMgTWFjTGVhbiAgPHdqbWFjbGVhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgY29tbWFuZC1saW5l
IGZsYWcgdG8gZW5hYmxlIGNvbXBvc2l0ZSB0byBvZmZzY3JlZW4gdGV4dHVyZS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyMzExCisKKyAgICAgICAg
QWRkIHBsdW1iaW5nIHRvIGFsbG93IGNvbW1hbmQtbGluZSBzd2l0Y2ggdG8gZW5hYmxlIG9mZnNj
cmVlbiBjb21wb3NpdGluZy4gRnVuY3Rpb24KKyAgICAgICAgTGF5ZXJSZW5kZXJlckNocm9taXVt
Ojpjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSB1c2VkIGZvciBub3cgdG8gbWltaWMKKyAg
ICAgICAgbm9ybWFsIHJlbmRlcmVyIG9wZXJhdGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRDb21wb3Np
dGVUb1RleHR1cmVFbmFibGVkKToKKwogMjAxMS0wMS0xMSAgSmVmZiBNaWxsZXIgIDxqZWZmbUBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSm9obiBTdWxsaXZhbi4KZGlmZiAtLWdp
dCBhL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIGIvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKaW5kZXggNTk4ZTRlOWIzOGU0MGE4NjNi
YzZmODAzNjM0M2VhODZkNGMxYTY5ZC4uMTNmYTIyYmQ5ZWJlMTE5YzMwMTA0NDkyYWEzNWU3MzZk
OWVmYTZmZiAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
cy5jcHAKKysrIGIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKQEAg
LTMxMCw2ICszMTAsMTYgQEAgYm9vbCBXS1ByZWZlcmVuY2VzR2V0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1IKICAgICByZXR1cm4gdG9J
bXBsKHByZWZlcmVuY2VzUmVmKS0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKTsKIH0K
IAordm9pZCBXS1ByZWZlcmVuY2VzU2V0Q29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZChXS1ByZWZl
cmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGZsYWcpCit7CisgICAgdG9JbXBsKHByZWZl
cmVuY2VzUmVmKS0+c2V0Q29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZChmbGFnKTsKK30KKwordm9p
ZCBXS1ByZWZlcmVuY2VzU2V0Q29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZChXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGZsYWcpCit7CisgICAgcmV0dXJuIHRvSW1wbChwcmVm
ZXJlbmNlc1JlZiktPmNvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoKTsKK30KKwogdm9pZCBXS1By
ZWZlcmVuY2VzU2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShXS1ByZWZlcmVuY2VzUmVmIHBy
ZWZlcmVuY2VzUmVmLCBib29sIGZsYWcpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+
c2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShmbGFnKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78717</attachid>
            <date>2011-01-12 12:04:14 -0800</date>
            <delta_ts>2011-01-12 15:03:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52311-20110112150420.patch</filename>
            <type>text/plain</type>
            <size>9744</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmM2EyN2QwM2U5ZDJmMWQ0NDZjZGFlMTU3NzM3ODZjMGI4ZWNkNTVhLi4w
N2EzZGFhMzhhOGNjZWUwZjMyMjQ4YmNmNTk3MmE0ZTU4NmIwZDRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjQgQEAKKzIwMTEtMDEtMTIgIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtjaHJvbWl1bV0gQWRkIGNvbW1hbmQtbGluZSBmbGFnIHRvIGVuYWJsZSBjb21wb3NpdGUg
dG8gb2Zmc2NyZWVuIHRleHR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MjMxMQorCisgICAgICAgIEFkZCBwbHVtYmluZyB0byBhbGxvdyBjb21t
YW5kLWxpbmUgc3dpdGNoIHRvIGVuYWJsZSBvZmZzY3JlZW4gY29tcG9zaXRpbmcuIEZ1bmN0aW9u
CisgICAgICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weU9mZnNjcmVlblRleHR1cmVUb0Rp
c3BsYXkgdXNlZCBmb3Igbm93IHRvIG1pbWljCisgICAgICAgIG5vcm1hbCByZW5kZXJlciBvcGVy
YXRpb24uCisKKyAgICAgICAgRXhpc3RpbmcgZnVuY3Rpb25hbGl0eSBub3QgY2hhbmdlZDsgb2Zm
c2NyZWVuIGNvbXBvc2l0aW5nIHdpbGwgYmUgdGVzdGVkIHZpYSBHUFUgdGVzdCBmcmFtZXdvcmsu
CisKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRp
bmdzOjpzZXRDb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKToKKyAgICAgICAgKiBwYWdlL1NldHRp
bmdzLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6Y29tcG9zaXRlVG9UZXh0dXJlRW5h
YmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6
Y29weU9mZnNjcmVlblRleHR1cmVUb0Rpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorCiAyMDExLTAxLTEyICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQu
IEZpeCBXTUwgY29tcGlsYXRpb24gb24gTWFjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRl
eCAxMDA1MzM4MTM2YTkwOThlODczYWRiZTlhNmE4ZjViNTllYWU2YzJjLi5kMWUwNjVmMGMwMzZl
NjYyYTY1MTMzZTNmZjdjNjIyYzEyZTllMzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApA
QCAtNTk0LDYgKzU5NCwxMSBAQCB2b2lkIFNldHRpbmdzOjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgc2V0TmVlZHNSZWNhbGNTdHlsZUluQWxsRnJh
bWVzKG1fcGFnZSk7CiB9CiAKK3ZvaWQgU2V0dGluZ3M6OnNldENvbXBvc2l0ZVRvVGV4dHVyZUVu
YWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZCA9
IGVuYWJsZWQ7Cit9CisKIHZvaWQgU2V0dGluZ3M6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdG
b3IzRFRyYW5zZm9ybXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBtX2FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdGb3IzRFRyYW5zZm9ybXNFbmFibGVkID0gZW5hYmxlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaAppbmRleCBmNDYzMGRlNGE5NDJkMWY1MzYxMjIzMmY2ZDMwNjZhOWEyNzE0ZjZjLi5l
NWRmYjI0ZmY3M2VkYjJmYTgyYjVmM2RmZDcyYTFiY2JiZDJiYmVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5oCkBAIC0yNzksNiArMjc5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGJvb2wpOwogICAgICAgICBib29s
IGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVy
YXRlZENvbXBvc2l0aW5nRW5hYmxlZDsgfQogCisgICAgICAgIHZvaWQgc2V0Q29tcG9zaXRlVG9U
ZXh0dXJlRW5hYmxlZChib29sKTsKKyAgICAgICAgYm9vbCBjb21wb3NpdGVUb1RleHR1cmVFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3NpdGVUb1RleHR1cmVFbmFibGVkOyB9CisKICAg
ICAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RUcmFuc2Zvcm1zRW5hYmxl
ZChib29sKTsKICAgICAgICAgYm9vbCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RUcmFuc2Zv
cm1zRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvcjNE
VHJhbnNmb3Jtc0VuYWJsZWQ7IH0KIApAQCAtNDI0LDYgKzQyNyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgYm9vbCBtX2Rvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZCA6IDE7
CiAgICAgICAgIGJvb2wgbV94c3NBdWRpdG9yRW5hYmxlZCA6IDE7CiAgICAgICAgIGJvb2wgbV9h
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCA6IDE7CisgICAgICAgIGJvb2wgbV9jb21wb3Np
dGVUb1RleHR1cmVFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdGb3IzRFRyYW5zZm9ybXNFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1fYWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0ZvclBsdWdpbnNFbmFibGVkIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDhkNzdiZWFlOWI1MzYyMjczYjM4YTk4ZTljNmM0Mzcz
YjQ0NmY0YjQuLmNlN2I4NjhjOWMzNDM0YTI4ODJiZDZiMmExZTk4MjBkMjE1NTM2Y2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtNjM2LDYgKzYzNiwzMSBAQCB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0Q29tcG9zaXRlT2Zmc2NyZWVuKGJvb2wgY29t
cG9zaXRlT2Zmc2NyZWVuKQogICAgICAgICBtX3Jvb3RMYXllci0+bV9yZW5kZXJTdXJmYWNlLmNs
ZWFyKCk7CiB9CiAKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5T2Zmc2NyZWVuVGV4
dHVyZVRvRGlzcGxheSgpCit7CisgICAgaWYgKG1fY29tcG9zaXRlT2Zmc2NyZWVuKSB7CisgICAg
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIDApKTsK
KyAgICAgICAgc2V0RHJhd1ZpZXdwb3J0UmVjdChtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5tX2Nv
bnRlbnRSZWN0LCB0cnVlKTsKKworICAgICAgICAvLyBSZXNldCBhbHBoYSBjaGFubmVsIHRvIDEu
MC4KKyAgICAgICAgbV9jb250ZXh0LT5jb2xvck1hc2sodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7
CisgICAgICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcigxLCAwLCAwLCAxKTsgLy8gQ2xlYXIgdG8g
cmVkIHRvIGRldGVjdCByZWdpb25zIG5vdCBjb21wb3NpdGUuCisgICAgICAgIG1fY29udGV4dC0+
Y2xlYXIoR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZFUl9CSVQpOworICAgICAgICBtX2Nv
bnRleHQtPmNvbG9yTWFzayh0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSk7CisKKyAgICAgICAgbV9k
ZWZhdWx0UmVuZGVyU3VyZmFjZS0+bV9kcmF3VHJhbnNmb3JtLm1ha2VJZGVudGl0eSgpOworICAg
ICAgICBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5tX2RyYXdUcmFuc2Zvcm0udHJhbnNsYXRlM2Qo
MC41ICogbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+bV9jb250ZW50UmVjdC53aWR0aCgpLCAwLjUg
KiBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5tX2NvbnRlbnRSZWN0LmhlaWdodCgpLCAwKTsKKwor
ICAgICAgICBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5tX2RyYXdPcGFjaXR5ID0gMTsKKworICAg
ICAgICBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5kcmF3KCk7CisKKyAgICAgICAgbV9jdXJyZW50
UmVuZGVyU3VyZmFjZSA9IDA7IC8vIE5lZWQgdG8gZG8gdGhpcywgb3IgZWxzZSBuZXh0IGNhbGwg
dG8gdXNlUmVuZGVyU3VyZmFjZSB3aWxsIHN0aWxsIGJlIGJvdW5kIHRvCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBmcmFtZUJ1ZmZlciAwLCBhbmQgdXBkYXRlcyB3aWxs
IGZhaWwuCisgICAgfQorfQorCiBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVy
U3VyZmFjZShSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhY2UpCiB7CiAgICAgaWYg
KG1fY3VycmVudFJlbmRlclN1cmZhY2UgPT0gcmVuZGVyU3VyZmFjZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmgKaW5kZXggM2QzZTc4NGM0Y2ExODVkOTNjZjNhOGUxODZlMWEwNDNl
Nzg2ZjYzZi4uZWM5ZGQxMDUwY2RkZjM3ZGVlMDEwZTM0OWQ1YTJkZTMwMmFlOGFmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTkwLDYgKzkwLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0Q29tcG9zaXRlT2Zmc2NyZWVuKGJvb2wpOwogICAgIGJvb2wgaXNDb21wb3Np
dGluZ09mZnNjcmVlbigpIHsgcmV0dXJuIG1fY29tcG9zaXRlT2Zmc2NyZWVuOyB9CiAgICAgTGF5
ZXJUZXh0dXJlKiBnZXRPZmZzY3JlZW5MYXllclRleHR1cmUoKSB7IHJldHVybiBtX2NvbXBvc2l0
ZU9mZnNjcmVlbiA/IG1fcm9vdExheWVyLT5tX3JlbmRlclN1cmZhY2UtPm1fY29udGVudHNUZXh0
dXJlLmdldCgpIDogMDsgfQorICAgIHZvaWQgY29weU9mZnNjcmVlblRleHR1cmVUb0Rpc3BsYXko
KTsKIAogICAgIHZvaWQgc2V0Um9vdExheWVyQ2FudmFzU2l6ZShjb25zdCBJbnRTaXplJik7CiAK
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGJhZTllYTFlMTMyNzBjZjgyYWMxOTgxYzE3ODlmODYwNTkzMzUxYjUu
LjgwN2RmOWM1Mzc0MWJmN2Q5YWE3MmQwN2YzZjE1MDJjNzBlZTcxMWUgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIxIEBACisyMDExLTAxLTEyICBXLiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbY2hyb21pdW1dIEFkZCBjb21tYW5kLWxpbmUgZmxhZyB0byBlbmFibGUgY29tcG9z
aXRlIHRvIG9mZnNjcmVlbiB0ZXh0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTIzMTEKKworICAgICAgICBBZGQgcGx1bWJpbmcgdG8gYWxsb3cg
Y29tbWFuZC1saW5lIHN3aXRjaCB0byBlbmFibGUgb2Zmc2NyZWVuIGNvbXBvc2l0aW5nLiBGdW5j
dGlvbgorICAgICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlPZmZzY3JlZW5UZXh0dXJl
VG9EaXNwbGF5IHVzZWQgZm9yIG5vdyB0byBtaW1pYworICAgICAgICBub3JtYWwgcmVuZGVyZXIg
b3BlcmF0aW9uLgorCisgICAgICAgICogcHVibGljL1dlYlNldHRpbmdzLmg6CisgICAgICAgICog
c3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1w
bDo6c2V0Q29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZCk6CisgICAgICAgICogc3JjL1dlYlNldHRp
bmdzSW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpkb0NvbXBvc2l0ZSk6CisKIDIwMTAtMTItMjkgIFl1cnkgU2VtaWto
YXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwg
RmVsZG1hbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3Mu
aCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAppbmRleCAwNDY3Yzk2NmFh
NWZkYTIzZGRlMzQ3OGQwNGQyOWRhYjI3MTY2YTdjLi5hNDQ0MzZhYmY2ZmI4YmNhZTNkYzY5MTFi
NDQ5ZWVlNGY0OGFiZmVhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNl
dHRpbmdzLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCkBAIC05
Myw2ICs5Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVy
cyhib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEVkaXRpbmdCZWhhdmlvcihFZGl0aW5n
QmVoYXZpb3IpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb21wb3NpdGVUb1RleHR1
cmVFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0ZvcjNEVHJhbnNmb3Jtc0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yVmlkZW9FbmFibGVkKGJvb2wpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckNhbnZhc0VuYWJsZWQo
Ym9vbCkgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0lt
cGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCmluZGV4IGU2
MDU2MmMwNTFiOWUxNzQ5OWEwNTNhMTAxYjQzM2ZhM2YxOGM3OGQuLjIwYzg5MzU1ZjhlN2ZiZDlj
MThkYWFjZTliNzdiM2VlYzA0NDJkY2EgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdz
SW1wbC5jcHAKQEAgLTI4NCw2ICsyODQsMTEgQEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3NldHRpbmdz
LT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChlbmFibGVkKTsKIH0KIAordm9pZCBX
ZWJTZXR0aW5nc0ltcGw6OnNldENvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoYm9vbCBlbmFibGVk
KQoreworICAgIG1fc2V0dGluZ3MtPnNldENvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoZW5hYmxl
ZCk7Cit9CisKIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Rm9yM0RUcmFuc2Zvcm1zRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV9zZXR0aW5ncy0+
c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvcjNEVHJhbnNmb3Jtc0VuYWJsZWQoZW5hYmxlZCk7
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCBmZmRjOGQzOTMxNzAxNjQ5
Yjc5NTEzZjYyZWE2NWNhOTBjMTIyZTcyLi41ZjhlYzI3ODdjMGJiNmYyZTliNWMwOTY1NDY1Y2Fj
M2U4YmQxYjgxIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1w
bC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTg4LDYg
Kzg4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RGVidWdCb3JkZXJzKGJv
b2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRFZGl0aW5nQmVoYXZpb3IoRWRpdGluZ0JlaGF2aW9y
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoYm9v
bCk7CisgICAgdmlydHVhbCB2b2lkIHNldENvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoYm9vbCk7
CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3IzRFRyYW5zZm9y
bXNFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nRm9yVmlkZW9FbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRm9yUGx1Z2luc0VuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCmluZGV4IDQ0ZWZlZWE2MmEyNGIyODQxNzZhN2Y2MWNiOTRlYzg2MjYzZTQ4ZjAu
Ljg1NGY2N2Y3YjIwYTI1Y2JmYWMzOTY0NzRlNDJhNjI3NzVhNWQwZDYgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCkBAIC0yMzk0LDggKzIzOTQsMTMgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6ZG9Db21wb3NpdGUoKQogCiAgICAgV2ViVmlld0ltcGxUaWxlUGFpbnRJbnRlcmZhY2UgdGls
ZVBhaW50KHRoaXMpOwogCisgICAgYm9vbCBjb21wb3NpdGVUb1RleHR1cmUgPSBwYWdlKCktPnNl
dHRpbmdzKCktPmNvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoKTsKKwogICAgIFdlYlZpZXdJbXBs
U2Nyb2xsYmFyUGFpbnRJbnRlcmZhY2Ugc2Nyb2xsYmFyUGFpbnQodGhpcyk7CisgICAgbV9sYXll
clJlbmRlcmVyLT5zZXRDb21wb3NpdGVPZmZzY3JlZW4oY29tcG9zaXRlVG9UZXh0dXJlKTsKICAg
ICBtX2xheWVyUmVuZGVyZXItPmRyYXdMYXllcnModmlzaWJsZVJlY3QsIGNvbnRlbnRSZWN0LCBz
Y3JvbGwsIHRpbGVQYWludCwgc2Nyb2xsYmFyUGFpbnQpOworICAgIGlmIChjb21wb3NpdGVUb1Rl
eHR1cmUpCisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+Y29weU9mZnNjcmVlblRleHR1cmVUb0Rp
c3BsYXkoKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6cmVhbGxvY2F0ZVJlbmRlcmVyKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78738</attachid>
            <date>2011-01-12 15:04:02 -0800</date>
            <delta_ts>2011-01-13 07:56:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52311-20110112180409.patch</filename>
            <type>text/plain</type>
            <size>8316</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmM2EyN2QwM2U5ZDJmMWQ0NDZjZGFlMTU3NzM3ODZjMGI4ZWNkNTVhLi4y
NGVkNjJjYThiNGIyYTRkYTVlMmExNDNlOTg4ODFlYzQxNTdkY2JjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMTEtMDEtMTIgIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtjaHJvbWl1bV0gQWRkIGNvbW1hbmQtbGluZSBmbGFnIHRvIGVuYWJsZSBjb21wb3NpdGUg
dG8gb2Zmc2NyZWVuIHRleHR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MjMxMQorCisgICAgICAgIEFkZCBwbHVtYmluZyB0byBhbGxvdyBjb21t
YW5kLWxpbmUgc3dpdGNoIHRvIGVuYWJsZSBvZmZzY3JlZW4gY29tcG9zaXRpbmcuIEZ1bmN0aW9u
CisgICAgICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weU9mZnNjcmVlblRleHR1cmVUb0Rp
c3BsYXkgdXNlZCBmb3Igbm93IHRvIG1pbWljCisgICAgICAgIG5vcm1hbCByZW5kZXJlciBvcGVy
YXRpb24uCisKKyAgICAgICAgRXhpc3RpbmcgZnVuY3Rpb25hbGl0eSBub3QgY2hhbmdlZDsgb2Zm
c2NyZWVuIGNvbXBvc2l0aW5nIHdpbGwgYmUgdGVzdGVkIHZpYSBHUFUgdGVzdCBmcmFtZXdvcmsu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5
T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmg6CisKIDIwMTEtMDEtMTIgIFl1cnkgU2Vt
aWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4
IFdNTCBjb21waWxhdGlvbiBvbiBNYWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcAppbmRleCA4ZDc3YmVhZTliNTM2MjI3M2IzOGE5OGU5YzZjNDM3M2I0NDZmNGI0Li5jZTdi
ODY4YzljMzQzNGEyODgyYmQ2YjJhMWU5ODIwZDIxNTUzNmNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTYzNiw2ICs2MzYsMzEgQEAgdm9pZCBMYXllclJlbmRl
cmVyQ2hyb21pdW06OnNldENvbXBvc2l0ZU9mZnNjcmVlbihib29sIGNvbXBvc2l0ZU9mZnNjcmVl
bikKICAgICAgICAgbV9yb290TGF5ZXItPm1fcmVuZGVyU3VyZmFjZS5jbGVhcigpOwogfQogCit2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weU9mZnNjcmVlblRleHR1cmVUb0Rpc3BsYXko
KQoreworICAgIGlmIChtX2NvbXBvc2l0ZU9mZnNjcmVlbikgeworICAgICAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kRnJhbWVi
dWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCAwKSk7CisgICAgICAgIHNldERy
YXdWaWV3cG9ydFJlY3QobV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+bV9jb250ZW50UmVjdCwgdHJ1
ZSk7CisKKyAgICAgICAgLy8gUmVzZXQgYWxwaGEgY2hhbm5lbCB0byAxLjAuCisgICAgICAgIG1f
Y29udGV4dC0+Y29sb3JNYXNrKHRydWUsIHRydWUsIHRydWUsIHRydWUpOworICAgICAgICBtX2Nv
bnRleHQtPmNsZWFyQ29sb3IoMSwgMCwgMCwgMSk7IC8vIENsZWFyIHRvIHJlZCB0byBkZXRlY3Qg
cmVnaW9ucyBub3QgY29tcG9zaXRlLgorICAgICAgICBtX2NvbnRleHQtPmNsZWFyKEdyYXBoaWNz
Q29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUKTsKKyAgICAgICAgbV9jb250ZXh0LT5jb2xvck1h
c2sodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpOworCisgICAgICAgIG1fZGVmYXVsdFJlbmRlclN1
cmZhY2UtPm1fZHJhd1RyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKKyAgICAgICAgbV9kZWZhdWx0
UmVuZGVyU3VyZmFjZS0+bV9kcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZTNkKDAuNSAqIG1fZGVmYXVs
dFJlbmRlclN1cmZhY2UtPm1fY29udGVudFJlY3Qud2lkdGgoKSwgMC41ICogbV9kZWZhdWx0UmVu
ZGVyU3VyZmFjZS0+bV9jb250ZW50UmVjdC5oZWlnaHQoKSwgMCk7CisKKyAgICAgICAgbV9kZWZh
dWx0UmVuZGVyU3VyZmFjZS0+bV9kcmF3T3BhY2l0eSA9IDE7CisKKyAgICAgICAgbV9kZWZhdWx0
UmVuZGVyU3VyZmFjZS0+ZHJhdygpOworCisgICAgICAgIG1fY3VycmVudFJlbmRlclN1cmZhY2Ug
PSAwOyAvLyBOZWVkIHRvIGRvIHRoaXMsIG9yIGVsc2UgbmV4dCBjYWxsIHRvIHVzZVJlbmRlclN1
cmZhY2Ugd2lsbCBzdGlsbCBiZSBib3VuZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gZnJhbWVCdWZmZXIgMCwgYW5kIHVwZGF0ZXMgd2lsbCBmYWlsLgorICAgIH0K
K30KKwogYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UoUmVuZGVy
U3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWNlKQogewogICAgIGlmIChtX2N1cnJlbnRSZW5k
ZXJTdXJmYWNlID09IHJlbmRlclN1cmZhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5oCmluZGV4IDNkM2U3ODRjNGNhMTg1ZDkzY2YzYThlMTg2ZTFhMDQzZTc4NmY2M2YuLmVjOWRk
MTA1MGNkZGYzN2RlZTAxMGUzNDlkNWEyZGUzMDJhZThhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oCkBAIC05MCw2ICs5MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENv
bXBvc2l0ZU9mZnNjcmVlbihib29sKTsKICAgICBib29sIGlzQ29tcG9zaXRpbmdPZmZzY3JlZW4o
KSB7IHJldHVybiBtX2NvbXBvc2l0ZU9mZnNjcmVlbjsgfQogICAgIExheWVyVGV4dHVyZSogZ2V0
T2Zmc2NyZWVuTGF5ZXJUZXh0dXJlKCkgeyByZXR1cm4gbV9jb21wb3NpdGVPZmZzY3JlZW4gPyBt
X3Jvb3RMYXllci0+bV9yZW5kZXJTdXJmYWNlLT5tX2NvbnRlbnRzVGV4dHVyZS5nZXQoKSA6IDA7
IH0KKyAgICB2b2lkIGNvcHlPZmZzY3JlZW5UZXh0dXJlVG9EaXNwbGF5KCk7CiAKICAgICB2b2lk
IHNldFJvb3RMYXllckNhbnZhc1NpemUoY29uc3QgSW50U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCBiYWU5ZWExZTEzMjcwY2Y4MmFjMTk4MWMxNzg5Zjg2MDU5MzM1MWI1Li40ZGRlNmQwNzIwZjFm
MGM5NTVlZGMzZGU2ZWEwMTY2MDVjODVhNzM1IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBA
QAorMjAxMS0wMS0xMiAgVy4gSmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVhbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9t
aXVtXSBBZGQgY29tbWFuZC1saW5lIGZsYWcgdG8gZW5hYmxlIGNvbXBvc2l0ZSB0byBvZmZzY3Jl
ZW4gdGV4dHVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTUyMzExCisKKyAgICAgICAgQWRkIHBsdW1iaW5nIHRvIGFsbG93IGNvbW1hbmQtbGluZSBz
d2l0Y2ggdG8gZW5hYmxlIG9mZnNjcmVlbiBjb21wb3NpdGluZy4gRnVuY3Rpb24KKyAgICAgICAg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSB1c2Vk
IGZvciBub3cgdG8gbWltaWMKKyAgICAgICAgbm9ybWFsIHJlbmRlcmVyIG9wZXJhdGlvbi4KKwor
ICAgICAgICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5n
c0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OldlYlNldHRpbmdz
SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6c2V0Q29tcG9zaXRlVG9U
ZXh0dXJlRW5hYmxlZCk6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OmNvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQpOgor
ICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpkb0NvbXBvc2l0ZSk6CisKIDIwMTAtMTItMjkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5
c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaCBiL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAppbmRleCAwNDY3Yzk2NmFhNWZkYTIzZGRlMzQ3
OGQwNGQyOWRhYjI3MTY2YTdjLi4wYzY5OWJkN2ZhYmJlMmM5M2E5MzVjZWY3NmRkYTk0YzE4NTQ0
MWVhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCkBAIC05Myw2ICs5Myw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVycyhib29sKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNldEVkaXRpbmdCZWhhdmlvcihFZGl0aW5nQmVoYXZpb3IpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoYm9v
bCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKGJv
b2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZCgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvcjNE
VHJhbnNmb3Jtc0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nRm9yVmlkZW9FbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckNhbnZhc0VuYWJsZWQoYm9vbCkgPSAwOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCmluZGV4IGU2MDU2MmMwNTFiOWUx
NzQ5OWEwNTNhMTAxYjQzM2ZhM2YxOGM3OGQuLjM0ZWI2YmJiZWVkZTgxNzM0NTRlY2Q0ZGNhZDA0
N2ZlOGZjOTg3ZTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJ
bXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKQEAg
LTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYlNldHRpbmdzSW1wbDo6V2Vi
U2V0dGluZ3NJbXBsKFNldHRpbmdzKiBzZXR0aW5ncykKICAgICA6IG1fc2V0dGluZ3Moc2V0dGlu
Z3MpCisgICAgLCBtX2NvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoZmFsc2UpCiB7CiAgICAgQVNT
RVJUKHNldHRpbmdzKTsKIH0KQEAgLTI4NCw2ICsyODUsMTEgQEAgdm9pZCBXZWJTZXR0aW5nc0lt
cGw6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBt
X3NldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChlbmFibGVkKTsKIH0K
IAordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldENvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoYm9v
bCBlbmFibGVkKQoreworICAgIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZCA9IGVuYWJsZWQ7
Cit9CisKIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9y
M0RUcmFuc2Zvcm1zRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV9zZXR0aW5ncy0+c2V0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvcjNEVHJhbnNmb3Jtc0VuYWJsZWQoZW5hYmxlZCk7CmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCBmZmRjOGQzOTMxNzAxNjQ5Yjc5
NTEzZjYyZWE2NWNhOTBjMTIyZTcyLi5kYzNhODY4ZmNmMzc3ZjcwOTkxYTc0NzE5NjU1NGFmMTdj
YzY3YjlhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5o
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTg4LDYgKzg4
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RGVidWdCb3JkZXJzKGJvb2wp
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRFZGl0aW5nQmVoYXZpb3IoRWRpdGluZ0JlaGF2aW9yKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoYm9vbCk7
CisgICAgdmlydHVhbCB2b2lkIHNldENvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoYm9vbCk7Cisg
ICAgdmlydHVhbCBib29sIGNvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2NvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0ZvcjNEVHJhbnNmb3Jtc0VuYWJsZWQoYm9vbCk7CiAgICAgdmly
dHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQoYm9vbCk7
CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JQbHVnaW5zRW5h
YmxlZChib29sKTsKQEAgLTEwMCw2ICsxMDIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
V2ViQ29yZTo6U2V0dGluZ3MqIG1fc2V0dGluZ3M7CisgICAgYm9vbCBtX2NvbXBvc2l0ZVRvVGV4
dHVyZUVuYWJsZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKaW5kZXggNDRlZmVlYTYyYTI0YjI4NDE3NmE3ZjYxY2I5NGVjODYyNjNl
NDhmMC4uMzliZTM5ZWE2OWY5OWFkYWVhODhjYjFmYjQyMmVjNWQ4YWU3ODJhYSAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTIzOTQsOCArMjM5NCwxMyBAQCB2b2lkIFdlYlZp
ZXdJbXBsOjpkb0NvbXBvc2l0ZSgpCiAKICAgICBXZWJWaWV3SW1wbFRpbGVQYWludEludGVyZmFj
ZSB0aWxlUGFpbnQodGhpcyk7CiAKKyAgICBib29sIGNvbXBvc2l0ZVRvVGV4dHVyZSA9IHNldHRp
bmdzKCktPmNvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoKTsKKwogICAgIFdlYlZpZXdJbXBsU2Ny
b2xsYmFyUGFpbnRJbnRlcmZhY2Ugc2Nyb2xsYmFyUGFpbnQodGhpcyk7CisgICAgbV9sYXllclJl
bmRlcmVyLT5zZXRDb21wb3NpdGVPZmZzY3JlZW4oY29tcG9zaXRlVG9UZXh0dXJlKTsKICAgICBt
X2xheWVyUmVuZGVyZXItPmRyYXdMYXllcnModmlzaWJsZVJlY3QsIGNvbnRlbnRSZWN0LCBzY3Jv
bGwsIHRpbGVQYWludCwgc2Nyb2xsYmFyUGFpbnQpOworICAgIGlmIChjb21wb3NpdGVUb1RleHR1
cmUpCisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+Y29weU9mZnNjcmVlblRleHR1cmVUb0Rpc3Bs
YXkoKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6cmVhbGxvY2F0ZVJlbmRlcmVyKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78809</attachid>
            <date>2011-01-13 07:56:16 -0800</date>
            <delta_ts>2011-01-13 12:55:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52311-20110113105627.patch</filename>
            <type>text/plain</type>
            <size>9605</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmM2EyN2QwM2U5ZDJmMWQ0NDZjZGFlMTU3NzM3ODZjMGI4ZWNkNTVhLi5j
N2NlNjNiOWJhZGZkMzA1ZGRmZDU4N2U0MmFjODQ1Y2EwODg3NmFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMTEtMDEtMTMgIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtjaHJvbWl1bV0gQWRkIGNvbW1hbmQtbGluZSBmbGFnIHRvIGVuYWJsZSBjb21wb3NpdGUg
dG8gb2Zmc2NyZWVuIHRleHR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MjMxMQorCisgICAgICAgIEFkZCBwbHVtYmluZyB0byBhbGxvdyBjb21t
YW5kLWxpbmUgc3dpdGNoIHRvIGVuYWJsZSBvZmZzY3JlZW4gY29tcG9zaXRpbmcuIEZ1bmN0aW9u
CisgICAgICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weU9mZnNjcmVlblRleHR1cmVUb0Rp
c3BsYXkgdXNlZCBmb3Igbm93IHRvIG1pbWljCisgICAgICAgIG5vcm1hbCByZW5kZXJlciBvcGVy
YXRpb24uCisKKyAgICAgICAgRXhpc3RpbmcgZnVuY3Rpb25hbGl0eSBub3QgY2hhbmdlZDsgb2Zm
c2NyZWVuIGNvbXBvc2l0aW5nIHdpbGwgYmUgdGVzdGVkIHZpYSBHUFUgdGVzdCBmcmFtZXdvcmsu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRD
b21wb3NpdGVPZmZzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjppc0NvbXBvc2l0aW5nT2Zmc2NyZWVuKToK
KwogMjAxMS0wMS0xMiAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLiBGaXggV01MIGNvbXBpbGF0aW9uIG9uIE1hYy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDhkNzdiZWFlOWI1MzYyMjczYjM4YTk4
ZTljNmM0MzczYjQ0NmY0YjQuLjk4NDVkNDE4Y2RhNTI3ZjQ2Nzk2Yzg3NDczMGE2YWU5NDY3YTY0
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtNjMyLDEwICs2
MzIsMzQgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldENvbXBvc2l0ZU9mZnNjcmVl
bihib29sIGNvbXBvc2l0ZU9mZnNjcmVlbikKICAgICAgICAgLy8gTmVlZCB0byBleHBsaWNpdGx5
IHNldCBhIExheWVyUmVuZGVyZXJDaHJvbWl1bSBmb3IgdGhlIGxheWVyIHdpdGggdGhlIG9mZnNj
cmVlbiB0ZXh0dXJlLAogICAgICAgICAvLyBvciBlbHNlIHRoZSBjYWxsIHRvIHByZXBhcmVDb250
ZW50c1RleHR1cmUoKSBpbiB1c2VSZW5kZXJTdXJmYWNlKCkgd2lsbCBmYWlsLgogICAgICAgICBt
X3Jvb3RMYXllci0+c2V0TGF5ZXJSZW5kZXJlcih0aGlzKTsKKworICAgICAgICBBU1NFUlQobV9y
b290TGF5ZXJUZXh0dXJlV2lkdGggJiYgbV9yb290TGF5ZXJUZXh0dXJlSGVpZ2h0KTsKKyAgICAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4
dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgMCkpOwor
ICAgICAgICBzZXREcmF3Vmlld3BvcnRSZWN0KEludFJlY3QoMCwgMCwgbV9yb290TGF5ZXJUZXh0
dXJlV2lkdGgsIG1fcm9vdExheWVyVGV4dHVyZUhlaWdodCksIHRydWUpOworCisgICAgICAgIC8v
IFJlc2V0IGFscGhhIGNoYW5uZWwgdG8gMS4wLgorICAgICAgICBtX2NvbnRleHQtPmNvbG9yTWFz
ayh0cnVlLCB0cnVlLCB0cnVlLCB0cnVlKTsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhckNvbG9y
KDEsIDAsIDAsIDEpOyAvLyBDbGVhciB0byByZWQgdG8gZGV0ZWN0IHJlZ2lvbnMgbm90IGNvbXBv
c2l0ZS4KKyAgICAgICAgbV9jb250ZXh0LT5jbGVhcihHcmFwaGljc0NvbnRleHQzRDo6Q09MT1Jf
QlVGRkVSX0JJVCk7CisgICAgICAgIG1fY29udGV4dC0+Y29sb3JNYXNrKHRydWUsIHRydWUsIHRy
dWUsIGZhbHNlKTsKICAgICB9IGVsc2UKICAgICAgICAgbV9yb290TGF5ZXItPm1fcmVuZGVyU3Vy
ZmFjZS5jbGVhcigpOwogfQogCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weU9mZnNj
cmVlblRleHR1cmVUb0Rpc3BsYXkoKQoreworICAgIGlmIChtX2NvbXBvc2l0ZU9mZnNjcmVlbikg
eworICAgICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKworICAgICAgICB1c2VSZW5kZXJTdXJm
YWNlKDApOworICAgICAgICBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5kcmF3KCk7CisKKyAgICAg
ICAgbV9jdXJyZW50UmVuZGVyU3VyZmFjZSA9IDA7IC8vIE5lZWQgdG8gZG8gdGhpcywgb3IgZWxz
ZSBuZXh0IGNhbGwgdG8gdXNlUmVuZGVyU3VyZmFjZSB3aWxsIHN0aWxsIGJlIGJvdW5kIHRvCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmcmFtZUJ1ZmZlciAwLCBhbmQg
dXBkYXRlcyB3aWxsIGZhaWwuCisgICAgfQorfQorCiBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6dXNlUmVuZGVyU3VyZmFjZShSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhY2Up
CiB7CiAgICAgaWYgKG1fY3VycmVudFJlbmRlclN1cmZhY2UgPT0gcmVuZGVyU3VyZmFjZSkKQEAg
LTY0Myw3ICs2NjcsNyBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyU3Vy
ZmFjZShSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhYwogCiAgICAgbV9jdXJyZW50
UmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2U7CiAKLSAgICBpZiAocmVuZGVyU3VyZmFjZSA9
PSBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlICYmICFtX2NvbXBvc2l0ZU9mZnNjcmVlbikgeworICAg
IGlmICgocmVuZGVyU3VyZmFjZSA9PSBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlICYmICFtX2NvbXBv
c2l0ZU9mZnNjcmVlbikgfHwgKCFyZW5kZXJTdXJmYWNlICYmIG1fY29tcG9zaXRlT2Zmc2NyZWVu
KSkgewogICAgICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1
ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIDApKTsKICAgICAgICAgc2V0RHJh
d1ZpZXdwb3J0UmVjdChyZW5kZXJTdXJmYWNlLT5tX2NvbnRlbnRSZWN0LCB0cnVlKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDNk
M2U3ODRjNGNhMTg1ZDkzY2YzYThlMTg2ZTFhMDQzZTc4NmY2M2YuLjFhZGI5NDA0MzFiYjZlZjE5
ZmExNWVlYTNiYmVmMGVhNmM4OGI4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5oCkBAIC04OCw4ICs4OCw5IEBAIHB1YmxpYzoKICAgICBib29sIGhhcmR3YXJlQ29tcG9zaXRp
bmcoKSBjb25zdCB7IHJldHVybiBtX2hhcmR3YXJlQ29tcG9zaXRpbmc7IH0KIAogICAgIHZvaWQg
c2V0Q29tcG9zaXRlT2Zmc2NyZWVuKGJvb2wpOwotICAgIGJvb2wgaXNDb21wb3NpdGluZ09mZnNj
cmVlbigpIHsgcmV0dXJuIG1fY29tcG9zaXRlT2Zmc2NyZWVuOyB9CisgICAgYm9vbCBpc0NvbXBv
c2l0aW5nT2Zmc2NyZWVuKCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3NpdGVPZmZzY3JlZW47IH0K
ICAgICBMYXllclRleHR1cmUqIGdldE9mZnNjcmVlbkxheWVyVGV4dHVyZSgpIHsgcmV0dXJuIG1f
Y29tcG9zaXRlT2Zmc2NyZWVuID8gbV9yb290TGF5ZXItPm1fcmVuZGVyU3VyZmFjZS0+bV9jb250
ZW50c1RleHR1cmUuZ2V0KCkgOiAwOyB9CisgICAgdm9pZCBjb3B5T2Zmc2NyZWVuVGV4dHVyZVRv
RGlzcGxheSgpOwogCiAgICAgdm9pZCBzZXRSb290TGF5ZXJDYW52YXNTaXplKGNvbnN0IEludFNp
emUmKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYmFlOWVhMWUxMzI3MGNmODJhYzE5ODFjMTc4OWY4NjA1
OTMzNTFiNS4uZTVjMDI2ZWRlOWNlMDk0MjM4ZTRhNzM4MWNiNzJiODFlNmUwYmNlMyAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDEtMTMgIFcuIEphbWVzIE1hY0xlYW4gIDx3
am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gQWRkIGNvbW1hbmQtbGluZSBmbGFnIHRvIGVuYWJs
ZSBjb21wb3NpdGUgdG8gb2Zmc2NyZWVuIHRleHR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjMxMQorCisgICAgICAgIEFkZCBwbHVtYmluZyB0
byBhbGxvdyBjb21tYW5kLWxpbmUgc3dpdGNoIHRvIGVuYWJsZSBvZmZzY3JlZW4gY29tcG9zaXRp
bmcuIEZ1bmN0aW9uCisgICAgICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weU9mZnNjcmVl
blRleHR1cmVUb0Rpc3BsYXkgdXNlZCBmb3Igbm93IHRvIG1pbWljCisgICAgICAgIG5vcm1hbCBy
ZW5kZXJlciBvcGVyYXRpb24uCisKKyAgICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoKKyAg
ICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0
dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5n
c0ltcGw6OnNldENvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQpOgorICAgICAgICAqIHNyYy9XZWJT
ZXR0aW5nc0ltcGwuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpjb21wb3Np
dGVUb1RleHR1cmVFbmFibGVkKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVzaXplKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OmRvQ29tcG9zaXRlKToKKwogMjAxMC0xMi0yOSAgWXVyeSBTZW1pa2hhdHNreSAg
PHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFu
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIGIvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCmluZGV4IDA0NjdjOTY2YWE1ZmRhMjNk
ZGUzNDc4ZDA0ZDI5ZGFiMjcxNjZhN2MuLjBjNjk5YmQ3ZmFiYmUyYzkzYTkzNWNlZjc2ZGRhOTRj
MTg1NDQxZWEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3Mu
aAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTkzLDYgKzkz
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RGVidWdCb3JkZXJzKGJvb2wp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RWRpdGluZ0JlaGF2aW9yKEVkaXRpbmdCZWhhdmlv
cikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxl
ZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldENvbXBvc2l0ZVRvVGV4dHVyZUVuYWJs
ZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGVUb1RleHR1cmVFbmFibGVk
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Rm9yM0RUcmFuc2Zvcm1zRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yQ2FudmFzRW5hYmxlZChib29sKSA9
IDA7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKaW5kZXggZTYwNTYyYzA1
MWI5ZTE3NDk5YTA1M2ExMDFiNDMzZmEzZjE4Yzc4ZC4uMzRlYjZiYmJlZWRlODE3MzQ1NGVjZDRk
Y2FkMDQ3ZmU4ZmM5ODdlNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0
aW5nc0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNw
cApAQCAtNDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViU2V0dGluZ3NJbXBs
OjpXZWJTZXR0aW5nc0ltcGwoU2V0dGluZ3MqIHNldHRpbmdzKQogICAgIDogbV9zZXR0aW5ncyhz
ZXR0aW5ncykKKyAgICAsIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZChmYWxzZSkKIHsKICAg
ICBBU1NFUlQoc2V0dGluZ3MpOwogfQpAQCAtMjg0LDYgKzI4NSwxMSBAQCB2b2lkIFdlYlNldHRp
bmdzSW1wbDo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQog
ICAgIG1fc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGVuYWJsZWQp
OwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0Q29tcG9zaXRlVG9UZXh0dXJlRW5hYmxl
ZChib29sIGVuYWJsZWQpCit7CisgICAgbV9jb21wb3NpdGVUb1RleHR1cmVFbmFibGVkID0gZW5h
YmxlZDsKK30KKwogdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdGb3IzRFRyYW5zZm9ybXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBtX3NldHRpbmdz
LT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RUcmFuc2Zvcm1zRW5hYmxlZChlbmFibGVk
KTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmggYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCmluZGV4IGZmZGM4ZDM5MzE3MDE2
NDliNzk1MTNmNjJlYTY1Y2E5MGMxMjJlNzIuLmRjM2E4NjhmY2YzNzdmNzA5OTFhNzQ3MTk2NTU0
YWYxN2NjNjdiOWEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJ
bXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaApAQCAtODgs
NiArODgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcnMo
Ym9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEVkaXRpbmdCZWhhdmlvcihFZGl0aW5nQmVoYXZp
b3IpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChi
b29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZChib29s
KTsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZDsgfQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RUcmFuc2Zvcm1zRW5hYmxlZChib29sKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclZpZGVvRW5hYmxlZChi
b29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclBsdWdp
bnNFbmFibGVkKGJvb2wpOwpAQCAtMTAwLDYgKzEwMiw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICAgICBXZWJDb3JlOjpTZXR0aW5ncyogbV9zZXR0aW5nczsKKyAgICBib29sIG1fY29tcG9zaXRl
VG9UZXh0dXJlRW5hYmxlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA0NGVmZWVhNjJhMjRiMjg0MTc2YTdmNjFjYjk0ZWM4
NjI2M2U0OGYwLi5lMzJhYzViZWYzMTdjNjc4YmFkMzUyYjcxMGZmYjk2MmU3YzI0NjlmIDEwMDY0
NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtOTY5LDYgKzk2OSw3IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OnJlc2l6ZShjb25zdCBXZWJTaXplJiBuZXdTaXplKQogICAgIGlmIChtX2xheWVy
UmVuZGVyZXIgJiYgaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkpIHsKICAgICAgICAg
bV9sYXllclJlbmRlcmVyLT5yZXNpemVPbnNjcmVlbkNvbnRlbnQoSW50U2l6ZShzdGQ6Om1heCgx
LCBtX3NpemUud2lkdGgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6bWF4KDEsIG1fc2l6ZS5oZWlnaHQpKSk7CisgICAgICAgIG1f
bGF5ZXJSZW5kZXJlci0+c2V0Q29tcG9zaXRlT2Zmc2NyZWVuKHNldHRpbmdzKCktPmNvbXBvc2l0
ZVRvVGV4dHVyZUVuYWJsZWQoKSk7IC8vIENsZWFycyBkaXNwbGF5LgogICAgIH0KICNlbmRpZgog
fQpAQCAtMjM5Niw2ICsyMzk3LDggQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZG9Db21wb3NpdGUoKQog
CiAgICAgV2ViVmlld0ltcGxTY3JvbGxiYXJQYWludEludGVyZmFjZSBzY3JvbGxiYXJQYWludCh0
aGlzKTsKICAgICBtX2xheWVyUmVuZGVyZXItPmRyYXdMYXllcnModmlzaWJsZVJlY3QsIGNvbnRl
bnRSZWN0LCBzY3JvbGwsIHRpbGVQYWludCwgc2Nyb2xsYmFyUGFpbnQpOworICAgIGlmIChtX2xh
eWVyUmVuZGVyZXItPmlzQ29tcG9zaXRpbmdPZmZzY3JlZW4oKSkKKyAgICAgICAgbV9sYXllclJl
bmRlcmVyLT5jb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSgpOwogfQogCiB2b2lkIFdlYlZp
ZXdJbXBsOjpyZWFsbG9jYXRlUmVuZGVyZXIoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78846</attachid>
            <date>2011-01-13 12:55:42 -0800</date>
            <delta_ts>2011-01-13 14:05:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52311-20110113155555.patch</filename>
            <type>text/plain</type>
            <size>8413</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2YWNiOWI4YjE1MzE0MTE1NDQ4MTJhZGI0MDhkOGYzMmI5MGMwM2NjLi5j
MDViMWVmNGE2YjFhZmM1NTlhYjI0YWIxZWFkMGUzMjBiYzBmYTM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjIgQEAKKzIwMTEtMDEtMTMgIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtjaHJvbWl1bV0gQWRkIGNvbW1hbmQtbGluZSBmbGFnIHRvIGVuYWJsZSBjb21wb3NpdGUg
dG8gb2Zmc2NyZWVuIHRleHR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MjMxMQorCisgICAgICAgIEFkZCBwbHVtYmluZyB0byBhbGxvdyBjb21t
YW5kLWxpbmUgc3dpdGNoIHRvIGVuYWJsZSBvZmZzY3JlZW4gY29tcG9zaXRpbmcuIEZ1bmN0aW9u
CisgICAgICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weU9mZnNjcmVlblRleHR1cmVUb0Rp
c3BsYXkgdXNlZCBmb3Igbm93IHRvIG1pbWljCisgICAgICAgIG5vcm1hbCByZW5kZXJlciBvcGVy
YXRpb24uCisKKyAgICAgICAgRXhpc3RpbmcgZnVuY3Rpb25hbGl0eSBub3QgY2hhbmdlZDsgb2Zm
c2NyZWVuIGNvbXBvc2l0aW5nIHdpbGwgYmUgdGVzdGVkIHZpYSBHUFUgdGVzdCBmcmFtZXdvcmsu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5
T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjppc0NvbXBvc2l0aW5nT2Zmc2NyZWVuKToKKwogMjAxMS0w
MS0xMyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQgYnVpbGRmaXggYWZ0ZXIgcjc1NzE1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5jcHAKaW5kZXggOGQ3N2JlYWU5YjUzNjIyNzNiMzhhOThlOWM2YzQzNzNiNDQ2ZjRi
NC4uNDhlZjk1NjE5YzhkYTg0ZGQ5MzFmYmQ4ZDg5NWNmOThkMTM5YmUwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC02MzYsNiArNjM2LDE2IEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpzZXRDb21wb3NpdGVPZmZzY3JlZW4oYm9vbCBjb21wb3NpdGVP
ZmZzY3JlZW4pCiAgICAgICAgIG1fcm9vdExheWVyLT5tX3JlbmRlclN1cmZhY2UuY2xlYXIoKTsK
IH0KIAordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlPZmZzY3JlZW5UZXh0dXJlVG9E
aXNwbGF5KCkKK3sKKyAgICBpZiAobV9jb21wb3NpdGVPZmZzY3JlZW4pIHsKKyAgICAgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICAgICAgdXNlUmVuZGVyU3VyZmFjZSgwKTsKKyAgICAg
ICAgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+ZHJhdygpOworICAgIH0KK30KKwogYm9vbCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UoUmVuZGVyU3VyZmFjZUNocm9taXVt
KiByZW5kZXJTdXJmYWNlKQogewogICAgIGlmIChtX2N1cnJlbnRSZW5kZXJTdXJmYWNlID09IHJl
bmRlclN1cmZhY2UpCkBAIC02NDMsNyArNjUzLDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnVzZVJlbmRlclN1cmZhY2UoUmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWMK
IAogICAgIG1fY3VycmVudFJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlOwogCi0gICAgaWYg
KHJlbmRlclN1cmZhY2UgPT0gbV9kZWZhdWx0UmVuZGVyU3VyZmFjZSAmJiAhbV9jb21wb3NpdGVP
ZmZzY3JlZW4pIHsKKyAgICBpZiAoKHJlbmRlclN1cmZhY2UgPT0gbV9kZWZhdWx0UmVuZGVyU3Vy
ZmFjZSAmJiAhbV9jb21wb3NpdGVPZmZzY3JlZW4pIHx8ICghcmVuZGVyU3VyZmFjZSAmJiBtX2Nv
bXBvc2l0ZU9mZnNjcmVlbikpIHsKICAgICAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250
ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCAwKSk7
CiAgICAgICAgIHNldERyYXdWaWV3cG9ydFJlY3QocmVuZGVyU3VyZmFjZS0+bV9jb250ZW50UmVj
dCwgdHJ1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uaAppbmRleCAzZDNlNzg0YzRjYTE4NWQ5M2NmM2E4ZTE4NmUxYTA0M2U3ODZmNjNmLi4x
YWRiOTQwNDMxYmI2ZWYxOWZhMTVlZWEzYmJlZjBlYTZjODhiOGRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uaApAQCAtODgsOCArODgsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXJkd2FyZUNvbXBvc2l0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9oYXJkd2FyZUNvbXBvc2l0aW5n
OyB9CiAKICAgICB2b2lkIHNldENvbXBvc2l0ZU9mZnNjcmVlbihib29sKTsKLSAgICBib29sIGlz
Q29tcG9zaXRpbmdPZmZzY3JlZW4oKSB7IHJldHVybiBtX2NvbXBvc2l0ZU9mZnNjcmVlbjsgfQor
ICAgIGJvb2wgaXNDb21wb3NpdGluZ09mZnNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9z
aXRlT2Zmc2NyZWVuOyB9CiAgICAgTGF5ZXJUZXh0dXJlKiBnZXRPZmZzY3JlZW5MYXllclRleHR1
cmUoKSB7IHJldHVybiBtX2NvbXBvc2l0ZU9mZnNjcmVlbiA/IG1fcm9vdExheWVyLT5tX3JlbmRl
clN1cmZhY2UtPm1fY29udGVudHNUZXh0dXJlLmdldCgpIDogMDsgfQorICAgIHZvaWQgY29weU9m
ZnNjcmVlblRleHR1cmVUb0Rpc3BsYXkoKTsKIAogICAgIHZvaWQgc2V0Um9vdExheWVyQ2FudmFz
U2l6ZShjb25zdCBJbnRTaXplJik7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDY3MTA3ODViYTIzY2Q0Y2Uy
ZThkYWQ0MTFiMzBiZjE5NjAxNmNiNWMuLjJlNGUyYjc2NzYwZmNkNjYwYTdmMDc3MjhmOTJkZTU3
NmMyMGE5ZmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDExLTAxLTEzICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBjb21tYW5kLWxp
bmUgZmxhZyB0byBlbmFibGUgY29tcG9zaXRlIHRvIG9mZnNjcmVlbiB0ZXh0dXJlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIzMTEKKworICAgICAg
ICBBZGQgcGx1bWJpbmcgdG8gYWxsb3cgY29tbWFuZC1saW5lIHN3aXRjaCB0byBlbmFibGUgb2Zm
c2NyZWVuIGNvbXBvc2l0aW5nLiBGdW5jdGlvbgorICAgICAgICBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmNvcHlPZmZzY3JlZW5UZXh0dXJlVG9EaXNwbGF5IHVzZWQgZm9yIG5vdyB0byBtaW1pYwor
ICAgICAgICBub3JtYWwgcmVuZGVyZXIgb3BlcmF0aW9uLgorCisgICAgICAgICogcHVibGljL1dl
YlNldHRpbmdzLmg6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU2V0dGluZ3NJbXBsOjpzZXRDb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKToKKyAg
ICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRp
bmdzSW1wbDo6Y29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZCk6CisgICAgICAgICogc3JjL1dlYlZp
ZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRvQ29tcG9zaXRlKToK
KwogMjAxMS0wMS0xMyAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTZXR0aW5ncy5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5o
CmluZGV4IDA0NjdjOTY2YWE1ZmRhMjNkZGUzNDc4ZDA0ZDI5ZGFiMjcxNjZhN2MuLjBjNjk5YmQ3
ZmFiYmUyYzkzYTkzNWNlZjc2ZGRhOTRjMTg1NDQxZWEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlNldHRpbmdzLmgKQEAgLTkzLDYgKzkzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRTaG93RGVidWdCb3JkZXJzKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RWRpdGlu
Z0JlaGF2aW9yKEVkaXRpbmdCZWhhdmlvcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dENvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBj
b21wb3NpdGVUb1RleHR1cmVFbmFibGVkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RUcmFuc2Zvcm1zRW5hYmxlZChib29sKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRlb0VuYWJs
ZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Rm9yQ2FudmFzRW5hYmxlZChib29sKSA9IDA7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNldHRpbmdzSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdz
SW1wbC5jcHAKaW5kZXggZTYwNTYyYzA1MWI5ZTE3NDk5YTA1M2ExMDFiNDMzZmEzZjE4Yzc4ZC4u
MzRlYjZiYmJlZWRlODE3MzQ1NGVjZDRkY2FkMDQ3ZmU4ZmM5ODdlNyAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcApAQCAtNDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogV2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwoU2V0dGluZ3MqIHNldHRp
bmdzKQogICAgIDogbV9zZXR0aW5ncyhzZXR0aW5ncykKKyAgICAsIG1fY29tcG9zaXRlVG9UZXh0
dXJlRW5hYmxlZChmYWxzZSkKIHsKICAgICBBU1NFUlQoc2V0dGluZ3MpOwogfQpAQCAtMjg0LDYg
KzI4NSwxMSBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1fc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkKGVuYWJsZWQpOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0
Q29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbV9jb21wb3Np
dGVUb1RleHR1cmVFbmFibGVkID0gZW5hYmxlZDsKK30KKwogdm9pZCBXZWJTZXR0aW5nc0ltcGw6
OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3IzRFRyYW5zZm9ybXNFbmFibGVkKGJvb2wgZW5h
YmxlZCkKIHsKICAgICBtX3NldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RU
cmFuc2Zvcm1zRW5hYmxlZChlbmFibGVkKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2V0dGluZ3NJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1w
bC5oCmluZGV4IGZmZGM4ZDM5MzE3MDE2NDliNzk1MTNmNjJlYTY1Y2E5MGMxMjJlNzIuLmRjM2E4
NjhmY2YzNzdmNzA5OTFhNzQ3MTk2NTU0YWYxN2NjNjdiOWEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuaApAQCAtODgsNiArODgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldFNob3dEZWJ1Z0JvcmRlcnMoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEVkaXRp
bmdCZWhhdmlvcihFZGl0aW5nQmVoYXZpb3IpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nRW5hYmxlZChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29tcG9z
aXRlVG9UZXh0dXJlRW5hYmxlZChib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRlVG9U
ZXh0dXJlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxl
ZDsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RUcmFu
c2Zvcm1zRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0ZvclZpZGVvRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0ZvclBsdWdpbnNFbmFibGVkKGJvb2wpOwpAQCAtMTAwLDYgKzEwMiw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpTZXR0aW5ncyogbV9zZXR0aW5n
czsKKyAgICBib29sIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA0NGVmZWVh
NjJhMjRiMjg0MTc2YTdmNjFjYjk0ZWM4NjI2M2U0OGYwLi40MDM4ZjVkNmUyZWE1M2ZhNDg0ZTQ5
OGEwZGU3NWRjYWU3MTg2OGM4IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAt
OTY5LDYgKzk2OSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlc2l6ZShjb25zdCBXZWJTaXplJiBu
ZXdTaXplKQogICAgIGlmIChtX2xheWVyUmVuZGVyZXIgJiYgaXNBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQWN0aXZlKCkpIHsKICAgICAgICAgbV9sYXllclJlbmRlcmVyLT5yZXNpemVPbnNjcmVlbkNv
bnRlbnQoSW50U2l6ZShzdGQ6Om1heCgxLCBtX3NpemUud2lkdGgpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KDEsIG1fc2l6
ZS5oZWlnaHQpKSk7CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0Q29tcG9zaXRlT2Zmc2Ny
ZWVuKHNldHRpbmdzKCktPmNvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoKSk7CiAgICAgfQogI2Vu
ZGlmCiB9CkBAIC0yMzk2LDYgKzIzOTcsOCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkb0NvbXBvc2l0
ZSgpCiAKICAgICBXZWJWaWV3SW1wbFNjcm9sbGJhclBhaW50SW50ZXJmYWNlIHNjcm9sbGJhclBh
aW50KHRoaXMpOwogICAgIG1fbGF5ZXJSZW5kZXJlci0+ZHJhd0xheWVycyh2aXNpYmxlUmVjdCwg
Y29udGVudFJlY3QsIHNjcm9sbCwgdGlsZVBhaW50LCBzY3JvbGxiYXJQYWludCk7CisgICAgaWYg
KG1fbGF5ZXJSZW5kZXJlci0+aXNDb21wb3NpdGluZ09mZnNjcmVlbigpKQorICAgICAgICBtX2xh
eWVyUmVuZGVyZXItPmNvcHlPZmZzY3JlZW5UZXh0dXJlVG9EaXNwbGF5KCk7CiB9CiAKIHZvaWQg
V2ViVmlld0ltcGw6OnJlYWxsb2NhdGVSZW5kZXJlcigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78854</attachid>
            <date>2011-01-13 14:05:40 -0800</date>
            <delta_ts>2011-01-14 14:52:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52311-20110113170553.patch</filename>
            <type>text/plain</type>
            <size>8142</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2YWNiOWI4YjE1MzE0MTE1NDQ4MTJhZGI0MDhkOGYzMmI5MGMwM2NjLi5j
MDViMWVmNGE2YjFhZmM1NTlhYjI0YWIxZWFkMGUzMjBiYzBmYTM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjIgQEAKKzIwMTEtMDEtMTMgIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtjaHJvbWl1bV0gQWRkIGNvbW1hbmQtbGluZSBmbGFnIHRvIGVuYWJsZSBjb21wb3NpdGUg
dG8gb2Zmc2NyZWVuIHRleHR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MjMxMQorCisgICAgICAgIEFkZCBwbHVtYmluZyB0byBhbGxvdyBjb21t
YW5kLWxpbmUgc3dpdGNoIHRvIGVuYWJsZSBvZmZzY3JlZW4gY29tcG9zaXRpbmcuIEZ1bmN0aW9u
CisgICAgICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weU9mZnNjcmVlblRleHR1cmVUb0Rp
c3BsYXkgdXNlZCBmb3Igbm93IHRvIG1pbWljCisgICAgICAgIG5vcm1hbCByZW5kZXJlciBvcGVy
YXRpb24uCisKKyAgICAgICAgRXhpc3RpbmcgZnVuY3Rpb25hbGl0eSBub3QgY2hhbmdlZDsgb2Zm
c2NyZWVuIGNvbXBvc2l0aW5nIHdpbGwgYmUgdGVzdGVkIHZpYSBHUFUgdGVzdCBmcmFtZXdvcmsu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5
T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRl
cmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJSZW5kZXJlckNocm9taXVtOjppc0NvbXBvc2l0aW5nT2Zmc2NyZWVuKToKKwogMjAxMS0w
MS0xMyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQgYnVpbGRmaXggYWZ0ZXIgcjc1NzE1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJD
aHJvbWl1bS5jcHAKaW5kZXggOGQ3N2JlYWU5YjUzNjIyNzNiMzhhOThlOWM2YzQzNzNiNDQ2ZjRi
NC4uNDhlZjk1NjE5YzhkYTg0ZGQ5MzFmYmQ4ZDg5NWNmOThkMTM5YmUwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC02MzYsNiArNjM2LDE2IEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpzZXRDb21wb3NpdGVPZmZzY3JlZW4oYm9vbCBjb21wb3NpdGVP
ZmZzY3JlZW4pCiAgICAgICAgIG1fcm9vdExheWVyLT5tX3JlbmRlclN1cmZhY2UuY2xlYXIoKTsK
IH0KIAordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlPZmZzY3JlZW5UZXh0dXJlVG9E
aXNwbGF5KCkKK3sKKyAgICBpZiAobV9jb21wb3NpdGVPZmZzY3JlZW4pIHsKKyAgICAgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICAgICAgdXNlUmVuZGVyU3VyZmFjZSgwKTsKKyAgICAg
ICAgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+ZHJhdygpOworICAgIH0KK30KKwogYm9vbCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UoUmVuZGVyU3VyZmFjZUNocm9taXVt
KiByZW5kZXJTdXJmYWNlKQogewogICAgIGlmIChtX2N1cnJlbnRSZW5kZXJTdXJmYWNlID09IHJl
bmRlclN1cmZhY2UpCkBAIC02NDMsNyArNjUzLDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnVzZVJlbmRlclN1cmZhY2UoUmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWMK
IAogICAgIG1fY3VycmVudFJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlOwogCi0gICAgaWYg
KHJlbmRlclN1cmZhY2UgPT0gbV9kZWZhdWx0UmVuZGVyU3VyZmFjZSAmJiAhbV9jb21wb3NpdGVP
ZmZzY3JlZW4pIHsKKyAgICBpZiAoKHJlbmRlclN1cmZhY2UgPT0gbV9kZWZhdWx0UmVuZGVyU3Vy
ZmFjZSAmJiAhbV9jb21wb3NpdGVPZmZzY3JlZW4pIHx8ICghcmVuZGVyU3VyZmFjZSAmJiBtX2Nv
bXBvc2l0ZU9mZnNjcmVlbikpIHsKICAgICAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250
ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCAwKSk7
CiAgICAgICAgIHNldERyYXdWaWV3cG9ydFJlY3QocmVuZGVyU3VyZmFjZS0+bV9jb250ZW50UmVj
dCwgdHJ1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uaAppbmRleCAzZDNlNzg0YzRjYTE4NWQ5M2NmM2E4ZTE4NmUxYTA0M2U3ODZmNjNmLi4x
YWRiOTQwNDMxYmI2ZWYxOWZhMTVlZWEzYmJlZjBlYTZjODhiOGRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uaApAQCAtODgsOCArODgsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXJkd2FyZUNvbXBvc2l0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9oYXJkd2FyZUNvbXBvc2l0aW5n
OyB9CiAKICAgICB2b2lkIHNldENvbXBvc2l0ZU9mZnNjcmVlbihib29sKTsKLSAgICBib29sIGlz
Q29tcG9zaXRpbmdPZmZzY3JlZW4oKSB7IHJldHVybiBtX2NvbXBvc2l0ZU9mZnNjcmVlbjsgfQor
ICAgIGJvb2wgaXNDb21wb3NpdGluZ09mZnNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9z
aXRlT2Zmc2NyZWVuOyB9CiAgICAgTGF5ZXJUZXh0dXJlKiBnZXRPZmZzY3JlZW5MYXllclRleHR1
cmUoKSB7IHJldHVybiBtX2NvbXBvc2l0ZU9mZnNjcmVlbiA/IG1fcm9vdExheWVyLT5tX3JlbmRl
clN1cmZhY2UtPm1fY29udGVudHNUZXh0dXJlLmdldCgpIDogMDsgfQorICAgIHZvaWQgY29weU9m
ZnNjcmVlblRleHR1cmVUb0Rpc3BsYXkoKTsKIAogICAgIHZvaWQgc2V0Um9vdExheWVyQ2FudmFz
U2l6ZShjb25zdCBJbnRTaXplJik7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDY3MTA3ODViYTIzY2Q0Y2Uy
ZThkYWQ0MTFiMzBiZjE5NjAxNmNiNWMuLjJlNGUyYjc2NzYwZmNkNjYwYTdmMDc3MjhmOTJkZTU3
NmMyMGE5ZmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDExLTAxLTEzICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBjb21tYW5kLWxp
bmUgZmxhZyB0byBlbmFibGUgY29tcG9zaXRlIHRvIG9mZnNjcmVlbiB0ZXh0dXJlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIzMTEKKworICAgICAg
ICBBZGQgcGx1bWJpbmcgdG8gYWxsb3cgY29tbWFuZC1saW5lIHN3aXRjaCB0byBlbmFibGUgb2Zm
c2NyZWVuIGNvbXBvc2l0aW5nLiBGdW5jdGlvbgorICAgICAgICBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmNvcHlPZmZzY3JlZW5UZXh0dXJlVG9EaXNwbGF5IHVzZWQgZm9yIG5vdyB0byBtaW1pYwor
ICAgICAgICBub3JtYWwgcmVuZGVyZXIgb3BlcmF0aW9uLgorCisgICAgICAgICogcHVibGljL1dl
YlNldHRpbmdzLmg6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU2V0dGluZ3NJbXBsOjpzZXRDb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKToKKyAg
ICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRp
bmdzSW1wbDo6Y29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZCk6CisgICAgICAgICogc3JjL1dlYlZp
ZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRvQ29tcG9zaXRlKToK
KwogMjAxMS0wMS0xMyAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTZXR0aW5ncy5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5o
CmluZGV4IDA0NjdjOTY2YWE1ZmRhMjNkZGUzNDc4ZDA0ZDI5ZGFiMjcxNjZhN2MuLjBjNjk5YmQ3
ZmFiYmUyYzkzYTkzNWNlZjc2ZGRhOTRjMTg1NDQxZWEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlNldHRpbmdzLmgKQEAgLTkzLDYgKzkzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRTaG93RGVidWdCb3JkZXJzKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RWRpdGlu
Z0JlaGF2aW9yKEVkaXRpbmdCZWhhdmlvcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dENvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBj
b21wb3NpdGVUb1RleHR1cmVFbmFibGVkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RUcmFuc2Zvcm1zRW5hYmxlZChib29sKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRlb0VuYWJs
ZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Rm9yQ2FudmFzRW5hYmxlZChib29sKSA9IDA7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNldHRpbmdzSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdz
SW1wbC5jcHAKaW5kZXggZTYwNTYyYzA1MWI5ZTE3NDk5YTA1M2ExMDFiNDMzZmEzZjE4Yzc4ZC4u
MzRlYjZiYmJlZWRlODE3MzQ1NGVjZDRkY2FkMDQ3ZmU4ZmM5ODdlNyAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcApAQCAtNDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogV2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwoU2V0dGluZ3MqIHNldHRp
bmdzKQogICAgIDogbV9zZXR0aW5ncyhzZXR0aW5ncykKKyAgICAsIG1fY29tcG9zaXRlVG9UZXh0
dXJlRW5hYmxlZChmYWxzZSkKIHsKICAgICBBU1NFUlQoc2V0dGluZ3MpOwogfQpAQCAtMjg0LDYg
KzI4NSwxMSBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1fc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkKGVuYWJsZWQpOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0
Q29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbV9jb21wb3Np
dGVUb1RleHR1cmVFbmFibGVkID0gZW5hYmxlZDsKK30KKwogdm9pZCBXZWJTZXR0aW5nc0ltcGw6
OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3IzRFRyYW5zZm9ybXNFbmFibGVkKGJvb2wgZW5h
YmxlZCkKIHsKICAgICBtX3NldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RU
cmFuc2Zvcm1zRW5hYmxlZChlbmFibGVkKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2V0dGluZ3NJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1w
bC5oCmluZGV4IGZmZGM4ZDM5MzE3MDE2NDliNzk1MTNmNjJlYTY1Y2E5MGMxMjJlNzIuLmRjM2E4
NjhmY2YzNzdmNzA5OTFhNzQ3MTk2NTU0YWYxN2NjNjdiOWEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuaApAQCAtODgsNiArODgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldFNob3dEZWJ1Z0JvcmRlcnMoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEVkaXRp
bmdCZWhhdmlvcihFZGl0aW5nQmVoYXZpb3IpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nRW5hYmxlZChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29tcG9z
aXRlVG9UZXh0dXJlRW5hYmxlZChib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRlVG9U
ZXh0dXJlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxl
ZDsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RUcmFu
c2Zvcm1zRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0ZvclZpZGVvRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0ZvclBsdWdpbnNFbmFibGVkKGJvb2wpOwpAQCAtMTAwLDYgKzEwMiw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpTZXR0aW5ncyogbV9zZXR0aW5n
czsKKyAgICBib29sIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA0NGVmZWVh
NjJhMjRiMjg0MTc2YTdmNjFjYjk0ZWM4NjI2M2U0OGYwLi41OWFlZjg3Mjg1ZmYyYmI1OWI5MmJi
NzA3ZDFiMzEwNGZlZTc0Y2FjIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAt
MjM5NSw3ICsyMzk1LDEwIEBAIHZvaWQgV2ViVmlld0ltcGw6OmRvQ29tcG9zaXRlKCkKICAgICBX
ZWJWaWV3SW1wbFRpbGVQYWludEludGVyZmFjZSB0aWxlUGFpbnQodGhpcyk7CiAKICAgICBXZWJW
aWV3SW1wbFNjcm9sbGJhclBhaW50SW50ZXJmYWNlIHNjcm9sbGJhclBhaW50KHRoaXMpOworICAg
IG1fbGF5ZXJSZW5kZXJlci0+c2V0Q29tcG9zaXRlT2Zmc2NyZWVuKHNldHRpbmdzKCktPmNvbXBv
c2l0ZVRvVGV4dHVyZUVuYWJsZWQoKSk7CiAgICAgbV9sYXllclJlbmRlcmVyLT5kcmF3TGF5ZXJz
KHZpc2libGVSZWN0LCBjb250ZW50UmVjdCwgc2Nyb2xsLCB0aWxlUGFpbnQsIHNjcm9sbGJhclBh
aW50KTsKKyAgICBpZiAobV9sYXllclJlbmRlcmVyLT5pc0NvbXBvc2l0aW5nT2Zmc2NyZWVuKCkp
CisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+Y29weU9mZnNjcmVlblRleHR1cmVUb0Rpc3BsYXko
KTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6cmVhbGxvY2F0ZVJlbmRlcmVyKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79007</attachid>
            <date>2011-01-14 14:52:43 -0800</date>
            <delta_ts>2011-01-18 14:05:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52311-20110114175302.patch</filename>
            <type>text/plain</type>
            <size>9218</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5NmQ0YzdhMGRhZjkyMmY3ODFiYmFjM2ZkOWJjYTA1OWNiNjZkNDFjLi5l
ZDdmNjg5NjQzZjQ2YmZlOGZjN2Y5ODI5NDk3Y2M4ZWM2MTIwM2ZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjQgQEAKKzIwMTEtMDEtMTQgIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtjaHJvbWl1bV0gQWRkIGNvbW1hbmQtbGluZSBmbGFnIHRvIGVuYWJsZSBjb21wb3NpdGUg
dG8gb2Zmc2NyZWVuIHRleHR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MjMxMQorCisgICAgICAgIEFkZCBwbHVtYmluZyB0byBhbGxvdyBjb21t
YW5kLWxpbmUgc3dpdGNoIHRvIGVuYWJsZSBvZmZzY3JlZW4gY29tcG9zaXRpbmcuIEZ1bmN0aW9u
CisgICAgICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weU9mZnNjcmVlblRleHR1cmVUb0Rp
c3BsYXkgdXNlZCBmb3Igbm93IHRvIG1pbWljCisgICAgICAgIG5vcm1hbCByZW5kZXJlciBvcGVy
YXRpb24uCisKKyAgICAgICAgRXhpc3RpbmcgZnVuY3Rpb25hbGl0eSBub3QgY2hhbmdlZDsgb2Zm
c2NyZWVuIGNvbXBvc2l0aW5nIHdpbGwgYmUgdGVzdGVkIHZpYSBHUFUgdGVzdCBmcmFtZXdvcmsu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRS
b290TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRD
b21wb3NpdGVPZmZzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjppc0NvbXBvc2l0aW5nT2Zmc2NyZWVuKToK
KwogMjAxMS0wMS0xNCAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcAppbmRleCA4ZDc3YmVhZTliNTM2MjI3M2IzOGE5OGU5YzZjNDM3M2I0NDZmNGI0Li4w
NDA5OTE5NDY0ZWMzODYyZDQ5MzBmYTMxNjk4ZDJjMDcxM2UyYWZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTM0MCw2ICszNDAsOCBAQCB2b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6cHJlc2VudCgpCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0
Um9vdExheWVyKFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCiB7CiAgICAgbV9yb290
TGF5ZXIgPSBsYXllcjsKKyAgICBpZiAobV9yb290TGF5ZXIpCisgICAgICAgIG1fcm9vdExheWVy
LT5zZXRMYXllclJlbmRlcmVyKHRoaXMpOwogICAgIG1fcm9vdExheWVyVGlsZXItPmludmFsaWRh
dGVFbnRpcmVMYXllcigpOwogICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXJUaWxlcikKICAg
ICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyVGlsZXItPmludmFsaWRhdGVFbnRpcmVMYXllcigp
OwpAQCAtNjIxLDE5ICs2MjMsMjMgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0
ZUxheWVyc1JlY3Vyc2l2ZShMYXllckNocm9taXVtKiBsYXllciwgY29uc3QgVHIKIAogdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OnNldENvbXBvc2l0ZU9mZnNjcmVlbihib29sIGNvbXBvc2l0
ZU9mZnNjcmVlbikKIHsKKyAgICBpZiAobV9jb21wb3NpdGVPZmZzY3JlZW4gPT0gY29tcG9zaXRl
T2Zmc2NyZWVuKQorICAgICAgIHJldHVybjsKKwogICAgIG1fY29tcG9zaXRlT2Zmc2NyZWVuID0g
Y29tcG9zaXRlT2Zmc2NyZWVuOwogCi0gICAgaWYgKCFtX3Jvb3RMYXllcikgewotICAgICAgICBt
X2NvbXBvc2l0ZU9mZnNjcmVlbiA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAg
IGlmICghbV9jb21wb3NpdGVPZmZzY3JlZW4gJiYgbV9yb290TGF5ZXIpCisgICAgICAgIG1fcm9v
dExheWVyLT5tX3JlbmRlclN1cmZhY2UuY2xlYXIoKTsKK30KIAordm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmNvcHlPZmZzY3JlZW5UZXh0dXJlVG9EaXNwbGF5KCkKK3sKICAgICBpZiAobV9j
b21wb3NpdGVPZmZzY3JlZW4pIHsKLSAgICAgICAgLy8gTmVlZCB0byBleHBsaWNpdGx5IHNldCBh
IExheWVyUmVuZGVyZXJDaHJvbWl1bSBmb3IgdGhlIGxheWVyIHdpdGggdGhlIG9mZnNjcmVlbiB0
ZXh0dXJlLAotICAgICAgICAvLyBvciBlbHNlIHRoZSBjYWxsIHRvIHByZXBhcmVDb250ZW50c1Rl
eHR1cmUoKSBpbiB1c2VSZW5kZXJTdXJmYWNlKCkgd2lsbCBmYWlsLgotICAgICAgICBtX3Jvb3RM
YXllci0+c2V0TGF5ZXJSZW5kZXJlcih0aGlzKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9yb290
TGF5ZXItPm1fcmVuZGVyU3VyZmFjZS5jbGVhcigpOworICAgICAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKKworICAgICAgICB1c2VSZW5kZXJTdXJmYWNlKDApOworICAgICAgICBtX2RlZmF1bHRS
ZW5kZXJTdXJmYWNlLT5kcmF3KCk7CisgICAgfQogfQogCiBib29sIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6dXNlUmVuZGVyU3VyZmFjZShSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZh
Y2UpCkBAIC02NDMsNyArNjQ5LDcgQEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJl
bmRlclN1cmZhY2UoUmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWMKIAogICAgIG1f
Y3VycmVudFJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlOwogCi0gICAgaWYgKHJlbmRlclN1
cmZhY2UgPT0gbV9kZWZhdWx0UmVuZGVyU3VyZmFjZSAmJiAhbV9jb21wb3NpdGVPZmZzY3JlZW4p
IHsKKyAgICBpZiAoKHJlbmRlclN1cmZhY2UgPT0gbV9kZWZhdWx0UmVuZGVyU3VyZmFjZSAmJiAh
bV9jb21wb3NpdGVPZmZzY3JlZW4pIHx8ICghcmVuZGVyU3VyZmFjZSAmJiBtX2NvbXBvc2l0ZU9m
ZnNjcmVlbikpIHsKICAgICAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5iaW5k
RnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCAwKSk7CiAgICAgICAg
IHNldERyYXdWaWV3cG9ydFJlY3QocmVuZGVyU3VyZmFjZS0+bV9jb250ZW50UmVjdCwgdHJ1ZSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApp
bmRleCAzZDNlNzg0YzRjYTE4NWQ5M2NmM2E4ZTE4NmUxYTA0M2U3ODZmNjNmLi4xYWRiOTQwNDMx
YmI2ZWYxOWZhMTVlZWEzYmJlZjBlYTZjODhiOGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uaApAQCAtODgsOCArODgsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXJkd2FyZUNv
bXBvc2l0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9oYXJkd2FyZUNvbXBvc2l0aW5nOyB9CiAKICAg
ICB2b2lkIHNldENvbXBvc2l0ZU9mZnNjcmVlbihib29sKTsKLSAgICBib29sIGlzQ29tcG9zaXRp
bmdPZmZzY3JlZW4oKSB7IHJldHVybiBtX2NvbXBvc2l0ZU9mZnNjcmVlbjsgfQorICAgIGJvb2wg
aXNDb21wb3NpdGluZ09mZnNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRlT2Zmc2Ny
ZWVuOyB9CiAgICAgTGF5ZXJUZXh0dXJlKiBnZXRPZmZzY3JlZW5MYXllclRleHR1cmUoKSB7IHJl
dHVybiBtX2NvbXBvc2l0ZU9mZnNjcmVlbiA/IG1fcm9vdExheWVyLT5tX3JlbmRlclN1cmZhY2Ut
Pm1fY29udGVudHNUZXh0dXJlLmdldCgpIDogMDsgfQorICAgIHZvaWQgY29weU9mZnNjcmVlblRl
eHR1cmVUb0Rpc3BsYXkoKTsKIAogICAgIHZvaWQgc2V0Um9vdExheWVyQ2FudmFzU2l6ZShjb25z
dCBJbnRTaXplJik7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDRmZTE2ZTAwNzUzYWFkYzRkZDEwOGRiYTQx
MDAzNjk3ZjY3M2YyODUuLmVhYmI3NGExNmU2OGQ2NzZmMzE0MjBkZWM4MzgzZTA3MDE0MTQzMDEg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDExLTAxLTE0ICBXLiBKYW1lcyBNYWNM
ZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBjb21tYW5kLWxpbmUgZmxhZyB0
byBlbmFibGUgY29tcG9zaXRlIHRvIG9mZnNjcmVlbiB0ZXh0dXJlLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIzMTEKKworICAgICAgICBBZGQgcGx1
bWJpbmcgdG8gYWxsb3cgY29tbWFuZC1saW5lIHN3aXRjaCB0byBlbmFibGUgb2Zmc2NyZWVuIGNv
bXBvc2l0aW5nLiBGdW5jdGlvbgorICAgICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlP
ZmZzY3JlZW5UZXh0dXJlVG9EaXNwbGF5IHVzZWQgZm9yIG5vdyB0byBtaW1pYworICAgICAgICBu
b3JtYWwgcmVuZGVyZXIgb3BlcmF0aW9uLgorCisgICAgICAgICogcHVibGljL1dlYlNldHRpbmdz
Lmg6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U2V0dGluZ3NJbXBsOjpzZXRDb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKToKKyAgICAgICAgKiBz
cmMvV2ViU2V0dGluZ3NJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6
Y29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRvQ29tcG9zaXRlKToKKwogMjAxMS0w
MS0xNCAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlNldHRpbmdzLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKaW5kZXgg
Y2NmZjI4Yjg2Y2JkOTg0NjEzNDMzY2UwYTYyMTFkMGEzNDEyZDY0OC4uODU1N2JhMjI1NzNjZDU2
ZjZlMzMwZGFhMDA1ODkwMzc0NWU3ZDg1OCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGlu
Z3MuaApAQCAtOTMsNiArOTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3dE
ZWJ1Z0JvcmRlcnMoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRFZGl0aW5nQmVoYXZp
b3IoRWRpdGluZ0JlaGF2aW9yKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdFbmFibGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29tcG9z
aXRlVG9UZXh0dXJlRW5hYmxlZChib29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNvbXBvc2l0
ZVRvVGV4dHVyZUVuYWJsZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdGb3IzRFRyYW5zZm9ybXNFbmFibGVkKGJvb2wpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclZpZGVvRW5hYmxlZChib29s
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JDYW52
YXNFbmFibGVkKGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2V0dGluZ3NJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNw
cAppbmRleCBjNjZhNTdiOTFiMDc4NjI3NjA0MzYxYjFjM2FjNjQ0NmRiNmZlYTNmLi45OGVkNWYx
NWQ1ZTZlOWFiZWRhZjVlNWJmZmM4NTZlNjNiYzM2NzVlIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBXZWJTZXR0aW5nc0ltcGw6OldlYlNldHRpbmdzSW1wbChTZXR0aW5ncyogc2V0dGluZ3MpCiAg
ICAgOiBtX3NldHRpbmdzKHNldHRpbmdzKQorICAgICwgbV9jb21wb3NpdGVUb1RleHR1cmVFbmFi
bGVkKGZhbHNlKQogewogICAgIEFTU0VSVChzZXR0aW5ncyk7CiB9CkBAIC0yODQsNiArMjg1LDEx
IEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxl
ZChib29sIGVuYWJsZWQpCiAgICAgbV9zZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKK3ZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRDb21wb3Np
dGVUb1RleHR1cmVFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX2NvbXBvc2l0ZVRvVGV4
dHVyZUVuYWJsZWQgPSBlbmFibGVkOworfQorCiB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0ZvcjNEVHJhbnNmb3Jtc0VuYWJsZWQoYm9vbCBlbmFibGVkKQog
ewogICAgIG1fc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3IzRFRyYW5zZm9y
bXNFbmFibGVkKGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
ZXR0aW5nc0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKaW5k
ZXggZmViYzk1OThiMGU2YWI3YzY1ZDIyNDU1Nzg0MTAxZDgxMzU3NGQ2NC4uM2RlMzBiOWM5MWJj
ZmQzODEyMDI3YjgxMGYyODVjMjkxNWUxZThjMCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTZXR0aW5nc0ltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRp
bmdzSW1wbC5oCkBAIC04OCw2ICs4OCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0
U2hvd0RlYnVnQm9yZGVycyhib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RWRpdGluZ0JlaGF2
aW9yKEVkaXRpbmdCZWhhdmlvcik7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb21wb3NpdGVUb1Rl
eHR1cmVFbmFibGVkKGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGVUb1RleHR1cmVF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3NpdGVUb1RleHR1cmVFbmFibGVkOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3IzRFRyYW5zZm9ybXNF
bmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Rm9yVmlkZW9FbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENv
bXBvc2l0aW5nRm9yUGx1Z2luc0VuYWJsZWQoYm9vbCk7CkBAIC0xMDEsNiArMTAzLDcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIFdlYkNvcmU6OlNldHRpbmdzKiBtX3NldHRpbmdzOworICAg
IGJvb2wgbV9jb21wb3NpdGVUb1RleHR1cmVFbmFibGVkOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGJjZDk3YzQ5ZDYzM2Y4
ZmUyNjNkZjM1MWFjYzA3MDI3MWZmZTA3MWQuLjI5OGFjMDQ2YjUxMjMxMDQ2MzliZDAyYzc4Nzc2
MjhhMzgwZmQ0MWEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0yMzg0LDcg
KzIzODQsMTAgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZG9Db21wb3NpdGUoKQogICAgIFdlYlZpZXdJ
bXBsVGlsZVBhaW50SW50ZXJmYWNlIHRpbGVQYWludCh0aGlzKTsKIAogICAgIFdlYlZpZXdJbXBs
U2Nyb2xsYmFyUGFpbnRJbnRlcmZhY2Ugc2Nyb2xsYmFyUGFpbnQodGhpcyk7CisgICAgbV9sYXll
clJlbmRlcmVyLT5zZXRDb21wb3NpdGVPZmZzY3JlZW4oc2V0dGluZ3MoKS0+Y29tcG9zaXRlVG9U
ZXh0dXJlRW5hYmxlZCgpKTsKICAgICBtX2xheWVyUmVuZGVyZXItPmRyYXdMYXllcnModmlzaWJs
ZVJlY3QsIGNvbnRlbnRSZWN0LCBzY3JvbGwsIHRpbGVQYWludCwgc2Nyb2xsYmFyUGFpbnQpOwor
ICAgIGlmIChtX2xheWVyUmVuZGVyZXItPmlzQ29tcG9zaXRpbmdPZmZzY3JlZW4oKSkKKyAgICAg
ICAgbV9sYXllclJlbmRlcmVyLT5jb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSgpOwogfQog
CiB2b2lkIFdlYlZpZXdJbXBsOjpyZWFsbG9jYXRlUmVuZGVyZXIoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79326</attachid>
            <date>2011-01-18 14:06:00 -0800</date>
            <delta_ts>2011-01-19 07:48:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52311-20110118170645.patch</filename>
            <type>text/plain</type>
            <size>12656</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhZGE3MjE2NDhjYzEzNDBhNThiMGFkZmE1M2VkNDQ3NDg0NDM1YWM0Li4z
OGVkMzI2ZDQxYzNkMWU2YzM0MTAzNmZiZTA2MjA0YTc1NDY3N2VkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjcgQEAKKzIwMTEtMDEtMTggIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtjaHJvbWl1bV0gQWRkIGNvbW1hbmQtbGluZSBmbGFnIHRvIGVuYWJsZSBjb21wb3NpdGUg
dG8gb2Zmc2NyZWVuIHRleHR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MjMxMQorCisgICAgICAgIEFkZCBwbHVtYmluZyB0byBhbGxvdyBjb21t
YW5kLWxpbmUgc3dpdGNoIHRvIGVuYWJsZSBvZmZzY3JlZW4gY29tcG9zaXRpbmcuIEZ1bmN0aW9u
CisgICAgICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weU9mZnNjcmVlblRleHR1cmVUb0Rp
c3BsYXkgdXNlZCBmb3Igbm93IHRvIG1pbWljCisgICAgICAgIG5vcm1hbCByZW5kZXJlciBvcGVy
YXRpb24uCisKKyAgICAgICAgRXhpc3RpbmcgZnVuY3Rpb25hbGl0eSBub3QgY2hhbmdlZDsgb2Zm
c2NyZWVuIGNvbXBvc2l0aW5nIHdpbGwgYmUgdGVzdGVkIHZpYSBHUFUgdGVzdCBmcmFtZXdvcmsu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRS
b290TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRD
b21wb3NpdGVPZmZzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFyRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0U2Npc3NvclRvUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3Rz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aXNDb21w
b3NpdGluZ09mZnNjcmVlbik6CisKIDIwMTEtMDEtMTcgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2
aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDhkNzdiZWFlOWI1MzYy
MjczYjM4YTk4ZTljNmM0MzczYjQ0NmY0YjQuLjVjODBhYTk5OGY5MDM0Y2QxZDQ1OWI0M2QyMzMw
MzA5NWM1MzNlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAt
MzQwLDYgKzM0MCw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpwcmVzZW50KCkKIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRSb290TGF5ZXIoUGFzc1JlZlB0cjxMYXllckNo
cm9taXVtPiBsYXllcikKIHsKICAgICBtX3Jvb3RMYXllciA9IGxheWVyOworICAgIGlmIChtX3Jv
b3RMYXllcikKKyAgICAgICAgbV9yb290TGF5ZXItPnNldExheWVyUmVuZGVyZXIodGhpcyk7CiAg
ICAgbV9yb290TGF5ZXJUaWxlci0+aW52YWxpZGF0ZUVudGlyZUxheWVyKCk7CiAgICAgaWYgKG1f
aG9yaXpvbnRhbFNjcm9sbGJhclRpbGVyKQogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXJU
aWxlci0+aW52YWxpZGF0ZUVudGlyZUxheWVyKCk7CkBAIC02MjEsMTkgKzYyMywzNyBAQCB2b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJzUmVjdXJzaXZlKExheWVyQ2hyb21p
dW0qIGxheWVyLCBjb25zdCBUcgogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0Q29t
cG9zaXRlT2Zmc2NyZWVuKGJvb2wgY29tcG9zaXRlT2Zmc2NyZWVuKQogeworICAgIGlmIChtX2Nv
bXBvc2l0ZU9mZnNjcmVlbiA9PSBjb21wb3NpdGVPZmZzY3JlZW4pCisgICAgICAgcmV0dXJuOwor
CiAgICAgbV9jb21wb3NpdGVPZmZzY3JlZW4gPSBjb21wb3NpdGVPZmZzY3JlZW47CiAKLSAgICBp
ZiAoIW1fcm9vdExheWVyKSB7Ci0gICAgICAgIG1fY29tcG9zaXRlT2Zmc2NyZWVuID0gZmFsc2U7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCFtX2NvbXBvc2l0ZU9mZnNjcmVlbiAm
JiBtX3Jvb3RMYXllcikKKyAgICAgICAgbV9yb290TGF5ZXItPm1fcmVuZGVyU3VyZmFjZS5jbGVh
cigpOworfQogCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weU9mZnNjcmVlblRleHR1
cmVUb0Rpc3BsYXkoKQorewogICAgIGlmIChtX2NvbXBvc2l0ZU9mZnNjcmVlbikgewotICAgICAg
ICAvLyBOZWVkIHRvIGV4cGxpY2l0bHkgc2V0IGEgTGF5ZXJSZW5kZXJlckNocm9taXVtIGZvciB0
aGUgbGF5ZXIgd2l0aCB0aGUgb2Zmc2NyZWVuIHRleHR1cmUsCi0gICAgICAgIC8vIG9yIGVsc2Ug
dGhlIGNhbGwgdG8gcHJlcGFyZUNvbnRlbnRzVGV4dHVyZSgpIGluIHVzZVJlbmRlclN1cmZhY2Uo
KSB3aWxsIGZhaWwuCi0gICAgICAgIG1fcm9vdExheWVyLT5zZXRMYXllclJlbmRlcmVyKHRoaXMp
OwotICAgIH0gZWxzZQotICAgICAgICBtX3Jvb3RMYXllci0+bV9yZW5kZXJTdXJmYWNlLmNsZWFy
KCk7CisgICAgICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgICAgIHVzZVJlbmRlclN1
cmZhY2UoMCk7CisgICAgICAgIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UtPm1fZHJhd1RyYW5zZm9y
bS5tYWtlSWRlbnRpdHkoKTsKKyAgICAgICAgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+bV9kcmF3
VHJhbnNmb3JtLnRyYW5zbGF0ZTNkKDAuNSAqIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UtPm1fY29u
dGVudFJlY3Qud2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuNSAqIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UtPm1fY29u
dGVudFJlY3QuaGVpZ2h0KCksIDApOworICAgICAgICBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5t
X2RyYXdPcGFjaXR5ID0gMTsKKyAgICAgICAgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+ZHJhdygp
OworICAgIH0KK30KKwordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNsZWFyRnJhbWVidWZm
ZXIodW5zaWduZWQgZmJvKQoreworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIEdMQyht
X2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFNRUJVRkZFUiwgZmJvKSk7CisgICAgbV9jb250ZXh0LT5jbGVhckNvbG9yKDAsIDAs
IDEsIDEpOworICAgIG1fY29udGV4dC0+Y29sb3JNYXNrKHRydWUsIHRydWUsIHRydWUsIHRydWUp
OworICAgIG1fY29udGV4dC0+Y2xlYXIoR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZFUl9C
SVQpOworICAgIG1fY29udGV4dC0+Y29sb3JNYXNrKHRydWUsIHRydWUsIHRydWUsIGZhbHNlKTsK
IH0KIAogYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UoUmVuZGVy
U3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWNlKQpAQCAtNjQzLDkgKzY2MywxMiBAQCBib29s
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyU3VyZmFjZShSZW5kZXJTdXJmYWNlQ2hy
b21pdW0qIHJlbmRlclN1cmZhYwogCiAgICAgbV9jdXJyZW50UmVuZGVyU3VyZmFjZSA9IHJlbmRl
clN1cmZhY2U7CiAKLSAgICBpZiAocmVuZGVyU3VyZmFjZSA9PSBtX2RlZmF1bHRSZW5kZXJTdXJm
YWNlICYmICFtX2NvbXBvc2l0ZU9mZnNjcmVlbikgeworICAgIGlmICgocmVuZGVyU3VyZmFjZSA9
PSBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlICYmICFtX2NvbXBvc2l0ZU9mZnNjcmVlbikgfHwgKCFy
ZW5kZXJTdXJmYWNlICYmIG1fY29tcG9zaXRlT2Zmc2NyZWVuKSkgewogICAgICAgICBHTEMobV9j
b250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIsIDApKTsKLSAgICAgICAgc2V0RHJhd1ZpZXdwb3J0UmVjdChyZW5kZXJT
dXJmYWNlLT5tX2NvbnRlbnRSZWN0LCB0cnVlKTsKKyAgICAgICAgaWYgKHJlbmRlclN1cmZhY2Up
CisgICAgICAgICAgICBzZXREcmF3Vmlld3BvcnRSZWN0KHJlbmRlclN1cmZhY2UtPm1fY29udGVu
dFJlY3QsIHRydWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXREcmF3Vmlld3BvcnRS
ZWN0KG1fZGVmYXVsdFJlbmRlclN1cmZhY2UtPm1fY29udGVudFJlY3QsIHRydWUpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTcwNiwxNyArNzI5LDIxIEBAIHZvaWQgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXIoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIFJlbmRlclN1
cmZhY2VDaHJvbWl1CiAvLyBzY2lzc29yUmVjdCBoYXMgaXRzIG9yaWdpbiBhdCB0aGUgdG9wIGxl
ZnQgY29ybmVyIG9mIHRoZSBjdXJyZW50IHZpc2libGUgcmVjdC4KIHZvaWQgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpzZXRTY2lzc29yVG9SZWN0KGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0KQog
eworICAgIEludFJlY3QgY29udGVudFJlY3QobV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+bV9jb250
ZW50UmVjdCk7CisgICAgaWYgKG1fY3VycmVudFJlbmRlclN1cmZhY2UpCisgICAgICAgIGNvbnRl
bnRSZWN0ID0gbV9jdXJyZW50UmVuZGVyU3VyZmFjZS0+bV9jb250ZW50UmVjdDsKKwogICAgIC8v
IFRoZSBzY2lzc29yIGNvb3JkaW5hdGVzIG11c3QgYmUgc3VwcGxpZWQgaW4gdmlld3BvcnQgc3Bh
Y2Ugc28gd2UgbmVlZCB0byBvZmZzZXQKICAgICAvLyBieSB0aGUgcmVsYXRpdmUgcG9zaXRpb24g
b2YgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgY3VycmVudCByZW5kZXIgc3VyZmFjZS4KLSAg
ICBpbnQgc2Npc3NvclggPSBzY2lzc29yUmVjdC54KCkgLSBtX2N1cnJlbnRSZW5kZXJTdXJmYWNl
LT5tX2NvbnRlbnRSZWN0LngoKTsKKyAgICBpbnQgc2Npc3NvclggPSBzY2lzc29yUmVjdC54KCkg
LSBjb250ZW50UmVjdC54KCk7CiAgICAgLy8gV2hlbiByZW5kZXJpbmcgdG8gdGhlIGRlZmF1bHQg
cmVuZGVyIHN1cmZhY2Ugd2UncmUgcmVuZGVyaW5nIHVwc2lkZSBkb3duIHNvIHRoZSB0b3AKICAg
ICAvLyBvZiB0aGUgR0wgc2Npc3NvciBpcyB0aGUgYm90dG9tIG9mIG91ciBsYXllci4KICAgICAv
LyBCdXQsIGlmIHJlbmRlcmluZyB0byBvZmZzY3JlZW4gdGV4dHVyZSwgd2UgcmV2ZXJzZSBvdXIg
c2Vuc2Ugb2YgJ3Vwc2lkZSBkb3duJy4KICAgICBpbnQgc2Npc3Nvclk7CiAgICAgaWYgKG1fY3Vy
cmVudFJlbmRlclN1cmZhY2UgPT0gbV9kZWZhdWx0UmVuZGVyU3VyZmFjZSAmJiAhbV9jb21wb3Np
dGVPZmZzY3JlZW4pCi0gICAgICAgIHNjaXNzb3JZID0gbV9jdXJyZW50UmVuZGVyU3VyZmFjZS0+
bV9jb250ZW50UmVjdC5oZWlnaHQoKSAtIChzY2lzc29yUmVjdC5ib3R0b20oKSAtIG1fY3VycmVu
dFJlbmRlclN1cmZhY2UtPm1fY29udGVudFJlY3QueSgpKTsKKyAgICAgICAgc2Npc3NvclkgPSBj
b250ZW50UmVjdC5oZWlnaHQoKSAtIChzY2lzc29yUmVjdC5ib3R0b20oKSAtIGNvbnRlbnRSZWN0
LnkoKSk7CiAgICAgZWxzZQotICAgICAgICBzY2lzc29yWSA9IHNjaXNzb3JSZWN0LnkoKSAtIG1f
Y3VycmVudFJlbmRlclN1cmZhY2UtPm1fY29udGVudFJlY3QueSgpOworICAgICAgICBzY2lzc29y
WSA9IHNjaXNzb3JSZWN0LnkoKSAtIGNvbnRlbnRSZWN0LnkoKTsKICAgICBHTEMobV9jb250ZXh0
LmdldCgpLCBtX2NvbnRleHQtPnNjaXNzb3Ioc2Npc3NvclgsIHNjaXNzb3JZLCBzY2lzc29yUmVj
dC53aWR0aCgpLCBzY2lzc29yUmVjdC5oZWlnaHQoKSkpOwogfQogCkBAIC03NjUsNiArNzkyLDgg
QEAgYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmluaXRpYWxpemVTaGFyZWRPYmplY3RzKCkK
ICAgICAvLyBDcmVhdGUgYW4gRkJPIGZvciBkb2luZyBvZmZzY3JlZW4gcmVuZGVyaW5nLgogICAg
IEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fb2Zmc2NyZWVuRnJhbWVidWZmZXJJZCA9IG1fY29udGV4
dC0+Y3JlYXRlRnJhbWVidWZmZXIoKSk7CiAKKyAgICBjbGVhckZyYW1lYnVmZmVyKDApOyAvLyBD
bGVhciBtYWluIGRpc3BsYXkuCisKICAgICBtX2xheWVyU2hhcmVkVmFsdWVzID0gYWRvcHRQdHIo
bmV3IExheWVyQ2hyb21pdW06OlNoYXJlZFZhbHVlcyhtX2NvbnRleHQuZ2V0KCkpKTsKICAgICBt
X2NvbnRlbnRMYXllclNoYXJlZFZhbHVlcyA9IGFkb3B0UHRyKG5ldyBDb250ZW50TGF5ZXJDaHJv
bWl1bTo6U2hhcmVkVmFsdWVzKG1fY29udGV4dC5nZXQoKSkpOwogICAgIG1fY2FudmFzTGF5ZXJT
aGFyZWRWYWx1ZXMgPSBhZG9wdFB0cihuZXcgQ2FudmFzTGF5ZXJDaHJvbWl1bTo6U2hhcmVkVmFs
dWVzKG1fY29udGV4dC5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaApp
bmRleCAzZDNlNzg0YzRjYTE4NWQ5M2NmM2E4ZTE4NmUxYTA0M2U3ODZmNjNmLi5lMGJhMWVhYzc0
MGRmYjYxNzkyM2FjN2VmNDg5NTI2NzQwMTU5MDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uaApAQCAtODgsOCArODgsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaGFyZHdhcmVD
b21wb3NpdGluZygpIGNvbnN0IHsgcmV0dXJuIG1faGFyZHdhcmVDb21wb3NpdGluZzsgfQogCiAg
ICAgdm9pZCBzZXRDb21wb3NpdGVPZmZzY3JlZW4oYm9vbCk7Ci0gICAgYm9vbCBpc0NvbXBvc2l0
aW5nT2Zmc2NyZWVuKCkgeyByZXR1cm4gbV9jb21wb3NpdGVPZmZzY3JlZW47IH0KKyAgICBib29s
IGlzQ29tcG9zaXRpbmdPZmZzY3JlZW4oKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0ZU9mZnNj
cmVlbjsgfQogICAgIExheWVyVGV4dHVyZSogZ2V0T2Zmc2NyZWVuTGF5ZXJUZXh0dXJlKCkgeyBy
ZXR1cm4gbV9jb21wb3NpdGVPZmZzY3JlZW4gPyBtX3Jvb3RMYXllci0+bV9yZW5kZXJTdXJmYWNl
LT5tX2NvbnRlbnRzVGV4dHVyZS5nZXQoKSA6IDA7IH0KKyAgICB2b2lkIGNvcHlPZmZzY3JlZW5U
ZXh0dXJlVG9EaXNwbGF5KCk7CisgICAgdm9pZCBjbGVhckZyYW1lYnVmZmVyKHVuc2lnbmVkKTsK
IAogICAgIHZvaWQgc2V0Um9vdExheWVyQ2FudmFzU2l6ZShjb25zdCBJbnRTaXplJik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNTJkNWI0NjRiYjRmNTAxYjNlNDFiYzY1YjE5NzY1
NjkzMjU0Y2VlOC4uMTA3OGIwNDFiOGZiMmIxMmI1ODkxMDE1Zjc0Mjk0ZTY2MGI5MTNiZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMS0wMS0xOCAgVy4g
SmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgY29tbWFuZC1s
aW5lIGZsYWcgdG8gZW5hYmxlIGNvbXBvc2l0ZSB0byBvZmZzY3JlZW4gdGV4dHVyZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyMzExCisKKyAgICAg
ICAgQWRkIHBsdW1iaW5nIHRvIGFsbG93IGNvbW1hbmQtbGluZSBzd2l0Y2ggdG8gZW5hYmxlIG9m
ZnNjcmVlbiBjb21wb3NpdGluZy4gRnVuY3Rpb24KKyAgICAgICAgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSB1c2VkIGZvciBub3cgdG8gbWltaWMK
KyAgICAgICAgbm9ybWFsIHJlbmRlcmVyIG9wZXJhdGlvbi4KKworICAgICAgICAqIHB1YmxpYy9X
ZWJTZXR0aW5ncy5oOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OldlYlNldHRpbmdzSW1wbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6c2V0Q29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZCk6Cisg
ICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0
aW5nc0ltcGw6OmNvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQpOgorICAgICAgICAqIHNyYy9XZWJW
aWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkb0NvbXBvc2l0ZSk6
CisKIDIwMTEtMDEtMTcgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCmluZGV4IGNjZmYyOGI4NmNiZDk4NDYxMzQzM2Nl
MGE2MjExZDBhMzQxMmQ2NDguLjg1NTdiYTIyNTczY2Q1NmY2ZTMzMGRhYTAwNTg5MDM3NDVlN2Q4
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdz
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaApAQCAt
OTMsNiArOTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3dEZWJ1Z0JvcmRl
cnMoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRFZGl0aW5nQmVoYXZpb3IoRWRpdGlu
Z0JlaGF2aW9yKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdFbmFibGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29tcG9zaXRlVG9UZXh0
dXJlRW5hYmxlZChib29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNvbXBvc2l0ZVRvVGV4dHVy
ZUVuYWJsZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdGb3IzRFRyYW5zZm9ybXNFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclZpZGVvRW5hYmxlZChib29sKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JDYW52YXNFbmFibGVk
KGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
dHRpbmdzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0lt
cGwuY3BwCmluZGV4IGM2NmE1N2I5MWIwNzg2Mjc2MDQzNjFiMWMzYWM2NDQ2ZGI2ZmVhM2YuLjk4
ZWQ1ZjE1ZDVlNmU5YWJlZGFmNWU1YmZmYzg1NmU2M2JjMzY3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcApAQCAtNDYsNiArNDYsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwoU2V0
dGluZ3MqIHNldHRpbmdzKQogICAgIDogbV9zZXR0aW5ncyhzZXR0aW5ncykKKyAgICAsIG1fY29t
cG9zaXRlVG9UZXh0dXJlRW5hYmxlZChmYWxzZSkKIHsKICAgICBBU1NFUlQoc2V0dGluZ3MpOwog
fQpAQCAtMjg0LDYgKzI4NSwxMSBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1fc2V0dGluZ3MtPnNldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGVuYWJsZWQpOwogfQogCit2b2lkIFdlYlNldHRp
bmdzSW1wbDo6c2V0Q29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZChib29sIGVuYWJsZWQpCit7Cisg
ICAgbV9jb21wb3NpdGVUb1RleHR1cmVFbmFibGVkID0gZW5hYmxlZDsKK30KKwogdm9pZCBXZWJT
ZXR0aW5nc0ltcGw6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3IzRFRyYW5zZm9ybXNFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBtX3NldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nRm9yM0RUcmFuc2Zvcm1zRW5hYmxlZChlbmFibGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKaW5kZXggZmViYzk1OThiMGU2YWI3YzY1ZDIy
NDU1Nzg0MTAxZDgxMzU3NGQ2NC4uM2RlMzBiOWM5MWJjZmQzODEyMDI3YjgxMGYyODVjMjkxNWUx
ZThjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJ
bXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgK
QEAgLTg4LDYgKzg4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RGVidWdC
b3JkZXJzKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRFZGl0aW5nQmVoYXZpb3IoRWRpdGlu
Z0JlaGF2aW9yKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Vu
YWJsZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldENvbXBvc2l0ZVRvVGV4dHVyZUVuYWJs
ZWQoYm9vbCk7CisgICAgdmlydHVhbCBib29sIGNvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX2NvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQ7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvcjNEVHJhbnNmb3Jtc0VuYWJsZWQoYm9v
bCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRlb0Vu
YWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdG
b3JQbHVnaW5zRW5hYmxlZChib29sKTsKQEAgLTEwMSw2ICsxMDMsNyBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgV2ViQ29yZTo6U2V0dGluZ3MqIG1fc2V0dGluZ3M7CisgICAgYm9vbCBtX2Nv
bXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBiY2Q5N2M0OWQ2
MzNmOGZlMjYzZGYzNTFhY2MwNzAyNzFmZmUwNzFkLi4yOThhYzA0NmI1MTIzMTA0NjM5YmQwMmM3
ODc3NjI4YTM4MGZkNDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCkBAIC0yMzg0LDcgKzIzODQsMTAgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZG9Db21wb3Np
dGUoKQogICAgIFdlYlZpZXdJbXBsVGlsZVBhaW50SW50ZXJmYWNlIHRpbGVQYWludCh0aGlzKTsK
IAogICAgIFdlYlZpZXdJbXBsU2Nyb2xsYmFyUGFpbnRJbnRlcmZhY2Ugc2Nyb2xsYmFyUGFpbnQo
dGhpcyk7CisgICAgbV9sYXllclJlbmRlcmVyLT5zZXRDb21wb3NpdGVPZmZzY3JlZW4oc2V0dGlu
Z3MoKS0+Y29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZCgpKTsKICAgICBtX2xheWVyUmVuZGVyZXIt
PmRyYXdMYXllcnModmlzaWJsZVJlY3QsIGNvbnRlbnRSZWN0LCBzY3JvbGwsIHRpbGVQYWludCwg
c2Nyb2xsYmFyUGFpbnQpOworICAgIGlmIChtX2xheWVyUmVuZGVyZXItPmlzQ29tcG9zaXRpbmdP
ZmZzY3JlZW4oKSkKKyAgICAgICAgbV9sYXllclJlbmRlcmVyLT5jb3B5T2Zmc2NyZWVuVGV4dHVy
ZVRvRGlzcGxheSgpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpyZWFsbG9jYXRlUmVuZGVyZXIo
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79426</attachid>
            <date>2011-01-19 07:48:55 -0800</date>
            <delta_ts>2011-02-01 10:30:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52311-20110119104853.patch</filename>
            <type>text/plain</type>
            <size>11629</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhZGE3MjE2NDhjYzEzNDBhNThiMGFkZmE1M2VkNDQ3NDg0NDM1YWM0Li5h
MmRiNWFmMzk3NzVhMzFjZmI1NTZhYWM2NjViOTQyYmMwODRjZDAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjUgQEAKKzIwMTEtMDEtMTkgIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtjaHJvbWl1bV0gQWRkIGNvbW1hbmQtbGluZSBmbGFnIHRvIGVuYWJsZSBjb21wb3NpdGUg
dG8gb2Zmc2NyZWVuIHRleHR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MjMxMQorCisgICAgICAgIEFkZCBwbHVtYmluZyB0byBhbGxvdyBjb21t
YW5kLWxpbmUgc3dpdGNoIHRvIGVuYWJsZSBvZmZzY3JlZW4gY29tcG9zaXRpbmcuIEZ1bmN0aW9u
CisgICAgICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weU9mZnNjcmVlblRleHR1cmVUb0Rp
c3BsYXkgdXNlZCBmb3Igbm93IHRvIG1pbWljCisgICAgICAgIG5vcm1hbCByZW5kZXJlciBvcGVy
YXRpb24uCisKKyAgICAgICAgRXhpc3RpbmcgZnVuY3Rpb25hbGl0eSBub3QgY2hhbmdlZDsgb2Zm
c2NyZWVuIGNvbXBvc2l0aW5nIHdpbGwgYmUgdGVzdGVkIHZpYSBHUFUgdGVzdCBmcmFtZXdvcmsu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRS
b290TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRD
b21wb3NpdGVPZmZzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRTY2lzc29yVG9SZWN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aXNDb21wb3NpdGluZ09mZnNjcmVl
bik6CisKIDIwMTEtMDEtMTcgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDhkNzdiZWFlOWI1MzYyMjczYjM4YTk4ZTljNmM0
MzczYjQ0NmY0YjQuLmQ1YTQ0YzFiNjM3YzUyYzk3NTA3ODVjNzhhY2U4ZjdjOGYwMmQxMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtMzQwLDYgKzM0MCw4IEBA
IHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpwcmVzZW50KCkKIHZvaWQgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpzZXRSb290TGF5ZXIoUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiBsYXllcikK
IHsKICAgICBtX3Jvb3RMYXllciA9IGxheWVyOworICAgIGlmIChtX3Jvb3RMYXllcikKKyAgICAg
ICAgbV9yb290TGF5ZXItPnNldExheWVyUmVuZGVyZXIodGhpcyk7CiAgICAgbV9yb290TGF5ZXJU
aWxlci0+aW52YWxpZGF0ZUVudGlyZUxheWVyKCk7CiAgICAgaWYgKG1faG9yaXpvbnRhbFNjcm9s
bGJhclRpbGVyKQogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXJUaWxlci0+aW52YWxpZGF0
ZUVudGlyZUxheWVyKCk7CkBAIC02MjEsMTkgKzYyMywyOSBAQCB2b2lkIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6dXBkYXRlTGF5ZXJzUmVjdXJzaXZlKExheWVyQ2hyb21pdW0qIGxheWVyLCBjb25z
dCBUcgogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0Q29tcG9zaXRlT2Zmc2NyZWVu
KGJvb2wgY29tcG9zaXRlT2Zmc2NyZWVuKQogeworICAgIGlmIChtX2NvbXBvc2l0ZU9mZnNjcmVl
biA9PSBjb21wb3NpdGVPZmZzY3JlZW4pCisgICAgICAgcmV0dXJuOworCiAgICAgbV9jb21wb3Np
dGVPZmZzY3JlZW4gPSBjb21wb3NpdGVPZmZzY3JlZW47CiAKLSAgICBpZiAoIW1fcm9vdExheWVy
KSB7Ci0gICAgICAgIG1fY29tcG9zaXRlT2Zmc2NyZWVuID0gZmFsc2U7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9CisgICAgaWYgKCFtX2NvbXBvc2l0ZU9mZnNjcmVlbiAmJiBtX3Jvb3RMYXllcikK
KyAgICAgICAgbV9yb290TGF5ZXItPm1fcmVuZGVyU3VyZmFjZS5jbGVhcigpOworfQogCit2b2lk
IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weU9mZnNjcmVlblRleHR1cmVUb0Rpc3BsYXkoKQor
ewogICAgIGlmIChtX2NvbXBvc2l0ZU9mZnNjcmVlbikgewotICAgICAgICAvLyBOZWVkIHRvIGV4
cGxpY2l0bHkgc2V0IGEgTGF5ZXJSZW5kZXJlckNocm9taXVtIGZvciB0aGUgbGF5ZXIgd2l0aCB0
aGUgb2Zmc2NyZWVuIHRleHR1cmUsCi0gICAgICAgIC8vIG9yIGVsc2UgdGhlIGNhbGwgdG8gcHJl
cGFyZUNvbnRlbnRzVGV4dHVyZSgpIGluIHVzZVJlbmRlclN1cmZhY2UoKSB3aWxsIGZhaWwuCi0g
ICAgICAgIG1fcm9vdExheWVyLT5zZXRMYXllclJlbmRlcmVyKHRoaXMpOwotICAgIH0gZWxzZQot
ICAgICAgICBtX3Jvb3RMYXllci0+bV9yZW5kZXJTdXJmYWNlLmNsZWFyKCk7CisgICAgICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOworCisgICAgICAgIHVzZVJlbmRlclN1cmZhY2UoMCk7CisgICAg
ICAgIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UtPm1fZHJhd1RyYW5zZm9ybS5tYWtlSWRlbnRpdHko
KTsKKyAgICAgICAgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+bV9kcmF3VHJhbnNmb3JtLnRyYW5z
bGF0ZTNkKDAuNSAqIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UtPm1fY29udGVudFJlY3Qud2lkdGgo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuNSAqIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UtPm1fY29udGVudFJlY3QuaGVpZ2h0
KCksIDApOworICAgICAgICBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5tX2RyYXdPcGFjaXR5ID0g
MTsKKyAgICAgICAgbV9jb250ZXh0LT5jb2xvck1hc2sodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7
CisgICAgICAgIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UtPmRyYXcoKTsKKyAgICAgICAgbV9jb250
ZXh0LT5jb2xvck1hc2sodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpOworICAgIH0KIH0KIAogYm9v
bCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UoUmVuZGVyU3VyZmFjZUNo
cm9taXVtKiByZW5kZXJTdXJmYWNlKQpAQCAtNjQzLDkgKzY1NSwxMiBAQCBib29sIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyU3VyZmFjZShSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJl
bmRlclN1cmZhYwogCiAgICAgbV9jdXJyZW50UmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2U7
CiAKLSAgICBpZiAocmVuZGVyU3VyZmFjZSA9PSBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlICYmICFt
X2NvbXBvc2l0ZU9mZnNjcmVlbikgeworICAgIGlmICgocmVuZGVyU3VyZmFjZSA9PSBtX2RlZmF1
bHRSZW5kZXJTdXJmYWNlICYmICFtX2NvbXBvc2l0ZU9mZnNjcmVlbikgfHwgKCFyZW5kZXJTdXJm
YWNlICYmIG1fY29tcG9zaXRlT2Zmc2NyZWVuKSkgewogICAgICAgICBHTEMobV9jb250ZXh0Lmdl
dCgpLCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVIsIDApKTsKLSAgICAgICAgc2V0RHJhd1ZpZXdwb3J0UmVjdChyZW5kZXJTdXJmYWNlLT5t
X2NvbnRlbnRSZWN0LCB0cnVlKTsKKyAgICAgICAgaWYgKHJlbmRlclN1cmZhY2UpCisgICAgICAg
ICAgICBzZXREcmF3Vmlld3BvcnRSZWN0KHJlbmRlclN1cmZhY2UtPm1fY29udGVudFJlY3QsIHRy
dWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXREcmF3Vmlld3BvcnRSZWN0KG1fZGVm
YXVsdFJlbmRlclN1cmZhY2UtPm1fY29udGVudFJlY3QsIHRydWUpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKQEAgLTcwNiwxNyArNzIxLDE5IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpkcmF3TGF5ZXIoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIFJlbmRlclN1cmZhY2VDaHJv
bWl1CiAvLyBzY2lzc29yUmVjdCBoYXMgaXRzIG9yaWdpbiBhdCB0aGUgdG9wIGxlZnQgY29ybmVy
IG9mIHRoZSBjdXJyZW50IHZpc2libGUgcmVjdC4KIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
OjpzZXRTY2lzc29yVG9SZWN0KGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0KQogeworICAgIElu
dFJlY3QgY29udGVudFJlY3QgPSAobV9jdXJyZW50UmVuZGVyU3VyZmFjZSA/IG1fY3VycmVudFJl
bmRlclN1cmZhY2UtPm1fY29udGVudFJlY3QgOiBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5tX2Nv
bnRlbnRSZWN0KTsKKwogICAgIC8vIFRoZSBzY2lzc29yIGNvb3JkaW5hdGVzIG11c3QgYmUgc3Vw
cGxpZWQgaW4gdmlld3BvcnQgc3BhY2Ugc28gd2UgbmVlZCB0byBvZmZzZXQKICAgICAvLyBieSB0
aGUgcmVsYXRpdmUgcG9zaXRpb24gb2YgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgY3VycmVu
dCByZW5kZXIgc3VyZmFjZS4KLSAgICBpbnQgc2Npc3NvclggPSBzY2lzc29yUmVjdC54KCkgLSBt
X2N1cnJlbnRSZW5kZXJTdXJmYWNlLT5tX2NvbnRlbnRSZWN0LngoKTsKKyAgICBpbnQgc2Npc3Nv
clggPSBzY2lzc29yUmVjdC54KCkgLSBjb250ZW50UmVjdC54KCk7CiAgICAgLy8gV2hlbiByZW5k
ZXJpbmcgdG8gdGhlIGRlZmF1bHQgcmVuZGVyIHN1cmZhY2Ugd2UncmUgcmVuZGVyaW5nIHVwc2lk
ZSBkb3duIHNvIHRoZSB0b3AKICAgICAvLyBvZiB0aGUgR0wgc2Npc3NvciBpcyB0aGUgYm90dG9t
IG9mIG91ciBsYXllci4KICAgICAvLyBCdXQsIGlmIHJlbmRlcmluZyB0byBvZmZzY3JlZW4gdGV4
dHVyZSwgd2UgcmV2ZXJzZSBvdXIgc2Vuc2Ugb2YgJ3Vwc2lkZSBkb3duJy4KICAgICBpbnQgc2Np
c3Nvclk7CiAgICAgaWYgKG1fY3VycmVudFJlbmRlclN1cmZhY2UgPT0gbV9kZWZhdWx0UmVuZGVy
U3VyZmFjZSAmJiAhbV9jb21wb3NpdGVPZmZzY3JlZW4pCi0gICAgICAgIHNjaXNzb3JZID0gbV9j
dXJyZW50UmVuZGVyU3VyZmFjZS0+bV9jb250ZW50UmVjdC5oZWlnaHQoKSAtIChzY2lzc29yUmVj
dC5ib3R0b20oKSAtIG1fY3VycmVudFJlbmRlclN1cmZhY2UtPm1fY29udGVudFJlY3QueSgpKTsK
KyAgICAgICAgc2Npc3NvclkgPSBjb250ZW50UmVjdC5oZWlnaHQoKSAtIChzY2lzc29yUmVjdC5i
b3R0b20oKSAtIGNvbnRlbnRSZWN0LnkoKSk7CiAgICAgZWxzZQotICAgICAgICBzY2lzc29yWSA9
IHNjaXNzb3JSZWN0LnkoKSAtIG1fY3VycmVudFJlbmRlclN1cmZhY2UtPm1fY29udGVudFJlY3Qu
eSgpOworICAgICAgICBzY2lzc29yWSA9IHNjaXNzb3JSZWN0LnkoKSAtIGNvbnRlbnRSZWN0Lnko
KTsKICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPnNjaXNzb3Ioc2Npc3Nvclgs
IHNjaXNzb3JZLCBzY2lzc29yUmVjdC53aWR0aCgpLCBzY2lzc29yUmVjdC5oZWlnaHQoKSkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDNkM2U3ODRjNGNhMTg1
ZDkzY2YzYThlMTg2ZTFhMDQzZTc4NmY2M2YuLjFhZGI5NDA0MzFiYjZlZjE5ZmExNWVlYTNiYmVm
MGVhNmM4OGI4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC04OCw4
ICs4OCw5IEBAIHB1YmxpYzoKICAgICBib29sIGhhcmR3YXJlQ29tcG9zaXRpbmcoKSBjb25zdCB7
IHJldHVybiBtX2hhcmR3YXJlQ29tcG9zaXRpbmc7IH0KIAogICAgIHZvaWQgc2V0Q29tcG9zaXRl
T2Zmc2NyZWVuKGJvb2wpOwotICAgIGJvb2wgaXNDb21wb3NpdGluZ09mZnNjcmVlbigpIHsgcmV0
dXJuIG1fY29tcG9zaXRlT2Zmc2NyZWVuOyB9CisgICAgYm9vbCBpc0NvbXBvc2l0aW5nT2Zmc2Ny
ZWVuKCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3NpdGVPZmZzY3JlZW47IH0KICAgICBMYXllclRl
eHR1cmUqIGdldE9mZnNjcmVlbkxheWVyVGV4dHVyZSgpIHsgcmV0dXJuIG1fY29tcG9zaXRlT2Zm
c2NyZWVuID8gbV9yb290TGF5ZXItPm1fcmVuZGVyU3VyZmFjZS0+bV9jb250ZW50c1RleHR1cmUu
Z2V0KCkgOiAwOyB9CisgICAgdm9pZCBjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSgpOwog
CiAgICAgdm9pZCBzZXRSb290TGF5ZXJDYW52YXNTaXplKGNvbnN0IEludFNpemUmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA1MmQ1YjQ2NGJiNGY1MDFiM2U0MWJjNjViMTk3NjU2
OTMyNTRjZWU4Li44ZGY3ZDRkNDJiNzZmYjlhNTZiZjI1M2JlYTk2ZTVlMTNjYjNlZGFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDExLTAxLTE5ICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBjb21tYW5kLWxp
bmUgZmxhZyB0byBlbmFibGUgY29tcG9zaXRlIHRvIG9mZnNjcmVlbiB0ZXh0dXJlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIzMTEKKworICAgICAg
ICBBZGQgcGx1bWJpbmcgdG8gYWxsb3cgY29tbWFuZC1saW5lIHN3aXRjaCB0byBlbmFibGUgb2Zm
c2NyZWVuIGNvbXBvc2l0aW5nLiBGdW5jdGlvbgorICAgICAgICBMYXllclJlbmRlcmVyQ2hyb21p
dW06OmNvcHlPZmZzY3JlZW5UZXh0dXJlVG9EaXNwbGF5IHVzZWQgZm9yIG5vdyB0byBtaW1pYwor
ICAgICAgICBub3JtYWwgcmVuZGVyZXIgb3BlcmF0aW9uLgorCisgICAgICAgICogcHVibGljL1dl
YlNldHRpbmdzLmg6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU2V0dGluZ3NJbXBsOjpzZXRDb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKToKKyAg
ICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRp
bmdzSW1wbDo6Y29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZCk6CisgICAgICAgICogc3JjL1dlYlZp
ZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRvQ29tcG9zaXRlKToK
KwogMjAxMS0wMS0xNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKaW5kZXggY2NmZjI4Yjg2Y2JkOTg0NjEzNDMzY2Uw
YTYyMTFkMGEzNDEyZDY0OC4uODU1N2JhMjI1NzNjZDU2ZjZlMzMwZGFhMDA1ODkwMzc0NWU3ZDg1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCkBAIC05
Myw2ICs5Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVy
cyhib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEVkaXRpbmdCZWhhdmlvcihFZGl0aW5n
QmVoYXZpb3IpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb21wb3NpdGVUb1RleHR1
cmVFbmFibGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRlVG9UZXh0dXJl
RW5hYmxlZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0ZvcjNEVHJhbnNmb3Jtc0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yVmlkZW9FbmFibGVkKGJvb2wpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckNhbnZhc0VuYWJsZWQo
Ym9vbCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0
dGluZ3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1w
bC5jcHAKaW5kZXggYzY2YTU3YjkxYjA3ODYyNzYwNDM2MWIxYzNhYzY0NDZkYjZmZWEzZi4uOThl
ZDVmMTVkNWU2ZTlhYmVkYWY1ZTViZmZjODU2ZTYzYmMzNjc1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC00Niw2ICs0Niw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBXZWJTZXR0aW5nc0ltcGw6OldlYlNldHRpbmdzSW1wbChTZXR0
aW5ncyogc2V0dGluZ3MpCiAgICAgOiBtX3NldHRpbmdzKHNldHRpbmdzKQorICAgICwgbV9jb21w
b3NpdGVUb1RleHR1cmVFbmFibGVkKGZhbHNlKQogewogICAgIEFTU0VSVChzZXR0aW5ncyk7CiB9
CkBAIC0yODQsNiArMjg1LDExIEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgbV9zZXR0aW5ncy0+c2V0QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKK3ZvaWQgV2ViU2V0dGlu
Z3NJbXBsOjpzZXRDb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAg
ICBtX2NvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQgPSBlbmFibGVkOworfQorCiB2b2lkIFdlYlNl
dHRpbmdzSW1wbDo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvcjNEVHJhbnNmb3Jtc0VuYWJs
ZWQoYm9vbCBlbmFibGVkKQogewogICAgIG1fc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdGb3IzRFRyYW5zZm9ybXNFbmFibGVkKGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCBmZWJjOTU5OGIwZTZhYjdjNjVkMjI0
NTU3ODQxMDFkODEzNTc0ZDY0Li4zZGUzMGI5YzkxYmNmZDM4MTIwMjdiODEwZjI4NWMyOTE1ZTFl
OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0lt
cGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaApA
QCAtODgsNiArODgsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3dEZWJ1Z0Jv
cmRlcnMoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEVkaXRpbmdCZWhhdmlvcihFZGl0aW5n
QmVoYXZpb3IpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5h
YmxlZChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29tcG9zaXRlVG9UZXh0dXJlRW5hYmxl
ZChib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZDsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RUcmFuc2Zvcm1zRW5hYmxlZChib29s
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclZpZGVvRW5h
YmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zv
clBsdWdpbnNFbmFibGVkKGJvb2wpOwpAQCAtMTAxLDYgKzEwMyw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBXZWJDb3JlOjpTZXR0aW5ncyogbV9zZXR0aW5nczsKKyAgICBib29sIG1fY29t
cG9zaXRlVG9UZXh0dXJlRW5hYmxlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGJjZDk3YzQ5ZDYz
M2Y4ZmUyNjNkZjM1MWFjYzA3MDI3MWZmZTA3MWQuLjI5OGFjMDQ2YjUxMjMxMDQ2MzliZDAyYzc4
Nzc2MjhhMzgwZmQ0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAKQEAgLTIzODQsNyArMjM4NCwxMCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkb0NvbXBvc2l0
ZSgpCiAgICAgV2ViVmlld0ltcGxUaWxlUGFpbnRJbnRlcmZhY2UgdGlsZVBhaW50KHRoaXMpOwog
CiAgICAgV2ViVmlld0ltcGxTY3JvbGxiYXJQYWludEludGVyZmFjZSBzY3JvbGxiYXJQYWludCh0
aGlzKTsKKyAgICBtX2xheWVyUmVuZGVyZXItPnNldENvbXBvc2l0ZU9mZnNjcmVlbihzZXR0aW5n
cygpLT5jb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKCkpOwogICAgIG1fbGF5ZXJSZW5kZXJlci0+
ZHJhd0xheWVycyh2aXNpYmxlUmVjdCwgY29udGVudFJlY3QsIHNjcm9sbCwgdGlsZVBhaW50LCBz
Y3JvbGxiYXJQYWludCk7CisgICAgaWYgKG1fbGF5ZXJSZW5kZXJlci0+aXNDb21wb3NpdGluZ09m
ZnNjcmVlbigpKQorICAgICAgICBtX2xheWVyUmVuZGVyZXItPmNvcHlPZmZzY3JlZW5UZXh0dXJl
VG9EaXNwbGF5KCk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnJlYWxsb2NhdGVSZW5kZXJlcigp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>79479</attachid>
            <date>2011-01-19 14:10:14 -0800</date>
            <delta_ts>2011-01-19 14:10:14 -0800</delta_ts>
            <desc>Example of image-mistach diff image for fast/canvas/canvas-text-alignment-diff.png</desc>
            <filename>canvas-text-alignment-diff.png</filename>
            <type>image/png</type>
            <size>63160</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">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
f/55AMCSJUv8nvIHExUVhV3YC71JAAAgAElEQVS7dnnV0PC1aNEiLF26FDqdDm+99RYefvhhnDp1
Ck6nE6dOncL06dNx9OhR/O1vf/PqSFZXV+OVV17xOta///3vgE/kbTYbVq5c6fXa//7v/2oFA+vq
6vyqm69evVorGlhbW4vXXnvN6/3ly5drQclTTz2lvb5371706tULSUlJ+Oijj/Cvf/3LK8XwsGHD
cMstt2jtWr16tddxV61a1ah6IVeuXMFvfvMbr9cWLlyI/Pz8Ro2m2O12/Ob557XISACyfNtis9nw
/HPPNWqbppxTIJ7fQVW438U333zTa7qfr5tuugmnT53KUkfjzp49i3vuuQcHDx5EbW2tXwG12tpa
WCwW7fddu3bhySef9GrLlClTtJ8XLlyImJgY/OrXv848ferU9y4RAFFDWAmdiIi8hEpfG+7f/998
8w3uuusuv+rhng4fPow1a9Zg3759KCoqgtFoxMCBA3H//ffj6aef9qsT0ph2NbRtc9+XZRnLly/H
H//4R1y+fBkDBgzA008/jV/84hcQBAF//vOf8eyzz6Jfv35YsWKFtpA52HHDrXjdUGrhxlTODqct
zdkGaL0q7+GcpyRJeOutt7Bu3TocOXIENpsNKSkpmDp1Kp599ll07tw56Od5HT9AhfJA21VXV2Px
4sV499134XQ6ce+99+K1115Dv379wjllVkKnjqcZldAZgBARUas4evQo0tLS2roZRB0DAxDqaJoR
gHAKFhERtQoGH0REFAgDECIiIiIiihgGIEREREREFDEMQIiIiIiIKGIYgBARERERUcQwACEiIiIi
oohhAEJERERERBHDAISIiIiIiCKGAQgREREREUUMAxAiIiIiIooYBiBERERERBQxDECIiIiIiChi
GIAQEREREVHEMAAhIiIiIqKIYQBCREREREQRwwCEiIiIiIgihgEIERFdl/bv34+MjAwIggBBENq6
Oe0GrwsRtTUGIEREEbJv3z6t0+f73+bNm8M6hsViCXoMdigVW7ZswciRI5Geno69e/c2+3iFhYVY
vHgxxo8fj6SkJAiCgL59+2LatGlYs2YNCgsLMXDgwHZ//Vv6urSUcL7T4fwHQchs63MhovAY2roB
REQEzJw5E71798a4cePauikd2qBBg3D27FkAQEJCAp555hm88sorcDqdTTres88+i5UrV0KSJK/X
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
EREREXUZBiBERERERNRlGIAQEREREVGXYQBCRERERERdhgEIERERERF1GQYgRERERETUZRiAEBER
ERFRl2EAQkREREREXYYBCBERERERdRkGIERERERE1GUYgBARERERUZdhAEJERERERF2GAQgRERER
EXUZBiBE1GN99dVXmDVrFkwmU3c3BT/5yU+QmJiIn/zkJxG3iaW9PemciIiIugMDEKJWOnLkCARB
CPiTlZWFqqqqmI8RvL//HwL27t2LadOmYezYsVi/fj08Hk+r9o92fWP5E85vfvMbNDQ04Le//W2b
2tvec+qI8+Lni4iIegIGIEStdMMNN6CpqQmfffYZCgsLAQAlJSUoLCyMuVMpyzLKysrw/e9/HwDw
8MMPo6ysDLIsd1q7ryQLFy5EcXFxm6+HJEkoKSnBww8/HPC8LMshf1wuF0pLS7FixQpYLJaIx3zq
qacQHx+PJ598sk3tbe85qXQ6HZYvX47KykpIkqSdhz/1Oa/Xi/Pnz+O5555j8EFERD2GIMvykqgb
hPlPi50komZLly7F4sWLAQBz587F66+/HvO+Z8+eRWZmJs6dO4fBgwd3VhOvSKdOncKIESO0n9vy
7055eTn69+8f8zGee+45vPzyy216r1ja295zEgQBzzzzDF599dWwr0U77hNPPIHf/e53PeLf7+Li
YuTk5PSIthD1FLIsQ6cL/F5YBhZDll/opiYRRScIi2vt9oifz8bGxpDnBgwcuPiNjRtf4AgIUTs9
//zz2uPVq1dj2bJlMe87cOBAAMCAAQM6vF1XuiFDhrT7GH369GnV9nfffXeb3yuW9nbEOc2ePbtN
+82dO7fd791R/vznP3d3E4iIqBsxACHqIHfddRcA4Ec/+hE+/PDDmPYxGAwAAL1e32ntulIZjcZ2
H6O11/X6669v83vF0t72ntP3vvc9jBo1qk37jhkzBt/73vfa9f4d4dy5c1i3bl13N4OIiLoRAxCi
DvLOO+/g+uuvhyRJ+O53v4uvvvqqu5t0ReuONQspKSltnhYUS3vbe05vvPFGm4MYs9mMN954o13v
315erxdz5sxBU1NTt7aDiIi6FwMQog6SlJSEDz74AOnp6airq8N9993XqsxYRFczr9eL//iP/8D2
7du7uylERNTNGIAQdaDMzExs3boVFoul1ZmxIrlw4QJ+/OMfY+zYsYiLi4PZbMaIESPwwx/+EEeO
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
72OXxTkAABYrSURBVH6/a1Su1bf0Tc6RHOcaKe+o425X6wktAIDsEUBw1Ziq1hcp/+M5L/716tNO
GrfbXU9BtbtG8rpvk6vfzPhpT9FIem22ptfiEYuxotFLl+yvHxjL67mLvoJI+nfXduvYYqAnJj1V
g0gPjxf1/dMVnV0OJNkAcrwctIWPL47mdWDIVakW6Z/OVzVV7bx9bLVhbtYdQ67uHnHTNjV6ZspL
w8dowehzo3lt63JUqkV6daamw4uBtnc7qgaRpr2oabH2bYOuPjNsp1G19iWPLAbqzxvdOZzXk5Oe
jpQC/Vlc6+NvT1TagtCfbaAOyL6+nAqO0a+mPU1WI/14wtP+gZy+PJbXm3M1zXqRnrjgaUuXHWlo
nJb1J3Eg+cHpaltbHtllf/Z/Gn62f8DVLYM5vRcHkKTjergU6HDJfkYjeaP3FoKm8FEwdivk0aLR
xWqkN+Z8zfmRdnQ7KtcizfqRXpnxdd8a05zm/Ujzfv28eWPbtK07p56G9/X6bC0NH4N5o9uGXG0u
GC0F0qFSTaeXQo0WjfzQnvPMUqC9vZc3MthoIwHynflaGhz6XaObBlyNFIwqoXR00U4VHCkYBaHR
Qi3Sjf05bet29OpMLS3WmDhcCvSZYVcXq5Hejs8bBHba3c6enEbjdStPT/lt7fwydUAA4BOBRei4
alRDe3d4jaUEHa0ZPuLfvDbbXCl9vGj0p7u7dEu8lmO0aPS1LUVNxz3CO4ZsxjfGjp7sH8gpZ6Sz
y7ZTmDO2FknS/qfixdrJupWbB3M6EJ+j3zX6wuZChxEF+8imgqNC/N4PlToXPzhRDtPXM0pGQzz9
92MVHTxVTSvGX6yGum+z7azlpPS8b883B5pNBaNv7yrq97fZtQinyoF29zhypLbpWlfqxvPOHkcP
jhfTcPn+QqDnp31d25fTPSOu8o6tGfKTiaqOl9fehrWxXWNdjnpz9ooeKtXfqzG2g/v1LYW08z6c
N7p9OK9342synLfH3Trkpp3g0aLR5zbnVXDsZ373SF5Fx66DaJom19KmU0uhnr3opcFiKG/0lfGi
ru1rDh/nK2E66iXZEYTnp33944SnJyc9nV6y61fmvUi3DrrpMVfSWiMKk9WwadvoUi3SyzO+npj0
9Gxcr0aSSr50Q/znaKpqd6+6fchNd7EaKxq5xrb/9bma3kqCoWwhxzuH69d9I+0EAGSHAIKrRuPU
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
YjnUVDXUbNzGPtdopGC0uzeX1gDZ6Os1/rbPNTow5OpUOUivx+aC0Y6e9s8BAJAtE0XRX676hA7/
okStE+QBAACwYVEUyXGa75pE0qOKosc+piYBqzPm0fm5uRW/n+Vyue2xbdu3P3rw8ccfYwwaAAAA
QGYIIAAAAAAyQwABAAAAkBkCCAAAAIDMEEAAAAAAZIYAAgAAACAzBBAAAAAAmSGAAAAAAMgMAQQA
AABAZgggAAAAADJDAAEAAACQGQIIAAAAgMwQQAAAAABkhgACAAAAIDMEEAAAAACZIYAAAAAAyAwB
BAAAAEBmCCAAAAAAMkMAAQAAAJAZAggAAACAzBBAAAAAAGSGAAIAAAAgMwQQAAAAAJkhgAAAAADI
DAEEAAAAQGYIIAAAAAAyQwABAAAAkBkCCAAAAIDMEEAAAAAAZIYAAgAAACAzBBAAAAAAmSGAAAAA
AMgMAQQAAABAZgggAAAAADJDAAEAAACQGQIIAAAAgMwQQAAAAABkhgACAAAAIDMEEAAAAACZIYAA
AAAAyAwBBAAAAEBmCCAAAAAAMkMAAQAAAJAZAggAAACAzBBAAAAAAGSGAAIAAAAgMwQQAAAAAJkh
gAAAAADIDAEEAAAAQGYIIAAAAAAyQwABAAAAkBkCCAAAAIDMEEAAAAAAZIYAAgAAACAzBBAAAAAA
mSGAAAAAAMgMAQQAAABAZgggAAAAADJDAAEAAACQGQIIAAAAgMwQQAAAAABkhgACAAAAIDMEEAAA
AACZIYAAAAAAyAwBBAAAAEBmCCAAAAAAMkMAAQAAAJAZAggAAACAzBBAAAAAAGSGAAIAAAAgMwQQ
AAAAAJkhgAAAAADIDAEEAAAAQGYIIAAAAAAyQwABAAAAkBkCCAAAAIDMmCiK/nLVJxjT9lgURR9V
ewAAAD51oiiS4zTfF46kRxVFj31MTQJWdfDgwQ0f617BdgAAAAD4lDhw4MBlH/Pmm28yBQsAAABA
dgggAAAAADJDAAEAAACQGQIIAAAAgMwQQAAAAABkhgACAAAAIDMEEAAAAACZIYAAAAAAyAwBBAAA
AEBmCCAAAAAAMkMAAQAAAJAZAggAAACAzBBAAAAAAGSGAAIAAAAgMwQQAAAAAJkhgAAAAADIDAEE
AAAAQGYIIAAAAAAyQwABAAAAkBkCCAAAAIDMEEAAAAAAZIYAAgAAACAz7sfdAAAAAAC/e958880N
HUcAAQAAAHBZHvnOdx5VFD12uccdPHiQKVgAAAAAskMAAQAAAJAZAggAAACAzBBAAAAAAGSGAAIA
AABg44x51BijTv/JmEdbn04AAQAAALBxUfRYJLUFjUjquFMWAQQAAADAh9MSQlYKHxJ1QAAAAABc
CVH0WJRMuVqlRsjGRkA6zOUCAAAA8CkXRY+tVaCQKVgAAAAAMkMAAQAAAJCJsbExAggAAACAyxRF
j132sgxjHn3ooYdYhA4AAABgA6LosSeffFJTU1NrPvWR73wn3RXr/wPjevECEUA/MQAAAABJRU5E
rkJggg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80782</attachid>
            <date>2011-02-01 10:30:22 -0800</date>
            <delta_ts>2011-02-08 07:22:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52311-20110201132950.patch</filename>
            <type>text/plain</type>
            <size>12597</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwMDNmMzk3ZGZmODYxOWMwNDI2MTM1MDA2NjMxNzQ4MTI3Y2Q5YTU0Li5h
NTczMTg2Yjc1NGU0NjA4YTYwYTMzM2E2ZjgxODBkNTA4M2FjNDRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjcgQEAKKzIwMTEtMDItMDEgIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtjaHJvbWl1bV0gQWRkIGNvbW1hbmQtbGluZSBmbGFnIHRvIGVuYWJsZSBjb21wb3NpdGUg
dG8gb2Zmc2NyZWVuIHRleHR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MjMxMQorCisgICAgICAgIEFkZCBwbHVtYmluZyB0byBhbGxvdyBjb21t
YW5kLWxpbmUgc3dpdGNoIHRvIGVuYWJsZSBvZmZzY3JlZW4gY29tcG9zaXRpbmcuIEZ1bmN0aW9u
CisgICAgICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weU9mZnNjcmVlblRleHR1cmVUb0Rp
c3BsYXkgdXNlZCBmb3Igbm93IHRvIG1pbWljCisgICAgICAgIG5vcm1hbCByZW5kZXJlciBvcGVy
YXRpb24uCisKKyAgICAgICAgRXhpc3RpbmcgZnVuY3Rpb25hbGl0eSBub3QgY2hhbmdlZDsgb2Zm
c2NyZWVuIGNvbXBvc2l0aW5nIHdpbGwgYmUgdGVzdGVkIHZpYSBHUFUgdGVzdCBmcmFtZXdvcmsu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRS
b290TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRD
b21wb3NpdGVPZmZzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRTY2lzc29yVG9SZWN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aXNDb21wb3NpdGluZ09mZnNjcmVl
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN1cmZhY2VDaHJvbWl1bTo6cHJl
cGFyZUNvbnRlbnRzVGV4dHVyZSk6CisKIDIwMTEtMDItMDEgIEFsZXhhbmRlciBQYXZsb3YgIDxh
cGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0
c2t5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggYzJhY2NmZDFj
MTVjZDRjOWUwYjA3MTE3MzlmOWUxMjNjZDBiMjRjMy4uOGExZDc3NDFiZTRmMzNhYzgzMGFhNzAw
YTI5YzZlMTgxNTE5Nzk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3Bw
CkBAIC0zNDEsNiArMzQxLDggQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnByZXNlbnQo
KQogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFJvb3RMYXllcihQYXNzUmVmUHRyPExh
eWVyQ2hyb21pdW0+IGxheWVyKQogewogICAgIG1fcm9vdExheWVyID0gbGF5ZXI7CisgICAgaWYg
KG1fcm9vdExheWVyKQorICAgICAgICBtX3Jvb3RMYXllci0+c2V0TGF5ZXJSZW5kZXJlcih0aGlz
KTsKICAgICBtX3Jvb3RMYXllclRpbGVyLT5pbnZhbGlkYXRlRW50aXJlTGF5ZXIoKTsKICAgICBp
ZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyVGlsZXIpCiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9s
bGJhclRpbGVyLT5pbnZhbGlkYXRlRW50aXJlTGF5ZXIoKTsKQEAgLTYzMSwxOSArNjMzLDI3IEBA
IHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVMYXllcnNSZWN1cnNpdmUoTGF5ZXJD
aHJvbWl1bSogbGF5ZXIsIGNvbnN0IFRyCiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpz
ZXRDb21wb3NpdGVPZmZzY3JlZW4oYm9vbCBjb21wb3NpdGVPZmZzY3JlZW4pCiB7CisgICAgaWYg
KG1fY29tcG9zaXRlT2Zmc2NyZWVuID09IGNvbXBvc2l0ZU9mZnNjcmVlbikKKyAgICAgICByZXR1
cm47CisKICAgICBtX2NvbXBvc2l0ZU9mZnNjcmVlbiA9IGNvbXBvc2l0ZU9mZnNjcmVlbjsKIAot
ICAgIGlmICghbV9yb290TGF5ZXIpIHsKLSAgICAgICAgbV9jb21wb3NpdGVPZmZzY3JlZW4gPSBm
YWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIW1fY29tcG9zaXRlT2Zmc2Ny
ZWVuICYmIG1fcm9vdExheWVyKQorICAgICAgICBtX3Jvb3RMYXllci0+bV9yZW5kZXJTdXJmYWNl
LmNsZWFyKCk7Cit9CiAKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5T2Zmc2NyZWVu
VGV4dHVyZVRvRGlzcGxheSgpCit7CiAgICAgaWYgKG1fY29tcG9zaXRlT2Zmc2NyZWVuKSB7Ci0g
ICAgICAgIC8vIE5lZWQgdG8gZXhwbGljaXRseSBzZXQgYSBMYXllclJlbmRlcmVyQ2hyb21pdW0g
Zm9yIHRoZSBsYXllciB3aXRoIHRoZSBvZmZzY3JlZW4gdGV4dHVyZSwKLSAgICAgICAgLy8gb3Ig
ZWxzZSB0aGUgY2FsbCB0byBwcmVwYXJlQ29udGVudHNUZXh0dXJlKCkgaW4gdXNlUmVuZGVyU3Vy
ZmFjZSgpIHdpbGwgZmFpbC4KLSAgICAgICAgbV9yb290TGF5ZXItPnNldExheWVyUmVuZGVyZXIo
dGhpcyk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fcm9vdExheWVyLT5tX3JlbmRlclN1cmZhY2Uu
Y2xlYXIoKTsKKyAgICAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICAgICAgdXNlUmVu
ZGVyU3VyZmFjZSgwKTsKKyAgICAgICAgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+bV9kcmF3VHJh
bnNmb3JtLm1ha2VJZGVudGl0eSgpOworICAgICAgICBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5t
X2RyYXdUcmFuc2Zvcm0udHJhbnNsYXRlM2QoMC41ICogbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+
bV9jb250ZW50UmVjdC53aWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMC41ICogbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+
bV9jb250ZW50UmVjdC5oZWlnaHQoKSwgMCk7CisgICAgICAgIG1fZGVmYXVsdFJlbmRlclN1cmZh
Y2UtPm1fZHJhd09wYWNpdHkgPSAxOworICAgICAgICBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5k
cmF3KCk7CisgICAgfQogfQogCiBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVy
U3VyZmFjZShSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhY2UpCkBAIC02NTMsOSAr
NjYzLDEyIEBAIGJvb2wgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1c2VSZW5kZXJTdXJmYWNlKFJl
bmRlclN1cmZhY2VDaHJvbWl1bSogcmVuZGVyU3VyZmFjCiAKICAgICBtX2N1cnJlbnRSZW5kZXJT
dXJmYWNlID0gcmVuZGVyU3VyZmFjZTsKIAotICAgIGlmIChyZW5kZXJTdXJmYWNlID09IG1fZGVm
YXVsdFJlbmRlclN1cmZhY2UgJiYgIW1fY29tcG9zaXRlT2Zmc2NyZWVuKSB7CisgICAgaWYgKChy
ZW5kZXJTdXJmYWNlID09IG1fZGVmYXVsdFJlbmRlclN1cmZhY2UgJiYgIW1fY29tcG9zaXRlT2Zm
c2NyZWVuKSB8fCAoIXJlbmRlclN1cmZhY2UgJiYgbV9jb21wb3NpdGVPZmZzY3JlZW4pKSB7CiAg
ICAgICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgMCkpOwotICAgICAgICBzZXREcmF3Vmlld3Bv
cnRSZWN0KHJlbmRlclN1cmZhY2UtPm1fY29udGVudFJlY3QsIHRydWUpOworICAgICAgICBpZiAo
cmVuZGVyU3VyZmFjZSkKKyAgICAgICAgICAgIHNldERyYXdWaWV3cG9ydFJlY3QocmVuZGVyU3Vy
ZmFjZS0+bV9jb250ZW50UmVjdCwgdHJ1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNl
dERyYXdWaWV3cG9ydFJlY3QobV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+bV9jb250ZW50UmVjdCwg
dHJ1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtNzE2LDE3ICs3MjksMTkg
QEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdMYXllcihMYXllckNocm9taXVtKiBs
YXllciwgUmVuZGVyU3VyZmFjZUNocm9taXUKIC8vIHNjaXNzb3JSZWN0IGhhcyBpdHMgb3JpZ2lu
IGF0IHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIGN1cnJlbnQgdmlzaWJsZSByZWN0Lgogdm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFNjaXNzb3JUb1JlY3QoY29uc3QgSW50UmVjdCYg
c2Npc3NvclJlY3QpCiB7CisgICAgSW50UmVjdCBjb250ZW50UmVjdCA9IChtX2N1cnJlbnRSZW5k
ZXJTdXJmYWNlID8gbV9jdXJyZW50UmVuZGVyU3VyZmFjZS0+bV9jb250ZW50UmVjdCA6IG1fZGVm
YXVsdFJlbmRlclN1cmZhY2UtPm1fY29udGVudFJlY3QpOworCiAgICAgLy8gVGhlIHNjaXNzb3Ig
Y29vcmRpbmF0ZXMgbXVzdCBiZSBzdXBwbGllZCBpbiB2aWV3cG9ydCBzcGFjZSBzbyB3ZSBuZWVk
IHRvIG9mZnNldAogICAgIC8vIGJ5IHRoZSByZWxhdGl2ZSBwb3NpdGlvbiBvZiB0aGUgdG9wIGxl
ZnQgY29ybmVyIG9mIHRoZSBjdXJyZW50IHJlbmRlciBzdXJmYWNlLgotICAgIGludCBzY2lzc29y
WCA9IHNjaXNzb3JSZWN0LngoKSAtIG1fY3VycmVudFJlbmRlclN1cmZhY2UtPm1fY29udGVudFJl
Y3QueCgpOworICAgIGludCBzY2lzc29yWCA9IHNjaXNzb3JSZWN0LngoKSAtIGNvbnRlbnRSZWN0
LngoKTsKICAgICAvLyBXaGVuIHJlbmRlcmluZyB0byB0aGUgZGVmYXVsdCByZW5kZXIgc3VyZmFj
ZSB3ZSdyZSByZW5kZXJpbmcgdXBzaWRlIGRvd24gc28gdGhlIHRvcAogICAgIC8vIG9mIHRoZSBH
TCBzY2lzc29yIGlzIHRoZSBib3R0b20gb2Ygb3VyIGxheWVyLgogICAgIC8vIEJ1dCwgaWYgcmVu
ZGVyaW5nIHRvIG9mZnNjcmVlbiB0ZXh0dXJlLCB3ZSByZXZlcnNlIG91ciBzZW5zZSBvZiAndXBz
aWRlIGRvd24nLgogICAgIGludCBzY2lzc29yWTsKICAgICBpZiAobV9jdXJyZW50UmVuZGVyU3Vy
ZmFjZSA9PSBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlICYmICFtX2NvbXBvc2l0ZU9mZnNjcmVlbikK
LSAgICAgICAgc2Npc3NvclkgPSBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlLT5tX2NvbnRlbnRSZWN0
LmhlaWdodCgpIC0gKHNjaXNzb3JSZWN0LmJvdHRvbSgpIC0gbV9jdXJyZW50UmVuZGVyU3VyZmFj
ZS0+bV9jb250ZW50UmVjdC55KCkpOworICAgICAgICBzY2lzc29yWSA9IGNvbnRlbnRSZWN0Lmhl
aWdodCgpIC0gKHNjaXNzb3JSZWN0LmJvdHRvbSgpIC0gY29udGVudFJlY3QueSgpKTsKICAgICBl
bHNlCi0gICAgICAgIHNjaXNzb3JZID0gc2Npc3NvclJlY3QueSgpIC0gbV9jdXJyZW50UmVuZGVy
U3VyZmFjZS0+bV9jb250ZW50UmVjdC55KCk7CisgICAgICAgIHNjaXNzb3JZID0gc2Npc3NvclJl
Y3QueSgpIC0gY29udGVudFJlY3QueSgpOwogICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29u
dGV4dC0+c2Npc3NvcihzY2lzc29yWCwgc2Npc3NvclksIHNjaXNzb3JSZWN0LndpZHRoKCksIHNj
aXNzb3JSZWN0LmhlaWdodCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgKaW5kZXggM2QzZTc4NGM0Y2ExODVkOTNjZjNhOGUxODZlMWEwNDNlNzg2ZjYzZi4uMWFkYjk0
MDQzMWJiNmVmMTlmYTE1ZWVhM2JiZWYwZWE2Yzg4YjhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgKQEAgLTg4LDggKzg4LDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFyZHdh
cmVDb21wb3NpdGluZygpIGNvbnN0IHsgcmV0dXJuIG1faGFyZHdhcmVDb21wb3NpdGluZzsgfQog
CiAgICAgdm9pZCBzZXRDb21wb3NpdGVPZmZzY3JlZW4oYm9vbCk7Ci0gICAgYm9vbCBpc0NvbXBv
c2l0aW5nT2Zmc2NyZWVuKCkgeyByZXR1cm4gbV9jb21wb3NpdGVPZmZzY3JlZW47IH0KKyAgICBi
b29sIGlzQ29tcG9zaXRpbmdPZmZzY3JlZW4oKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0ZU9m
ZnNjcmVlbjsgfQogICAgIExheWVyVGV4dHVyZSogZ2V0T2Zmc2NyZWVuTGF5ZXJUZXh0dXJlKCkg
eyByZXR1cm4gbV9jb21wb3NpdGVPZmZzY3JlZW4gPyBtX3Jvb3RMYXllci0+bV9yZW5kZXJTdXJm
YWNlLT5tX2NvbnRlbnRzVGV4dHVyZS5nZXQoKSA6IDA7IH0KKyAgICB2b2lkIGNvcHlPZmZzY3Jl
ZW5UZXh0dXJlVG9EaXNwbGF5KCk7CiAKICAgICB2b2lkIHNldFJvb3RMYXllckNhbnZhc1NpemUo
Y29uc3QgSW50U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcApp
bmRleCBhM2I2NjBmNTc3ZTgwYjU3YWE3Mjc5MTU4YzIyYmI2YWRhZTFlZDE2Li4xYzk3NzJkNTdi
MjRiZTVlNTU3MTE1ZjhkZGI5OTVjMmIyNmZlMjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZh
Y2VDaHJvbWl1bS5jcHAKQEAgLTE2NCw2ICsxNjQsMTEgQEAgYm9vbCBSZW5kZXJTdXJmYWNlQ2hy
b21pdW06OnByZXBhcmVDb250ZW50c1RleHR1cmUoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzRCA9IGxheWVyUmVuZGVyZXIo
KS0+Y29udGV4dCgpOworICAgIG1fY29udGVudHNUZXh0dXJlLT5iaW5kVGV4dHVyZSgpOworICAg
IEdMQyhjb250ZXh0M0QsIGNvbnRleHQzRC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3Jh
cGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1QpKTsKKyAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0Qt
PnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUKSk7
CisKICAgICBtX3NraXBzRHJhdyA9IGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAyOTMxNGQ2YTcyYWI2YjI1MmJhYTZkZmZmNDc0ZTE4OGRl
MjYzNGM4Li5jYzVhN2YxNjY2YzNiZWUwZmJiM2NmNzJmOTc0NzU1Y2Y1YzczNWUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDExLTAyLTAxICBXLiBKYW1l
cyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBjb21tYW5kLWxpbmUg
ZmxhZyB0byBlbmFibGUgY29tcG9zaXRlIHRvIG9mZnNjcmVlbiB0ZXh0dXJlLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIzMTEKKworICAgICAgICBB
ZGQgcGx1bWJpbmcgdG8gYWxsb3cgY29tbWFuZC1saW5lIHN3aXRjaCB0byBlbmFibGUgb2Zmc2Ny
ZWVuIGNvbXBvc2l0aW5nLiBGdW5jdGlvbgorICAgICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmNvcHlPZmZzY3JlZW5UZXh0dXJlVG9EaXNwbGF5IHVzZWQgZm9yIG5vdyB0byBtaW1pYworICAg
ICAgICBub3JtYWwgcmVuZGVyZXIgb3BlcmF0aW9uLgorCisgICAgICAgICogcHVibGljL1dlYlNl
dHRpbmdzLmg6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU2V0dGluZ3NJbXBsOjpzZXRDb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKToKKyAgICAg
ICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdz
SW1wbDo6Y29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRvQ29tcG9zaXRlKToKKwog
MjAxMS0wMi0wMSAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAppbmRleCBlNGZkNTRkZTg5MDAyMmZlNjU5NmEwNTY2
NjRlOTVmNDQ4NmRiMTE3Li42OTY4OWM0M2E5YmVkZGJmOGQyYzgxMDAyMGFlYjVhZGIwOWE3MTAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTk2
LDYgKzk2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RGVidWdCb3JkZXJz
KGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RWRpdGluZ0JlaGF2aW9yKEVkaXRpbmdC
ZWhhdmlvcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
RW5hYmxlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldENvbXBvc2l0ZVRvVGV4dHVy
ZUVuYWJsZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGVUb1RleHR1cmVF
bmFibGVkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nRm9yM0RUcmFuc2Zvcm1zRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQoYm9vbCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yQ2FudmFzRW5hYmxlZChi
b29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0
aW5nc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBs
LmNwcAppbmRleCAwNDU3Zjc3Njg4NTJlMTIzYjc1NzQzZmNhMTZhZmE5NmRiMDU4OWQ0Li5lMTY5
YjQxNzcyZWFiODgzYmExNWNlNTNlNjNmMmRmYzg1N2IwYTY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIFdlYlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKFNldHRp
bmdzKiBzZXR0aW5ncykKICAgICA6IG1fc2V0dGluZ3Moc2V0dGluZ3MpCisgICAgLCBtX2NvbXBv
c2l0ZVRvVGV4dHVyZUVuYWJsZWQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKHNldHRpbmdzKTsKIH0K
QEAgLTI4OSw2ICsyOTAsMTEgQEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3NldHRpbmdzLT5zZXRBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChlbmFibGVkKTsKIH0KIAordm9pZCBXZWJTZXR0aW5n
c0ltcGw6OnNldENvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAg
IG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZCA9IGVuYWJsZWQ7Cit9CisKIHZvaWQgV2ViU2V0
dGluZ3NJbXBsOjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RUcmFuc2Zvcm1zRW5hYmxl
ZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV9zZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0ZvcjNEVHJhbnNmb3Jtc0VuYWJsZWQoZW5hYmxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCmluZGV4IDQ5NjBiYjkzYTU5NzdhY2Y5NjA3N2Zm
YzNhZGU2NjZjN2EyNDU2YjguLjU4YTRiZDQ5NjQyZDJkNTU1MzA3NjNkYjlmYTY1ODc4ZGM5Njg4
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCkBA
IC04OSw2ICs4OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0RlYnVnQm9y
ZGVycyhib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RWRpdGluZ0JlaGF2aW9yKEVkaXRpbmdC
ZWhhdmlvcik7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFi
bGVkKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb21wb3NpdGVUb1RleHR1cmVFbmFibGVk
KGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9jb21wb3NpdGVUb1RleHR1cmVFbmFibGVkOyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3IzRFRyYW5zZm9ybXNFbmFibGVkKGJvb2wp
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yVmlkZW9FbmFi
bGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9y
UGx1Z2luc0VuYWJsZWQoYm9vbCk7CkBAIC0xMDIsNiArMTA0LDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIFdlYkNvcmU6OlNldHRpbmdzKiBtX3NldHRpbmdzOworICAgIGJvb2wgbV9jb21w
b3NpdGVUb1RleHR1cmVFbmFibGVkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggYWY2MTcwMGQ1ODEy
MTRiYjVmYjMxMjM0OWZmM2QyMDNmYTA2YTE4Ni4uYWFjZmUzZGJiZTlmOWUzYjEzMjg5ZTY2NTdi
MTk4MGVjNWVmNTQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcApAQCAtMjM5Nyw3ICsyMzk3LDEwIEBAIHZvaWQgV2ViVmlld0ltcGw6OmRvQ29tcG9zaXRl
KCkKICAgICBXZWJWaWV3SW1wbFRpbGVQYWludEludGVyZmFjZSB0aWxlUGFpbnQodGhpcyk7CiAK
ICAgICBXZWJWaWV3SW1wbFNjcm9sbGJhclBhaW50SW50ZXJmYWNlIHNjcm9sbGJhclBhaW50KHRo
aXMpOworICAgIG1fbGF5ZXJSZW5kZXJlci0+c2V0Q29tcG9zaXRlT2Zmc2NyZWVuKHNldHRpbmdz
KCktPmNvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQoKSk7CiAgICAgbV9sYXllclJlbmRlcmVyLT5k
cmF3TGF5ZXJzKHZpc2libGVSZWN0LCBjb250ZW50UmVjdCwgc2Nyb2xsLCB0aWxlUGFpbnQsIHNj
cm9sbGJhclBhaW50KTsKKyAgICBpZiAobV9sYXllclJlbmRlcmVyLT5pc0NvbXBvc2l0aW5nT2Zm
c2NyZWVuKCkpCisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+Y29weU9mZnNjcmVlblRleHR1cmVU
b0Rpc3BsYXkoKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6cmVhbGxvY2F0ZVJlbmRlcmVyKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81633</attachid>
            <date>2011-02-08 07:22:49 -0800</date>
            <delta_ts>2011-02-17 07:46:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52311-20110208102200.patch</filename>
            <type>text/plain</type>
            <size>12934</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1NjllOWIwMGYxYTYyMDdkNTI5ZDJmMGZjZGYzYTk0OGQ0MGE1YzE1Li5h
M2Y0YWQ5MDY3OTVhMGE3ZWE3M2RjYzJiZmZhMmM3N2ZlOGVhMDI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjcgQEAKKzIwMTEtMDItMDggIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtjaHJvbWl1bV0gQWRkIGNvbW1hbmQtbGluZSBmbGFnIHRvIGVuYWJsZSBjb21wb3NpdGUg
dG8gb2Zmc2NyZWVuIHRleHR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MjMxMQorCisgICAgICAgIEFkZCBwbHVtYmluZyB0byBhbGxvdyBjb21t
YW5kLWxpbmUgc3dpdGNoIHRvIGVuYWJsZSBvZmZzY3JlZW4gY29tcG9zaXRpbmcuIEZ1bmN0aW9u
CisgICAgICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weU9mZnNjcmVlblRleHR1cmVUb0Rp
c3BsYXkgdXNlZCBmb3Igbm93IHRvIG1pbWljCisgICAgICAgIG5vcm1hbCByZW5kZXJlciBvcGVy
YXRpb24uCisKKyAgICAgICAgRXhpc3RpbmcgZnVuY3Rpb25hbGl0eSBub3QgY2hhbmdlZDsgb2Zm
c2NyZWVuIGNvbXBvc2l0aW5nIHdpbGwgYmUgdGVzdGVkIHZpYSBHUFUgdGVzdCBmcmFtZXdvcmsu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRS
b290TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRD
b21wb3NpdGVPZmZzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRTY2lzc29yVG9SZWN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aXNDb21wb3NpdGluZ09mZnNjcmVl
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN1cmZhY2VDaHJvbWl1bTo6cHJl
cGFyZUNvbnRlbnRzVGV4dHVyZSk6CisKIDIwMTEtMDItMDggIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHI3NzkyNC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IGY1NTQ4
YzlmNjNmMzZiNGEzZjI1NTNiYWU4NTg0ZWVkMDQxOGNhNzEuLmZkNDMyN2E1MDQ1ZWFhNWNkNjhi
YzJiNjhiMzRhM2NhM2NjNjQ5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcApAQCAtMzQxLDYgKzM0MSw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpwcmVz
ZW50KCkKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRSb290TGF5ZXIoUGFzc1JlZlB0
cjxMYXllckNocm9taXVtPiBsYXllcikKIHsKICAgICBtX3Jvb3RMYXllciA9IGxheWVyOworICAg
IGlmIChtX3Jvb3RMYXllcikKKyAgICAgICAgbV9yb290TGF5ZXItPnNldExheWVyUmVuZGVyZXIo
dGhpcyk7CiAgICAgbV9yb290TGF5ZXJUaWxlci0+aW52YWxpZGF0ZUVudGlyZUxheWVyKCk7CiAg
ICAgaWYgKG1faG9yaXpvbnRhbFNjcm9sbGJhclRpbGVyKQogICAgICAgICBtX2hvcml6b250YWxT
Y3JvbGxiYXJUaWxlci0+aW52YWxpZGF0ZUVudGlyZUxheWVyKCk7CkBAIC02NDksMTkgKzY1MSwy
NyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJzUmVjdXJzaXZlKExh
eWVyQ2hyb21pdW0qIGxheWVyLCBjb25zdCBUcgogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6c2V0Q29tcG9zaXRlT2Zmc2NyZWVuKGJvb2wgY29tcG9zaXRlT2Zmc2NyZWVuKQogeworICAg
IGlmIChtX2NvbXBvc2l0ZU9mZnNjcmVlbiA9PSBjb21wb3NpdGVPZmZzY3JlZW4pCisgICAgICAg
cmV0dXJuOworCiAgICAgbV9jb21wb3NpdGVPZmZzY3JlZW4gPSBjb21wb3NpdGVPZmZzY3JlZW47
CiAKLSAgICBpZiAoIW1fcm9vdExheWVyKSB7Ci0gICAgICAgIG1fY29tcG9zaXRlT2Zmc2NyZWVu
ID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCFtX2NvbXBvc2l0ZU9m
ZnNjcmVlbiAmJiBtX3Jvb3RMYXllcikKKyAgICAgICAgbV9yb290TGF5ZXItPm1fcmVuZGVyU3Vy
ZmFjZS5jbGVhcigpOworfQogCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weU9mZnNj
cmVlblRleHR1cmVUb0Rpc3BsYXkoKQorewogICAgIGlmIChtX2NvbXBvc2l0ZU9mZnNjcmVlbikg
ewotICAgICAgICAvLyBOZWVkIHRvIGV4cGxpY2l0bHkgc2V0IGEgTGF5ZXJSZW5kZXJlckNocm9t
aXVtIGZvciB0aGUgbGF5ZXIgd2l0aCB0aGUgb2Zmc2NyZWVuIHRleHR1cmUsCi0gICAgICAgIC8v
IG9yIGVsc2UgdGhlIGNhbGwgdG8gcHJlcGFyZUNvbnRlbnRzVGV4dHVyZSgpIGluIHVzZVJlbmRl
clN1cmZhY2UoKSB3aWxsIGZhaWwuCi0gICAgICAgIG1fcm9vdExheWVyLT5zZXRMYXllclJlbmRl
cmVyKHRoaXMpOwotICAgIH0gZWxzZQotICAgICAgICBtX3Jvb3RMYXllci0+bV9yZW5kZXJTdXJm
YWNlLmNsZWFyKCk7CisgICAgICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgICAgIHVz
ZVJlbmRlclN1cmZhY2UoMCk7CisgICAgICAgIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UtPm1fZHJh
d1RyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKKyAgICAgICAgbV9kZWZhdWx0UmVuZGVyU3VyZmFj
ZS0+bV9kcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZTNkKDAuNSAqIG1fZGVmYXVsdFJlbmRlclN1cmZh
Y2UtPm1fY29udGVudFJlY3Qud2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNSAqIG1fZGVmYXVsdFJlbmRlclN1cmZh
Y2UtPm1fY29udGVudFJlY3QuaGVpZ2h0KCksIDApOworICAgICAgICBtX2RlZmF1bHRSZW5kZXJT
dXJmYWNlLT5tX2RyYXdPcGFjaXR5ID0gMTsKKyAgICAgICAgbV9kZWZhdWx0UmVuZGVyU3VyZmFj
ZS0+ZHJhdygpOworICAgIH0KIH0KIAogYm9vbCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJl
bmRlclN1cmZhY2UoUmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWNlKQpAQCAtNjcx
LDkgKzY4MSwxMiBAQCBib29sIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyU3VyZmFj
ZShSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhYwogCiAgICAgbV9jdXJyZW50UmVu
ZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2U7CiAKLSAgICBpZiAocmVuZGVyU3VyZmFjZSA9PSBt
X2RlZmF1bHRSZW5kZXJTdXJmYWNlICYmICFtX2NvbXBvc2l0ZU9mZnNjcmVlbikgeworICAgIGlm
ICgocmVuZGVyU3VyZmFjZSA9PSBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlICYmICFtX2NvbXBvc2l0
ZU9mZnNjcmVlbikgfHwgKCFyZW5kZXJTdXJmYWNlICYmIG1fY29tcG9zaXRlT2Zmc2NyZWVuKSkg
ewogICAgICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIDApKTsKLSAgICAgICAgc2V0RHJhd1Zp
ZXdwb3J0UmVjdChyZW5kZXJTdXJmYWNlLT5tX2NvbnRlbnRSZWN0LCB0cnVlKTsKKyAgICAgICAg
aWYgKHJlbmRlclN1cmZhY2UpCisgICAgICAgICAgICBzZXREcmF3Vmlld3BvcnRSZWN0KHJlbmRl
clN1cmZhY2UtPm1fY29udGVudFJlY3QsIHRydWUpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBzZXREcmF3Vmlld3BvcnRSZWN0KG1fZGVmYXVsdFJlbmRlclN1cmZhY2UtPm1fY29udGVudFJl
Y3QsIHRydWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTczNCwxNyArNzQ3
LDIxIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3TGF5ZXIoTGF5ZXJDaHJvbWl1
bSogbGF5ZXIsIFJlbmRlclN1cmZhY2VDaHJvbWl1CiAvLyBzY2lzc29yUmVjdCBoYXMgaXRzIG9y
aWdpbiBhdCB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBjdXJyZW50IHZpc2libGUgcmVjdC4K
IHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRTY2lzc29yVG9SZWN0KGNvbnN0IEludFJl
Y3QmIHNjaXNzb3JSZWN0KQogeworICAgIEludFJlY3QgY29udGVudFJlY3QgPSAobV9jdXJyZW50
UmVuZGVyU3VyZmFjZSA/IG1fY3VycmVudFJlbmRlclN1cmZhY2UtPm1fY29udGVudFJlY3QgOiBt
X2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5tX2NvbnRlbnRSZWN0KTsKKwogICAgIC8vIFRoZSBzY2lz
c29yIGNvb3JkaW5hdGVzIG11c3QgYmUgc3VwcGxpZWQgaW4gdmlld3BvcnQgc3BhY2Ugc28gd2Ug
bmVlZCB0byBvZmZzZXQKICAgICAvLyBieSB0aGUgcmVsYXRpdmUgcG9zaXRpb24gb2YgdGhlIHRv
cCBsZWZ0IGNvcm5lciBvZiB0aGUgY3VycmVudCByZW5kZXIgc3VyZmFjZS4KLSAgICBpbnQgc2Np
c3NvclggPSBzY2lzc29yUmVjdC54KCkgLSBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlLT5tX2NvbnRl
bnRSZWN0LngoKTsKKyAgICBpbnQgc2Npc3NvclggPSBzY2lzc29yUmVjdC54KCkgLSBjb250ZW50
UmVjdC54KCk7CiAgICAgLy8gV2hlbiByZW5kZXJpbmcgdG8gdGhlIGRlZmF1bHQgcmVuZGVyIHN1
cmZhY2Ugd2UncmUgcmVuZGVyaW5nIHVwc2lkZSBkb3duIHNvIHRoZSB0b3AKICAgICAvLyBvZiB0
aGUgR0wgc2Npc3NvciBpcyB0aGUgYm90dG9tIG9mIG91ciBsYXllci4KICAgICAvLyBCdXQsIGlm
IHJlbmRlcmluZyB0byBvZmZzY3JlZW4gdGV4dHVyZSwgd2UgcmV2ZXJzZSBvdXIgc2Vuc2Ugb2Yg
J3Vwc2lkZSBkb3duJy4KICAgICBpbnQgc2Npc3Nvclk7CiAgICAgaWYgKG1fY3VycmVudFJlbmRl
clN1cmZhY2UgPT0gbV9kZWZhdWx0UmVuZGVyU3VyZmFjZSAmJiAhbV9jb21wb3NpdGVPZmZzY3Jl
ZW4pCi0gICAgICAgIHNjaXNzb3JZID0gbV9jdXJyZW50UmVuZGVyU3VyZmFjZS0+bV9jb250ZW50
UmVjdC5oZWlnaHQoKSAtIChzY2lzc29yUmVjdC5tYXhZKCkgLSBtX2N1cnJlbnRSZW5kZXJTdXJm
YWNlLT5tX2NvbnRlbnRSZWN0LnkoKSk7CisgICAgICAgIHNjaXNzb3JZID0gbV9jdXJyZW50UmVu
ZGVyU3VyZmFjZS0+bV9jb250ZW50UmVjdC5oZWlnaHQoKSAtIChzY2lzc29yUmVjdC5tYXhZKCkg
LSBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlLT5tX2NvbnRlbnRSZWN0LnkoKSk7IC8vIFZhbmdlbGlz
IC0gbmV3CisvLyAgICAgICAgc2Npc3NvclkgPSBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlLT5tX2Nv
bnRlbnRSZWN0LmhlaWdodCgpIC0gKHNjaXNzb3JSZWN0LmJvdHRvbSgpIC0gbV9jdXJyZW50UmVu
ZGVyU3VyZmFjZS0+bV9jb250ZW50UmVjdC55KCkpOyAvLyBtaW5lIC0gb2xkCisvLyAgICAgICAg
c2Npc3NvclkgPSBjb250ZW50UmVjdC5oZWlnaHQoKSAtIChzY2lzc29yUmVjdC5ib3R0b20oKSAt
IGNvbnRlbnRSZWN0LnkoKSk7IC8vIG9sZCwgcHJvYidseSBkZWxldGUKICAgICBlbHNlCi0gICAg
ICAgIHNjaXNzb3JZID0gc2Npc3NvclJlY3QueSgpIC0gbV9jdXJyZW50UmVuZGVyU3VyZmFjZS0+
bV9jb250ZW50UmVjdC55KCk7CisgICAgICAgIHNjaXNzb3JZID0gc2Npc3NvclJlY3QueSgpIC0g
Y29udGVudFJlY3QueSgpOwogICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+c2Np
c3NvcihzY2lzc29yWCwgc2Npc3NvclksIHNjaXNzb3JSZWN0LndpZHRoKCksIHNjaXNzb3JSZWN0
LmhlaWdodCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXgg
M2QzZTc4NGM0Y2ExODVkOTNjZjNhOGUxODZlMWEwNDNlNzg2ZjYzZi4uMWFkYjk0MDQzMWJiNmVm
MTlmYTE1ZWVhM2JiZWYwZWE2Yzg4YjhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmgKQEAgLTg4LDggKzg4LDkgQEAgcHVibGljOgogICAgIGJvb2wgaGFyZHdhcmVDb21wb3Np
dGluZygpIGNvbnN0IHsgcmV0dXJuIG1faGFyZHdhcmVDb21wb3NpdGluZzsgfQogCiAgICAgdm9p
ZCBzZXRDb21wb3NpdGVPZmZzY3JlZW4oYm9vbCk7Ci0gICAgYm9vbCBpc0NvbXBvc2l0aW5nT2Zm
c2NyZWVuKCkgeyByZXR1cm4gbV9jb21wb3NpdGVPZmZzY3JlZW47IH0KKyAgICBib29sIGlzQ29t
cG9zaXRpbmdPZmZzY3JlZW4oKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0ZU9mZnNjcmVlbjsg
fQogICAgIExheWVyVGV4dHVyZSogZ2V0T2Zmc2NyZWVuTGF5ZXJUZXh0dXJlKCkgeyByZXR1cm4g
bV9jb21wb3NpdGVPZmZzY3JlZW4gPyBtX3Jvb3RMYXllci0+bV9yZW5kZXJTdXJmYWNlLT5tX2Nv
bnRlbnRzVGV4dHVyZS5nZXQoKSA6IDA7IH0KKyAgICB2b2lkIGNvcHlPZmZzY3JlZW5UZXh0dXJl
VG9EaXNwbGF5KCk7CiAKICAgICB2b2lkIHNldFJvb3RMYXllckNhbnZhc1NpemUoY29uc3QgSW50
U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmNwcAppbmRleCBiM2Nl
OWQ3MjM3MTY4Yzk1NDcwMTRkMmNhNTM0ZDMyZTk4YzBmMzBjLi43M2U2ZjhmM2Q5OGM2MmYzNDIw
ZGM2MmQ3YTNhNjFkNDgwZTVlYmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1
bS5jcHAKQEAgLTE3NSw2ICsxNzUsMTEgQEAgYm9vbCBSZW5kZXJTdXJmYWNlQ2hyb21pdW06OnBy
ZXBhcmVDb250ZW50c1RleHR1cmUoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisg
ICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzRCA9IGxheWVyUmVuZGVyZXIoKS0+Y29udGV4
dCgpOworICAgIG1fY29udGVudHNUZXh0dXJlLT5iaW5kVGV4dHVyZSgpOworICAgIEdMQyhjb250
ZXh0M0QsIGNvbnRleHQzRC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250
ZXh0M0Q6Ok5FQVJFU1QpKTsKKyAgICBHTEMoY29udGV4dDNELCBjb250ZXh0M0QtPnRleFBhcmFt
ZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUKSk7CisKICAgICBt
X3NraXBzRHJhdyA9IGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCA3M2UxNzlmYzNjNWRiNmZmNzcwODAwMzlkZDFiYzk4OTA4OTY4NmM2Li5k
NzRiYmQyZDMxM2FjMGU4MjNlNTEyZDRlMTYyZTIxNjc4OTNhMDNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDExLTAyLTA4ICBXLiBKYW1lcyBNYWNMZWFu
ICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBjb21tYW5kLWxpbmUgZmxhZyB0byBl
bmFibGUgY29tcG9zaXRlIHRvIG9mZnNjcmVlbiB0ZXh0dXJlLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIzMTEKKworICAgICAgICBBZGQgcGx1bWJp
bmcgdG8gYWxsb3cgY29tbWFuZC1saW5lIHN3aXRjaCB0byBlbmFibGUgb2Zmc2NyZWVuIGNvbXBv
c2l0aW5nLiBGdW5jdGlvbgorICAgICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlPZmZz
Y3JlZW5UZXh0dXJlVG9EaXNwbGF5IHVzZWQgZm9yIG5vdyB0byBtaW1pYworICAgICAgICBub3Jt
YWwgcmVuZGVyZXIgb3BlcmF0aW9uLgorCisgICAgICAgICogcHVibGljL1dlYlNldHRpbmdzLmg6
CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNldHRpbmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0
dGluZ3NJbXBsOjpzZXRDb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKToKKyAgICAgICAgKiBzcmMv
V2ViU2V0dGluZ3NJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6Y29t
cG9zaXRlVG9UZXh0dXJlRW5hYmxlZCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRvQ29tcG9zaXRlKToKKwogMjAxMS0wMi0w
NyAgQWxleGV5IE1hcmluaWNoZXYgIDxhbWFyaW5pY2hldkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNldHRpbmdzLmgKaW5kZXggODM0ZjA1YWViOWE4MWQ2NWZjYWY3YWUwMzc4YWE1
NGUyNTY3ZDM4YS4uMTFlODdhMTk3MDc3NzQ5YzkwODVkZjFjOGI5MGY1YWFkM2Y1ODNkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCkBAIC05Niw2ICs5
Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVycyhib29s
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEVkaXRpbmdCZWhhdmlvcihFZGl0aW5nQmVoYXZp
b3IpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJs
ZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb21wb3NpdGVUb1RleHR1cmVFbmFi
bGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxl
ZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0ZvcjNEVHJhbnNmb3Jtc0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yVmlkZW9FbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckNhbnZhc0VuYWJsZWQoYm9vbCkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAK
aW5kZXggNTQxNTVkZGZlM2QwMWMxNmY4OTY2M2QyMTIzMmRhMTQ0ZmE0ZjlkZi4uY2VmNDg5NDJl
MTI5N2I5ZWY1ZmQ0NTczZDU1YzNkYzcxZGMyNTJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBXZWJTZXR0aW5nc0ltcGw6OldlYlNldHRpbmdzSW1wbChTZXR0aW5ncyog
c2V0dGluZ3MpCiAgICAgOiBtX3NldHRpbmdzKHNldHRpbmdzKQorICAgICwgbV9jb21wb3NpdGVU
b1RleHR1cmVFbmFibGVkKGZhbHNlKQogewogICAgIEFTU0VSVChzZXR0aW5ncyk7CiB9CkBAIC0y
ODksNiArMjkwLDExIEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgbV9zZXR0aW5ncy0+c2V0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKK3ZvaWQgV2ViU2V0dGluZ3NJbXBs
OjpzZXRDb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX2Nv
bXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQgPSBlbmFibGVkOworfQorCiB2b2lkIFdlYlNldHRpbmdz
SW1wbDo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvcjNEVHJhbnNmb3Jtc0VuYWJsZWQoYm9v
bCBlbmFibGVkKQogewogICAgIG1fc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdG
b3IzRFRyYW5zZm9ybXNFbmFibGVkKGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCBhMDMwY2QzYWExNjFmMWJjZThmYzEwZjhlMzJm
YmM5NTIyOTMwNmQ5Li5hNmFhYzFkYWJiYjUzYWZhODQ2MjhiYzRlM2Q1NWE1NGMxYjUyOGVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaApAQCAtODks
NiArODksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcnMo
Ym9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEVkaXRpbmdCZWhhdmlvcihFZGl0aW5nQmVoYXZp
b3IpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChi
b29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZChib29s
KTsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZDsgfQogICAgIHZpcnR1YWwgdm9pZCBz
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RUcmFuc2Zvcm1zRW5hYmxlZChib29sKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclZpZGVvRW5hYmxlZChi
b29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclBsdWdp
bnNFbmFibGVkKGJvb2wpOwpAQCAtMTAzLDYgKzEwNSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICAgICBXZWJDb3JlOjpTZXR0aW5ncyogbV9zZXR0aW5nczsKKyAgICBib29sIG1fY29tcG9zaXRl
VG9UZXh0dXJlRW5hYmxlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDIwMDc0NGQxYzk4MTQ5Y2I5
MmRmMmUwNGFiNjU0YzY3OWY5MDg1MjcuLmJiZTgxMDk3OTFkNjhjOGNkM2UzYThiMDM0NmY4MmEy
NjNkNDBkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAK
QEAgLTIzOTMsNyArMjM5MywxMCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkb0NvbXBvc2l0ZSgpCiAg
ICAgV2ViVmlld0ltcGxUaWxlUGFpbnRJbnRlcmZhY2UgdGlsZVBhaW50KHRoaXMpOwogCiAgICAg
V2ViVmlld0ltcGxTY3JvbGxiYXJQYWludEludGVyZmFjZSBzY3JvbGxiYXJQYWludCh0aGlzKTsK
KyAgICBtX2xheWVyUmVuZGVyZXItPnNldENvbXBvc2l0ZU9mZnNjcmVlbihzZXR0aW5ncygpLT5j
b21wb3NpdGVUb1RleHR1cmVFbmFibGVkKCkpOwogICAgIG1fbGF5ZXJSZW5kZXJlci0+ZHJhd0xh
eWVycyh2aXNpYmxlUmVjdCwgY29udGVudFJlY3QsIHNjcm9sbCwgdGlsZVBhaW50LCBzY3JvbGxi
YXJQYWludCk7CisgICAgaWYgKG1fbGF5ZXJSZW5kZXJlci0+aXNDb21wb3NpdGluZ09mZnNjcmVl
bigpKQorICAgICAgICBtX2xheWVyUmVuZGVyZXItPmNvcHlPZmZzY3JlZW5UZXh0dXJlVG9EaXNw
bGF5KCk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnJlYWxsb2NhdGVSZW5kZXJlcigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82803</attachid>
            <date>2011-02-17 07:46:43 -0800</date>
            <delta_ts>2011-02-17 12:33:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52311-20110217104534.patch</filename>
            <type>text/plain</type>
            <size>11518</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkZTdiOWUwMjg5MjhkOGJkYzk5OGYzYTJjN2UzYTI3MWYzNWIzZjYwLi45
MDdjMDA5OGYwMmNlOGQwYzAyMzIwMDBjODhhMDkxYzg5MjA1YWQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjUgQEAKKzIwMTEtMDItMTcgIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtjaHJvbWl1bV0gQWRkIGNvbW1hbmQtbGluZSBmbGFnIHRvIGVuYWJsZSBjb21wb3NpdGUg
dG8gb2Zmc2NyZWVuIHRleHR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MjMxMQorCisgICAgICAgIEFkZCBwbHVtYmluZyB0byBhbGxvdyBjb21t
YW5kLWxpbmUgc3dpdGNoIHRvIGVuYWJsZSBvZmZzY3JlZW4gY29tcG9zaXRpbmcuIEZ1bmN0aW9u
CisgICAgICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29weU9mZnNjcmVlblRleHR1cmVUb0Rp
c3BsYXkgdXNlZCBmb3Igbm93IHRvIG1pbWljCisgICAgICAgIG5vcm1hbCByZW5kZXJlciBvcGVy
YXRpb24uCisKKyAgICAgICAgRXhpc3RpbmcgZnVuY3Rpb25hbGl0eSBub3QgY2hhbmdlZDsgb2Zm
c2NyZWVuIGNvbXBvc2l0aW5nIHdpbGwgYmUgdGVzdGVkIHZpYSBHUFUgdGVzdCBmcmFtZXdvcmsu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRS
b290TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRD
b21wb3NpdGVPZmZzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9t
aXVtOjpjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyQ2hyb21pdW06OnVzZVJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRTY2lzc29yVG9SZWN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6aXNDb21wb3NpdGluZ09mZnNjcmVl
bik6CisKIDIwMTEtMDItMTcgIEh1aSBIdWFuZyAgPGh1aS4yLmh1YW5nQG5va2lhLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBMYXN6bG8gR29tYm9zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5jcHAKaW5kZXggNWUwZWFjYTBkODgxYWNiODY1NWY0YWIwYzdlYWVhOTEyODEy
N2EwMS4uOTA1ZDZkYTMzZGUzZWZjMWQyNTMzZjk5MjQ1ODM3ODBjNmM4MTgzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0zNDEsNiArMzQxLDggQEAgdm9pZCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OnByZXNlbnQoKQogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21p
dW06OnNldFJvb3RMYXllcihQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+IGxheWVyKQogewogICAg
IG1fcm9vdExheWVyID0gbGF5ZXI7CisgICAgaWYgKG1fcm9vdExheWVyKQorICAgICAgICBtX3Jv
b3RMYXllci0+c2V0TGF5ZXJSZW5kZXJlcih0aGlzKTsKICAgICBtX3Jvb3RMYXllclRpbGVyLT5p
bnZhbGlkYXRlRW50aXJlTGF5ZXIoKTsKICAgICBpZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyVGls
ZXIpCiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhclRpbGVyLT5pbnZhbGlkYXRlRW50aXJl
TGF5ZXIoKTsKQEAgLTY0OSwxOSArNjUxLDI3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
Ojp1cGRhdGVMYXllcnNSZWN1cnNpdmUoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIGNvbnN0IFRyCiAK
IHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRDb21wb3NpdGVPZmZzY3JlZW4oYm9vbCBj
b21wb3NpdGVPZmZzY3JlZW4pCiB7CisgICAgaWYgKG1fY29tcG9zaXRlT2Zmc2NyZWVuID09IGNv
bXBvc2l0ZU9mZnNjcmVlbikKKyAgICAgICByZXR1cm47CisKICAgICBtX2NvbXBvc2l0ZU9mZnNj
cmVlbiA9IGNvbXBvc2l0ZU9mZnNjcmVlbjsKIAotICAgIGlmICghbV9yb290TGF5ZXIpIHsKLSAg
ICAgICAgbV9jb21wb3NpdGVPZmZzY3JlZW4gPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KKyAgICBpZiAoIW1fY29tcG9zaXRlT2Zmc2NyZWVuICYmIG1fcm9vdExheWVyKQorICAgICAg
ICBtX3Jvb3RMYXllci0+bV9yZW5kZXJTdXJmYWNlLmNsZWFyKCk7Cit9CiAKK3ZvaWQgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSgpCit7CiAgICAg
aWYgKG1fY29tcG9zaXRlT2Zmc2NyZWVuKSB7Ci0gICAgICAgIC8vIE5lZWQgdG8gZXhwbGljaXRs
eSBzZXQgYSBMYXllclJlbmRlcmVyQ2hyb21pdW0gZm9yIHRoZSBsYXllciB3aXRoIHRoZSBvZmZz
Y3JlZW4gdGV4dHVyZSwKLSAgICAgICAgLy8gb3IgZWxzZSB0aGUgY2FsbCB0byBwcmVwYXJlQ29u
dGVudHNUZXh0dXJlKCkgaW4gdXNlUmVuZGVyU3VyZmFjZSgpIHdpbGwgZmFpbC4KLSAgICAgICAg
bV9yb290TGF5ZXItPnNldExheWVyUmVuZGVyZXIodGhpcyk7Ci0gICAgfSBlbHNlCi0gICAgICAg
IG1fcm9vdExheWVyLT5tX3JlbmRlclN1cmZhY2UuY2xlYXIoKTsKKyAgICAgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7CisKKyAgICAgICAgdXNlUmVuZGVyU3VyZmFjZSgwKTsKKyAgICAgICAgbV9k
ZWZhdWx0UmVuZGVyU3VyZmFjZS0+bV9kcmF3VHJhbnNmb3JtLm1ha2VJZGVudGl0eSgpOworICAg
ICAgICBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5tX2RyYXdUcmFuc2Zvcm0udHJhbnNsYXRlM2Qo
MC41ICogbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+bV9jb250ZW50UmVjdC53aWR0aCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MC41ICogbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+bV9jb250ZW50UmVjdC5oZWlnaHQoKSwgMCk7
CisgICAgICAgIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UtPm1fZHJhd09wYWNpdHkgPSAxOworICAg
ICAgICBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5kcmF3KCk7CisgICAgfQogfQogCiBib29sIExh
eWVyUmVuZGVyZXJDaHJvbWl1bTo6dXNlUmVuZGVyU3VyZmFjZShSZW5kZXJTdXJmYWNlQ2hyb21p
dW0qIHJlbmRlclN1cmZhY2UpCkBAIC02NzEsOSArNjgxLDEyIEBAIGJvb2wgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjp1c2VSZW5kZXJTdXJmYWNlKFJlbmRlclN1cmZhY2VDaHJvbWl1bSogcmVuZGVy
U3VyZmFjCiAKICAgICBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZTsKIAot
ICAgIGlmIChyZW5kZXJTdXJmYWNlID09IG1fZGVmYXVsdFJlbmRlclN1cmZhY2UgJiYgIW1fY29t
cG9zaXRlT2Zmc2NyZWVuKSB7CisgICAgaWYgKChyZW5kZXJTdXJmYWNlID09IG1fZGVmYXVsdFJl
bmRlclN1cmZhY2UgJiYgIW1fY29tcG9zaXRlT2Zmc2NyZWVuKSB8fCAoIXJlbmRlclN1cmZhY2Ug
JiYgbV9jb21wb3NpdGVPZmZzY3JlZW4pKSB7CiAgICAgICAgIEdMQyhtX2NvbnRleHQuZ2V0KCks
IG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
UiwgMCkpOwotICAgICAgICBzZXREcmF3Vmlld3BvcnRSZWN0KHJlbmRlclN1cmZhY2UtPm1fY29u
dGVudFJlY3QsIHRydWUpOworICAgICAgICBpZiAocmVuZGVyU3VyZmFjZSkKKyAgICAgICAgICAg
IHNldERyYXdWaWV3cG9ydFJlY3QocmVuZGVyU3VyZmFjZS0+bV9jb250ZW50UmVjdCwgdHJ1ZSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNldERyYXdWaWV3cG9ydFJlY3QobV9kZWZhdWx0
UmVuZGVyU3VyZmFjZS0+bV9jb250ZW50UmVjdCwgdHJ1ZSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIApAQCAtNzM0LDkgKzc0NywxMSBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZHJhd0xheWVyKExheWVyQ2hyb21pdW0qIGxheWVyLCBSZW5kZXJTdXJmYWNlQ2hyb21pdQog
Ly8gc2Npc3NvclJlY3QgaGFzIGl0cyBvcmlnaW4gYXQgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0
aGUgY3VycmVudCB2aXNpYmxlIHJlY3QuCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0
U2Npc3NvclRvUmVjdChjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCkKIHsKKyAgICBJbnRSZWN0
IGNvbnRlbnRSZWN0ID0gKG1fY3VycmVudFJlbmRlclN1cmZhY2UgPyBtX2N1cnJlbnRSZW5kZXJT
dXJmYWNlLT5tX2NvbnRlbnRSZWN0IDogbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+bV9jb250ZW50
UmVjdCk7CisKICAgICAvLyBUaGUgc2Npc3NvciBjb29yZGluYXRlcyBtdXN0IGJlIHN1cHBsaWVk
IGluIHZpZXdwb3J0IHNwYWNlIHNvIHdlIG5lZWQgdG8gb2Zmc2V0CiAgICAgLy8gYnkgdGhlIHJl
bGF0aXZlIHBvc2l0aW9uIG9mIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIGN1cnJlbnQgcmVu
ZGVyIHN1cmZhY2UuCi0gICAgaW50IHNjaXNzb3JYID0gc2Npc3NvclJlY3QueCgpIC0gbV9jdXJy
ZW50UmVuZGVyU3VyZmFjZS0+bV9jb250ZW50UmVjdC54KCk7CisgICAgaW50IHNjaXNzb3JYID0g
c2Npc3NvclJlY3QueCgpIC0gY29udGVudFJlY3QueCgpOwogICAgIC8vIFdoZW4gcmVuZGVyaW5n
IHRvIHRoZSBkZWZhdWx0IHJlbmRlciBzdXJmYWNlIHdlJ3JlIHJlbmRlcmluZyB1cHNpZGUgZG93
biBzbyB0aGUgdG9wCiAgICAgLy8gb2YgdGhlIEdMIHNjaXNzb3IgaXMgdGhlIGJvdHRvbSBvZiBv
dXIgbGF5ZXIuCiAgICAgLy8gQnV0LCBpZiByZW5kZXJpbmcgdG8gb2Zmc2NyZWVuIHRleHR1cmUs
IHdlIHJldmVyc2Ugb3VyIHNlbnNlIG9mICd1cHNpZGUgZG93bicuCkBAIC03NDQsNyArNzU5LDcg
QEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnNldFNjaXNzb3JUb1JlY3QoY29uc3QgSW50
UmVjdCYgc2Npc3NvclJlY3QpCiAgICAgaWYgKG1fY3VycmVudFJlbmRlclN1cmZhY2UgPT0gbV9k
ZWZhdWx0UmVuZGVyU3VyZmFjZSAmJiAhbV9jb21wb3NpdGVPZmZzY3JlZW4pCiAgICAgICAgIHNj
aXNzb3JZID0gbV9jdXJyZW50UmVuZGVyU3VyZmFjZS0+bV9jb250ZW50UmVjdC5oZWlnaHQoKSAt
IChzY2lzc29yUmVjdC5tYXhZKCkgLSBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlLT5tX2NvbnRlbnRS
ZWN0LnkoKSk7CiAgICAgZWxzZQotICAgICAgICBzY2lzc29yWSA9IHNjaXNzb3JSZWN0LnkoKSAt
IG1fY3VycmVudFJlbmRlclN1cmZhY2UtPm1fY29udGVudFJlY3QueSgpOworICAgICAgICBzY2lz
c29yWSA9IHNjaXNzb3JSZWN0LnkoKSAtIGNvbnRlbnRSZWN0LnkoKTsKICAgICBHTEMobV9jb250
ZXh0LmdldCgpLCBtX2NvbnRleHQtPnNjaXNzb3Ioc2Npc3NvclgsIHNjaXNzb3JZLCBzY2lzc29y
UmVjdC53aWR0aCgpLCBzY2lzc29yUmVjdC5oZWlnaHQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IGUyNTc1OWQ0ZDc3NmMwNGMyY2I1ZGFiM2ExZGFmY2Uw
OTM1MGE0MzMuLjViOTAwZTQ3MjU3YjhmNjdlMzNjM2FhZDA3Y2U5MGQ3MmU0MmRjZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC04OCw4ICs4OCw5IEBAIHB1YmxpYzoK
ICAgICBib29sIGhhcmR3YXJlQ29tcG9zaXRpbmcoKSBjb25zdCB7IHJldHVybiBtX2hhcmR3YXJl
Q29tcG9zaXRpbmc7IH0KIAogICAgIHZvaWQgc2V0Q29tcG9zaXRlT2Zmc2NyZWVuKGJvb2wpOwot
ICAgIGJvb2wgaXNDb21wb3NpdGluZ09mZnNjcmVlbigpIHsgcmV0dXJuIG1fY29tcG9zaXRlT2Zm
c2NyZWVuOyB9CisgICAgYm9vbCBpc0NvbXBvc2l0aW5nT2Zmc2NyZWVuKCkgY29uc3QgeyByZXR1
cm4gbV9jb21wb3NpdGVPZmZzY3JlZW47IH0KICAgICBMYXllclRleHR1cmUqIGdldE9mZnNjcmVl
bkxheWVyVGV4dHVyZSgpIHsgcmV0dXJuIG1fY29tcG9zaXRlT2Zmc2NyZWVuID8gbV9yb290TGF5
ZXItPm1fcmVuZGVyU3VyZmFjZS0+bV9jb250ZW50c1RleHR1cmUuZ2V0KCkgOiAwOyB9CisgICAg
dm9pZCBjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSgpOwogCiAgICAgdm9pZCBzZXRSb290
TGF5ZXJDYW52YXNTaXplKGNvbnN0IEludFNpemUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCAwNDE1YjY3OWQ4YmU2OGI0NTE5ZjE2OWExMmFlZjM1OGVlMzM1OTE0Li41M2EyZjIx
NGE2MDJhNWQ3NDVlN2QxNGYxZDUyZDEzMGY5NzhlYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDExLTAyLTE3ICBXLiBKYW1lcyBNYWNMZWFuICA8d2pt
YWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBbY2hyb21pdW1dIEFkZCBjb21tYW5kLWxpbmUgZmxhZyB0byBlbmFibGUg
Y29tcG9zaXRlIHRvIG9mZnNjcmVlbiB0ZXh0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIzMTEKKworICAgICAgICBBZGQgcGx1bWJpbmcgdG8g
YWxsb3cgY29tbWFuZC1saW5lIHN3aXRjaCB0byBlbmFibGUgb2Zmc2NyZWVuIGNvbXBvc2l0aW5n
LiBGdW5jdGlvbgorICAgICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW06OmNvcHlPZmZzY3JlZW5U
ZXh0dXJlVG9EaXNwbGF5IHVzZWQgZm9yIG5vdyB0byBtaW1pYworICAgICAgICBub3JtYWwgcmVu
ZGVyZXIgb3BlcmF0aW9uLgorCisgICAgICAgICogcHVibGljL1dlYlNldHRpbmdzLmg6CisgICAg
ICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRp
bmdzSW1wbDo6V2ViU2V0dGluZ3NJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJ
bXBsOjpzZXRDb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKToKKyAgICAgICAgKiBzcmMvV2ViU2V0
dGluZ3NJbXBsLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6Y29tcG9zaXRl
VG9UZXh0dXJlRW5hYmxlZCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRvQ29tcG9zaXRlKToKKwogMjAxMS0wMi0xNyAgUGF2
ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkLCBpbnRlcmFjdGl2ZSB1aSB0ZXN0IGZpeCBmb3Igcjc4ODA4LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKaW5kZXggMjNkZDEzMjE2OGJhZWEyZDFiOWM2
MTk4YmQzZDZmM2RiMzQ4MjYyNC4uYTZiNWJkZTIwODFhOTZjZjU4ZjI4MzRiMWNmZjQ3MjUyZTRl
ODZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGlu
Z3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCkBA
IC05Nyw2ICs5Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0RlYnVnQm9y
ZGVycyhib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEVkaXRpbmdCZWhhdmlvcihFZGl0
aW5nQmVoYXZpb3IpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb21wb3NpdGVUb1Rl
eHR1cmVFbmFibGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRlVG9UZXh0
dXJlRW5hYmxlZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0ZvcjNEVHJhbnNmb3Jtc0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yVmlkZW9FbmFibGVkKGJvb2wpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckNhbnZhc0VuYWJs
ZWQoYm9vbCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2V0dGluZ3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdz
SW1wbC5jcHAKaW5kZXggOGEwNzE0ZGY3YWIyZTk1YTg0NTE5OTVmYTMzNzJmNzljZDgzZDc4YS4u
OWJkNGEzNTBhNTlmYTQyNmQzMmEwNDZkNzk4NjFmMjQwYTU0MWI2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC00Niw2ICs0Niw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJTZXR0aW5nc0ltcGw6OldlYlNldHRpbmdzSW1wbChT
ZXR0aW5ncyogc2V0dGluZ3MpCiAgICAgOiBtX3NldHRpbmdzKHNldHRpbmdzKQorICAgICwgbV9j
b21wb3NpdGVUb1RleHR1cmVFbmFibGVkKGZhbHNlKQogewogICAgIEFTU0VSVChzZXR0aW5ncyk7
CiB9CkBAIC0yOTQsNiArMjk1LDExIEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgbV9zZXR0aW5ncy0+c2V0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKK3ZvaWQgV2ViU2V0
dGluZ3NJbXBsOjpzZXRDb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sK
KyAgICBtX2NvbXBvc2l0ZVRvVGV4dHVyZUVuYWJsZWQgPSBlbmFibGVkOworfQorCiB2b2lkIFdl
YlNldHRpbmdzSW1wbDo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvcjNEVHJhbnNmb3Jtc0Vu
YWJsZWQoYm9vbCBlbmFibGVkKQogewogICAgIG1fc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdGb3IzRFRyYW5zZm9ybXNFbmFibGVkKGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCA4Zjc4NjliMzMxYTZmYmU3ZmUz
NDIzMGUwNjVkZTNiMjYxYzU5MjQ5Li4xMDU2NGFmNTZhMTlhNTNmNGY0MjBkZTNlMDM5ZTUwNzhl
ZTc3Y2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5n
c0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwu
aApAQCAtOTAsNiArOTAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3dEZWJ1
Z0JvcmRlcnMoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEVkaXRpbmdCZWhhdmlvcihFZGl0
aW5nQmVoYXZpb3IpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
RW5hYmxlZChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29tcG9zaXRlVG9UZXh0dXJlRW5h
YmxlZChib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZDsgfQogICAgIHZpcnR1
YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yM0RUcmFuc2Zvcm1zRW5hYmxlZChi
b29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclZpZGVv
RW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0ZvclBsdWdpbnNFbmFibGVkKGJvb2wpOwpAQCAtMTA1LDYgKzEwNyw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBXZWJDb3JlOjpTZXR0aW5ncyogbV9zZXR0aW5nczsKKyAgICBib29sIG1f
Y29tcG9zaXRlVG9UZXh0dXJlRW5hYmxlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDE4YTk1M2Vi
NmNmZTRjNGZmMDZiNjg2YTk3ZTg3NmY4ZmMwNTUzYTQuLmFlOTdiZmE0NzljYTc1ZTk5ZGQ3YjQz
NmVjOTQzZTI5MzhlYTQxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKQEAgLTIzOTMsNyArMjM5MywxMCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkb0NvbXBv
c2l0ZSgpCiAgICAgV2ViVmlld0ltcGxUaWxlUGFpbnRJbnRlcmZhY2UgdGlsZVBhaW50KHRoaXMp
OwogCiAgICAgV2ViVmlld0ltcGxTY3JvbGxiYXJQYWludEludGVyZmFjZSBzY3JvbGxiYXJQYWlu
dCh0aGlzKTsKKyAgICBtX2xheWVyUmVuZGVyZXItPnNldENvbXBvc2l0ZU9mZnNjcmVlbihzZXR0
aW5ncygpLT5jb21wb3NpdGVUb1RleHR1cmVFbmFibGVkKCkpOwogICAgIG1fbGF5ZXJSZW5kZXJl
ci0+ZHJhd0xheWVycyh2aXNpYmxlUmVjdCwgY29udGVudFJlY3QsIHNjcm9sbCwgdGlsZVBhaW50
LCBzY3JvbGxiYXJQYWludCk7CisgICAgaWYgKG1fbGF5ZXJSZW5kZXJlci0+aXNDb21wb3NpdGlu
Z09mZnNjcmVlbigpKQorICAgICAgICBtX2xheWVyUmVuZGVyZXItPmNvcHlPZmZzY3JlZW5UZXh0
dXJlVG9EaXNwbGF5KCk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnJlYWxsb2NhdGVSZW5kZXJl
cigpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>