<?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>87301</bug_id>
          
          <creation_ts>2012-05-23 13:13:53 -0700</creation_ts>
          <short_desc>[chromium] WebLayerTreeViewImpl should not hide methods in CCLayerTreeHost with signatures that match the Client interface</short_desc>
          <delta_ts>2012-05-25 14:49:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>87515</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>backer</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>vollick</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>631953</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-23 13:13:53 -0700</bug_when>
    <thetext>[chromium] Make single-thread proxy tick animations and use the main thread tree host like multi-thread proxy does</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631961</commentid>
    <comment_count>1</comment_count>
      <attachid>143631</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-23 13:18:50 -0700</bug_when>
    <thetext>Created attachment 143631
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631982</commentid>
    <comment_count>2</comment_count>
      <attachid>143631</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-23 13:34:00 -0700</bug_when>
    <thetext>Comment on attachment 143631
Patch

I don&apos;t understand this at all.  content::RenderWidget is calling willBeginFrame()/updateAnimations()/layout() - you want to call them again?  This patch feels incomplete, at a minimum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632019</commentid>
    <comment_count>3</comment_count>
      <attachid>143631</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-05-23 13:56:43 -0700</bug_when>
    <thetext>Comment on attachment 143631
Patch

What does vollick think of this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632032</commentid>
    <comment_count>4</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-23 14:00:53 -0700</bug_when>
    <thetext>Vollick and I debugged this together, but he can speak to it if he likes :)

So, I see RenderWidget is calling layout() directly. I had no idea about that and was just trying to match CCThreadProxy. I&apos;ll remove that.

I put a CRASH() in CCLTH::willBeginFrame() and I&apos;m not seeing that get called either.. but I don&apos;t know the chromium side well at all, so if you think that doesn&apos;t belong I&apos;ll remove that too.

But I think we really need this call to updateAnimations. What I am tracing from RenderWidget is:

RenderWidget calls CCLTH::composite().
This calls CCSingleThreadProxy::compositeImmediately().
This eventually calls CCLTHImpl::animate().

