<?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>100288</bug_id>
          
          <creation_ts>2012-10-24 14:18:50 -0700</creation_ts>
          <short_desc>[EFL][WK2][AC] Regression(132392) infinite loop when displaying certain animations.</short_desc>
          <delta_ts>2012-10-30 02:00:42 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yael">yael</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>noam</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>750039</commentid>
    <comment_count>0</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-10-24 14:18:50 -0700</bug_when>
    <thetext>In EFL, we do the painting in the main loop, not in a thread, and r132392 seems to introduce an assumption that there is a second thread.
This infinite loop happens when loading e.g. http://trac.webkit.org/browser/trunk/Websites/webkit.org/blog-files/3d-transforms/poster-circle.html 

Bellow is a partial backtrace showing the problem:

41	ewk_view_display	ewk_view.cpp	1271	0x7ffff481f938	
42	WebKit::PageClientImpl::setViewNeedsDisplay	PageClientImpl.cpp	70	0x7ffff47fde0f	
43	WebKit::WebPageProxy::setViewNeedsDisplay	WebPageProxy.cpp	829	0x7ffff466e1c2	
44	WebKit::DrawingAreaProxy::updateViewport	DrawingAreaProxy.cpp	64	0x7ffff461a796	
45	WebKit::LayerTreeCoordinatorProxy::updateViewport	LayerTreeCoordinatorProxy.cpp	51	0x7ffff46cfacd	
46	WebKit::LayerTreeRenderer::updateViewport	LayerTreeRenderer.cpp	175	0x7ffff46d5a2b	
47	WTF::FunctionWrapper&lt;void (WebKit::LayerTreeRenderer::*)()&gt;::operator()	Functional.h	174	0x7ffff46d4d84	
48	WTF::BoundFunctionImpl&lt;WTF::FunctionWrapper&lt;void (WebKit::LayerTreeRenderer::*)()&gt;, void (WebKit::LayerTreeRenderer*)&gt;::operator()()	Functional.h	406	0x7ffff46d4422	
49	WTF::Function&lt;void ()&gt;::operator()() const	Functional.h	614	0x7ffff46d7ee4	
50	WebKit::LayerTreeRenderer::dispatchOnMainThread(WTF::Function&lt;void ()&gt; const&amp;)	LayerTreeRenderer.cpp	72	0x7ffff46d50a1	
51	WebKit::LayerTreeRenderer::paintToCurrentGLContext	LayerTreeRenderer.cpp	140	0x7ffff46d57cd	
52	WebKit::PageViewportControllerClientEfl::display	PageViewportControllerClientEfl.cpp	73	0x7ffff47fd374	
53	ewk_view_display	ewk_view.cpp	1271	0x7ffff481f938	
54	WebKit::PageClientImpl::setViewNeedsDisplay	PageClientImpl.cpp	70	0x7ffff47fde0f	
55	WebKit::WebPageProxy::setViewNeedsDisplay	WebPageProxy.cpp	829	0x7ffff466e1c2	
56	WebKit::DrawingAreaProxy::updateViewport	DrawingAreaProxy.cpp	64	0x7ffff461a796	
57	WebKit::LayerTreeCoordinatorProxy::updateViewport	LayerTreeCoordinatorProxy.cpp	51	0x7ffff46cfacd	
58	WebKit::LayerTreeRenderer::updateViewport	LayerTreeRenderer.cpp	175	0x7ffff46d5a2b	
59	WTF::FunctionWrapper&lt;void (WebKit::LayerTreeRenderer::*)()&gt;::operator()	Functional.h	174	0x7ffff46d4d84	
60	WTF::BoundFunctionImpl&lt;WTF::FunctionWrapper&lt;void (WebKit::LayerTreeRenderer::*)()&gt;, void (WebKit::LayerTreeRenderer*)&gt;::operator()()	Functional.h	406	0x7ffff46d4422	
61	WTF::Function&lt;void ()&gt;::operator()() const	Functional.h	614	0x7ffff46d7ee4	
62	WebKit::LayerTreeRenderer::dispatchOnMainThread(WTF::Function&lt;void ()&gt; const&amp;)	LayerTreeRenderer.cpp	72	0x7ffff46d50a1	
63	WebKit::LayerTreeRenderer::paintToCurrentGLContext	LayerTreeRenderer.cpp	140	0x7ffff46d57cd	
64	WebKit::PageViewportControllerClientEfl::display	PageViewportControllerClientEfl.cpp	73	0x7ffff47fd374	
65	ewk_view_display	ewk_view.cpp	1271	0x7ffff481f938</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750046</commentid>
    <comment_count>1</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-10-24 14:27:47 -0700</bug_when>
    <thetext>the assumption is not that there is a secondary thread - the assumption is that setViewNeedsDIsplay puts a message on the event loop rather than calling display directly...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750292</commentid>
    <comment_count>2</comment_count>
      <attachid>170535</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-10-24 18:47:59 -0700</bug_when>
    <thetext>Created attachment 170535
Patch

Set a 0 length timer when PageClientImpl::setViewNeedsDisplay is called. That makes calling ewk_view_display asynchronous and breaks the loop of ewk_view_display triggering another ewk_view_display (due to the animation) .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750498</commentid>
    <comment_count>3</comment_count>
      <attachid>170535</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-25 00:42:52 -0700</bug_when>
    <thetext>Comment on attachment 170535
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp:75
&gt; +    DisplayData* displayData = new DisplayData;
&gt; +    displayData-&gt;ewkView = m_viewWidget;
&gt; +    displayData-&gt;viewRect = rect;
&gt; +
&gt; +    ecore_timer_add(0, ewk_view_display_async, static_cast&lt;void*&gt;(displayData));

Doesn&apos;t webcore have abstractions for these ecore timers already? Why not use webcore timers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750696</commentid>
    <comment_count>4</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-10-25 05:01:36 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 170535 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170535&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp:75
&gt; &gt; +    DisplayData* displayData = new DisplayData;
&gt; &gt; +    displayData-&gt;ewkView = m_viewWidget;
&gt; &gt; +    displayData-&gt;viewRect = rect;
&gt; &gt; +
&gt; &gt; +    ecore_timer_add(0, ewk_view_display_async, static_cast&lt;void*&gt;(displayData));
&gt; 
&gt; Doesn&apos;t webcore have abstractions for these ecore timers already? Why not use webcore timers?
ok, it will look nicer :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750750</commentid>
    <comment_count>5</comment_count>
      <attachid>170628</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-10-25 06:41:35 -0700</bug_when>
    <thetext>Created attachment 170628
Patch

Rebase the patch and take comment #3 into account.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750762</commentid>
    <comment_count>6</comment_count>
      <attachid>170628</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-25 06:52:47 -0700</bug_when>
    <thetext>Comment on attachment 170628
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:265
&gt; +    while (m_dirtyRects.size()) {
&gt; +        dirtyRegion.unite(m_dirtyRects.first());
&gt; +        m_dirtyRects.remove(0);
&gt; +    }

con&apos;t you not just do m_dirtyRects.clear() or so afterward? Is remove really safe here?

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:268
&gt; +    Vector&lt;IntRect&gt; rects = dirtyRegion.rects();
&gt; +    Vector&lt;IntRect&gt;::iterator end = rects.end();