But nothing is currently calling CCLTH::updateAnimations() on the main thread, right? (Putting prints in tickAnimations verified that it never happens on main thread when in single thread mode.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632041</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-23 14:07:04 -0700</bug_when>
    <thetext>Read or step in a debugger through the calls between RenderWidget, WebViewImpl, and CCLayerTreeHost inside of RenderWidget::DoDeferredUpdate - maybe that&apos;ll make things clearer.  I think it is already calling updateAnimations() from WebViewImpl::animate().

It&apos;s important to remember that in threaded mode, the compositor is 100% in charge of frame scheduling and it drives every call.  In single-threaded mode, the responsibility of when to make frames is split across render_widget.cc in the chromium repo, WebViewImpl in WebKit, and CCSingleThreadProxy in the compositor.  This diffusion of responsibilities definitely makes things harder to understand.  It also means that typically adding or removing calls from any one of those components without modifying the others is almost always wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632056</commentid>
    <comment_count>6</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-23 14:23:10 -0700</bug_when>
    <thetext>Ohh, okay thanks. I think I see the problem then.

We have updateAnimations() in the CCLTHClient interface, but also in the CCLTH class, and it&apos;s not a no-op to call the client, like most methods in the Client interface.

WebLayerTreeViewImpl overrides updateAnimations() to implement the client interface, but this blocks CCLTH::updateAnimations() from being called. The right answer here isn&apos;t super obvious to me yet, but thanks for the pointers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632094</commentid>
    <comment_count>7</comment_count>
      <attachid>143659</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-23 15:03:11 -0700</bug_when>
    <thetext>Created attachment 143659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632096</commentid>
    <comment_count>8</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-23 15:04:04 -0700</bug_when>
    <thetext>This approach makes WebLayerTreeViewImpl not implement the CCLTHClient interface itself, so that WebViewImpl can call CCLayerTreeHost::updateAnimations().

We could alternately change the method signature of updateAnimations() on CCLayerTreeHost to not match the client interface, if you&apos;d prefer that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632152</commentid>
    <comment_count>9</comment_count>
      <attachid>143659</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-23 16:10:34 -0700</bug_when>
    <thetext>Comment on attachment 143659
Patch

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

I&apos;m not entirely sure which problem this solves - could you expand a bit?

&gt; Source/WebKit/chromium/src/WebLayerTreeViewImpl.h:46
&gt; +    // Converts messages from CCLayerTreeHostClient to WebLayerTreeViewClient.
&gt; +    class ClientConverter : public WebCore::CCLayerTreeHostClient {

does this have to be in the header (could it be in the cpp)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632175</commentid>
    <comment_count>10</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-23 16:36:01 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 143659 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=143659&amp;action=review
&gt; 
&gt; I&apos;m not entirely sure which problem this solves - could you expand a bit?

Sure. WebViewImpl is calling updateAnimations() on WebLayerTreeView, which calls WebLayerTreeViewImpl. But in this case, it matches the interface for the CCLayerTreeHostClient, and it just forwards the method call on to its own client.

CCLayerTreeHost has an updateAnimations which unfortunately has the same signature as the client, and this method should be called on each commit, before calling updateLayers.

Without calling this, the main thread never ticks (or starts) animations, which means that its view of the world is wrong, and actually takes on the animation target values. If that is a layer sliding off screen, the commit considers the layer to be outside the viewport (and its visibleLayerRect is empty then). So if the layer also invalidates its contents while animating, the main thread does not paint or commit the tiles, causing missing tiles to appear for the animating layer.

Making CCLTH::updateAnimations be called during the commit fixes this all, as the animations tick appropriately, and the first commit with the animations has the starting value of the animation, not the ending value. And each frame the two sides will have the same view of the animations from then on.

It&apos;s really a C++ weirdness since we inherit the function from two places in WebLayerTreeViewImpl, which is bad. No other functions in the client interface do anything useful in the CCLayerTreeHost implementations (it just calls the client). In particular the applyScrollAndScale method appears to be a similar case, but its signature differs from the client in its parameters.

&gt; &gt; Source/WebKit/chromium/src/WebLayerTreeViewImpl.h:46
&gt; &gt; +    // Converts messages from CCLayerTreeHostClient to WebLayerTreeViewClient.
&gt; &gt; +    class ClientConverter : public WebCore::CCLayerTreeHostClient {
&gt; 
&gt; does this have to be in the header (could it be in the cpp)?

I think the WebLayerTreeView needs to hold an instance of the class, so that it can hold the WebLayerTreeViewClient*. So I think it needs to be in the header?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632196</commentid>
    <comment_count>11</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-05-23 16:55:04 -0700</bug_when>
    <thetext>Can&apos;t this fix just be a matter of factoring out the updateAnimations path on cclth to a standalone cclth method. Then, ccthreadproxy and ccsinglethreadproxy can call that in their respective call paths? Better to not tinker with the messed up single thread case and make it more messy...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632241</commentid>
    <comment_count>12</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-23 17:22:56 -0700</bug_when>
    <thetext>Is that equivalent to just removing updateAnimations from the CCLTHClient, and the call to WebLayerTreeView from WebViewImpl when compositing is enabled?  (The client is the ui::Compositor which has an empty method for this.)

I guess that separates the compositing from software code paths a little more which is good/bad/not sure?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632243</commentid>
    <comment_count>13</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-23 17:27:39 -0700</bug_when>
    <thetext>Splitting out the client impl from the WebLayerTreeView impl seems like a generally good thing.  I think Nat and I are a bit more nervous about changing the behavior around of the single threaded path, that&apos;s more scary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632255</commentid>
    <comment_count>14</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-05-23 17:57:03 -0700</bug_when>
    <thetext>I&apos;m fine with fixing the WLTVI, that was a huge mess to begin with and I might even have code that does that. That should be a standalone patch, not part of a bugfix.

Can we just make CCSingleThreadProxy::composite() call up to m_layerTreeHost-&gt;animateLayers()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632281</commentid>
    <comment_count>15</comment_count>
      <attachid>143631</attachid>
    <who name="">vollick</who>
    <bug_when>2012-05-23 18:29:17 -0700</bug_when>
    <thetext>Comment on attachment 143631
Patch

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

(In reply to comment #14)
&gt; Can we just make CCSingleThreadProxy::composite() call up to m_layerTreeHost-&gt;animateLayers()?

This is essentially the solution I&apos;m hoping for, except that it needs to be called before updateLayers() so that the fresh, animated transforms can be used for culling, etc (we saw flashes when we didn&apos;t do this).

In CCThreadProxy, ticking the main thread animations is tied to commits. In CCThreadProxy::beginFrame, there is a call to m_layerTreeHost-&gt;updateAnimations(...) that precedes the call to m_layerTreeHost-&gt;updateLayers(...). I think CCSingleThreadProxy should behave similarly. I&apos;m hoping we can strip down patch set #1 so that the only thing added to commitAndComposite() is the call to updateAnimations. Could that work?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:359
&gt; +    m_layerTreeHost-&gt;updateAnimations(monotonicTime);

Can we nix the calls to willBeginFrame() and layout() here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632287</commentid>
    <comment_count>16</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-23 18:35:02 -0700</bug_when>
    <thetext>I guess we need to remember that WebViewImpl is calling WebLayerTreeViewImpl::animateLayers() also. And if we fix the WLTVI client craziness, then we&apos;d be calling animateLayers() on CCLTH twice. We&apos;d need to remove the call from WebViewImpl, if/when we fixed WLVHI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632313</commentid>
    <comment_count>17</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-05-23 19:12:17 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; I guess we need to remember that WebViewImpl is calling WebLayerTreeViewImpl::animateLayers() also. And if we fix the WLTVI client craziness, then we&apos;d be calling animateLayers() on CCLTH twice. We&apos;d need to remove the call from WebViewImpl, if/when we fixed WLVHI.

Good point. If the fix for WLVHI ensures that updateAnimations is called before CCSingleThreadProxy::compositeImmediately (and it sounds like it might), then this is moot, but I think it&apos;s safe to tick the layer animations in both places (it should just freshen opacities and transforms). Nat suggested calling directly CCLTH::animateLayers directly. That seems safer than updateAnimations. What would you think of that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632861</commentid>
    <comment_count>18</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-24 09:09:50 -0700</bug_when>
    <thetext>If we move the updateAnimations() into CCSingleThreadProxy::commitAndComposite() it changes the call ordering. Current code always calls updateAnimations() -&gt; layout() -&gt; updateLayers().

If we move it to commitAndComposite() suddenly we are calling layout() -&gt; updateAnimations() -&gt; updateLayers(). Probably this isn&apos;t so good..

If we just fix the shadowing in WLTVI, then things are called in the correct order still. Or we could add another method on CCLayerTreeHost to do the animation step explicitly.. but that seems like what we already have?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632979</commentid>
    <comment_count>19</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-24 11:23:57 -0700</bug_when>
    <thetext>This bug title sounds like it&apos;s just about a code smell (shadowing functions).  The recent set of comments appear to be about changing behavior around.  Which is this patch doing?  Can we please put the discussion of behavior changes on a bug that describes a problem the behavior changes are intended to solve?  I still don&apos;t understand exactly what the goal is here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632997</commentid>
    <comment_count>20</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-24 11:35:24 -0700</bug_when>
    <thetext>Right, I&apos;m a bit confused too.

The patch stops shadowing functions, which makes CCLayerTreeHost::updateAnimations start getting used by WebViewImpl. We can rename it to something like that, if more appropriate?

The original bug is that updateAnimations is not called. And that is because m_layerTreeView.updateAnimations() gets shadowed by WLTVI.

So if we stop shadowing, the original bug goes away, while fixing the code weirdness.

So let&apos;s keep this about the shadowing.. and then refactor or change how updateAnimations is called in separate conversations?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633095</commentid>
    <comment_count>21</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-05-24 13:07:55 -0700</bug_when>
    <thetext>I buy it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633098</commentid>
    <comment_count>22</comment_count>
      <attachid>143659</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-05-24 13:08:24 -0700</bug_when>
    <thetext>Comment on attachment 143659
Patch

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

&gt;&gt;&gt; Source/WebKit/chromium/src/WebLayerTreeViewImpl.h:46
&gt;&gt;&gt; +    class ClientConverter : public WebCore::CCLayerTreeHostClient {
&gt;&gt; 
&gt;&gt; does this have to be in the header (could it be in the cpp)?
&gt; 
&gt; I think the WebLayerTreeView needs to hold an instance of the class, so that it can hold the WebLayerTreeViewClient*. So I think it needs to be in the header?

Nit: We&apos;ve been calling these adapters. Also, we typically just declare these as non-nested classes then put the full implementation in the cpp. E.g. just say class CCLayerTreeViewToWebLayerTreViewImplCientAdapter, have an ownptr which is the adapter, then in the impl you can have the full implementation and implement the client functions directly in the class declaration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633099</commentid>
    <comment_count>23</comment_count>
      <attachid>143659</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-24 13:09:40 -0700</bug_when>
    <thetext>Comment on attachment 143659
Patch

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

R=me

We chatted offline about this.  The problem today the call sequence looks like:

WebViewImpl -&gt; WebLayerTreeView::updateAnimations() -&gt; WebLayerTreeViewImpl::updateAnimations() -&gt; WebLayerTreeViewClient::updateAnimations() -&gt; WebViewImpl::updateAnimations()

essentially it&apos;s short-circuiting in WLTVI.  This is a problem because CCLayerTreeHost::updateAnimations isn&apos;t called, so CCLTH::m_animating is not set and CCLTH::animateLayers() is not called.  CCLTH::animateLayers() updates the main-thread animated state of layers, which isn&apos;t what is drawn (that&apos;s the impl-thread animated state of layers) but is what determines painting / uploading.

With this patch the call sequence becomes:

WebViewImpl -&gt; WebLayerTreeView::updateAnimations() -&gt; WebLayerTreeViewImpl::updateAnimations() -&gt; CCLayerTreeHost::updateAnimations() -&gt; CCLayerTreeHostClient::updateAnimations() -&gt; WebLayerTreeViewImpl::ClientConverter::updateAnimations() -&gt; WebLayerTreeViewClient::updateAnimations() -&gt; WebViewImpl::updateAnimations()

for the win!

&gt;&gt;&gt; Source/WebKit/chromium/src/WebLayerTreeViewImpl.h:46
&gt;&gt;&gt; +    class ClientConverter : public WebCore::CCLayerTreeHostClient {
&gt;&gt; 
&gt;&gt; does this have to be in the header (could it be in the cpp)?
&gt; 
&gt; I think the WebLayerTreeView needs to hold an instance of the class, so that it can hold the WebLayerTreeViewClient*. So I think it needs to be in the header?

WebLayerTreeViewImpl could just have an OwnPtr&lt;ClientConverter&gt; to not need to see the definition, but it&apos;s a minor thing.

Our typical naming for this sort of type is &quot;...Adapter&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633341</commentid>
    <comment_count>24</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-24 16:23:36 -0700</bug_when>
    <thetext>Hmm. If I make the client adapter an OwnPtr in the WLTVI, then I have no pointer to pass to the CCLTH constructor from the WLTVI constructor yet. I think the choices are keep it in the header, or change CCLTH constructor to not take a client*, and add a setClient()?

static PassOwnPtr&lt;CCLayerTreeHost&gt; create(CCLayerTreeHostClient*, const CCSettings&amp;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633356</commentid>
    <comment_count>25</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-24 16:38:14 -0700</bug_when>
    <thetext>Ian brought up a good point, in that it doesn&apos;t seem that updateAnimations() is *always* called before commit, and he was concerned that might cause flashing for all of the same reasons. If an animation starts but we draw a frame before we decide to call updateAnimations, layers have the wrong values on the main thread and we commit the wrong tiles.

I double checked this and sure enough, going to http://html5-demos.appspot.com/static/html5-whats-new/template/index.html#5 and pressing right-left-right-left-right-left keys enough times, you eventually see the tiles disappear with a flash before reappearing.

If we&apos;re going to updateAnimations from RenderWidget at all, then I think this is change still right, and we can worry about changing how we call animate() in RenderWidget in another bug.

But I&apos;d like to verify that this is the right path to be taking before I submit this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633372</commentid>
    <comment_count>26</comment_count>
      <attachid>143927</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-24 16:48:15 -0700</bug_when>
    <thetext>Created attachment 143927
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633386</commentid>
    <comment_count>27</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-05-24 17:00:17 -0700</bug_when>
    <thetext>Mmh, lifetime issues: When the WLTVI gets destructed, the m_clientConverter is destroyed before the CCLayerTreeHost destructor runs. If it calls the client from there, (e.g. as a side effect of dropping the last reference on the root, which will destroy it, which may try to trigger a commit), we&apos;re going to access a destroyed object.

Now that I&apos;m thinking of it, it&apos;s probably a theoretical problem in the current code, actually, but we&apos;re lucky in practice because &quot;destroying&quot; a pod is a noop?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633435</commentid>
    <comment_count>28</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-24 18:24:46 -0700</bug_when>
    <thetext>Hm, yeh I&apos;ll add setClient() to CCLTH I guess, then we can setClient(0) in the destructor here, and move the Adapter into the .cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633437</commentid>
    <comment_count>29</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-05-24 18:28:14 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; Mmh, lifetime issues: When the WLTVI gets destructed, the m_clientConverter is destroyed before the CCLayerTreeHost destructor runs. If it calls the client from there, (e.g. as a side effect of dropping the last reference on the root, which will destroy it, which may try to trigger a commit), we&apos;re going to access a destroyed object.
You can fix this by making the WLTVI own a CCLTH instead of being a CCLTHI. I think thats much cleaner anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633441</commentid>
    <comment_count>30</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-05-24 18:30:15 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; Hm, yeh I&apos;ll add setClient() to CCLTH I guess, then we can setClient(0) in the destructor here, and move the Adapter into the .cpp.

That means we have to null check all client calls :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633948</commentid>
    <comment_count>31</comment_count>
      <attachid>144075</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-25 08:23:00 -0700</bug_when>
    <thetext>Created attachment 144075
Patch

ok! The patch is a little bigger.. but ownership/lifetime issues resolved.

- WebLayerTreeViewImpl owns a CCLayerTreeHost.
- WebLTVI calls CCLTH::create() now so it does not need to call initialize() itself.
- Moved the ClientAdapter into the WLTVI.cpp
- Expose the CCLTH on WLTVI and call methods on it directly in WebLayerTreeView.

@jamesr Could you please take another look at this one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634022</commentid>
    <comment_count>32</comment_count>
      <attachid>144075</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-05-25 10:15:56 -0700</bug_when>
    <thetext>Comment on attachment 144075
Patch

nicely done. /me likes this incarnation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634171</commentid>
    <comment_count>33</comment_count>
      <attachid>144075</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-25 12:25:44 -0700</bug_when>
    <thetext>Comment on attachment 144075
Patch

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

Looks good.  Not setting cq? since it seems this version doesn&apos;t apply cleanly.

&gt; Source/WebKit/chromium/src/WebLayerTreeViewImpl.h:53
&gt; +    OwnPtr&lt;WebLayerTreeViewClientAdapter&gt; m_clientAdapter;
&gt; +    OwnPtr&lt;WebCore::CCLayerTreeHost&gt; m_layerTreeHost;

If you flip the declaration order of these the CCLTH will die before the clientAdapter without needing any code in the d&apos;tor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634198</commentid>
    <comment_count>34</comment_count>
      <attachid>144075</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-25 12:46:58 -0700</bug_when>
    <thetext>Comment on attachment 144075
Patch

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

thanks!

&gt;&gt; Source/WebKit/chromium/src/WebLayerTreeViewImpl.h:53
&gt;&gt; +    OwnPtr&lt;WebCore::CCLayerTreeHost&gt; m_layerTreeHost;
&gt; 
&gt; If you flip the declaration order of these the CCLTH will die before the clientAdapter without needing any code in the d&apos;tor

But then I have to initialize the layerTreeHost first, and it wants the m_clientAdapter&apos;s pointer right? I think it needs to be in this order for the constructor :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634206</commentid>
    <comment_count>35</comment_count>
      <attachid>144130</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-25 12:59:39 -0700</bug_when>
    <thetext>Created attachment 144130
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634246</commentid>
    <comment_count>36</comment_count>
      <attachid>144075</attachid>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-05-25 13:30:22 -0700</bug_when>
    <thetext>Comment on attachment 144075
Patch

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

&gt;&gt;&gt; Source/WebKit/chromium/src/WebLayerTreeViewImpl.h:53
&gt;&gt;&gt; +    OwnPtr&lt;WebCore::CCLayerTreeHost&gt; m_layerTreeHost;
&gt;&gt; 
&gt;&gt; If you flip the declaration order of these the CCLTH will die before the clientAdapter without needing any code in the d&apos;tor
&gt; 
&gt; But then I have to initialize the layerTreeHost first, and it wants the m_clientAdapter&apos;s pointer right? I think it needs to be in this order for the constructor :/

Err, aren&apos;t fields destroyed in the opposite order of the construction? This looks correct to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634248</commentid>
    <comment_count>37</comment_count>
      <attachid>144130</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-25 13:31:56 -0700</bug_when>
    <thetext>Comment on attachment 144130
Patch for landing

Oooh. then i can remove the clear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634249</commentid>
    <comment_count>38</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-25 13:33:46 -0700</bug_when>
    <thetext>Here&apos;s the reference http://msdn.microsoft.com/en-us/library/8183zf3x(v=vs.80).aspx thanks to piman</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634252</commentid>
    <comment_count>39</comment_count>
      <attachid>144138</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-05-25 13:37:17 -0700</bug_when>
    <thetext>Created attachment 144138
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634285</commentid>
    <comment_count>40</comment_count>
      <attachid>144138</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-25 14:28:43 -0700</bug_when>
    <thetext>Comment on attachment 144138
Patch for landing

Clearing flags on attachment: 144138

Committed r118563: &lt;http://trac.webkit.org/changeset/118563&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634286</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-25 14:28:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634306</commentid>
    <comment_count>42</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-25 14:49:44 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; (From update of attachment 144075 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=144075&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit/chromium/src/WebLayerTreeViewImpl.h:53
&gt; &gt;&gt;&gt; +    OwnPtr&lt;WebCore::CCLayerTreeHost&gt; m_layerTreeHost;
&gt; &gt;&gt; 
&gt; &gt;&gt; If you flip the declaration order of these the CCLTH will die before the clientAdapter without needing any code in the d&apos;tor
&gt; &gt; 
&gt; &gt; But then I have to initialize the layerTreeHost first, and it wants the m_clientAdapter&apos;s pointer right? I think it needs to be in this order for the constructor :/
&gt; 
&gt; Err, aren&apos;t fields destroyed in the opposite order of the construction? This looks correct to me.

That&apos;s right, I fail at reading.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143631</attachid>
            <date>2012-05-23 13:18:50 -0700</date>
            <delta_ts>2012-05-23 18:29:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87301-20120523161848.patch</filename>
            <type>text/plain</type>
            <size>5717</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmM3N2IyNDg1MWM5Y2Jh
MzlkOTYwNGNiNDYxMWI4MGUxMjdkZDUxMS4uN2JjNjNiMDJhNjU2N2ZiMjc4YTcxZDFhYjJiNzdi
N2Q2NzFmYzNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA1LTIzICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFr
ZSBzaW5nbGUtdGhyZWFkIHByb3h5IHRpY2sgYW5pbWF0aW9ucyBhbmQgdXNlIHRoZSBtYWluIHRo
cmVhZCB0cmVlIGhvc3QgbGlrZSBtdWx0aS10aHJlYWQgcHJveHkgZG9lcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODczMDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWZvcmUgY2FsbGluZyB1cGRhdGVM
YXllcnMoKSBvbiB0aGUgbWFpbiB0aHJlYWQsIHRoZSBDQ1RocmVhZFByb3h5CisgICAgICAgIGNh
bGxzIGluIG9yZGVyOiB3aWxsQmVnaW5GcmFtZSgpLCB1cGRhdGVBbmltYXRpb25zKCkgYW5kIGxh
eW91dCgpLCBhbGwKKyAgICAgICAgb24gdGhlIENDTGF5ZXJUcmVlSG9zdC4KKworICAgICAgICBD
dXJyZW50bHkgdGhlIENDU2luZ2xlVGhyZWFkUHJveHkgaWdub3JlcyBhbGwgdGhlc2UgZnVuY3Rp
b25zLCB0aGlzCisgICAgICAgIHByZXZlbnRzIHVzIGZyb20gdGlja2luZyBhY2NlbGVyYXRlZCBh
bmltYXRpb25zIG9uIHRoZSBtYWluIHRocmVhZAorICAgICAgICB3aGVuIGluIHNpbmdsZS10aHJl
YWQgbW9kZSwgY2F1c2luZyBwYWludGluZyBlcnJvcnMgZHVlIHRvIGluY29ycmVjdAorICAgICAg
ICB2aXNpYmxlTGF5ZXJSZWN0cywgYW5kIG1ha2luZyBiZWhhdmlvdXIgaW5jb25zaXN0ZW50IGZv
cgorICAgICAgICBzaW5nbGUtdGhyZWFkZWQgdGVzdHMuCisKKyAgICAgICAgQ2hyb211aW0gYnVn
OiBodHRwOi8vY3JidWcuY29tLzEyMzA5MAorCisgICAgICAgIFVuaXQgdGVzdDogQ0NMYXllclRy
ZWVIb3N0VGVzdEFkZEFuaW1hdGlvbi5ydW5TaW5nbGVUaHJlYWQKKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0QW5kQ29tcG9zaXRlKToKKwog
MjAxMi0wNS0yMyAgQW5kcmVpIEJ1Y3VyICA8YWJ1Y3VyQGFkb2JlLmNvbT4KIAogICAgICAgICBb
Q1NTUmVnaW9uc11JbXBsZW1lbnQgTmFtZWRGbG93OjpuYW1lIGF0dHJpYnV0ZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCBmNTlmODQ3YTYxNWY0NTQ3ODIzYzVhOGFhNWEwNGM3MjVlOGYy
MDJiLi5hMTcyNmYzMTFkNzljZWEzNTgyOWJiN2ZjMTU0NjY5NWJkMWMxNTg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA1LTIzICBEYW5hIEphbnNl
bnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBzaW5n
bGUtdGhyZWFkIHByb3h5IHRpY2sgYW5pbWF0aW9ucyBhbmQgdXNlIHRoZSBtYWluIHRocmVhZCB0
cmVlIGhvc3QgbGlrZSBtdWx0aS10aHJlYWQgcHJveHkgZG9lcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODczMDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3Qu
Y3BwOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdEFk
ZEFuaW1hdGlvbjo6Q0NMYXllclRyZWVIb3N0VGVzdEFkZEFuaW1hdGlvbik6CisgICAgICAgIChX
VEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBZGRBbmltYXRpb246OnVwZGF0ZUFuaW1hdGlvbnMpOgor
ICAgICAgICAoQ0NMYXllclRyZWVIb3N0VGVzdEFkZEFuaW1hdGlvbik6CisgICAgICAgIChXVEY6
OkNDTGF5ZXJUcmVlSG9zdFRlc3RBZGRBbmltYXRpb246OmRpZENvbW1pdEFuZERyYXdGcmFtZSk6
CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RBZGRBbmltYXRpb246OmFuaW1hdGVM
YXllcnMpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QWRkQW5pbWF0aW9uOjph
ZnRlclRlc3QpOgorCiAyMDEyLTA1LTIyICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xl
LmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIEFwcGx5IHZpZXdwb3J0IHRhZyBpbml0aWFsLXNj
YWxlIG9ubHkgb25jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRl
eCAzYTBiMWU3OGRmNzI5ZDFjNDliZTdmNWEzZjk2Njc3ODJkODFiYTkzLi42ZWZiMjA4NzJjYzVl
ZWE0MTEzNTBlNWM4NjA1NTNjZWIxN2ZjYWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmNwcApAQCAtMzUzLDYgKzM1MywxMiBAQCBib29sIENDU2luZ2xlVGhyZWFkUHJv
eHk6OmNvbW1pdEFuZENvbXBvc2l0ZSgpCiAKICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7
CiAKKyAgICBtX2xheWVyVHJlZUhvc3QtPndpbGxCZWdpbkZyYW1lKCk7CisKKyAgICBkb3VibGUg
bW9ub3RvbmljVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgIG1fbGF5
ZXJUcmVlSG9zdC0+dXBkYXRlQW5pbWF0aW9ucyhtb25vdG9uaWNUaW1lKTsKKyAgICBtX2xheWVy
VHJlZUhvc3QtPmxheW91dCgpOworCiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxh
eWVycyh1cGRhdGVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCAyMWQ5
ZWQ1ZmM5MTA2MDg4ZWY3NzQzMjE5ZDVlOTNkN2Q0MDBlYzIxLi4wMDkwMGNmNTMyNWEwN2Q4Nzc3
NjI3NGUwMDExZDRiODJkOGZjZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTExNDcsMTEgKzExNDcsMTQgQEAg
VEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RTZXROZWVkc0FuaW1hdGVJbnNpZGVBbmltYXRpb25D
YWxsYmFjaywgcnVuTXVsdGlUaHJlYWQKIH0KIAogLy8gQWRkIGEgbGF5ZXIgYW5pbWF0aW9uIGFu
ZCBjb25maXJtIHRoYXQgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVycyBkb2VzIGdl
dAotLy8gY2FsbGVkIGFuZCBjb250aW51ZXMgdG8gZ2V0IGNhbGxlZC4KKy8vIGNhbGxlZCBhbmQg
Y29udGludWVzIHRvIGdldCBjYWxsZWQuIEFsc28gdGVzdHMgdGhhdAorLy8gQ0NMYXllclRyZWVI
b3N0Ojp1cGRhdGVBbmltYXRpb25zIGlzIGNhbGxlZC4KIGNsYXNzIENDTGF5ZXJUcmVlSG9zdFRl
c3RBZGRBbmltYXRpb24gOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdFRocmVhZE9ubHkgewog
cHVibGljOgogICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RBZGRBbmltYXRpb24oKQogICAgICAgICA6
IG1fbnVtQW5pbWF0ZXMoMCkKKyAgICAgICAgLCBtX251bVVwZGF0ZXMoMCkKKyAgICAgICAgLCBt
X251bUNvbW1pdHMoMCkKICAgICAgICAgLCBtX3JlY2VpdmVkQW5pbWF0aW9uU3RhcnRlZE5vdGlm
aWNhdGlvbihmYWxzZSkKICAgICAgICAgLCBtX3N0YXJ0VGltZSgwKQogICAgICAgICAsIG1fZmly
c3RNb25vdG9uaWNUaW1lKDApCkBAIC0xMTYzLDggKzExNjYsMjEgQEAgcHVibGljOgogICAgICAg
ICBwb3N0QWRkSW5zdGFudEFuaW1hdGlvblRvTWFpblRocmVhZCgpOwogICAgIH0KIAorICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKQorICAgIHsK
KyAgICAgICAgbV9udW1VcGRhdGVzKys7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZENv
bW1pdEFuZERyYXdGcmFtZSgpCisgICAgeworICAgICAgICBtX251bUNvbW1pdHMrKzsKKyAgICB9
CisKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUxheWVycyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBs
YXllclRyZWVIb3N0SW1wbCwgZG91YmxlIG1vbm90b25pY1RpbWUpCiAgICAgeworICAgICAgICAv
LyBXZSBzaG91bGQgaGF2ZSB1cGRhdGVkIHRoZSBtYWluIHRocmVhZCBhbmltYXRpb25zIGJlZm9y
ZSBnZXR0aW5nIGhlcmUgb24gaW1wbC4KKyAgICAgICAgRVhQRUNUX1RSVUUobV9udW1VcGRhdGVz
KTsKKwogICAgICAgICBpZiAoIW1fbnVtQW5pbWF0ZXMpIHsKICAgICAgICAgICAgIC8vIFRoZSBh
bmltYXRpb24gaGFkIHplcm8gZHVyYXRpb24gc28gbGF5ZXJUcmVlSG9zdEltcGwgc2hvdWxkIG5v
CiAgICAgICAgICAgICAvLyBsb25nZXIgbmVlZCB0byBhbmltYXRlIGl0cyBsYXllcnMuCkBAIC0x
MTg4LDE5ICsxMjA0LDIxIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3Qo
KQogICAgIHsKKyAgICAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgdXBkYXRlZCB0aGUgbWFpbiB0aHJl
YWQgYW5pbWF0aW9ucyBldmVyeSBjb21taXQuCisgICAgICAgIEVYUEVDVF9FUShtX251bUNvbW1p
dHMsIG1fbnVtVXBkYXRlcyk7CiAgICAgfQogCiBwcml2YXRlOgogICAgIGludCBtX251bUFuaW1h
dGVzOworICAgIGludCBtX251bVVwZGF0ZXM7CisgICAgaW50IG1fbnVtQ29tbWl0czsKKyAgICBp
bnQgbV9udW1VcGRhdGVzUHJldmlvdXNGcmFtZTsKICAgICBib29sIG1fcmVjZWl2ZWRBbmltYXRp
b25TdGFydGVkTm90aWZpY2F0aW9uOwogICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKICAgICBkb3Vi
bGUgbV9maXJzdE1vbm90b25pY1RpbWU7CiB9OwogCi1URVNUX0YoQ0NMYXllclRyZWVIb3N0VGVz
dEFkZEFuaW1hdGlvbiwgcnVuTXVsdGlUaHJlYWQpCi17Ci0gICAgcnVuVGVzdFRocmVhZGVkKCk7
Ci19CitTSU5HTEVfQU5EX01VTFRJX1RIUkVBRF9URVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdEFk
ZEFuaW1hdGlvbikKIAogLy8gRW5zdXJlcyB0aGF0IGFuaW1hdGlvbnMgY29udGludWUgdG8gYmUg
dGlja2VkIHdoZW4gd2UgYXJlIGJhY2tncm91bmRlZC4KIGNsYXNzIENDTGF5ZXJUcmVlSG9zdFRl
c3RUaWNrQW5pbWF0aW9uV2hpbGVCYWNrZ3JvdW5kZWQgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0
VGVzdFRocmVhZE9ubHkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143659</attachid>
            <date>2012-05-23 15:03:11 -0700</date>
            <delta_ts>2012-05-24 16:48:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87301-20120523180310.patch</filename>
            <type>text/plain</type>
            <size>8514</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGY1OWY4NDdhNjE1ZjQ1NDc4MjNjNWE4YWE1YTA0YzcyNWU4ZjIwMmIuLjcyYzVkNWE2YTU5YzQy
OGYxOGJhNmVhYzVlZTE1MGJhZDk5YWViMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDUgQEAKKzIwMTItMDUtMjMgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBXZWJMYXllclRyZWVWaWV3SW1wbCBzaG91bGQg
bm90IGhpZGUgbWV0aG9kcyBpbiBDQ0xheWVyVHJlZUhvc3Qgd2l0aCBzaWduYXR1cmVzIHRoYXQg
bWF0Y2ggdGhlIENsaWVudCBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg3MzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTW9zdCBtZXRob2RzIGluIHRoZSBDQ0xheWVyVHJlZUhvc3RDbGll
bnQgaW50ZXJmYWNlIGhhdmUgYSBtYXRjaGluZworICAgICAgICBtZXRob2Qgc2lnbmF0dXJlIG9u
IENDTGF5ZXJUcmVlSG9zdCB0aGF0IHNpbXBseSBjYWxscyB0aGUgY2xpZW50LCBpZgorICAgICAg
ICBvbmUgZXhpc3RzIGF0IGFsbC4gSG93ZXZlciwgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVBbmlt
YXRpb25zKCkgZG9lcworICAgICAgICBpbXBvcnRhbnQgd29yayBpbiBhZGRpdGlvbiB0byBjYWxs
aW5nIHRoZSBjbGllbnQuCisKKyAgICAgICAgQ3VycmVudGx5IFdlYkxheWVyVHJlZVZpZXdJbXBs
IGl0c2VsZiBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UgZm9yCisgICAgICAgIENDTGF5ZXJUcmVl
SG9zdENsaWVudCBhcyB3ZWxsIGFzIENDTGF5ZXJUcmVlSG9zdCwgYW5kIHNpbXBseSBmb3J3YXJk
cworICAgICAgICBhbnkgY2FsbCB0byBhIG1ldGhvZCBpbiB0aGUgY2xpZW50IGludGVyZmFjZSB0
byBpdHMgb3duIGNsaWVudC4gVGhpcworICAgICAgICBibG9ja3MgV2ViVmlld0ltcGwgZnJvbSBj
YWxsaW5nIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQW5pbWF0aW9ucywgc2luY2UKKyAgICAgICAg
dGhlIG1ldGhvZCBpcyBhbHNvIGluIHRoZSBjbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgIFdl
IGNoYW5nZSBXZWJMYXllclRyZWVWaWV3SW1wbCB0byBub3Qgb3ZlcnJpZGUgdGhlIGNsaWVudCBp
bnRlcmZhY2UKKyAgICAgICAgaXRzZWxmLCBidXQgdG8gdXNlIGEgaGVscGVyIGNsYXNzIGluc3Rl
YWQuIFRoaXMgbGVhdmVzIHRoZSBtZXRob2RzCisgICAgICAgIGluIENDTGF5ZXJUcmVlSG9zdCBh
Y2Nlc3NpYmxlLgorCisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OldlYkxheWVyVHJlZVZpZXdJbXBs
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OkNsaWVudENvbnZlcnRl
cjo6fkNsaWVudENvbnZlcnRlcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6Q2xpZW50Q29udmVydGVyOjp3aWxsQmVnaW5GcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpDbGllbnRDb252ZXJ0ZXI6
OnVwZGF0ZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1w
bDo6Q2xpZW50Q29udmVydGVyOjpsYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRy
ZWVWaWV3SW1wbDo6Q2xpZW50Q29udmVydGVyOjphcHBseVNjcm9sbEFuZFNjYWxlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OkNsaWVudENvbnZlcnRlcjo6Y3JlYXRl
Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpDbGllbnRD
b252ZXJ0ZXI6OmRpZFJlY3JlYXRlQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
VHJlZVZpZXdJbXBsOjpDbGllbnRDb252ZXJ0ZXI6OmRpZENvbW1pdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpDbGllbnRDb252ZXJ0ZXI6OmRpZENvbW1pdEFuZERy
YXdGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpDbGllbnRD
b252ZXJ0ZXI6OmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJM
YXllclRyZWVWaWV3SW1wbDo6Q2xpZW50Q29udmVydGVyOjpzY2hlZHVsZUNvbXBvc2l0ZSk6Cisg
ICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmg6CisgICAgICAgIChXZWJMYXllclRy
ZWVWaWV3SW1wbCk6CisgICAgICAgIChDbGllbnRDb252ZXJ0ZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6Q2xpZW50Q29udmVydGVyOjpDbGllbnRDb252ZXJ0ZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6Q2xpZW50Q29udmVydGVy
OjpzZXRDbGllbnQpOgorCiAyMDEyLTA1LTIyICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIEFwcGx5IHZpZXdwb3J0IHRhZyBpbml0aWFs
LXNjYWxlIG9ubHkgb25jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
TGF5ZXJUcmVlVmlld0ltcGwuY3BwCmluZGV4IDE2MWY5ZTkzMjJmN2IxN2FlNzkxMjQyMGM3MDk3
OWUzZTRjYWE3MTQuLjQ1NzE3ZDliMjFhY2RlYjZkZjllM2EyNTExMzY2N2Q2NjM2OWRjODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1w
bC5jcHAKQEAgLTUxLDM2ICs1MSw0MCBAQCBQYXNzT3duUHRyPFdlYkxheWVyVHJlZVZpZXdJbXBs
PiBXZWJMYXllclRyZWVWaWV3SW1wbDo6Y3JlYXRlKFdlYkxheWVyVHJlZVZpZXdDbAogfQogCiBX
ZWJMYXllclRyZWVWaWV3SW1wbDo6V2ViTGF5ZXJUcmVlVmlld0ltcGwoV2ViTGF5ZXJUcmVlVmll
d0NsaWVudCogY2xpZW50LCBjb25zdCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncyYgc2V0dGlu
Z3MpIAotICAgIDogQ0NMYXllclRyZWVIb3N0KHRoaXMsIHNldHRpbmdzKQotICAgICwgbV9jbGll
bnQoY2xpZW50KQorICAgIDogQ0NMYXllclRyZWVIb3N0KCZtX2NsaWVudENvbnZlcnRlciwgc2V0
dGluZ3MpCiB7CisgICAgbV9jbGllbnRDb252ZXJ0ZXIuc2V0Q2xpZW50KGNsaWVudCk7CiB9CiAK
IFdlYkxheWVyVHJlZVZpZXdJbXBsOjp+V2ViTGF5ZXJUcmVlVmlld0ltcGwoKQogewogfQogCi12
b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjp3aWxsQmVnaW5GcmFtZSgpCitXZWJMYXllclRyZWVW
aWV3SW1wbDo6Q2xpZW50Q29udmVydGVyOjp+Q2xpZW50Q29udmVydGVyKCkKK3sKK30KKwordm9p
ZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6Q2xpZW50Q29udmVydGVyOjp3aWxsQmVnaW5GcmFtZSgp
CiB7CiAgICAgbV9jbGllbnQtPndpbGxCZWdpbkZyYW1lKCk7CiB9CiAKLXZvaWQgV2ViTGF5ZXJU
cmVlVmlld0ltcGw6OnVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5U
aW1lKQordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6Q2xpZW50Q29udmVydGVyOjp1cGRhdGVB
bmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSkKIHsKICAgICBtX2NsaWVu
dC0+dXBkYXRlQW5pbWF0aW9ucyhtb25vdG9uaWNGcmFtZUJlZ2luVGltZSk7CiB9CiAKLXZvaWQg
V2ViTGF5ZXJUcmVlVmlld0ltcGw6OmxheW91dCgpCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBs
OjpDbGllbnRDb252ZXJ0ZXI6OmxheW91dCgpCiB7CiAgICAgbV9jbGllbnQtPmxheW91dCgpOwog
fQogCi12b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjphcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbGUpCit2b2lkIFdl
YkxheWVyVHJlZVZpZXdJbXBsOjpDbGllbnRDb252ZXJ0ZXI6OmFwcGx5U2Nyb2xsQW5kU2NhbGUo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSkKIHsK
ICAgICBtX2NsaWVudC0+YXBwbHlTY3JvbGxBbmRTY2FsZShXZWJTaXplKHNjcm9sbERlbHRhKSwg
cGFnZVNjYWxlKTsKIH0KIAotUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gV2ViTGF5ZXJU
cmVlVmlld0ltcGw6OmNyZWF0ZUNvbnRleHQoKQorUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gV2ViTGF5ZXJUcmVlVmlld0ltcGw6OkNsaWVudENvbnZlcnRlcjo6Y3JlYXRlQ29udGV4dCgp
CiB7CiAgICAgT3duUHRyPFdlYkdyYXBoaWNzQ29udGV4dDNEPiB3ZWJDb250ZXh0ID0gYWRvcHRQ
dHIobV9jbGllbnQtPmNyZWF0ZUNvbnRleHQzRCgpKTsKICAgICBpZiAoIXdlYkNvbnRleHQpCkBA
IC04OSwyNyArOTMsMjcgQEAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gV2ViTGF5ZXJU
cmVlVmlld0ltcGw6OmNyZWF0ZUNvbnRleHQoKQogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KHdlYkNvbnRleHQu
cmVsZWFzZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cs
IGZhbHNlIC8qIHByZXNlcnZlRHJhd2luZ0J1ZmZlciAqLyApOwogfQogCi12b2lkIFdlYkxheWVy
VHJlZVZpZXdJbXBsOjpkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNjZXNzKQordm9pZCBXZWJM
YXllclRyZWVWaWV3SW1wbDo6Q2xpZW50Q29udmVydGVyOjpkaWRSZWNyZWF0ZUNvbnRleHQoYm9v
bCBzdWNjZXNzKQogewogICAgIG1fY2xpZW50LT5kaWRSZWJpbmRHcmFwaGljc0NvbnRleHQoc3Vj
Y2Vzcyk7CiB9CiAKLXZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmRpZENvbW1pdCgpCit2b2lk
IFdlYkxheWVyVHJlZVZpZXdJbXBsOjpDbGllbnRDb252ZXJ0ZXI6OmRpZENvbW1pdCgpCiB7CiAg
ICAgbV9jbGllbnQtPmRpZENvbW1pdCgpOwogfQogCi12b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBs
OjpkaWRDb21taXRBbmREcmF3RnJhbWUoKQordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6Q2xp
ZW50Q29udmVydGVyOjpkaWRDb21taXRBbmREcmF3RnJhbWUoKQogewogICAgIG1fY2xpZW50LT5k
aWRDb21taXRBbmREcmF3RnJhbWUoKTsKIH0KIAotdm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6
ZGlkQ29tcGxldGVTd2FwQnVmZmVycygpCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpDbGll
bnRDb252ZXJ0ZXI6OmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKQogewogICAgIG1fY2xpZW50LT5k
aWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7CiB9CiAKLXZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6
OnNjaGVkdWxlQ29tcG9zaXRlKCkKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OkNsaWVudENv
bnZlcnRlcjo6c2NoZWR1bGVDb21wb3NpdGUoKQogewogICAgIG1fY2xpZW50LT5zY2hlZHVsZUNv
bXBvc2l0ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
TGF5ZXJUcmVlVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVy
VHJlZVZpZXdJbXBsLmgKaW5kZXggZGNkM2UyOTI1MmNlM2ZmNjVhYzZlM2Q1NGQwNDMyNzRiZmZm
MWM5ZS4uNWJlNzFmZWFjMTdjYWQ1MmUyYjlmYWU0OTA1NWI5Nzk1MjBhMzdlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oCkBAIC0z
NCwyOCArMzQsNDAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJMYXllcjsKIGNsYXNz
IFdlYkxheWVyVHJlZVZpZXdDbGllbnQ7CiAKLWNsYXNzIFdlYkxheWVyVHJlZVZpZXdJbXBsIDog
cHVibGljIFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdCwgcHVibGljIFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdENsaWVudCB7CitjbGFzcyBXZWJMYXllclRyZWVWaWV3SW1wbCA6IHB1YmxpYyBXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3QgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFdl
YkxheWVyVHJlZVZpZXdJbXBsPiBjcmVhdGUoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCosIGNvbnN0
IFdlYkxheWVyJiByb290LCBjb25zdCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncyYpOwogICAg
IHZpcnR1YWwgfldlYkxheWVyVHJlZVZpZXdJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2ls
bEJlZ2luRnJhbWUoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9u
cyhkb3VibGUgbW9ub3RvbmljRnJhbWVCZWdpblRpbWUpIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRT
Y2FsZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgcGFnZVNjYWxl
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q+IGNyZWF0ZUNvbnRleHQoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
cmVhdGVDb250ZXh0KGJvb2wgc3VjY2VzcykgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZENvbW1pdCgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJh
bWUoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygp
IE9WRVJSSURFOwotCi0gICAgLy8gT25seSB1c2VkIGluIHRoZSBzaW5nbGUgdGhyZWFkZWQgcGF0
aC4KLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGUoKSBPVkVSUklERTsKLQogcHJp
dmF0ZToKICAgICBXZWJMYXllclRyZWVWaWV3SW1wbChXZWJMYXllclRyZWVWaWV3Q2xpZW50Kiwg
Y29uc3QgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3MmKTsKIAotICAgIFdlYkxheWVyVHJlZVZp
ZXdDbGllbnQqIG1fY2xpZW50OworICAgIC8vIENvbnZlcnRzIG1lc3NhZ2VzIGZyb20gQ0NMYXll
clRyZWVIb3N0Q2xpZW50IHRvIFdlYkxheWVyVHJlZVZpZXdDbGllbnQuCisgICAgY2xhc3MgQ2xp
ZW50Q29udmVydGVyIDogcHVibGljIFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdENsaWVudCB7Cisg
ICAgcHVibGljOgorICAgICAgICBDbGllbnRDb252ZXJ0ZXIoKSA6IG1fY2xpZW50KDApIHsgfQor
ICAgICAgICB2aXJ0dWFsIH5DbGllbnRDb252ZXJ0ZXIoKTsKKworICAgICAgICAvLyBDQ0xheWVy
VHJlZUhvc3RDbGllbnQgaW1wbGVtZW50YXRpb24KKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxC
ZWdpbkZyYW1lKCkgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRp
b25zKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSkgT1ZFUlJJREU7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5
U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0
IHBhZ2VTY2FsZSkgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29udGV4dCgpIE9WRVJSSURFOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0KGJvb2wgc3VjY2VzcykgT1ZFUlJJREU7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXQoKSBPVkVSUklERTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpIE9WRVJSSURFOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpIE9WRVJSSURFOworICAgICAgICAvLyBPbmx5
IHVzZWQgaW4gdGhlIHNpbmdsZSB0aHJlYWRlZCBwYXRoLgorICAgICAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVDb21wb3NpdGUoKSBPVkVSUklERTsKKworICAgICAgICB2b2lkIHNldENsaWVudChX
ZWJMYXllclRyZWVWaWV3Q2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KKwor
ICAgIHByaXZhdGU6CisgICAgICAgIFdlYkxheWVyVHJlZVZpZXdDbGllbnQqIG1fY2xpZW50Owor
ICAgIH07CisKKyAgICBDbGllbnRDb252ZXJ0ZXIgbV9jbGllbnRDb252ZXJ0ZXI7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143927</attachid>
            <date>2012-05-24 16:48:15 -0700</date>
            <delta_ts>2012-05-25 08:22:56 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-87301-20120524194813.patch</filename>
            <type>text/plain</type>
            <size>8540</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGY1OWY4NDdhNjE1ZjQ1NDc4MjNjNWE4YWE1YTA0YzcyNWU4ZjIwMmIuLjlmZGNlNDY0OGM5Yzhl
MjExZmY3MDY1NTkxMWU1ODVmZTk1MmQ5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDUgQEAKKzIwMTItMDUtMjMgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBXZWJMYXllclRyZWVWaWV3SW1wbCBzaG91bGQg
bm90IGhpZGUgbWV0aG9kcyBpbiBDQ0xheWVyVHJlZUhvc3Qgd2l0aCBzaWduYXR1cmVzIHRoYXQg
bWF0Y2ggdGhlIENsaWVudCBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg3MzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9i
aW5zb24uCisKKyAgICAgICAgTW9zdCBtZXRob2RzIGluIHRoZSBDQ0xheWVyVHJlZUhvc3RDbGll
bnQgaW50ZXJmYWNlIGhhdmUgYSBtYXRjaGluZworICAgICAgICBtZXRob2Qgc2lnbmF0dXJlIG9u
IENDTGF5ZXJUcmVlSG9zdCB0aGF0IHNpbXBseSBjYWxscyB0aGUgY2xpZW50LCBpZgorICAgICAg
ICBvbmUgZXhpc3RzIGF0IGFsbC4gSG93ZXZlciwgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVBbmlt
YXRpb25zKCkgZG9lcworICAgICAgICBpbXBvcnRhbnQgd29yayBpbiBhZGRpdGlvbiB0byBjYWxs
aW5nIHRoZSBjbGllbnQuCisKKyAgICAgICAgQ3VycmVudGx5IFdlYkxheWVyVHJlZVZpZXdJbXBs
IGl0c2VsZiBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UgZm9yCisgICAgICAgIENDTGF5ZXJUcmVl
SG9zdENsaWVudCBhcyB3ZWxsIGFzIENDTGF5ZXJUcmVlSG9zdCwgYW5kIHNpbXBseSBmb3J3YXJk
cworICAgICAgICBhbnkgY2FsbCB0byBhIG1ldGhvZCBpbiB0aGUgY2xpZW50IGludGVyZmFjZSB0
byBpdHMgb3duIGNsaWVudC4gVGhpcworICAgICAgICBibG9ja3MgV2ViVmlld0ltcGwgZnJvbSBj
YWxsaW5nIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQW5pbWF0aW9ucywgc2luY2UKKyAgICAgICAg
dGhlIG1ldGhvZCBpcyBhbHNvIGluIHRoZSBjbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgIFdl
IGNoYW5nZSBXZWJMYXllclRyZWVWaWV3SW1wbCB0byBub3Qgb3ZlcnJpZGUgdGhlIGNsaWVudCBp
bnRlcmZhY2UKKyAgICAgICAgaXRzZWxmLCBidXQgdG8gdXNlIGEgaGVscGVyIGNsYXNzIGluc3Rl
YWQuIFRoaXMgbGVhdmVzIHRoZSBtZXRob2RzCisgICAgICAgIGluIENDTGF5ZXJUcmVlSG9zdCBh
Y2Nlc3NpYmxlLgorCisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OldlYkxheWVyVHJlZVZpZXdJbXBs
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OkNsaWVudENvbnZlcnRl
cjo6fkNsaWVudENvbnZlcnRlcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6Q2xpZW50Q29udmVydGVyOjp3aWxsQmVnaW5GcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpDbGllbnRDb252ZXJ0ZXI6
OnVwZGF0ZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1w
bDo6Q2xpZW50Q29udmVydGVyOjpsYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRy
ZWVWaWV3SW1wbDo6Q2xpZW50Q29udmVydGVyOjphcHBseVNjcm9sbEFuZFNjYWxlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OkNsaWVudENvbnZlcnRlcjo6Y3JlYXRl
Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpDbGllbnRD
b252ZXJ0ZXI6OmRpZFJlY3JlYXRlQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
VHJlZVZpZXdJbXBsOjpDbGllbnRDb252ZXJ0ZXI6OmRpZENvbW1pdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpDbGllbnRDb252ZXJ0ZXI6OmRpZENvbW1pdEFuZERy
YXdGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpDbGllbnRD
b252ZXJ0ZXI6OmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJM
YXllclRyZWVWaWV3SW1wbDo6Q2xpZW50Q29udmVydGVyOjpzY2hlZHVsZUNvbXBvc2l0ZSk6Cisg
ICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmg6CisgICAgICAgIChXZWJMYXllclRy
ZWVWaWV3SW1wbCk6CisgICAgICAgIChDbGllbnRDb252ZXJ0ZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6Q2xpZW50Q29udmVydGVyOjpDbGllbnRDb252ZXJ0ZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3SW1wbDo6Q2xpZW50Q29udmVydGVy
OjpzZXRDbGllbnQpOgorCiAyMDEyLTA1LTIyICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIEFwcGx5IHZpZXdwb3J0IHRhZyBpbml0aWFs
LXNjYWxlIG9ubHkgb25jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
TGF5ZXJUcmVlVmlld0ltcGwuY3BwCmluZGV4IDE2MWY5ZTkzMjJmN2IxN2FlNzkxMjQyMGM3MDk3
OWUzZTRjYWE3MTQuLjAzZWYyYzI1MGU3OTUxMzRmYTYzMDM2MGFiNTg0NzY3ZjkyYTRmYzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1w
bC5jcHAKQEAgLTUxLDM2ICs1MSw0NSBAQCBQYXNzT3duUHRyPFdlYkxheWVyVHJlZVZpZXdJbXBs
PiBXZWJMYXllclRyZWVWaWV3SW1wbDo6Y3JlYXRlKFdlYkxheWVyVHJlZVZpZXdDbAogfQogCiBX
ZWJMYXllclRyZWVWaWV3SW1wbDo6V2ViTGF5ZXJUcmVlVmlld0ltcGwoV2ViTGF5ZXJUcmVlVmll
d0NsaWVudCogY2xpZW50LCBjb25zdCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncyYgc2V0dGlu
Z3MpIAotICAgIDogQ0NMYXllclRyZWVIb3N0KHRoaXMsIHNldHRpbmdzKQotICAgICwgbV9jbGll
bnQoY2xpZW50KQorICAgIDogQ0NMYXllclRyZWVIb3N0KCZtX2NsaWVudEFkYXB0ZXIsIHNldHRp
bmdzKQogeworICAgIG1fY2xpZW50QWRhcHRlci5zZXRDbGllbnQoY2xpZW50KTsKIH0KIAogV2Vi
TGF5ZXJUcmVlVmlld0ltcGw6On5XZWJMYXllclRyZWVWaWV3SW1wbCgpCiB7CiB9CiAKLXZvaWQg
V2ViTGF5ZXJUcmVlVmlld0ltcGw6OndpbGxCZWdpbkZyYW1lKCkKK1dlYkxheWVyVHJlZVZpZXdJ
bXBsOjpDbGllbnRBZGFwdGVyOjpDbGllbnRBZGFwdGVyKCkKKyAgICA6IG1fY2xpZW50KDApCit7
Cit9CisKK1dlYkxheWVyVHJlZVZpZXdJbXBsOjpDbGllbnRBZGFwdGVyOjp+Q2xpZW50QWRhcHRl
cigpCit7Cit9CisKK3ZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OkNsaWVudEFkYXB0ZXI6Ondp
bGxCZWdpbkZyYW1lKCkKIHsKICAgICBtX2NsaWVudC0+d2lsbEJlZ2luRnJhbWUoKTsKIH0KIAot
dm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6dXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgbW9ub3Rv
bmljRnJhbWVCZWdpblRpbWUpCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpDbGllbnRBZGFw
dGVyOjp1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSkKIHsK
ICAgICBtX2NsaWVudC0+dXBkYXRlQW5pbWF0aW9ucyhtb25vdG9uaWNGcmFtZUJlZ2luVGltZSk7
CiB9CiAKLXZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmxheW91dCgpCit2b2lkIFdlYkxheWVy
VHJlZVZpZXdJbXBsOjpDbGllbnRBZGFwdGVyOjpsYXlvdXQoKQogewogICAgIG1fY2xpZW50LT5s
YXlvdXQoKTsKIH0KIAotdm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6YXBwbHlTY3JvbGxBbmRT
Y2FsZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgcGFnZVNjYWxl
KQordm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6Q2xpZW50QWRhcHRlcjo6YXBwbHlTY3JvbGxB
bmRTY2FsZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgcGFnZVNj
YWxlKQogewogICAgIG1fY2xpZW50LT5hcHBseVNjcm9sbEFuZFNjYWxlKFdlYlNpemUoc2Nyb2xs
RGVsdGEpLCBwYWdlU2NhbGUpOwogfQogCi1QYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBX
ZWJMYXllclRyZWVWaWV3SW1wbDo6Y3JlYXRlQ29udGV4dCgpCitQYXNzUmVmUHRyPEdyYXBoaWNz
Q29udGV4dDNEPiBXZWJMYXllclRyZWVWaWV3SW1wbDo6Q2xpZW50QWRhcHRlcjo6Y3JlYXRlQ29u
dGV4dCgpCiB7CiAgICAgT3duUHRyPFdlYkdyYXBoaWNzQ29udGV4dDNEPiB3ZWJDb250ZXh0ID0g
YWRvcHRQdHIobV9jbGllbnQtPmNyZWF0ZUNvbnRleHQzRCgpKTsKICAgICBpZiAoIXdlYkNvbnRl
eHQpCkBAIC04OSwyNyArOTgsMjcgQEAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gV2Vi
TGF5ZXJUcmVlVmlld0ltcGw6OmNyZWF0ZUNvbnRleHQoKQogICAgIHJldHVybiBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KHdlYkNv
bnRleHQucmVsZWFzZSgpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RX
aW5kb3csIGZhbHNlIC8qIHByZXNlcnZlRHJhd2luZ0J1ZmZlciAqLyApOwogfQogCi12b2lkIFdl
YkxheWVyVHJlZVZpZXdJbXBsOjpkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNjZXNzKQordm9p
ZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6Q2xpZW50QWRhcHRlcjo6ZGlkUmVjcmVhdGVDb250ZXh0
KGJvb2wgc3VjY2VzcykKIHsKICAgICBtX2NsaWVudC0+ZGlkUmViaW5kR3JhcGhpY3NDb250ZXh0
KHN1Y2Nlc3MpOwogfQogCi12b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpkaWRDb21taXQoKQor
dm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6Q2xpZW50QWRhcHRlcjo6ZGlkQ29tbWl0KCkKIHsK
ICAgICBtX2NsaWVudC0+ZGlkQ29tbWl0KCk7CiB9CiAKLXZvaWQgV2ViTGF5ZXJUcmVlVmlld0lt
cGw6OmRpZENvbW1pdEFuZERyYXdGcmFtZSgpCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpD
bGllbnRBZGFwdGVyOjpkaWRDb21taXRBbmREcmF3RnJhbWUoKQogewogICAgIG1fY2xpZW50LT5k
aWRDb21taXRBbmREcmF3RnJhbWUoKTsKIH0KIAotdm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6
ZGlkQ29tcGxldGVTd2FwQnVmZmVycygpCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpDbGll
bnRBZGFwdGVyOjpkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkKIHsKICAgICBtX2NsaWVudC0+ZGlk
Q29tcGxldGVTd2FwQnVmZmVycygpOwogfQogCi12b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpz
Y2hlZHVsZUNvbXBvc2l0ZSgpCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpDbGllbnRBZGFw
dGVyOjpzY2hlZHVsZUNvbXBvc2l0ZSgpCiB7CiAgICAgbV9jbGllbnQtPnNjaGVkdWxlQ29tcG9z
aXRlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXll
clRyZWVWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVl
Vmlld0ltcGwuaAppbmRleCBkY2QzZTI5MjUyY2UzZmY2NWFjNmUzZDU0ZDA0MzI3NGJmZmYxYzll
Li5mYmY5NDZkM2VkZDBlYzNmNTYyMzUwN2FlZjJmYzJjMzc1ZWQ3NmM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgKQEAgLTM0LDI4
ICszNCw0MCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkxheWVyOwogY2xhc3MgV2Vi
TGF5ZXJUcmVlVmlld0NsaWVudDsKIAotY2xhc3MgV2ViTGF5ZXJUcmVlVmlld0ltcGwgOiBwdWJs
aWMgV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0LCBwdWJsaWMgV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0Q2xpZW50IHsKK2NsYXNzIFdlYkxheWVyVHJlZVZpZXdJbXBsIDogcHVibGljIFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViTGF5
ZXJUcmVlVmlld0ltcGw+IGNyZWF0ZShXZWJMYXllclRyZWVWaWV3Q2xpZW50KiwgY29uc3QgV2Vi
TGF5ZXImIHJvb3QsIGNvbnN0IFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzJik7CiAgICAgdmly
dHVhbCB+V2ViTGF5ZXJUcmVlVmlld0ltcGwoKTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVn
aW5GcmFtZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRv
dWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lk
IGxheW91dCgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbGUpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RD4gY3JlYXRlQ29udGV4dCgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0
ZUNvbnRleHQoYm9vbCBzdWNjZXNzKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29t
bWl0KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgp
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCkgT1ZF
UlJJREU7Ci0KLSAgICAvLyBPbmx5IHVzZWQgaW4gdGhlIHNpbmdsZSB0aHJlYWRlZCBwYXRoLgot
ICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0ZSgpIE9WRVJSSURFOwotCiBwcml2YXRl
OgogICAgIFdlYkxheWVyVHJlZVZpZXdJbXBsKFdlYkxheWVyVHJlZVZpZXdDbGllbnQqLCBjb25z
dCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncyYpOwogCi0gICAgV2ViTGF5ZXJUcmVlVmlld0Ns
aWVudCogbV9jbGllbnQ7CisgICAgLy8gQ29udmVydHMgbWVzc2FnZXMgZnJvbSBDQ0xheWVyVHJl
ZUhvc3RDbGllbnQgdG8gV2ViTGF5ZXJUcmVlVmlld0NsaWVudC4KKyAgICBjbGFzcyBDbGllbnRB
ZGFwdGVyIDogcHVibGljIFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdENsaWVudCB7CisgICAgcHVi
bGljOgorICAgICAgICBDbGllbnRBZGFwdGVyKCk7CisgICAgICAgIHZpcnR1YWwgfkNsaWVudEFk
YXB0ZXIoKTsKKworICAgICAgICAvLyBDQ0xheWVyVHJlZUhvc3RDbGllbnQgaW1wbGVtZW50YXRp
b24KKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxCZWdpbkZyYW1lKCkgT1ZFUlJJREU7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJl
Z2luVGltZSkgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklE
RTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSkgT1ZFUlJJREU7CisgICAg
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRl
Q29udGV4dCgpIE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVDb250
ZXh0KGJvb2wgc3VjY2VzcykgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDb21t
aXQoKSBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFt
ZSgpIE9WRVJSSURFOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVy
cygpIE9WRVJSSURFOworICAgICAgICAvLyBPbmx5IHVzZWQgaW4gdGhlIHNpbmdsZSB0aHJlYWRl
ZCBwYXRoLgorICAgICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGUoKSBPVkVSUklE
RTsKKworICAgICAgICB2b2lkIHNldENsaWVudChXZWJMYXllclRyZWVWaWV3Q2xpZW50KiBjbGll
bnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFdlYkxh
eWVyVHJlZVZpZXdDbGllbnQqIG1fY2xpZW50OworICAgIH07CisKKyAgICBDbGllbnRBZGFwdGVy
IG1fY2xpZW50QWRhcHRlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144075</attachid>
            <date>2012-05-25 08:23:00 -0700</date>
            <delta_ts>2012-05-25 13:30:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87301-20120525112259.patch</filename>
            <type>text/plain</type>
            <size>14141</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGY1OWY4NDdhNjE1ZjQ1NDc4MjNjNWE4YWE1YTA0YzcyNWU4ZjIwMmIuLjI2NGI0MWQwNGJkYjZm
ZmU5YjJiYWExZmQyZDVmYzY4Y2QxMThmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTkgQEAKKzIwMTItMDUtMjUgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBXZWJMYXllclRyZWVWaWV3SW1wbCBzaG91bGQg
bm90IGhpZGUgbWV0aG9kcyBpbiBDQ0xheWVyVHJlZUhvc3Qgd2l0aCBzaWduYXR1cmVzIHRoYXQg
bWF0Y2ggdGhlIENsaWVudCBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg3MzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTW9zdCBtZXRob2RzIGluIHRoZSBDQ0xheWVyVHJlZUhvc3RDbGll
bnQgaW50ZXJmYWNlIGhhdmUgYSBtYXRjaGluZworICAgICAgICBtZXRob2Qgc2lnbmF0dXJlIG9u
IENDTGF5ZXJUcmVlSG9zdCB0aGF0IHNpbXBseSBjYWxscyB0aGUgY2xpZW50LCBpZgorICAgICAg
ICBvbmUgZXhpc3RzIGF0IGFsbC4gSG93ZXZlciwgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVBbmlt
YXRpb25zKCkgZG9lcworICAgICAgICBpbXBvcnRhbnQgd29yayBpbiBhZGRpdGlvbiB0byBjYWxs
aW5nIHRoZSBjbGllbnQuCisKKyAgICAgICAgQ3VycmVudGx5IFdlYkxheWVyVHJlZVZpZXdJbXBs
IGl0c2VsZiBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UgZm9yCisgICAgICAgIENDTGF5ZXJUcmVl
SG9zdENsaWVudCBhcyB3ZWxsIGFzIENDTGF5ZXJUcmVlSG9zdCwgYW5kIHNpbXBseSBmb3J3YXJk
cworICAgICAgICBhbnkgY2FsbCB0byBhIG1ldGhvZCBpbiB0aGUgY2xpZW50IGludGVyZmFjZSB0
byBpdHMgb3duIGNsaWVudC4gVGhpcworICAgICAgICBibG9ja3MgV2ViVmlld0ltcGwgZnJvbSBj
YWxsaW5nIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQW5pbWF0aW9ucywgc2luY2UKKyAgICAgICAg
dGhlIG1ldGhvZCBpcyBhbHNvIGluIHRoZSBjbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgIFdl
IGNoYW5nZSBXZWJMYXllclRyZWVWaWV3SW1wbCB0byBvd24gYSBDQ0xheWVyVHJlZUhvc3QgYW5k
IGEKKyAgICAgICAgV2ViTGF5ZXJUcmVlSG9zdENsaWVudEFkYXB0ZXIuIFRoaXMgZml4ZXMgdGhl
IHNoYWRvd2luZyBieSBtYWtpbmcKKyAgICAgICAgdGhlIHR3byBpbnRlcmZhY2VzIHNlcGFyYXRl
LCBhbmQgcmVzb2x2ZXMgbGlmZXRpbWUgaXNzdWVzIGJ5CisgICAgICAgIGVuc3VyaW5nIHRoYXQg
dGhlIENDTGF5ZXJUcmVlSG9zdCBpcyBkZXN0cm95ZWQgYmVmb3JlIGl0cyBjbGllbnQuCisKKyAg
ICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxh
eWVyVHJlZVZpZXc6OnNldFN1cmZhY2VSZWFkeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
VHJlZVZpZXc6OnNldFJvb3RMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZp
ZXc6OmNvbXBvc2l0b3JJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVl
Vmlldzo6c2V0Vmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmll
dzo6dmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6c2V0
QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6c2V0
VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OnNldFBhZ2VTY2Fs
ZUZhY3RvckFuZExpbWl0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OnN0
YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmll
dzo6c2V0TmVlZHNBbmltYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6
c2V0TmVlZHNSZWRyYXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3Ojpjb21t
aXRSZXF1ZXN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3Ojpjb21wb3Np
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3Ojp1cGRhdGVBbmltYXRpb25z
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6Y29tcG9zaXRlQW5kUmVhZGJh
Y2spOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpmaW5pc2hBbGxSZW5kZXJp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3Ojpjb250ZXh0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6bG9zZUNvbXBvc2l0b3JDb250ZXh0KToKKyAg
ICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYkxheWVyVHJlZVZpZXdDbGllbnRBZGFwdGVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTGF5ZXJUcmVlVmlld0NsaWVudEFkYXB0ZXI6OldlYkxheWVyVHJlZVZpZXdDbGllbnRB
ZGFwdGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0NsaWVudEFkYXB0ZXI6
On5XZWJMYXllclRyZWVWaWV3Q2xpZW50QWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkxh
eWVyVHJlZVZpZXdJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVW
aWV3SW1wbDo6V2ViTGF5ZXJUcmVlVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXll
clRyZWVWaWV3SW1wbDo6fldlYkxheWVyVHJlZVZpZXdJbXBsKToKKyAgICAgICAgKiBzcmMvV2Vi
TGF5ZXJUcmVlVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OmxheWVyVHJlZUhvc3Qp
OgorICAgICAgICAoV2ViTGF5ZXJUcmVlVmlld0ltcGwpOgorCiAyMDEyLTA1LTIyICBBbGV4YW5k
cmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIEFwcGx5
IHZpZXdwb3J0IHRhZyBpbml0aWFsLXNjYWxlIG9ubHkgb25jZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAppbmRleCBhNGQ3ZDkxOGE4NjU4ZTFk
YjdmMjdjODJhMTVjZjJiYWViZGQ3MzU4Li42NWEyYTYzYjE4YTJjOGNjZmRjNWZlYzFlMTBmMTlj
NjMzYWNhNTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXll
clRyZWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRy
ZWVWaWV3LmNwcApAQCAtNzUsOTggKzc1LDk4IEBAIGJvb2wgV2ViTGF5ZXJUcmVlVmlldzo6aW5p
dGlhbGl6ZShXZWJMYXllclRyZWVWaWV3Q2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYkxheWVyCiAK
IHZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6c2V0U3VyZmFjZVJlYWR5KCkKIHsKLSAgICBtX3ByaXZh
dGUtPnNldFN1cmZhY2VSZWFkeSgpOworICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5z
ZXRTdXJmYWNlUmVhZHkoKTsKIH0KIAogdm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXRSb290TGF5
ZXIoV2ViTGF5ZXIgKnJvb3QpCiB7CiAgICAgaWYgKHJvb3QpCi0gICAgICAgIG1fcHJpdmF0ZS0+
c2V0Um9vdExheWVyKCpyb290KTsKKyAgICAgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCkt
PnNldFJvb3RMYXllcigqcm9vdCk7CiAgICAgZWxzZQotICAgICAgICBtX3ByaXZhdGUtPnNldFJv
b3RMYXllcihQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+KCkpOworICAgICAgICBtX3ByaXZhdGUt
PmxheWVyVHJlZUhvc3QoKS0+c2V0Um9vdExheWVyKFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4o
KSk7CiB9CiAKIGludCBXZWJMYXllclRyZWVWaWV3Ojpjb21wb3NpdG9ySWRlbnRpZmllcigpCiB7
Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y29tcG9zaXRvcklkZW50aWZpZXIoKTsKKyAgICByZXR1
cm4gbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPmNvbXBvc2l0b3JJZGVudGlmaWVyKCk7CiB9
CiAKIHZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6c2V0Vmlld3BvcnRTaXplKGNvbnN0IFdlYlNpemUm
IHZpZXdwb3J0U2l6ZSkKIHsKLSAgICBtX3ByaXZhdGUtPnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9y
dFNpemUpOworICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXRWaWV3cG9ydFNpemUo
dmlld3BvcnRTaXplKTsKIH0KIAogV2ViU2l6ZSBXZWJMYXllclRyZWVWaWV3Ojp2aWV3cG9ydFNp
emUoKSBjb25zdAogewotICAgIHJldHVybiBXZWJTaXplKG1fcHJpdmF0ZS0+dmlld3BvcnRTaXpl
KCkpOworICAgIHJldHVybiBXZWJTaXplKG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT52aWV3
cG9ydFNpemUoKSk7CiB9CiAKIHZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6c2V0QmFja2dyb3VuZENv
bG9yKFdlYkNvbG9yIGNvbG9yKQogewotICAgIG1fcHJpdmF0ZS0+c2V0QmFja2dyb3VuZENvbG9y
KGNvbG9yKTsKKyAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c2V0QmFja2dyb3VuZENv
bG9yKGNvbG9yKTsKIH0KIAogdm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXRWaXNpYmxlKGJvb2wg
dmlzaWJsZSkKIHsKLSAgICBtX3ByaXZhdGUtPnNldFZpc2libGUodmlzaWJsZSk7CisgICAgbV9w
cml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldFZpc2libGUodmlzaWJsZSk7CiB9CiAKIHZvaWQg
V2ViTGF5ZXJUcmVlVmlldzo6c2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKGZsb2F0IHBhZ2VT
Y2FsZUZhY3RvciwgZmxvYXQgbWluaW11bSwgZmxvYXQgbWF4aW11bSkKIHsKLSAgICBtX3ByaXZh
dGUtPnNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cyhwYWdlU2NhbGVGYWN0b3IsIG1pbmltdW0s
IG1heGltdW0pOworICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXRQYWdlU2NhbGVG
YWN0b3JBbmRMaW1pdHMocGFnZVNjYWxlRmFjdG9yLCBtaW5pbXVtLCBtYXhpbXVtKTsKIH0KIAog
dm9pZCBXZWJMYXllclRyZWVWaWV3OjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBXZWJQ
b2ludCYgc2Nyb2xsLCBib29sIHVzZUFuY2hvciwgZmxvYXQgbmV3UGFnZVNjYWxlLCBkb3VibGUg
ZHVyYXRpb25TZWMpCiB7Ci0gICAgbV9wcml2YXRlLT5zdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihJ
bnRTaXplKHNjcm9sbC54LCBzY3JvbGwueSksIHVzZUFuY2hvciwgbmV3UGFnZVNjYWxlLCBkdXJh
dGlvblNlYyk7CisgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnN0YXJ0UGFnZVNjYWxl
QW5pbWF0aW9uKEludFNpemUoc2Nyb2xsLngsIHNjcm9sbC55KSwgdXNlQW5jaG9yLCBuZXdQYWdl
U2NhbGUsIGR1cmF0aW9uU2VjKTsKIH0KIAogdm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXROZWVk
c0FuaW1hdGUoKQogewotICAgIG1fcHJpdmF0ZS0+c2V0TmVlZHNBbmltYXRlKCk7CisgICAgbV9w
cml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldE5lZWRzQW5pbWF0ZSgpOwogfQogCiB2b2lkIFdl
YkxheWVyVHJlZVZpZXc6OnNldE5lZWRzUmVkcmF3KCkKIHsKLSAgICBtX3ByaXZhdGUtPnNldE5l
ZWRzUmVkcmF3KCk7CisgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldE5lZWRzUmVk
cmF3KCk7CiB9CiAKIGJvb2wgV2ViTGF5ZXJUcmVlVmlldzo6Y29tbWl0UmVxdWVzdGVkKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5jb21taXRSZXF1ZXN0ZWQoKTsKKyAgICByZXR1
cm4gbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPmNvbW1pdFJlcXVlc3RlZCgpOwogfQogCiB2
b2lkIFdlYkxheWVyVHJlZVZpZXc6OmNvbXBvc2l0ZSgpCiB7CiAgICAgaWYgKENDUHJveHk6Omhh
c0ltcGxUaHJlYWQoKSkKLSAgICAgICAgbV9wcml2YXRlLT5zZXROZWVkc0NvbW1pdCgpOworICAg
ICAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c2V0TmVlZHNDb21taXQoKTsKICAgICBl
bHNlCi0gICAgICAgIG1fcHJpdmF0ZS0+Y29tcG9zaXRlKCk7CisgICAgICAgIG1fcHJpdmF0ZS0+
bGF5ZXJUcmVlSG9zdCgpLT5jb21wb3NpdGUoKTsKIH0KIAogdm9pZCBXZWJMYXllclRyZWVWaWV3
Ojp1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKIHsKLSAgICBtX3ByaXZh
dGUtPnVwZGF0ZUFuaW1hdGlvbnMoZnJhbWVCZWdpblRpbWUpOworICAgIG1fcHJpdmF0ZS0+bGF5
ZXJUcmVlSG9zdCgpLT51cGRhdGVBbmltYXRpb25zKGZyYW1lQmVnaW5UaW1lKTsKIH0KIAogYm9v
bCBXZWJMYXllclRyZWVWaWV3Ojpjb21wb3NpdGVBbmRSZWFkYmFjayh2b2lkICpwaXhlbHMsIGNv
bnN0IFdlYlJlY3QmIHJlY3QpCiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y29tcG9zaXRlQW5k
UmVhZGJhY2socGl4ZWxzLCByZWN0KTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5sYXllclRyZWVI
b3N0KCktPmNvbXBvc2l0ZUFuZFJlYWRiYWNrKHBpeGVscywgcmVjdCk7CiB9CiAKIHZvaWQgV2Vi
TGF5ZXJUcmVlVmlldzo6ZmluaXNoQWxsUmVuZGVyaW5nKCkKIHsKLSAgICBtX3ByaXZhdGUtPmZp
bmlzaEFsbFJlbmRlcmluZygpOworICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5maW5p
c2hBbGxSZW5kZXJpbmcoKTsKIH0KIAogV2ViR3JhcGhpY3NDb250ZXh0M0QqIFdlYkxheWVyVHJl
ZVZpZXc6OmNvbnRleHQoKQogewotICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6
OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQzRChtX3ByaXZhdGUtPmNvbnRleHQoKSk7CisgICAg
cmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4
dDNEKG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5jb250ZXh0KCkpOwogfQogCiB2b2lkIFdl
YkxheWVyVHJlZVZpZXc6Omxvc2VDb21wb3NpdG9yQ29udGV4dChpbnQgbnVtVGltZXMpCiB7Ci0g
ICAgbV9wcml2YXRlLT5sb3NlQ29udGV4dChudW1UaW1lcyk7CisgICAgbV9wcml2YXRlLT5sYXll
clRyZWVIb3N0KCktPmxvc2VDb250ZXh0KG51bVRpbWVzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRy
ZWVWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVW
aWV3SW1wbC5jcHAKaW5kZXggMTYxZjllOTMyMmY3YjE3YWU3OTEyNDIwYzcwOTc5ZTNlNGNhYTcx
NC4uM2M2YjM1OWM0NjdiMjczODQ4YTNjMTEyODIzYzU4YjU0OWEyOGVjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNDVGhyZWFkSW1wbC5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNs
dWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5Lmgi
CiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJMYXllci5oIgpAQCAtNDEsNzcgKzQyLDUzIEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorLy8gQ29udmVydHMgbWVzc2FnZXMgZnJv
bSBDQ0xheWVyVHJlZUhvc3RDbGllbnQgdG8gV2ViTGF5ZXJUcmVlVmlld0NsaWVudC4KK2NsYXNz
IFdlYkxheWVyVHJlZVZpZXdDbGllbnRBZGFwdGVyIDogcHVibGljIFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdENsaWVudCB7CitwdWJsaWM6CisgICAgV2ViTGF5ZXJUcmVlVmlld0NsaWVudEFkYXB0
ZXIoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCogY2xpZW50KSA6IG1fY2xpZW50KGNsaWVudCkgeyB9
CisgICAgdmlydHVhbCB+V2ViTGF5ZXJUcmVlVmlld0NsaWVudEFkYXB0ZXIoKSB7IH0KKworICAg
IC8vIENDTGF5ZXJUcmVlSG9zdENsaWVudCBpbXBsZW1lbnRhdGlvbgorICAgIHZpcnR1YWwgdm9p
ZCB3aWxsQmVnaW5GcmFtZSgpIE9WRVJSSURFIHsgbV9jbGllbnQtPndpbGxCZWdpbkZyYW1lKCk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljRnJh
bWVCZWdpblRpbWUpIE9WRVJSSURFIHsgbV9jbGllbnQtPnVwZGF0ZUFuaW1hdGlvbnMobW9ub3Rv
bmljRnJhbWVCZWdpblRpbWUpOyB9CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIE9WRVJSSURF
IHsgbV9jbGllbnQtPmxheW91dCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5k
U2NhbGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2Fs
ZSkgT1ZFUlJJREUgeyBtX2NsaWVudC0+YXBwbHlTY3JvbGxBbmRTY2FsZShzY3JvbGxEZWx0YSwg
cGFnZVNjYWxlKTsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRD4gY3JlYXRlQ29udGV4dCgpIE9WRVJSSURFCisgICAgeworICAgICAgICBPd25QdHI8
V2ViR3JhcGhpY3NDb250ZXh0M0Q+IHdlYkNvbnRleHQgPSBhZG9wdFB0cihtX2NsaWVudC0+Y3Jl
YXRlQ29udGV4dDNEKCkpOworICAgICAgICBpZiAoIXdlYkNvbnRleHQpCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRl
R3JhcGhpY3NDb250ZXh0RnJvbVdlYkNvbnRleHQod2ViQ29udGV4dC5yZWxlYXNlKCksIEdyYXBo
aWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdywgZmFsc2UgLyogcHJlc2Vy
dmVEcmF3aW5nQnVmZmVyICovICk7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0
ZUNvbnRleHQoYm9vbCBzdWNjZXNzKSBPVkVSUklERSB7IG1fY2xpZW50LT5kaWRSZWJpbmRHcmFw
aGljc0NvbnRleHQoc3VjY2Vzcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0KCkgT1ZF
UlJJREUgeyBtX2NsaWVudC0+ZGlkQ29tbWl0KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29t
bWl0QW5kRHJhd0ZyYW1lKCkgT1ZFUlJJREUgeyBtX2NsaWVudC0+ZGlkQ29tbWl0QW5kRHJhd0Zy
YW1lKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpIE9WRVJS
SURFIHsgbV9jbGllbnQtPmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKTsgfQorICAgIHZpcnR1YWwg
dm9pZCBzY2hlZHVsZUNvbXBvc2l0ZSgpIE9WRVJSSURFIHsgbV9jbGllbnQtPnNjaGVkdWxlQ29t
cG9zaXRlKCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJMYXllclRyZWVWaWV3Q2xpZW50KiBtX2Ns
aWVudDsKK307CisKIFBhc3NPd25QdHI8V2ViTGF5ZXJUcmVlVmlld0ltcGw+IFdlYkxheWVyVHJl
ZVZpZXdJbXBsOjpjcmVhdGUoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCogY2xpZW50LCBjb25zdCBX
ZWJMYXllciYgcm9vdCwgY29uc3QgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3MmIHNldHRpbmdz
KQogewotICAgIE93blB0cjxXZWJMYXllclRyZWVWaWV3SW1wbD4gaG9zdCA9IGFkb3B0UHRyKG5l
dyBXZWJMYXllclRyZWVWaWV3SW1wbChjbGllbnQsIHNldHRpbmdzKSk7Ci0gICAgaWYgKCFob3N0
LT5pbml0aWFsaXplKCkpCisgICAgT3duUHRyPFdlYkxheWVyVHJlZVZpZXdJbXBsPiBpbXBsID0g
YWRvcHRQdHIobmV3IFdlYkxheWVyVHJlZVZpZXdJbXBsKGNsaWVudCwgc2V0dGluZ3MpKTsKKyAg
ICBpZiAoIWltcGwtPmxheWVyVHJlZUhvc3QoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgaG9zdC0+c2V0Um9vdExheWVyKHJvb3QpOwotICAgIHJldHVybiBob3N0LnJlbGVhc2UoKTsK
KyAgICBpbXBsLT5sYXllclRyZWVIb3N0KCktPnNldFJvb3RMYXllcihyb290KTsKKyAgICByZXR1
cm4gaW1wbC5yZWxlYXNlKCk7CiB9CiAKIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpXZWJMYXllclRy
ZWVWaWV3SW1wbChXZWJMYXllclRyZWVWaWV3Q2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYkxheWVy
VHJlZVZpZXc6OlNldHRpbmdzJiBzZXR0aW5ncykgCi0gICAgOiBDQ0xheWVyVHJlZUhvc3QodGhp
cywgc2V0dGluZ3MpCi0gICAgLCBtX2NsaWVudChjbGllbnQpCisgICAgOiBtX2NsaWVudEFkYXB0
ZXIoYWRvcHRQdHIobmV3IFdlYkxheWVyVHJlZVZpZXdDbGllbnRBZGFwdGVyKGNsaWVudCkpKQor
ICAgICwgbV9sYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKG1fY2xpZW50QWRh
cHRlci5nZXQoKSwgc2V0dGluZ3MpKQogewogfQogCiBXZWJMYXllclRyZWVWaWV3SW1wbDo6fldl
YkxheWVyVHJlZVZpZXdJbXBsKCkKIHsKLX0KLQotdm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6
d2lsbEJlZ2luRnJhbWUoKQotewotICAgIG1fY2xpZW50LT53aWxsQmVnaW5GcmFtZSgpOwotfQot
Ci12b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjp1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBtb25v
dG9uaWNGcmFtZUJlZ2luVGltZSkKLXsKLSAgICBtX2NsaWVudC0+dXBkYXRlQW5pbWF0aW9ucyht
b25vdG9uaWNGcmFtZUJlZ2luVGltZSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6
OmxheW91dCgpCi17Ci0gICAgbV9jbGllbnQtPmxheW91dCgpOwotfQotCi12b2lkIFdlYkxheWVy
VHJlZVZpZXdJbXBsOjphcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbGUpCi17Ci0gICAgbV9jbGllbnQtPmFwcGx5U2Ny
b2xsQW5kU2NhbGUoV2ViU2l6ZShzY3JvbGxEZWx0YSksIHBhZ2VTY2FsZSk7Ci19Ci0KLVBhc3NS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IFdlYkxheWVyVHJlZVZpZXdJbXBsOjpjcmVhdGVDb250
ZXh0KCkKLXsKLSAgICBPd25QdHI8V2ViR3JhcGhpY3NDb250ZXh0M0Q+IHdlYkNvbnRleHQgPSBh
ZG9wdFB0cihtX2NsaWVudC0+Y3JlYXRlQ29udGV4dDNEKCkpOwotICAgIGlmICghd2ViQ29udGV4
dCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dCh3ZWJDb250ZXh0LnJlbGVh
c2UoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93LCBmYWxz
ZSAvKiBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgKi8gKTsKLX0KLQotdm9pZCBXZWJMYXllclRyZWVW
aWV3SW1wbDo6ZGlkUmVjcmVhdGVDb250ZXh0KGJvb2wgc3VjY2VzcykKLXsKLSAgICBtX2NsaWVu
dC0+ZGlkUmViaW5kR3JhcGhpY3NDb250ZXh0KHN1Y2Nlc3MpOwotfQotCi12b2lkIFdlYkxheWVy
VHJlZVZpZXdJbXBsOjpkaWRDb21taXQoKQotewotICAgIG1fY2xpZW50LT5kaWRDb21taXQoKTsK
LX0KLQotdm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkK
LXsKLSAgICBtX2NsaWVudC0+ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7Ci19Ci0KLXZvaWQgV2Vi
TGF5ZXJUcmVlVmlld0ltcGw6OmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKQotewotICAgIG1fY2xp
ZW50LT5kaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJUcmVlVmll
d0ltcGw6OnNjaGVkdWxlQ29tcG9zaXRlKCkKLXsKLSAgICBtX2NsaWVudC0+c2NoZWR1bGVDb21w
b3NpdGUoKTsKKyAgICAvLyBNYWtlIHN1cmUgdGhlIGhvc3QgaXMgZGVzdHJveWVkIGJlZm9yZSBp
dHMgY2xpZW50LgorICAgIG1fbGF5ZXJUcmVlSG9zdC5jbGVhcigpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVyVHJlZVZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRy
ZWVWaWV3SW1wbC5oCmluZGV4IGRjZDNlMjkyNTJjZTNmZjY1YWM2ZTNkNTRkMDQzMjc0YmZmZjFj
OWUuLjExODQzNDJlOGJjZTMxYmIzODJlYjIyY2QwNzRmNzBhZWI1ZTk0Y2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaApAQCAtMjcs
MzUgKzI3LDMwIEBACiAjZGVmaW5lIFdlYkxheWVyVHJlZVZpZXdJbXBsX2gKIAogI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkxheWVyVHJlZVZpZXcuaCIKLSNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhv
c3QuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0NMYXllclRyZWVIb3N0OworfQorCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkxheWVyOwogY2xhc3MgV2ViTGF5ZXJUcmVlVmll
d0NsaWVudDsKK2NsYXNzIFdlYkxheWVyVHJlZVZpZXdDbGllbnRBZGFwdGVyOwogCi1jbGFzcyBX
ZWJMYXllclRyZWVWaWV3SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3QsIHB1
YmxpYyBXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RDbGllbnQgeworY2xhc3MgV2ViTGF5ZXJUcmVl
Vmlld0ltcGwgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkxheWVyVHJlZVZp
ZXdJbXBsPiBjcmVhdGUoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCosIGNvbnN0IFdlYkxheWVyJiBy
b290LCBjb25zdCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncyYpOwogICAgIHZpcnR1YWwgfldl
YkxheWVyVHJlZVZpZXdJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlZ2luRnJhbWUo
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgbW9u
b3RvbmljRnJhbWVCZWdpblRpbWUpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQo
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgcGFnZVNjYWxlKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0
ZUNvbnRleHQoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0
KGJvb2wgc3VjY2VzcykgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdCgpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVycygpIE9WRVJSSURFOwot
Ci0gICAgLy8gT25seSB1c2VkIGluIHRoZSBzaW5nbGUgdGhyZWFkZWQgcGF0aC4KLSAgICB2aXJ0
dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGUoKSBPVkVSUklERTsKKyAgICBXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3QqIGxheWVyVHJlZUhvc3QoKSB7IHJldHVybiBtX2xheWVyVHJlZUhvc3QuZ2V0
KCk7IH0KIAogcHJpdmF0ZToKICAgICBXZWJMYXllclRyZWVWaWV3SW1wbChXZWJMYXllclRyZWVW
aWV3Q2xpZW50KiwgY29uc3QgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3MmKTsKIAotICAgIFdl
YkxheWVyVHJlZVZpZXdDbGllbnQqIG1fY2xpZW50OworICAgIE93blB0cjxXZWJMYXllclRyZWVW
aWV3Q2xpZW50QWRhcHRlcj4gbV9jbGllbnRBZGFwdGVyOworICAgIE93blB0cjxXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3Q+IG1fbGF5ZXJUcmVlSG9zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144130</attachid>
            <date>2012-05-25 12:59:39 -0700</date>
            <delta_ts>2012-05-25 13:37:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-87301-20120525155938.patch</filename>
            <type>text/plain</type>
            <size>14511</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDZkZTQ1NjUzMDhkZWM2M2ZmOWQwNGJhZmJmMzYwMTJiOGVhOTcwNjYuLjNhOWE5Njk2MTdkZmNj
YzcwMmIxZWZjYjQ1YTUyNDFjNjYxODlmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTkgQEAKKzIwMTItMDUtMjUgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBXZWJMYXllclRyZWVWaWV3SW1wbCBzaG91bGQg
bm90IGhpZGUgbWV0aG9kcyBpbiBDQ0xheWVyVHJlZUhvc3Qgd2l0aCBzaWduYXR1cmVzIHRoYXQg
bWF0Y2ggdGhlIENsaWVudCBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg3MzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9i
aW5zb24uCisKKyAgICAgICAgTW9zdCBtZXRob2RzIGluIHRoZSBDQ0xheWVyVHJlZUhvc3RDbGll
bnQgaW50ZXJmYWNlIGhhdmUgYSBtYXRjaGluZworICAgICAgICBtZXRob2Qgc2lnbmF0dXJlIG9u
IENDTGF5ZXJUcmVlSG9zdCB0aGF0IHNpbXBseSBjYWxscyB0aGUgY2xpZW50LCBpZgorICAgICAg
ICBvbmUgZXhpc3RzIGF0IGFsbC4gSG93ZXZlciwgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVBbmlt
YXRpb25zKCkgZG9lcworICAgICAgICBpbXBvcnRhbnQgd29yayBpbiBhZGRpdGlvbiB0byBjYWxs
aW5nIHRoZSBjbGllbnQuCisKKyAgICAgICAgQ3VycmVudGx5IFdlYkxheWVyVHJlZVZpZXdJbXBs
IGl0c2VsZiBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UgZm9yCisgICAgICAgIENDTGF5ZXJUcmVl
SG9zdENsaWVudCBhcyB3ZWxsIGFzIENDTGF5ZXJUcmVlSG9zdCwgYW5kIHNpbXBseSBmb3J3YXJk
cworICAgICAgICBhbnkgY2FsbCB0byBhIG1ldGhvZCBpbiB0aGUgY2xpZW50IGludGVyZmFjZSB0
byBpdHMgb3duIGNsaWVudC4gVGhpcworICAgICAgICBibG9ja3MgV2ViVmlld0ltcGwgZnJvbSBj
YWxsaW5nIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQW5pbWF0aW9ucywgc2luY2UKKyAgICAgICAg
dGhlIG1ldGhvZCBpcyBhbHNvIGluIHRoZSBjbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgIFdl
IGNoYW5nZSBXZWJMYXllclRyZWVWaWV3SW1wbCB0byBvd24gYSBDQ0xheWVyVHJlZUhvc3QgYW5k
IGEKKyAgICAgICAgV2ViTGF5ZXJUcmVlSG9zdENsaWVudEFkYXB0ZXIuIFRoaXMgZml4ZXMgdGhl
IHNoYWRvd2luZyBieSBtYWtpbmcKKyAgICAgICAgdGhlIHR3byBpbnRlcmZhY2VzIHNlcGFyYXRl
LCBhbmQgcmVzb2x2ZXMgbGlmZXRpbWUgaXNzdWVzIGJ5CisgICAgICAgIGVuc3VyaW5nIHRoYXQg
dGhlIENDTGF5ZXJUcmVlSG9zdCBpcyBkZXN0cm95ZWQgYmVmb3JlIGl0cyBjbGllbnQuCisKKyAg
ICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxh
eWVyVHJlZVZpZXc6OnNldFN1cmZhY2VSZWFkeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
VHJlZVZpZXc6OnNldFJvb3RMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZp
ZXc6OmNvbXBvc2l0b3JJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVl
Vmlldzo6c2V0Vmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmll
dzo6dmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6c2V0
QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6c2V0
VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OnNldFBhZ2VTY2Fs
ZUZhY3RvckFuZExpbWl0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OnN0
YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmll
dzo6c2V0TmVlZHNBbmltYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6
c2V0TmVlZHNSZWRyYXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3Ojpjb21t
aXRSZXF1ZXN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3Ojpjb21wb3Np
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3Ojp1cGRhdGVBbmltYXRpb25z
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6Y29tcG9zaXRlQW5kUmVhZGJh
Y2spOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpmaW5pc2hBbGxSZW5kZXJp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3Ojpjb250ZXh0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6bG9zZUNvbXBvc2l0b3JDb250ZXh0KToKKyAg
ICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYkxheWVyVHJlZVZpZXdDbGllbnRBZGFwdGVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTGF5ZXJUcmVlVmlld0NsaWVudEFkYXB0ZXI6OldlYkxheWVyVHJlZVZpZXdDbGllbnRB
ZGFwdGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0NsaWVudEFkYXB0ZXI6
On5XZWJMYXllclRyZWVWaWV3Q2xpZW50QWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkxh
eWVyVHJlZVZpZXdJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVW
aWV3SW1wbDo6V2ViTGF5ZXJUcmVlVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXll
clRyZWVWaWV3SW1wbDo6fldlYkxheWVyVHJlZVZpZXdJbXBsKToKKyAgICAgICAgKiBzcmMvV2Vi
TGF5ZXJUcmVlVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OmxheWVyVHJlZUhvc3Qp
OgorICAgICAgICAoV2ViTGF5ZXJUcmVlVmlld0ltcGwpOgorCiAyMDEyLTA1LTI1ICBLaW51a28g
WWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkOyByb2xs
aW5nIGNocm9taXVtIGRlcHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJMYXllclRyZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVyVHJlZVZpZXcuY3BwCmluZGV4IGE0ZDdkOTE4YTg2NThlMWRiN2YyN2M4MmExNWNmMmJhZWJk
ZDczNTguLjY1YTJhNjNiMThhMmM4Y2NmZGM1ZmVjMWUxMGYxOWM2MzNhY2E1NTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC03NSw5
OCArNzUsOTggQEAgYm9vbCBXZWJMYXllclRyZWVWaWV3Ojppbml0aWFsaXplKFdlYkxheWVyVHJl
ZVZpZXdDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViTGF5ZXIKIAogdm9pZCBXZWJMYXllclRyZWVW
aWV3OjpzZXRTdXJmYWNlUmVhZHkoKQogewotICAgIG1fcHJpdmF0ZS0+c2V0U3VyZmFjZVJlYWR5
KCk7CisgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldFN1cmZhY2VSZWFkeSgpOwog
fQogCiB2b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldFJvb3RMYXllcihXZWJMYXllciAqcm9vdCkK
IHsKICAgICBpZiAocm9vdCkKLSAgICAgICAgbV9wcml2YXRlLT5zZXRSb290TGF5ZXIoKnJvb3Qp
OworICAgICAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c2V0Um9vdExheWVyKCpyb290
KTsKICAgICBlbHNlCi0gICAgICAgIG1fcHJpdmF0ZS0+c2V0Um9vdExheWVyKFBhc3NSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4oKSk7CisgICAgICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5z
ZXRSb290TGF5ZXIoUGFzc1JlZlB0cjxMYXllckNocm9taXVtPigpKTsKIH0KIAogaW50IFdlYkxh
eWVyVHJlZVZpZXc6OmNvbXBvc2l0b3JJZGVudGlmaWVyKCkKIHsKLSAgICByZXR1cm4gbV9wcml2
YXRlLT5jb21wb3NpdG9ySWRlbnRpZmllcigpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmxheWVy
VHJlZUhvc3QoKS0+Y29tcG9zaXRvcklkZW50aWZpZXIoKTsKIH0KIAogdm9pZCBXZWJMYXllclRy
ZWVWaWV3OjpzZXRWaWV3cG9ydFNpemUoY29uc3QgV2ViU2l6ZSYgdmlld3BvcnRTaXplKQogewot
ICAgIG1fcHJpdmF0ZS0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7CisgICAgbV9wcml2
YXRlLT5sYXllclRyZWVIb3N0KCktPnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUpOwogfQog
CiBXZWJTaXplIFdlYkxheWVyVHJlZVZpZXc6OnZpZXdwb3J0U2l6ZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIFdlYlNpemUobV9wcml2YXRlLT52aWV3cG9ydFNpemUoKSk7CisgICAgcmV0dXJuIFdl
YlNpemUobV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnZpZXdwb3J0U2l6ZSgpKTsKIH0KIAog
dm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IgY29sb3Ip
CiB7Ci0gICAgbV9wcml2YXRlLT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOworICAgIG1fcHJp
dmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOwogfQogCiB2
b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogewotICAgIG1f
cHJpdmF0ZS0+c2V0VmlzaWJsZSh2aXNpYmxlKTsKKyAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhv
c3QoKS0+c2V0VmlzaWJsZSh2aXNpYmxlKTsKIH0KIAogdm9pZCBXZWJMYXllclRyZWVWaWV3Ojpz
ZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMoZmxvYXQgcGFnZVNjYWxlRmFjdG9yLCBmbG9hdCBt
aW5pbXVtLCBmbG9hdCBtYXhpbXVtKQogewotICAgIG1fcHJpdmF0ZS0+c2V0UGFnZVNjYWxlRmFj
dG9yQW5kTGltaXRzKHBhZ2VTY2FsZUZhY3RvciwgbWluaW11bSwgbWF4aW11bSk7CisgICAgbV9w
cml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cyhwYWdl
U2NhbGVGYWN0b3IsIG1pbmltdW0sIG1heGltdW0pOwogfQogCiB2b2lkIFdlYkxheWVyVHJlZVZp
ZXc6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IFdlYlBvaW50JiBzY3JvbGwsIGJvb2wg
dXNlQW5jaG9yLCBmbG9hdCBuZXdQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykKIHsKLSAg
ICBtX3ByaXZhdGUtPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKEludFNpemUoc2Nyb2xsLngsIHNj
cm9sbC55KSwgdXNlQW5jaG9yLCBuZXdQYWdlU2NhbGUsIGR1cmF0aW9uU2VjKTsKKyAgICBtX3By
aXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oSW50U2l6ZShz
Y3JvbGwueCwgc2Nyb2xsLnkpLCB1c2VBbmNob3IsIG5ld1BhZ2VTY2FsZSwgZHVyYXRpb25TZWMp
OwogfQogCiB2b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldE5lZWRzQW5pbWF0ZSgpCiB7Ci0gICAg
bV9wcml2YXRlLT5zZXROZWVkc0FuaW1hdGUoKTsKKyAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhv
c3QoKS0+c2V0TmVlZHNBbmltYXRlKCk7CiB9CiAKIHZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6c2V0
TmVlZHNSZWRyYXcoKQogewotICAgIG1fcHJpdmF0ZS0+c2V0TmVlZHNSZWRyYXcoKTsKKyAgICBt
X3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c2V0TmVlZHNSZWRyYXcoKTsKIH0KIAogYm9vbCBX
ZWJMYXllclRyZWVWaWV3Ojpjb21taXRSZXF1ZXN0ZWQoKSBjb25zdAogewotICAgIHJldHVybiBt
X3ByaXZhdGUtPmNvbW1pdFJlcXVlc3RlZCgpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmxheWVy
VHJlZUhvc3QoKS0+Y29tbWl0UmVxdWVzdGVkKCk7CiB9CiAKIHZvaWQgV2ViTGF5ZXJUcmVlVmll
dzo6Y29tcG9zaXRlKCkKIHsKICAgICBpZiAoQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpKQotICAg
ICAgICBtX3ByaXZhdGUtPnNldE5lZWRzQ29tbWl0KCk7CisgICAgICAgIG1fcHJpdmF0ZS0+bGF5
ZXJUcmVlSG9zdCgpLT5zZXROZWVkc0NvbW1pdCgpOwogICAgIGVsc2UKLSAgICAgICAgbV9wcml2
YXRlLT5jb21wb3NpdGUoKTsKKyAgICAgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPmNv
bXBvc2l0ZSgpOwogfQogCiB2b2lkIFdlYkxheWVyVHJlZVZpZXc6OnVwZGF0ZUFuaW1hdGlvbnMo
ZG91YmxlIGZyYW1lQmVnaW5UaW1lKQogewotICAgIG1fcHJpdmF0ZS0+dXBkYXRlQW5pbWF0aW9u
cyhmcmFtZUJlZ2luVGltZSk7CisgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnVwZGF0
ZUFuaW1hdGlvbnMoZnJhbWVCZWdpblRpbWUpOwogfQogCiBib29sIFdlYkxheWVyVHJlZVZpZXc6
OmNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVscywgY29uc3QgV2ViUmVjdCYgcmVjdCkK
IHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5jb21wb3NpdGVBbmRSZWFkYmFjayhwaXhlbHMsIHJl
Y3QpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+Y29tcG9zaXRlQW5k
UmVhZGJhY2socGl4ZWxzLCByZWN0KTsKIH0KIAogdm9pZCBXZWJMYXllclRyZWVWaWV3OjpmaW5p
c2hBbGxSZW5kZXJpbmcoKQogewotICAgIG1fcHJpdmF0ZS0+ZmluaXNoQWxsUmVuZGVyaW5nKCk7
CisgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPmZpbmlzaEFsbFJlbmRlcmluZygpOwog
fQogCiBXZWJHcmFwaGljc0NvbnRleHQzRCogV2ViTGF5ZXJUcmVlVmlldzo6Y29udGV4dCgpCiB7
Ci0gICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNz
Q29udGV4dDNEKG1fcHJpdmF0ZS0+Y29udGV4dCgpKTsKKyAgICByZXR1cm4gR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QobV9wcml2YXRlLT5sYXll
clRyZWVIb3N0KCktPmNvbnRleHQoKSk7CiB9CiAKIHZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6bG9z
ZUNvbXBvc2l0b3JDb250ZXh0KGludCBudW1UaW1lcykKIHsKLSAgICBtX3ByaXZhdGUtPmxvc2VD
b250ZXh0KG51bVRpbWVzKTsKKyAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+bG9zZUNv
bnRleHQobnVtVGltZXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAppbmRleCAx
YzBhMGU4MTYwNjQzYzhjZjBhNTkzZjg1OGY4MmFiNDFkNjU3NzE5Li43ODc0NzhmZGFiZmFmNTky
NDRhZGVhOGFlYjRhMDlkYzcxNDczZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiQ0NUaHJlYWRJbXBsLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
LmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVl
SG9zdC5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVyLmgi
CkBAIC00MSw4NyArNDIsNTUgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCisvLyBDb252ZXJ0cyBtZXNzYWdlcyBmcm9tIENDTGF5ZXJUcmVlSG9zdENs
aWVudCB0byBXZWJMYXllclRyZWVWaWV3Q2xpZW50LgorY2xhc3MgV2ViTGF5ZXJUcmVlVmlld0Ns
aWVudEFkYXB0ZXIgOiBwdWJsaWMgV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Q2xpZW50IHsKK3B1
YmxpYzoKKyAgICBXZWJMYXllclRyZWVWaWV3Q2xpZW50QWRhcHRlcihXZWJMYXllclRyZWVWaWV3
Q2xpZW50KiBjbGllbnQpIDogbV9jbGllbnQoY2xpZW50KSB7IH0KKyAgICB2aXJ0dWFsIH5XZWJM
YXllclRyZWVWaWV3Q2xpZW50QWRhcHRlcigpIHsgfQorCisgICAgLy8gQ0NMYXllclRyZWVIb3N0
Q2xpZW50IGltcGxlbWVudGF0aW9uCisgICAgdmlydHVhbCB2b2lkIHdpbGxCZWdpbkZyYW1lKCkg
T1ZFUlJJREUgeyBtX2NsaWVudC0+d2lsbEJlZ2luRnJhbWUoKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRCZWdpbkZyYW1lKCkgT1ZFUlJJREUgeyBtX2NsaWVudC0+ZGlkQmVnaW5GcmFtZSgpOyB9
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY0ZyYW1l
QmVnaW5UaW1lKSBPVkVSUklERSB7IG1fY2xpZW50LT51cGRhdGVBbmltYXRpb25zKG1vbm90b25p
Y0ZyYW1lQmVnaW5UaW1lKTsgfQorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERSB7
IG1fY2xpZW50LT5sYXlvdXQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNj
YWxlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbGUp
IE9WRVJSSURFIHsgbV9jbGllbnQtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoc2Nyb2xsRGVsdGEsIHBh
Z2VTY2FsZSk7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q+IGNyZWF0ZUNvbnRleHQoKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgT3duUHRyPFdl
YkdyYXBoaWNzQ29udGV4dDNEPiB3ZWJDb250ZXh0ID0gYWRvcHRQdHIobV9jbGllbnQtPmNyZWF0
ZUNvbnRleHQzRCgpKTsKKyAgICAgICAgaWYgKCF3ZWJDb250ZXh0KQorICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdy
YXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KHdlYkNvbnRleHQucmVsZWFzZSgpLCBHcmFwaGlj
c0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3csIGZhbHNlIC8qIHByZXNlcnZl
RHJhd2luZ0J1ZmZlciAqLyApOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVD
b250ZXh0KGJvb2wgc3VjY2VzcykgT1ZFUlJJREUgeyBtX2NsaWVudC0+ZGlkUmViaW5kR3JhcGhp
Y3NDb250ZXh0KHN1Y2Nlc3MpOyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxDb21taXQoKSBPVkVS
UklERSB7IG1fY2xpZW50LT53aWxsQ29tbWl0KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29t
bWl0KCkgT1ZFUlJJREUgeyBtX2NsaWVudC0+ZGlkQ29tbWl0KCk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgT1ZFUlJJREUgeyBtX2NsaWVudC0+ZGlkQ29tbWl0
QW5kRHJhd0ZyYW1lKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVy
cygpIE9WRVJSSURFIHsgbV9jbGllbnQtPmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0ZSgpIE9WRVJSSURFIHsgbV9jbGllbnQtPnNj
aGVkdWxlQ29tcG9zaXRlKCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJMYXllclRyZWVWaWV3Q2xp
ZW50KiBtX2NsaWVudDsKK307CisKIFBhc3NPd25QdHI8V2ViTGF5ZXJUcmVlVmlld0ltcGw+IFdl
YkxheWVyVHJlZVZpZXdJbXBsOjpjcmVhdGUoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCogY2xpZW50
LCBjb25zdCBXZWJMYXllciYgcm9vdCwgY29uc3QgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3Mm
IHNldHRpbmdzKQogewotICAgIE93blB0cjxXZWJMYXllclRyZWVWaWV3SW1wbD4gaG9zdCA9IGFk
b3B0UHRyKG5ldyBXZWJMYXllclRyZWVWaWV3SW1wbChjbGllbnQsIHNldHRpbmdzKSk7Ci0gICAg
aWYgKCFob3N0LT5pbml0aWFsaXplKCkpCisgICAgT3duUHRyPFdlYkxheWVyVHJlZVZpZXdJbXBs
PiBpbXBsID0gYWRvcHRQdHIobmV3IFdlYkxheWVyVHJlZVZpZXdJbXBsKGNsaWVudCwgc2V0dGlu
Z3MpKTsKKyAgICBpZiAoIWltcGwtPmxheWVyVHJlZUhvc3QoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgaG9zdC0+c2V0Um9vdExheWVyKHJvb3QpOwotICAgIHJldHVybiBob3N0LnJl
bGVhc2UoKTsKKyAgICBpbXBsLT5sYXllclRyZWVIb3N0KCktPnNldFJvb3RMYXllcihyb290KTsK
KyAgICByZXR1cm4gaW1wbC5yZWxlYXNlKCk7CiB9CiAKIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpX
ZWJMYXllclRyZWVWaWV3SW1wbChXZWJMYXllclRyZWVWaWV3Q2xpZW50KiBjbGllbnQsIGNvbnN0
IFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzJiBzZXR0aW5ncykgCi0gICAgOiBDQ0xheWVyVHJl
ZUhvc3QodGhpcywgc2V0dGluZ3MpCi0gICAgLCBtX2NsaWVudChjbGllbnQpCisgICAgOiBtX2Ns
aWVudEFkYXB0ZXIoYWRvcHRQdHIobmV3IFdlYkxheWVyVHJlZVZpZXdDbGllbnRBZGFwdGVyKGNs
aWVudCkpKQorICAgICwgbV9sYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKG1f
Y2xpZW50QWRhcHRlci5nZXQoKSwgc2V0dGluZ3MpKQogewogfQogCiBXZWJMYXllclRyZWVWaWV3
SW1wbDo6fldlYkxheWVyVHJlZVZpZXdJbXBsKCkKIHsKLX0KLQotdm9pZCBXZWJMYXllclRyZWVW
aWV3SW1wbDo6d2lsbEJlZ2luRnJhbWUoKQotewotICAgIG1fY2xpZW50LT53aWxsQmVnaW5GcmFt
ZSgpOwotfQotCi12b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpkaWRCZWdpbkZyYW1lKCkKLXsK
LSAgICBtX2NsaWVudC0+ZGlkQmVnaW5GcmFtZSgpOwotfQotCi12b2lkIFdlYkxheWVyVHJlZVZp
ZXdJbXBsOjp1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZSkK
LXsKLSAgICBtX2NsaWVudC0+dXBkYXRlQW5pbWF0aW9ucyhtb25vdG9uaWNGcmFtZUJlZ2luVGlt
ZSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmxheW91dCgpCi17Ci0gICAgbV9j
bGllbnQtPmxheW91dCgpOwotfQotCi12b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjphcHBseVNj
cm9sbEFuZFNjYWxlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBw
YWdlU2NhbGUpCi17Ci0gICAgbV9jbGllbnQtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoV2ViU2l6ZShz
Y3JvbGxEZWx0YSksIHBhZ2VTY2FsZSk7Ci19Ci0KLVBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0
M0Q+IFdlYkxheWVyVHJlZVZpZXdJbXBsOjpjcmVhdGVDb250ZXh0KCkKLXsKLSAgICBPd25QdHI8
V2ViR3JhcGhpY3NDb250ZXh0M0Q+IHdlYkNvbnRleHQgPSBhZG9wdFB0cihtX2NsaWVudC0+Y3Jl
YXRlQ29udGV4dDNEKCkpOwotICAgIGlmICghd2ViQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0Nv
bnRleHRGcm9tV2ViQ29udGV4dCh3ZWJDb250ZXh0LnJlbGVhc2UoKSwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93LCBmYWxzZSAvKiBwcmVzZXJ2ZURyYXdpbmdC
dWZmZXIgKi8gKTsKLX0KLQotdm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6ZGlkUmVjcmVhdGVD
b250ZXh0KGJvb2wgc3VjY2VzcykKLXsKLSAgICBtX2NsaWVudC0+ZGlkUmViaW5kR3JhcGhpY3ND
b250ZXh0KHN1Y2Nlc3MpOwotfQotCi12b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjp3aWxsQ29t
bWl0KCkKLXsKLSAgICBtX2NsaWVudC0+d2lsbENvbW1pdCgpOwotfQotCi12b2lkIFdlYkxheWVy
VHJlZVZpZXdJbXBsOjpkaWRDb21taXQoKQotewotICAgIG1fY2xpZW50LT5kaWRDb21taXQoKTsK
LX0KLQotdm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkK
LXsKLSAgICBtX2NsaWVudC0+ZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7Ci19Ci0KLXZvaWQgV2Vi
TGF5ZXJUcmVlVmlld0ltcGw6OmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKQotewotICAgIG1fY2xp
ZW50LT5kaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJUcmVlVmll
d0ltcGw6OnNjaGVkdWxlQ29tcG9zaXRlKCkKLXsKLSAgICBtX2NsaWVudC0+c2NoZWR1bGVDb21w
b3NpdGUoKTsKKyAgICAvLyBNYWtlIHN1cmUgdGhlIGhvc3QgaXMgZGVzdHJveWVkIGJlZm9yZSBp
dHMgY2xpZW50LgorICAgIG1fbGF5ZXJUcmVlSG9zdC5jbGVhcigpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVyVHJlZVZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRy
ZWVWaWV3SW1wbC5oCmluZGV4IGY4NTRiN2U2MGUwMzMxNTdkZmEwNmZiMjg3NWFhZGI0NTBiMmI1
NzQuLjExODQzNDJlOGJjZTMxYmIzODJlYjIyY2QwNzRmNzBhZWI1ZTk0Y2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaApAQCAtMjcs
MzcgKzI3LDMwIEBACiAjZGVmaW5lIFdlYkxheWVyVHJlZVZpZXdJbXBsX2gKIAogI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkxheWVyVHJlZVZpZXcuaCIKLSNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhv
c3QuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQ0NMYXllclRyZWVIb3N0OworfQorCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkxheWVyOwogY2xhc3MgV2ViTGF5ZXJUcmVlVmll
d0NsaWVudDsKK2NsYXNzIFdlYkxheWVyVHJlZVZpZXdDbGllbnRBZGFwdGVyOwogCi1jbGFzcyBX
ZWJMYXllclRyZWVWaWV3SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3QsIHB1
YmxpYyBXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RDbGllbnQgeworY2xhc3MgV2ViTGF5ZXJUcmVl
Vmlld0ltcGwgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYkxheWVyVHJlZVZp
ZXdJbXBsPiBjcmVhdGUoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCosIGNvbnN0IFdlYkxheWVyJiBy
b290LCBjb25zdCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncyYpOwogICAgIHZpcnR1YWwgfldl
YkxheWVyVHJlZVZpZXdJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlZ2luRnJhbWUo
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQmVnaW5GcmFtZSgpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNGcmFtZUJl
Z2luVGltZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbGUpIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlQ29udGV4dCgpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUNvbnRleHQoYm9vbCBzdWNjZXNz
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENvbW1pdCgpIE9WRVJSSURFOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRDb21taXQoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
Q29tbWl0QW5kRHJhd0ZyYW1lKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbXBs
ZXRlU3dhcEJ1ZmZlcnMoKSBPVkVSUklERTsKLQotICAgIC8vIE9ubHkgdXNlZCBpbiB0aGUgc2lu
Z2xlIHRocmVhZGVkIHBhdGguCi0gICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRlKCkg
T1ZFUlJJREU7CisgICAgV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KCkg
eyByZXR1cm4gbV9sYXllclRyZWVIb3N0LmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViTGF5
ZXJUcmVlVmlld0ltcGwoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCosIGNvbnN0IFdlYkxheWVyVHJl
ZVZpZXc6OlNldHRpbmdzJik7CiAKLSAgICBXZWJMYXllclRyZWVWaWV3Q2xpZW50KiBtX2NsaWVu
dDsKKyAgICBPd25QdHI8V2ViTGF5ZXJUcmVlVmlld0NsaWVudEFkYXB0ZXI+IG1fY2xpZW50QWRh
cHRlcjsKKyAgICBPd25QdHI8V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0PiBtX2xheWVyVHJlZUhv
c3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144138</attachid>
            <date>2012-05-25 13:37:17 -0700</date>
            <delta_ts>2012-05-25 14:28:43 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-87301-20120525163715.patch</filename>
            <type>text/plain</type>
            <size>14440</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDZkZTQ1NjUzMDhkZWM2M2ZmOWQwNGJhZmJmMzYwMTJiOGVhOTcwNjYuLjNhOWE5Njk2MTdkZmNj
YzcwMmIxZWZjYjQ1YTUyNDFjNjYxODlmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTkgQEAKKzIwMTItMDUtMjUgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBXZWJMYXllclRyZWVWaWV3SW1wbCBzaG91bGQg
bm90IGhpZGUgbWV0aG9kcyBpbiBDQ0xheWVyVHJlZUhvc3Qgd2l0aCBzaWduYXR1cmVzIHRoYXQg
bWF0Y2ggdGhlIENsaWVudCBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg3MzAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9i
aW5zb24uCisKKyAgICAgICAgTW9zdCBtZXRob2RzIGluIHRoZSBDQ0xheWVyVHJlZUhvc3RDbGll
bnQgaW50ZXJmYWNlIGhhdmUgYSBtYXRjaGluZworICAgICAgICBtZXRob2Qgc2lnbmF0dXJlIG9u
IENDTGF5ZXJUcmVlSG9zdCB0aGF0IHNpbXBseSBjYWxscyB0aGUgY2xpZW50LCBpZgorICAgICAg
ICBvbmUgZXhpc3RzIGF0IGFsbC4gSG93ZXZlciwgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVBbmlt
YXRpb25zKCkgZG9lcworICAgICAgICBpbXBvcnRhbnQgd29yayBpbiBhZGRpdGlvbiB0byBjYWxs
aW5nIHRoZSBjbGllbnQuCisKKyAgICAgICAgQ3VycmVudGx5IFdlYkxheWVyVHJlZVZpZXdJbXBs
IGl0c2VsZiBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UgZm9yCisgICAgICAgIENDTGF5ZXJUcmVl
SG9zdENsaWVudCBhcyB3ZWxsIGFzIENDTGF5ZXJUcmVlSG9zdCwgYW5kIHNpbXBseSBmb3J3YXJk
cworICAgICAgICBhbnkgY2FsbCB0byBhIG1ldGhvZCBpbiB0aGUgY2xpZW50IGludGVyZmFjZSB0
byBpdHMgb3duIGNsaWVudC4gVGhpcworICAgICAgICBibG9ja3MgV2ViVmlld0ltcGwgZnJvbSBj
YWxsaW5nIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQW5pbWF0aW9ucywgc2luY2UKKyAgICAgICAg
dGhlIG1ldGhvZCBpcyBhbHNvIGluIHRoZSBjbGllbnQgaW50ZXJmYWNlLgorCisgICAgICAgIFdl
IGNoYW5nZSBXZWJMYXllclRyZWVWaWV3SW1wbCB0byBvd24gYSBDQ0xheWVyVHJlZUhvc3QgYW5k
IGEKKyAgICAgICAgV2ViTGF5ZXJUcmVlSG9zdENsaWVudEFkYXB0ZXIuIFRoaXMgZml4ZXMgdGhl
IHNoYWRvd2luZyBieSBtYWtpbmcKKyAgICAgICAgdGhlIHR3byBpbnRlcmZhY2VzIHNlcGFyYXRl
LCBhbmQgcmVzb2x2ZXMgbGlmZXRpbWUgaXNzdWVzIGJ5CisgICAgICAgIGVuc3VyaW5nIHRoYXQg
dGhlIENDTGF5ZXJUcmVlSG9zdCBpcyBkZXN0cm95ZWQgYmVmb3JlIGl0cyBjbGllbnQuCisKKyAg
ICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxh
eWVyVHJlZVZpZXc6OnNldFN1cmZhY2VSZWFkeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
VHJlZVZpZXc6OnNldFJvb3RMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZp
ZXc6OmNvbXBvc2l0b3JJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVl
Vmlldzo6c2V0Vmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmll
dzo6dmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6c2V0
QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6c2V0
VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OnNldFBhZ2VTY2Fs
ZUZhY3RvckFuZExpbWl0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OnN0
YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmll
dzo6c2V0TmVlZHNBbmltYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6
c2V0TmVlZHNSZWRyYXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3Ojpjb21t
aXRSZXF1ZXN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3Ojpjb21wb3Np
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3Ojp1cGRhdGVBbmltYXRpb25z
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6Y29tcG9zaXRlQW5kUmVhZGJh
Y2spOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpmaW5pc2hBbGxSZW5kZXJp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3Ojpjb250ZXh0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6bG9zZUNvbXBvc2l0b3JDb250ZXh0KToKKyAg
ICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYkxheWVyVHJlZVZpZXdDbGllbnRBZGFwdGVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTGF5ZXJUcmVlVmlld0NsaWVudEFkYXB0ZXI6OldlYkxheWVyVHJlZVZpZXdDbGllbnRB
ZGFwdGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0NsaWVudEFkYXB0ZXI6
On5XZWJMYXllclRyZWVWaWV3Q2xpZW50QWRhcHRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkxh
eWVyVHJlZVZpZXdJbXBsOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVW
aWV3SW1wbDo6V2ViTGF5ZXJUcmVlVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXll
clRyZWVWaWV3SW1wbDo6fldlYkxheWVyVHJlZVZpZXdJbXBsKToKKyAgICAgICAgKiBzcmMvV2Vi
TGF5ZXJUcmVlVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OmxheWVyVHJlZUhvc3Qp
OgorICAgICAgICAoV2ViTGF5ZXJUcmVlVmlld0ltcGwpOgorCiAyMDEyLTA1LTI1ICBLaW51a28g
WWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkOyByb2xs
aW5nIGNocm9taXVtIGRlcHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJMYXllclRyZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVyVHJlZVZpZXcuY3BwCmluZGV4IGE0ZDdkOTE4YTg2NThlMWRiN2YyN2M4MmExNWNmMmJhZWJk
ZDczNTguLjY1YTJhNjNiMThhMmM4Y2NmZGM1ZmVjMWUxMGYxOWM2MzNhY2E1NTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC03NSw5
OCArNzUsOTggQEAgYm9vbCBXZWJMYXllclRyZWVWaWV3Ojppbml0aWFsaXplKFdlYkxheWVyVHJl
ZVZpZXdDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViTGF5ZXIKIAogdm9pZCBXZWJMYXllclRyZWVW
aWV3OjpzZXRTdXJmYWNlUmVhZHkoKQogewotICAgIG1fcHJpdmF0ZS0+c2V0U3VyZmFjZVJlYWR5
KCk7CisgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldFN1cmZhY2VSZWFkeSgpOwog
fQogCiB2b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldFJvb3RMYXllcihXZWJMYXllciAqcm9vdCkK
IHsKICAgICBpZiAocm9vdCkKLSAgICAgICAgbV9wcml2YXRlLT5zZXRSb290TGF5ZXIoKnJvb3Qp
OworICAgICAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c2V0Um9vdExheWVyKCpyb290
KTsKICAgICBlbHNlCi0gICAgICAgIG1fcHJpdmF0ZS0+c2V0Um9vdExheWVyKFBhc3NSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4oKSk7CisgICAgICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5z
ZXRSb290TGF5ZXIoUGFzc1JlZlB0cjxMYXllckNocm9taXVtPigpKTsKIH0KIAogaW50IFdlYkxh
eWVyVHJlZVZpZXc6OmNvbXBvc2l0b3JJZGVudGlmaWVyKCkKIHsKLSAgICByZXR1cm4gbV9wcml2
YXRlLT5jb21wb3NpdG9ySWRlbnRpZmllcigpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmxheWVy
VHJlZUhvc3QoKS0+Y29tcG9zaXRvcklkZW50aWZpZXIoKTsKIH0KIAogdm9pZCBXZWJMYXllclRy
ZWVWaWV3OjpzZXRWaWV3cG9ydFNpemUoY29uc3QgV2ViU2l6ZSYgdmlld3BvcnRTaXplKQogewot
ICAgIG1fcHJpdmF0ZS0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7CisgICAgbV9wcml2
YXRlLT5sYXllclRyZWVIb3N0KCktPnNldFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUpOwogfQog
CiBXZWJTaXplIFdlYkxheWVyVHJlZVZpZXc6OnZpZXdwb3J0U2l6ZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIFdlYlNpemUobV9wcml2YXRlLT52aWV3cG9ydFNpemUoKSk7CisgICAgcmV0dXJuIFdl
YlNpemUobV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnZpZXdwb3J0U2l6ZSgpKTsKIH0KIAog
dm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IgY29sb3Ip
CiB7Ci0gICAgbV9wcml2YXRlLT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOworICAgIG1fcHJp
dmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOwogfQogCiB2
b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogewotICAgIG1f
cHJpdmF0ZS0+c2V0VmlzaWJsZSh2aXNpYmxlKTsKKyAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhv
c3QoKS0+c2V0VmlzaWJsZSh2aXNpYmxlKTsKIH0KIAogdm9pZCBXZWJMYXllclRyZWVWaWV3Ojpz
ZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMoZmxvYXQgcGFnZVNjYWxlRmFjdG9yLCBmbG9hdCBt
aW5pbXVtLCBmbG9hdCBtYXhpbXVtKQogewotICAgIG1fcHJpdmF0ZS0+c2V0UGFnZVNjYWxlRmFj
dG9yQW5kTGltaXRzKHBhZ2VTY2FsZUZhY3RvciwgbWluaW11bSwgbWF4aW11bSk7CisgICAgbV9w
cml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldFBhZ2VTY2FsZUZhY3RvckFuZExpbWl0cyhwYWdl
U2NhbGVGYWN0b3IsIG1pbmltdW0sIG1heGltdW0pOwogfQogCiB2b2lkIFdlYkxheWVyVHJlZVZp
ZXc6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IFdlYlBvaW50JiBzY3JvbGwsIGJvb2wg
dXNlQW5jaG9yLCBmbG9hdCBuZXdQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykKIHsKLSAg
ICBtX3ByaXZhdGUtPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKEludFNpemUoc2Nyb2xsLngsIHNj
cm9sbC55KSwgdXNlQW5jaG9yLCBuZXdQYWdlU2NhbGUsIGR1cmF0aW9uU2VjKTsKKyAgICBtX3By
aXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oSW50U2l6ZShz
Y3JvbGwueCwgc2Nyb2xsLnkpLCB1c2VBbmNob3IsIG5ld1BhZ2VTY2FsZSwgZHVyYXRpb25TZWMp
OwogfQogCiB2b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldE5lZWRzQW5pbWF0ZSgpCiB7Ci0gICAg
bV9wcml2YXRlLT5zZXROZWVkc0FuaW1hdGUoKTsKKyAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhv
c3QoKS0+c2V0TmVlZHNBbmltYXRlKCk7CiB9CiAKIHZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6c2V0
TmVlZHNSZWRyYXcoKQogewotICAgIG1fcHJpdmF0ZS0+c2V0TmVlZHNSZWRyYXcoKTsKKyAgICBt
X3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c2V0TmVlZHNSZWRyYXcoKTsKIH0KIAogYm9vbCBX
ZWJMYXllclRyZWVWaWV3Ojpjb21taXRSZXF1ZXN0ZWQoKSBjb25zdAogewotICAgIHJldHVybiBt
X3ByaXZhdGUtPmNvbW1pdFJlcXVlc3RlZCgpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmxheWVy
VHJlZUhvc3QoKS0+Y29tbWl0UmVxdWVzdGVkKCk7CiB9CiAKIHZvaWQgV2ViTGF5ZXJUcmVlVmll
dzo6Y29tcG9zaXRlKCkKIHsKICAgICBpZiAoQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpKQotICAg
ICAgICBtX3ByaXZhdGUtPnNldE5lZWRzQ29tbWl0KCk7CisgICAgICAgIG1fcHJpdmF0ZS0+bGF5
ZXJUcmVlSG9zdCgpLT5zZXROZWVkc0NvbW1pdCgpOwogICAgIGVsc2UKLSAgICAgICAgbV9wcml2
YXRlLT5jb21wb3NpdGUoKTsKKyAgICAgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPmNv
bXBvc2l0ZSgpOwogfQogCiB2b2lkIFdlYkxheWVyVHJlZVZpZXc6OnVwZGF0ZUFuaW1hdGlvbnMo
ZG91YmxlIGZyYW1lQmVnaW5UaW1lKQogewotICAgIG1fcHJpdmF0ZS0+dXBkYXRlQW5pbWF0aW9u
cyhmcmFtZUJlZ2luVGltZSk7CisgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnVwZGF0
ZUFuaW1hdGlvbnMoZnJhbWVCZWdpblRpbWUpOwogfQogCiBib29sIFdlYkxheWVyVHJlZVZpZXc6
OmNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVscywgY29uc3QgV2ViUmVjdCYgcmVjdCkK
IHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5jb21wb3NpdGVBbmRSZWFkYmFjayhwaXhlbHMsIHJl
Y3QpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+Y29tcG9zaXRlQW5k
UmVhZGJhY2socGl4ZWxzLCByZWN0KTsKIH0KIAogdm9pZCBXZWJMYXllclRyZWVWaWV3OjpmaW5p
c2hBbGxSZW5kZXJpbmcoKQogewotICAgIG1fcHJpdmF0ZS0+ZmluaXNoQWxsUmVuZGVyaW5nKCk7
CisgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPmZpbmlzaEFsbFJlbmRlcmluZygpOwog
fQogCiBXZWJHcmFwaGljc0NvbnRleHQzRCogV2ViTGF5ZXJUcmVlVmlldzo6Y29udGV4dCgpCiB7
Ci0gICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNz
Q29udGV4dDNEKG1fcHJpdmF0ZS0+Y29udGV4dCgpKTsKKyAgICByZXR1cm4gR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QobV9wcml2YXRlLT5sYXll
clRyZWVIb3N0KCktPmNvbnRleHQoKSk7CiB9CiAKIHZvaWQgV2ViTGF5ZXJUcmVlVmlldzo6bG9z
ZUNvbXBvc2l0b3JDb250ZXh0KGludCBudW1UaW1lcykKIHsKLSAgICBtX3ByaXZhdGUtPmxvc2VD
b250ZXh0KG51bVRpbWVzKTsKKyAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+bG9zZUNv
bnRleHQobnVtVGltZXMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAppbmRleCAx
YzBhMGU4MTYwNjQzYzhjZjBhNTkzZjg1OGY4MmFiNDFkNjU3NzE5Li40NWE5OTYwM2NiMWY1YjNm
ZTY3YzY5MjllODU4NTQzNTdlM2ZmMjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiQ0NUaHJlYWRJbXBsLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
LmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVl
SG9zdC5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkxheWVyLmgi
CkBAIC00MSwxOCArNDIsNDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCisvLyBDb252ZXJ0cyBtZXNzYWdlcyBmcm9tIENDTGF5ZXJUcmVlSG9zdENs
aWVudCB0byBXZWJMYXllclRyZWVWaWV3Q2xpZW50LgorY2xhc3MgV2ViTGF5ZXJUcmVlVmlld0Ns
aWVudEFkYXB0ZXIgOiBwdWJsaWMgV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Q2xpZW50IHsKK3B1
YmxpYzoKKyAgICBXZWJMYXllclRyZWVWaWV3Q2xpZW50QWRhcHRlcihXZWJMYXllclRyZWVWaWV3
Q2xpZW50KiBjbGllbnQpIDogbV9jbGllbnQoY2xpZW50KSB7IH0KKyAgICB2aXJ0dWFsIH5XZWJM
YXllclRyZWVWaWV3Q2xpZW50QWRhcHRlcigpIHsgfQorCisgICAgLy8gQ0NMYXllclRyZWVIb3N0
Q2xpZW50IGltcGxlbWVudGF0aW9uCisgICAgdmlydHVhbCB2b2lkIHdpbGxCZWdpbkZyYW1lKCkg
T1ZFUlJJREUgeyBtX2NsaWVudC0+d2lsbEJlZ2luRnJhbWUoKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRCZWdpbkZyYW1lKCkgT1ZFUlJJREUgeyBtX2NsaWVudC0+ZGlkQmVnaW5GcmFtZSgpOyB9
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY0ZyYW1l
QmVnaW5UaW1lKSBPVkVSUklERSB7IG1fY2xpZW50LT51cGRhdGVBbmltYXRpb25zKG1vbm90b25p
Y0ZyYW1lQmVnaW5UaW1lKTsgfQorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERSB7
IG1fY2xpZW50LT5sYXlvdXQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNj
YWxlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbGUp
IE9WRVJSSURFIHsgbV9jbGllbnQtPmFwcGx5U2Nyb2xsQW5kU2NhbGUoc2Nyb2xsRGVsdGEsIHBh
Z2VTY2FsZSk7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q+IGNyZWF0ZUNvbnRleHQoKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgT3duUHRyPFdl
YkdyYXBoaWNzQ29udGV4dDNEPiB3ZWJDb250ZXh0ID0gYWRvcHRQdHIobV9jbGllbnQtPmNyZWF0
ZUNvbnRleHQzRCgpKTsKKyAgICAgICAgaWYgKCF3ZWJDb250ZXh0KQorICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdy
YXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KHdlYkNvbnRleHQucmVsZWFzZSgpLCBHcmFwaGlj
c0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3csIGZhbHNlIC8qIHByZXNlcnZl
RHJhd2luZ0J1ZmZlciAqLyApOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVD
b250ZXh0KGJvb2wgc3VjY2VzcykgT1ZFUlJJREUgeyBtX2NsaWVudC0+ZGlkUmViaW5kR3JhcGhp
Y3NDb250ZXh0KHN1Y2Nlc3MpOyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxDb21taXQoKSBPVkVS
UklERSB7IG1fY2xpZW50LT53aWxsQ29tbWl0KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29t
bWl0KCkgT1ZFUlJJREUgeyBtX2NsaWVudC0+ZGlkQ29tbWl0KCk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCkgT1ZFUlJJREUgeyBtX2NsaWVudC0+ZGlkQ29tbWl0
QW5kRHJhd0ZyYW1lKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2FwQnVmZmVy
cygpIE9WRVJSSURFIHsgbV9jbGllbnQtPmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0ZSgpIE9WRVJSSURFIHsgbV9jbGllbnQtPnNj
aGVkdWxlQ29tcG9zaXRlKCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJMYXllclRyZWVWaWV3Q2xp
ZW50KiBtX2NsaWVudDsKK307CisKIFBhc3NPd25QdHI8V2ViTGF5ZXJUcmVlVmlld0ltcGw+IFdl
YkxheWVyVHJlZVZpZXdJbXBsOjpjcmVhdGUoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCogY2xpZW50
LCBjb25zdCBXZWJMYXllciYgcm9vdCwgY29uc3QgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3Mm
IHNldHRpbmdzKQogewotICAgIE93blB0cjxXZWJMYXllclRyZWVWaWV3SW1wbD4gaG9zdCA9IGFk
b3B0UHRyKG5ldyBXZWJMYXllclRyZWVWaWV3SW1wbChjbGllbnQsIHNldHRpbmdzKSk7Ci0gICAg
aWYgKCFob3N0LT5pbml0aWFsaXplKCkpCisgICAgT3duUHRyPFdlYkxheWVyVHJlZVZpZXdJbXBs
PiBpbXBsID0gYWRvcHRQdHIobmV3IFdlYkxheWVyVHJlZVZpZXdJbXBsKGNsaWVudCwgc2V0dGlu
Z3MpKTsKKyAgICBpZiAoIWltcGwtPmxheWVyVHJlZUhvc3QoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgaG9zdC0+c2V0Um9vdExheWVyKHJvb3QpOwotICAgIHJldHVybiBob3N0LnJl
bGVhc2UoKTsKKyAgICBpbXBsLT5sYXllclRyZWVIb3N0KCktPnNldFJvb3RMYXllcihyb290KTsK
KyAgICByZXR1cm4gaW1wbC5yZWxlYXNlKCk7CiB9CiAKIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpX
ZWJMYXllclRyZWVWaWV3SW1wbChXZWJMYXllclRyZWVWaWV3Q2xpZW50KiBjbGllbnQsIGNvbnN0
IFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzJiBzZXR0aW5ncykgCi0gICAgOiBDQ0xheWVyVHJl
ZUhvc3QodGhpcywgc2V0dGluZ3MpCi0gICAgLCBtX2NsaWVudChjbGllbnQpCisgICAgOiBtX2Ns
aWVudEFkYXB0ZXIoYWRvcHRQdHIobmV3IFdlYkxheWVyVHJlZVZpZXdDbGllbnRBZGFwdGVyKGNs
aWVudCkpKQorICAgICwgbV9sYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKG1f
Y2xpZW50QWRhcHRlci5nZXQoKSwgc2V0dGluZ3MpKQogewogfQogCkBAIC02MCw2OCArOTEsNCBA
QCBXZWJMYXllclRyZWVWaWV3SW1wbDo6fldlYkxheWVyVHJlZVZpZXdJbXBsKCkKIHsKIH0KIAot
dm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6d2lsbEJlZ2luRnJhbWUoKQotewotICAgIG1fY2xp
ZW50LT53aWxsQmVnaW5GcmFtZSgpOwotfQotCi12b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpk
aWRCZWdpbkZyYW1lKCkKLXsKLSAgICBtX2NsaWVudC0+ZGlkQmVnaW5GcmFtZSgpOwotfQotCi12
b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjp1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9u
aWNGcmFtZUJlZ2luVGltZSkKLXsKLSAgICBtX2NsaWVudC0+dXBkYXRlQW5pbWF0aW9ucyhtb25v
dG9uaWNGcmFtZUJlZ2luVGltZSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6Omxh
eW91dCgpCi17Ci0gICAgbV9jbGllbnQtPmxheW91dCgpOwotfQotCi12b2lkIFdlYkxheWVyVHJl
ZVZpZXdJbXBsOjphcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNj
cm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbGUpCi17Ci0gICAgbV9jbGllbnQtPmFwcGx5U2Nyb2xs
QW5kU2NhbGUoV2ViU2l6ZShzY3JvbGxEZWx0YSksIHBhZ2VTY2FsZSk7Ci19Ci0KLVBhc3NSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0M0Q+IFdlYkxheWVyVHJlZVZpZXdJbXBsOjpjcmVhdGVDb250ZXh0
KCkKLXsKLSAgICBPd25QdHI8V2ViR3JhcGhpY3NDb250ZXh0M0Q+IHdlYkNvbnRleHQgPSBhZG9w
dFB0cihtX2NsaWVudC0+Y3JlYXRlQ29udGV4dDNEKCkpOwotICAgIGlmICghd2ViQ29udGV4dCkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dCh3ZWJDb250ZXh0LnJlbGVhc2Uo
KSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93LCBmYWxzZSAv
KiBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgKi8gKTsKLX0KLQotdm9pZCBXZWJMYXllclRyZWVWaWV3
SW1wbDo6ZGlkUmVjcmVhdGVDb250ZXh0KGJvb2wgc3VjY2VzcykKLXsKLSAgICBtX2NsaWVudC0+
ZGlkUmViaW5kR3JhcGhpY3NDb250ZXh0KHN1Y2Nlc3MpOwotfQotCi12b2lkIFdlYkxheWVyVHJl
ZVZpZXdJbXBsOjp3aWxsQ29tbWl0KCkKLXsKLSAgICBtX2NsaWVudC0+d2lsbENvbW1pdCgpOwot
fQotCi12b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpkaWRDb21taXQoKQotewotICAgIG1fY2xp
ZW50LT5kaWRDb21taXQoKTsKLX0KLQotdm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6ZGlkQ29t
bWl0QW5kRHJhd0ZyYW1lKCkKLXsKLSAgICBtX2NsaWVudC0+ZGlkQ29tbWl0QW5kRHJhd0ZyYW1l
KCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmRpZENvbXBsZXRlU3dhcEJ1ZmZl
cnMoKQotewotICAgIG1fY2xpZW50LT5kaWRDb21wbGV0ZVN3YXBCdWZmZXJzKCk7Ci19Ci0KLXZv
aWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OnNjaGVkdWxlQ29tcG9zaXRlKCkKLXsKLSAgICBtX2Ns
aWVudC0+c2NoZWR1bGVDb21wb3NpdGUoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1w
bC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaApp
bmRleCBmODU0YjdlNjBlMDMzMTU3ZGZhMDZmYjI4NzVhYWRiNDUwYjJiNTc0Li4xMTg0MzQyZThi
Y2UzMWJiMzgyZWIyMmNkMDc0ZjcwYWViNWU5NGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgKQEAgLTI3LDM3ICsyNywzMCBAQAog
I2RlZmluZSBXZWJMYXllclRyZWVWaWV3SW1wbF9oCiAKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJM
YXllclRyZWVWaWV3LmgiCi0jaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIENDTGF5ZXJUcmVlSG9zdDsKK30KKwogbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBXZWJMYXllcjsKIGNsYXNzIFdlYkxheWVyVHJlZVZpZXdDbGllbnQ7CitjbGFz
cyBXZWJMYXllclRyZWVWaWV3Q2xpZW50QWRhcHRlcjsKIAotY2xhc3MgV2ViTGF5ZXJUcmVlVmll
d0ltcGwgOiBwdWJsaWMgV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0LCBwdWJsaWMgV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0Q2xpZW50IHsKK2NsYXNzIFdlYkxheWVyVHJlZVZpZXdJbXBsIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxXZWJMYXllclRyZWVWaWV3SW1wbD4gY3JlYXRl
KFdlYkxheWVyVHJlZVZpZXdDbGllbnQqLCBjb25zdCBXZWJMYXllciYgcm9vdCwgY29uc3QgV2Vi
TGF5ZXJUcmVlVmlldzo6U2V0dGluZ3MmKTsKICAgICB2aXJ0dWFsIH5XZWJMYXllclRyZWVWaWV3
SW1wbCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxCZWdpbkZyYW1lKCkgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRnJhbWUoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljRnJhbWVCZWdpblRpbWUpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZv
aWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0
YSwgZmxvYXQgcGFnZVNjYWxlKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQoKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVDb250ZXh0KGJvb2wgc3VjY2VzcykgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIHdpbGxDb21taXQoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ29tbWl0KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdEFuZERyYXdG
cmFtZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVN3YXBCdWZmZXJz
KCkgT1ZFUlJJREU7Ci0KLSAgICAvLyBPbmx5IHVzZWQgaW4gdGhlIHNpbmdsZSB0aHJlYWRlZCBw
YXRoLgotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0ZSgpIE9WRVJSSURFOworICAg
IFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCgpIHsgcmV0dXJuIG1fbGF5
ZXJUcmVlSG9zdC5nZXQoKTsgfQogCiBwcml2YXRlOgogICAgIFdlYkxheWVyVHJlZVZpZXdJbXBs
KFdlYkxheWVyVHJlZVZpZXdDbGllbnQqLCBjb25zdCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5n
cyYpOwogCi0gICAgV2ViTGF5ZXJUcmVlVmlld0NsaWVudCogbV9jbGllbnQ7CisgICAgT3duUHRy
PFdlYkxheWVyVHJlZVZpZXdDbGllbnRBZGFwdGVyPiBtX2NsaWVudEFkYXB0ZXI7CisgICAgT3du
UHRyPFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdD4gbV9sYXllclRyZWVIb3N0OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>