how are regions united? do you really get multiple regions afterward?

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:285
&gt; +{
&gt; +    if (!m_displayTimer.isActive())
&gt; +        m_displayTimer.startOneShot(0);
&gt; +    m_dirtyRects.append(rect);

does this actually happen?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750775</commentid>
    <comment_count>7</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-10-25 07:00:56 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 170628 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170628&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:265
&gt; &gt; +    while (m_dirtyRects.size()) {
&gt; &gt; +        dirtyRegion.unite(m_dirtyRects.first());
&gt; &gt; +        m_dirtyRects.remove(0);
&gt; &gt; +    }
&gt; 
&gt; con&apos;t you not just do m_dirtyRects.clear() or so afterward? Is remove really safe here?
&gt; 
Since I always take the first item, I think remove is safe here.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:268
&gt; &gt; +    Vector&lt;IntRect&gt; rects = dirtyRegion.rects();
&gt; &gt; +    Vector&lt;IntRect&gt;::iterator end = rects.end();
&gt; 
&gt; how are regions united? do you really get multiple regions afterward?
&gt; 
I get multiple rects before drawing, not regions. Using the region removes the need for redundant drawing.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:285
&gt; &gt; +{
&gt; &gt; +    if (!m_displayTimer.isActive())
&gt; &gt; +        m_displayTimer.startOneShot(0);
&gt; &gt; +    m_dirtyRects.append(rect);
&gt; 
&gt; does this actually happen?
yes, with the test page listed in comment #0 .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750777</commentid>
    <comment_count>8</comment_count>
      <attachid>170628</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-25 07:03:29 -0700</bug_when>
    <thetext>Comment on attachment 170628
Patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:265
&gt;&gt;&gt; +    }
&gt;&gt; 
&gt;&gt; con&apos;t you not just do m_dirtyRects.clear() or so afterward? Is remove really safe here?
&gt; 
&gt; Since I always take the first item, I think remove is safe here.

Isn&apos;t thre a removeFirst() ? anyway this might not be very efficient. Why not just iterate and call clear() afterward</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750782</commentid>
    <comment_count>9</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-10-25 07:07:09 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 170628 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170628&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:265
&gt; &gt;&gt;&gt; +    }
&gt; &gt;&gt; 
&gt; &gt;&gt; con&apos;t you not just do m_dirtyRects.clear() or so afterward? Is remove really safe here?
&gt; &gt; 
&gt; &gt; Since I always take the first item, I think remove is safe here.
&gt; 
&gt; Isn&apos;t thre a removeFirst() ? anyway this might not be very efficient. Why not just iterate and call clear() afterward

I was surprised to find that there is removeLast(), but no removeFirst() :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750792</commentid>
    <comment_count>10</comment_count>
      <attachid>170643</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-10-25 07:20:07 -0700</bug_when>
    <thetext>Created attachment 170643
Patch for landing.

Clear all the rects at once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750794</commentid>
    <comment_count>11</comment_count>
      <attachid>170643</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-25 07:23:18 -0700</bug_when>
    <thetext>Comment on attachment 170643
Patch for landing.

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:262
&gt; +    for (Vector&lt;IntRect&gt;::iterator it = m_dirtyRects.begin(); it != m_dirtyRects.end(); ++it)

I would do end out side</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750823</commentid>
    <comment_count>12</comment_count>
      <attachid>170643</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-25 07:48:54 -0700</bug_when>
    <thetext>Comment on attachment 170643
Patch for landing.

Clearing flags on attachment: 170643

Committed r132483: &lt;http://trac.webkit.org/changeset/132483&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750824</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-25 07:48:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750924</commentid>
    <comment_count>14</comment_count>
      <attachid>170643</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-25 09:32:59 -0700</bug_when>
    <thetext>Comment on attachment 170643
Patch for landing.

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:238
&gt; +    WTF::Vector &lt;WebCore::IntRect&gt; m_dirtyRects;

Just a thought but why store the dirty rects in a Vector if we are going to construct a Region from them anyway?
We could have a &quot;Region m_dirtyRegion;&quot; member instead and we would call Region::unite() in redrawRegion(). This would avoid the iteration over m_dirtyRects in the timer callback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751064</commentid>
    <comment_count>15</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-10-25 11:42:13 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 170643 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170643&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:238
&gt; &gt; +    WTF::Vector &lt;WebCore::IntRect&gt; m_dirtyRects;
&gt; 
&gt; Just a thought but why store the dirty rects in a Vector if we are going to construct a Region from them anyway?
&gt; We could have a &quot;Region m_dirtyRegion;&quot; member instead and we would call Region::unite() in redrawRegion(). This would avoid the iteration over m_dirtyRects in the timer callback.

The issue is that we are adding more rects while we are painting. We have to separate the already existing rects from the newly added, or we will end up with the same infinite loop I was trying to solve.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754084</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-30 02:00:42 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; (From update of attachment 170643 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170643&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h:238
&gt; &gt; &gt; +    WTF::Vector &lt;WebCore::IntRect&gt; m_dirtyRects;
&gt; &gt; 
&gt; &gt; Just a thought but why store the dirty rects in a Vector if we are going to construct a Region from them anyway?
&gt; &gt; We could have a &quot;Region m_dirtyRegion;&quot; member instead and we would call Region::unite() in redrawRegion(). This would avoid the iteration over m_dirtyRects in the timer callback.
&gt; 
&gt; The issue is that we are adding more rects while we are painting. We have to separate the already existing rects from the newly added, or we will end up with the same infinite loop I was trying to solve.

I&apos;m pretty sure we can achieve this by replacing the Vector with a Region. Maybe I did not explain it clearly enough so I will upload a patch for it at Bug 100736.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170535</attachid>
            <date>2012-10-24 18:47:59 -0700</date>
            <delta_ts>2012-10-25 06:41:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100288.patch</filename>
            <type>text/plain</type>
            <size>3428</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xp
ZW50SW1wbC5jcHAJKHJldmlzaW9uIDEzMjQwMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEs
NyBAQAogI2luY2x1ZGUgImV3a19kb3dubG9hZF9qb2JfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3
a192aWV3LmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPEVjb3Jl
Lmg+CiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICNpbmNsdWRlICJQYWdlVmlld3Bv
cnRDb250cm9sbGVyLmgiCkBAIC02Nyw3ICs2OCwxMSBAQAogCiB2b2lkIFBhZ2VDbGllbnRJbXBs
OjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCiB7Ci0g
ICAgZXdrX3ZpZXdfZGlzcGxheShtX3ZpZXdXaWRnZXQsIHJlY3QpOworICAgIERpc3BsYXlEYXRh
KiBkaXNwbGF5RGF0YSA9IG5ldyBEaXNwbGF5RGF0YTsKKyAgICBkaXNwbGF5RGF0YS0+ZXdrVmll
dyA9IG1fdmlld1dpZGdldDsKKyAgICBkaXNwbGF5RGF0YS0+dmlld1JlY3QgPSByZWN0OworCisg
ICAgZWNvcmVfdGltZXJfYWRkKDAsIGV3a192aWV3X2Rpc3BsYXlfYXN5bmMsIHN0YXRpY19jYXN0
PHZvaWQqPihkaXNwbGF5RGF0YSkpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaXNwbGF5
VmlldygpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuY3BwCShyZXZpc2lvbiAxMzI0MDMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNTgsNiArMTI1OCwxNCBAQAog
ICAgIGVjb3JlX2V2YXNfb2JqZWN0X2N1cnNvcl9zZXQoZWNvcmVFdmFzLCBwcml2LT5jdXJzb3JP
YmplY3QuZ2V0KCksIEVWQVNfTEFZRVJfTUFYLCBob3RzcG90WCwgaG90c3BvdFkpOwogfQogCitF
aW5hX0Jvb2wgZXdrX3ZpZXdfZGlzcGxheV9hc3luYyh2b2lkKiBkYXRhKQoreworICAgIERpc3Bs
YXlEYXRhKiBkaXNwbGF5RGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGlzcGxheURhdGEqPihkYXRh
KTsKKyAgICBld2tfdmlld19kaXNwbGF5KGRpc3BsYXlEYXRhLT5ld2tWaWV3LCBkaXNwbGF5RGF0
YS0+dmlld1JlY3QpOworICAgIGRlbGV0ZSBkaXNwbGF5RGF0YTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKIHZvaWQgZXdrX3ZpZXdfZGlzcGxheShFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
SW50UmVjdCYgcmVjdCkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHNtYXJ0RGF0YSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
dmlld19wcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCShyZXZpc2lvbiAxMzI0MDMpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUzLDcgKzUzLDEzIEBACiB0eXBlZGVmIHN0cnVjdCBFd2tfSW50ZW50X1NlcnZpY2UgRXdr
X0ludGVudF9TZXJ2aWNlOwogI2VuZGlmCiAKK3N0cnVjdCBEaXNwbGF5RGF0YSB7CisgICAgRXZh
c19PYmplY3QqIGV3a1ZpZXc7CisgICAgV2ViQ29yZTo6SW50UmVjdCB2aWV3UmVjdDsKK307CisK
IHZvaWQgZXdrX3ZpZXdfY3Vyc29yX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgV2Vi
Q29yZTo6Q3Vyc29yJiBjdXJzb3IpOworRWluYV9Cb29sIGV3a192aWV3X2Rpc3BsYXlfYXN5bmMo
dm9pZCopOwogdm9pZCBld2tfdmlld19kaXNwbGF5KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KTsKIHZvaWQgZXdrX3ZpZXdfZG93bmxvYWRfam9iX2Nh
bmNlbGxlZChFdmFzX09iamVjdCogZXdrVmlldywgRXdrX0Rvd25sb2FkX0pvYiopOwogdm9pZCBl
d2tfdmlld19kb3dubG9hZF9qb2JfZmFpbGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfRG93
bmxvYWRfSm9iKiwgRXdrX0Vycm9yKik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzI0MDMp
CisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
MSBAQAorMjAxMi0xMC0yNCAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBpbnRlbC5jb20+CisK
KyAgICAgICAgW0VGTF1bV0syXVtBQ10gUmVncmVzc2lvbigxMzIzOTIpIGluZmluaXRlIGxvb3Ag
d2hlbiBkaXNwbGF5aW5nIGNlcnRhaW4gYW5pbWF0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDI4OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gUGFnZUNsaWVudEltcGw6OnNldFZpZXdO
ZWVkc0Rpc3BsYXkgaXMgY2FsbGVkLCBzdGFydCBhIDAgbGVuZ3RoIHRpbWVyLgorICAgICAgICBU
aGF0IGJyZWFrcyB0aGUgc3luY2hyb25vdXMgbG9vcCB3ZSB3ZXJlIGV4cGVyaWVuY2luZyB3aGVu
IGV3a192aWV3X2Rpc3BsYXkKKyAgICAgICAgd2FzIGNhbGxlZCBkaXJlY3RseS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OnNldFZpZXdOZWVkc0Rpc3BsYXkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKGV3a192aWV3X2Rpc3BsYXlfYXN5
bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaDoKKyAg
ICAgICAgKERpc3BsYXlEYXRhKToKKwogMjAxMi0xMC0yNCAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgc3RyYXRlZ3kgZm9yIGxvYWRlciBjdXN0b21p
emF0aW9uLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170628</attachid>
            <date>2012-10-25 06:41:35 -0700</date>
            <delta_ts>2012-10-25 07:20:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100288.patch</filename>
            <type>text/plain</type>
            <size>3946</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjQ2OSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEyLTEwLTI1ICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdW0FDXSBS
ZWdyZXNzaW9uKDEzMjM5MikgaW5maW5pdGUgbG9vcCB3aGVuIGRpc3BsYXlpbmcgY2VydGFpbiBh
bmltYXRpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAwMjg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2hlbiBQYWdlQ2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheSBpcyBjYWxsZWQsIHN0
YXJ0IGEgMCBsZW5ndGggdGltZXIuCisgICAgICAgIFRoYXQgYnJlYWtzIHRoZSBzeW5jaHJvbm91
cyBsb29wIHdlIHdlcmUgZXhwZXJpZW5jaW5nIHdoZW4gZXdrX3ZpZXdfZGlzcGxheQorICAgICAg
ICB3YXMgY2FsbGVkIGRpcmVjdGx5LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdr
Vmlld0ltcGwuY3BwOgorICAgICAgICAoRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKToKKyAgICAg
ICAgKEV3a1ZpZXdJbXBsOjpkaXNwbGF5VGltZXJGaXJlZCk6CisgICAgICAgIChFd2tWaWV3SW1w
bDo6cmVkcmF3UmVnaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1w
bC5oOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorCiAyMDEyLTEwLTI1ICBCeXVuZ3dvbyBMZWUg
IDxidzgwLmxlZUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEFkZCBtaXNzaW5n
IG5hbWVzcGFjZS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlld0ltcGwuaAkocmV2aXNpb24gMTMyNDY5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBA
QAogI2luY2x1ZGUgPEVjb3JlX0lNRl9FdmFzLmg+CiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVGV4dERpcmVjdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4K
ICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtMjI4LDEwICsyMjksMTMgQEAKIAogcHJpdmF0ZToK
ICAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEoKTsKKyAgICB2b2lkIGRpc3BsYXlU
aW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPEV3a1ZpZXdJbXBsPiopOwogCiAgICAgRXZhc19PYmpl
Y3QqIG1fdmlldzsKICAgICB0eXBlZGVmIEhhc2hNYXA8V0tQYWdlUmVmLCBjb25zdCBFdmFzX09i
amVjdCo+IFBhZ2VWaWV3TWFwOwogICAgIHN0YXRpYyBQYWdlVmlld01hcCBwYWdlVmlld01hcDsK
KyAgICBXZWJDb3JlOjpUaW1lcjxFd2tWaWV3SW1wbD4gbV9kaXNwbGF5VGltZXI7CisgICAgV1RG
OjpWZWN0b3IgPFdlYkNvcmU6OkludFJlY3Q+IG1fZGlydHlSZWN0czsKIH07CiAKICNlbmRpZiAv
LyBFd2tWaWV3SW1wbF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlld0ltcGwuY3BwCShyZXZpc2lvbiAxMzI0NjkpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
NSw2ICsxNTUsNyBAQAogICAgICwgZXZhc0dsU3VyZmFjZSgwKQogI2VuZGlmCiAgICAgLCBtX3Zp
ZXcodmlldykKKyAgICAsIG1fZGlzcGxheVRpbWVyKHRoaXMsICZFd2tWaWV3SW1wbDo6ZGlzcGxh
eVRpbWVyRmlyZWQpCiB7CiAgICAgQVNTRVJUKHZpZXcpOwogICAgIEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNkID0gc21hcnREYXRhKCk7CkBAIC0yNDYsNyArMjQ3LDcgQEAKICAgICBlY29yZV9ldmFz
X29iamVjdF9jdXJzb3Jfc2V0KGVjb3JlRXZhcywgY3Vyc29yT2JqZWN0LmdldCgpLCBFVkFTX0xB
WUVSX01BWCwgaG90c3BvdFgsIGhvdHNwb3RZKTsKIH0KIAotdm9pZCBFd2tWaWV3SW1wbDo6cmVk
cmF3UmVnaW9uKGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIEV3a1ZpZXdJbXBsOjpkaXNwbGF5
VGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxFd2tWaWV3SW1wbD4qKQogewogICAgIEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CiAKQEAgLTI1NSwxNCArMjU2LDM1IEBACiAK
ICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1Jf
UkVUVVJOKHNkLCB2aWV3SW1wbCk7CisjZW5kaWYKIAotICAgIGV2YXNfZ2xfbWFrZV9jdXJyZW50
KHZpZXdJbXBsLT5ldmFzR2wsIHZpZXdJbXBsLT5ldmFzR2xTdXJmYWNlLCB2aWV3SW1wbC0+ZXZh
c0dsQ29udGV4dCk7Ci0gICAgdmlld0ltcGwtPnBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQt
PmRpc3BsYXkocmVjdCwgSW50UG9pbnQoc2QtPnZpZXcueCwgc2QtPnZpZXcueSkpOworICAgIFJl
Z2lvbiBkaXJ0eVJlZ2lvbjsKKyAgICB3aGlsZSAobV9kaXJ0eVJlY3RzLnNpemUoKSkgeworICAg
ICAgICBkaXJ0eVJlZ2lvbi51bml0ZShtX2RpcnR5UmVjdHMuZmlyc3QoKSk7CisgICAgICAgIG1f
ZGlydHlSZWN0cy5yZW1vdmUoMCk7CisgICAgfQorCisgICAgVmVjdG9yPEludFJlY3Q+IHJlY3Rz
ID0gZGlydHlSZWdpb24ucmVjdHMoKTsKKyAgICBWZWN0b3I8SW50UmVjdD46Oml0ZXJhdG9yIGVu
ZCA9IHJlY3RzLmVuZCgpOworCisgICAgZm9yIChWZWN0b3I8SW50UmVjdD46Oml0ZXJhdG9yIGl0
ID0gcmVjdHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIEludFJlY3QgcmVj
dCA9ICppdDsKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisgICAgICAgIGV2YXNfZ2xf
bWFrZV9jdXJyZW50KHZpZXdJbXBsLT5ldmFzR2wsIHZpZXdJbXBsLT5ldmFzR2xTdXJmYWNlLCB2
aWV3SW1wbC0+ZXZhc0dsQ29udGV4dCk7CisgICAgICAgIHZpZXdJbXBsLT5wYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50LT5kaXNwbGF5KHJlY3QsIEludFBvaW50KHNkLT52aWV3LngsIHNkLT52
aWV3LnkpKTsKICNlbmRpZgogCi0gICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRk
KHNkLT5pbWFnZSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0
KCkpOworICAgICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQoc2QtPmltYWdl
LCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgICAg
fQogfQogCit2b2lkIEV3a1ZpZXdJbXBsOjpyZWRyYXdSZWdpb24oY29uc3QgSW50UmVjdCYgcmVj
dCkKK3sKKyAgICBpZiAoIW1fZGlzcGxheVRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fZGlz
cGxheVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICBtX2RpcnR5UmVjdHMuYXBwZW5kKHJlY3Qp
OworfQorCiAvKioKICAqIEBpbnRlcm5hbAogICogQSBkb3dubG9hZCBmb3IgdGhhdCB2aWV3IHdh
cyBjYW5jZWxsZWQuCg==
</data>
<flag name="review"
          id="184290"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170643</attachid>
            <date>2012-10-25 07:20:07 -0700</date>
            <delta_ts>2012-10-25 09:32:59 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>100288.patch</filename>
            <type>text/plain</type>
            <size>3990</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1w
bC5jcHAJKHJldmlzaW9uIDEzMjQ2OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL0V3a1ZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDYgKzE1NSw3IEBACiAg
ICAgLCBldmFzR2xTdXJmYWNlKDApCiAjZW5kaWYKICAgICAsIG1fdmlldyh2aWV3KQorICAgICwg
bV9kaXNwbGF5VGltZXIodGhpcywgJkV3a1ZpZXdJbXBsOjpkaXNwbGF5VGltZXJGaXJlZCkKIHsK
ICAgICBBU1NFUlQodmlldyk7CiAgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzbWFydERh
dGEoKTsKQEAgLTI0Niw3ICsyNDcsNyBAQAogICAgIGVjb3JlX2V2YXNfb2JqZWN0X2N1cnNvcl9z
ZXQoZWNvcmVFdmFzLCBjdXJzb3JPYmplY3QuZ2V0KCksIEVWQVNfTEFZRVJfTUFYLCBob3RzcG90
WCwgaG90c3BvdFkpOwogfQogCi12b2lkIEV3a1ZpZXdJbXBsOjpyZWRyYXdSZWdpb24oY29uc3Qg
SW50UmVjdCYgcmVjdCkKK3ZvaWQgRXdrVmlld0ltcGw6OmRpc3BsYXlUaW1lckZpcmVkKFdlYkNv
cmU6OlRpbWVyPEV3a1ZpZXdJbXBsPiopCiB7CiAgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2Qg
PSBzbWFydERhdGEoKTsKIApAQCAtMjU1LDE0ICsyNTYsMzUgQEAKIAogI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc2QsIHZpZXdJ
bXBsKTsKKyNlbmRpZgogCi0gICAgZXZhc19nbF9tYWtlX2N1cnJlbnQodmlld0ltcGwtPmV2YXNH
bCwgdmlld0ltcGwtPmV2YXNHbFN1cmZhY2UsIHZpZXdJbXBsLT5ldmFzR2xDb250ZXh0KTsKLSAg
ICB2aWV3SW1wbC0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+ZGlzcGxheShyZWN0LCBJ
bnRQb2ludChzZC0+dmlldy54LCBzZC0+dmlldy55KSk7CisgICAgUmVnaW9uIGRpcnR5UmVnaW9u
OworICAgIGZvciAoVmVjdG9yPEludFJlY3Q+OjppdGVyYXRvciBpdCA9IG1fZGlydHlSZWN0cy5i
ZWdpbigpOyBpdCAhPSBtX2RpcnR5UmVjdHMuZW5kKCk7ICsraXQpCisgICAgICAgIGRpcnR5UmVn
aW9uLnVuaXRlKCppdCk7CisKKyAgICBtX2RpcnR5UmVjdHMuY2xlYXIoKTsKKworICAgIFZlY3Rv
cjxJbnRSZWN0PiByZWN0cyA9IGRpcnR5UmVnaW9uLnJlY3RzKCk7CisgICAgVmVjdG9yPEludFJl
Y3Q+OjppdGVyYXRvciBlbmQgPSByZWN0cy5lbmQoKTsKKworICAgIGZvciAoVmVjdG9yPEludFJl
Y3Q+OjppdGVyYXRvciBpdCA9IHJlY3RzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAg
ICAgICBJbnRSZWN0IHJlY3QgPSAqaXQ7CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQor
ICAgICAgICBldmFzX2dsX21ha2VfY3VycmVudCh2aWV3SW1wbC0+ZXZhc0dsLCB2aWV3SW1wbC0+
ZXZhc0dsU3VyZmFjZSwgdmlld0ltcGwtPmV2YXNHbENvbnRleHQpOworICAgICAgICB2aWV3SW1w
bC0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+ZGlzcGxheShyZWN0LCBJbnRQb2ludChz
ZC0+dmlldy54LCBzZC0+dmlldy55KSk7CiAjZW5kaWYKIAotICAgIGV2YXNfb2JqZWN0X2ltYWdl
X2RhdGFfdXBkYXRlX2FkZChzZC0+aW1hZ2UsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0
aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRh
dGVfYWRkKHNkLT5pbWFnZSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3Qu
aGVpZ2h0KCkpOworICAgIH0KIH0KIAordm9pZCBFd2tWaWV3SW1wbDo6cmVkcmF3UmVnaW9uKGNv
bnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgaWYgKCFtX2Rpc3BsYXlUaW1lci5pc0FjdGl2ZSgp
KQorICAgICAgICBtX2Rpc3BsYXlUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgbV9kaXJ0eVJl
Y3RzLmFwcGVuZChyZWN0KTsKK30KKwogLyoqCiAgKiBAaW50ZXJuYWwKICAqIEEgZG93bmxvYWQg
Zm9yIHRoYXQgdmlldyB3YXMgY2FuY2VsbGVkLgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCShyZXZpc2lvbiAxMzI0NjkpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSA8RWNvcmVfSU1GX0V2YXMuaD4KICNpbmNsdWRl
IDxFdmFzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RGlyZWN0aW9uLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC0yMjgsMTAgKzIyOSwx
MyBAQAogCiBwcml2YXRlOgogICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSgpOwor
ICAgIHZvaWQgZGlzcGxheVRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8RXdrVmlld0ltcGw+Kik7
CiAKICAgICBFdmFzX09iamVjdCogbV92aWV3OwogICAgIHR5cGVkZWYgSGFzaE1hcDxXS1BhZ2VS
ZWYsIGNvbnN0IEV2YXNfT2JqZWN0Kj4gUGFnZVZpZXdNYXA7CiAgICAgc3RhdGljIFBhZ2VWaWV3
TWFwIHBhZ2VWaWV3TWFwOworICAgIFdlYkNvcmU6OlRpbWVyPEV3a1ZpZXdJbXBsPiBtX2Rpc3Bs
YXlUaW1lcjsKKyAgICBXVEY6OlZlY3RvciA8V2ViQ29yZTo6SW50UmVjdD4gbV9kaXJ0eVJlY3Rz
OwogfTsKIAogI2VuZGlmIC8vIEV3a1ZpZXdJbXBsX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9u
IDEzMjQ2OSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIxIEBACisyMDEyLTEwLTI1ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdW0FDXSBSZWdyZXNzaW9uKDEzMjM5MikgaW5maW5p
dGUgbG9vcCB3aGVuIGRpc3BsYXlpbmcgY2VydGFpbiBhbmltYXRpb25zLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMjg4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCisKKyAgICAgICAgV2hlbiBQYWdl
Q2xpZW50SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheSBpcyBjYWxsZWQsIHN0YXJ0IGEgMCBsZW5n
dGggdGltZXIuCisgICAgICAgIFRoYXQgYnJlYWtzIHRoZSBzeW5jaHJvbm91cyBsb29wIHdlIHdl
cmUgZXhwZXJpZW5jaW5nIHdoZW4gZXdrX3ZpZXdfZGlzcGxheQorICAgICAgICB3YXMgY2FsbGVk
IGRpcmVjdGx5LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3Bw
OgorICAgICAgICAoRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKToKKyAgICAgICAgKEV3a1ZpZXdJ
bXBsOjpkaXNwbGF5VGltZXJGaXJlZCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6cmVkcmF3UmVn
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oOgorICAgICAg
ICAoRXdrVmlld0ltcGwpOgorCiAyMDEyLTEwLTI1ICBCeXVuZ3dvbyBMZWUgIDxidzgwLmxlZUBz
YW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEFkZCBtaXNzaW5nIG5hbWVzcGFjZS4K
</data>

          </attachment>
      

    </bug>

</bugzilla>