<?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>107178</bug_id>
          
          <creation_ts>2013-01-17 14:21:03 -0800</creation_ts>
          <short_desc>[EFL][Qt][WebGl] Random crash in GraphicsContext3D::drawArrays</short_desc>
          <delta_ts>2013-01-21 09:58:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</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>104506</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Viatcheslav Ostapenko">ostap73</reporter>
          <assigned_to name="Viatcheslav Ostapenko">ostap73</assigned_to>
          <cc>kalyan.kondapally</cc>
    
    <cc>kenneth</cc>
    
    <cc>noam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>809778</commentid>
    <comment_count>0</comment_count>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2013-01-17 14:21:03 -0800</bug_when>
    <thetext>0	??			0xfffffffe	
1	pipe_resource_reference	u_inlines.h	123	0xac07f29f	
2	lp_setup_set_fragment_sampler_views	lp_setup.c	663	0xac07f29f	
3	llvmpipe_update_derived	lp_state_derived.c	180	0xac086772	
4	llvmpipe_draw_vbo	lp_draw_arrays.c	64	0xac071185	
5	st_draw_vbo	st_draw.c	1128	0xac13792a	
6	vbo_draw_arrays	vbo_exec_array.c	600	0xac2265c6	
7	WebCore::GraphicsContext3D::drawArrays	GraphicsContext3DOpenGLCommon.cpp	559	0xb4394cb8	
8	WebCore::TextureMapperGL::drawUnitRect	TextureMapperGL.cpp	478	0xb439f410	
9	WebCore::TextureMapperGL::draw	TextureMapperGL.cpp	500	0xb439f5fd	
10	WebCore::TextureMapperGL::drawTexturedQuadWithProgram	TextureMapperGL.cpp	535	0xb439f910	
11	WebCore::TextureMapperGL::drawTexture	TextureMapperGL.cpp	418	0xb439efc5	
12	WebCore::TextureMapperGL::drawTexture	TextureMapperGL.cpp	390	0xb439ee26	
13	WebCore::TextureMapperTile::paint	TextureMapperBackingStore.cpp	105	0xb38c281b	
14	WebKit::CoordinatedBackingStore::paintTilesToTextureMapper	CoordinatedBackingStore.cpp	126	0xb0801f9a	
15	WebKit::CoordinatedBackingStore::paintToTextureMapper	CoordinatedBackingStore.cpp	174	0xb080240d	
16	WebCore::TextureMapperLayer::paintSelf	TextureMapperLayer.cpp	138	0xb38c5cf6	
17	WebCore::TextureMapperLayer::paintSelfAndChildren	TextureMapperLayer.cpp	161	0xb38c5ea2	
18	WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica	TextureMapperLayer.cpp	287	0xb38c6615	
19	WebCore::TextureMapperLayer::paintRecursive	TextureMapperLayer.cpp	330	0xb38c6720	
20	WebCore::TextureMapperLayer::paintSelfAndChildren	TextureMapperLayer.cpp	171	0xb38c5fad	
21	WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica	TextureMapperLayer.cpp	287	0xb38c6615	
22	WebCore::TextureMapperLayer::paintRecursive	TextureMapperLayer.cpp	330	0xb38c6720	
23	WebCore::TextureMapperLayer::paintSelfAndChildren	TextureMapperLayer.cpp	171	0xb38c5fad	
24	WebCore::TextureMapperLayer::paintSelfAndChildrenWithReplica	TextureMapperLayer.cpp	287	0xb38c6615	
25	WebCore::TextureMapperLayer::paintRecursive	TextureMapperLayer.cpp	330	0xb38c6720	
26	WebCore::TextureMapperLayer::paint	TextureMapperLayer.cpp	104	0xb38c592d	
27	WebKit::LayerTreeRenderer::paintToCurrentGLContext	LayerTreeRenderer.cpp	131	0xb08104b1	
28	EwkViewImpl::displayTimerFired	EwkViewImpl.cpp	402	0xb095b77c	
29	WebCore::Timer&lt;EwkViewImpl&gt;::fired	Timer.h	106	0xb0962e2c	
30	WebCore::ThreadTimers::sharedTimerFiredInternal	ThreadTimers.cpp	116	0xb381993f	
31	WebCore::ThreadTimers::sharedTimerFired	ThreadTimers.cpp	93	0xb3819863	
32	WebCore::timerEvent	SharedTimerEfl.cpp	52	0xb432af8b	
33	_ecore_call_task_cb	ecore_private.h	267	0xaff326d6	
34	_ecore_timer_expired_call	ecore_timer.c	792	0xaff326d6	
35	_ecore_timer_expired_timers_call	ecore_timer.c	746	0xaff32894	
36	_ecore_main_loop_iterate_internal	ecore_main.c	1813	0xaff2f19b	
37	ecore_main_loop_begin	ecore_main.c	956	0xaff2f8af	
38	WTR::TestController::platformRunUntil	TestControllerEfl.cpp	75	0x807797d	
39	WTR::TestController::runUntil	TestController.cpp	766	0x8063edf	
40	WTR::TestInvocation::invoke	TestInvocation.cpp	228	0x806a4ea	
41	WTR::TestController::runTest	TestController.cpp	706	0x8063c4b	
42	WTR::TestController::run	TestController.cpp	739	0x8063e2d	
43	WTR::TestController::TestController	TestController.cpp	111	0x8061975	
44	main	main.cpp	49	0x8077ac7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809783</commentid>
    <comment_count>1</comment_count>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2013-01-17 14:26:14 -0800</bug_when>
    <thetext>It crashes because canvas texture is created from glx pixmap that is created on different glx connection. The display connection is closed when pixmap and texture are destroyed, but internally llvm pipe objects can be deleted later and they still hold pointers to already deallocated screen objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809859</commentid>
    <comment_count>2</comment_count>
      <attachid>183293</attachid>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2013-01-17 15:13:51 -0800</bug_when>
    <thetext>Created attachment 183293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810559</commentid>
    <comment_count>3</comment_count>
      <attachid>183293</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-01-18 07:14:27 -0800</bug_when>
    <thetext>Comment on attachment 183293
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Workaround for problem in mesa when internal llvm pipe object is deleted
&gt; +        later then screen object. Screen object is deleted because corresponding 

later than* the*
because the* corresponding

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:148
&gt; +    struct DisplayStatic {

I don&apos;t like this name

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:168
&gt; +        static DisplayStatic displayStatic;
&gt; +        return displayStatic.display();

// Display connection will only be broken at program shutdown.
static DisplayConnection connection;
return connection.display() ?

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:249
&gt; -        , m_xPixmap(0)
&gt; +        :  m_xPixmap(0)

wrong indentation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810647</commentid>
    <comment_count>4</comment_count>
      <attachid>183293</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-18 08:46:16 -0800</bug_when>
    <thetext>Comment on attachment 183293
Patch

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

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:-198
&gt; -        : m_display(m_offScreenWindow.display())

Minor one: Why not use the member variable as before, the display connection is guaranteed to be alive for app life time??

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:-237
&gt; -        : m_display(m_offScreenWindow.display())

same here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810653</commentid>
    <comment_count>5</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-18 08:50:19 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=183293) [details]
&gt; Patch

I took the patch into use in my local build and seems WebGL is broken after reloading the WebPage.

Did u have any similar issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810665</commentid>
    <comment_count>6</comment_count>
      <attachid>183471</attachid>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2013-01-18 08:59:23 -0800</bug_when>
    <thetext>Created attachment 183471
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810689</commentid>
    <comment_count>7</comment_count>
      <attachid>183293</attachid>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2013-01-18 09:13:02 -0800</bug_when>
    <thetext>Comment on attachment 183293
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:-198
&gt;&gt; -        : m_display(m_offScreenWindow.display())
&gt; 
&gt; Minor one: Why not use the member variable as before, the display connection is guaranteed to be alive for app life time??

What for?
All display() calls will be inlined and convert to the direct call to displayConnection::display(), which also will be inlined.
Extra m_display member is extra memory. Not much, but it adds up.
Also, all this m_display everywhere break general common sense rule to program for API. If there is display() API, m_display member normally shouldn&apos;t be used outside initialization and destruction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810829</commentid>
    <comment_count>8</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-18 10:50:24 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 183293 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=183293&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:-198
&gt; &gt;&gt; -        : m_display(m_offScreenWindow.display())
&gt; &gt; 
&gt; &gt; Minor one: Why not use the member variable as before, the display connection is guaranteed to be alive for app life time??
&gt; 
&gt; What for?
&gt; All display() calls will be inlined and convert to the direct call to displayConnection::display(), which also will be inlined.
&gt; Extra m_display member is extra memory. Not much, but it adds up.
&gt; Also, all this m_display everywhere break general common sense rule to program for API. If there is display() API, m_display member normally shouldn&apos;t be used outside initialization and destruction.

LGTM, if we can ensure that this doesn&apos;t break anything(Comment 5).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810954</commentid>
    <comment_count>9</comment_count>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2013-01-18 12:52:48 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #2)
&gt; &gt; Created an attachment (id=183293) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; I took the patch into use in my local build and seems WebGL is broken after reloading the WebPage.
&gt; 
&gt; Did u have any similar issue?

No, I don&apos;t have this issue.
It passes most of the webgl tests (crashes only on type conversion) and works both on EFL and Qt.
How is it broken? Does it crash or do you have some other issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810957</commentid>
    <comment_count>10</comment_count>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2013-01-18 12:54:25 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (From update of attachment 183293 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=183293&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:-198
&gt; &gt; &gt;&gt; -        : m_display(m_offScreenWindow.display())
&gt; &gt; &gt; 
&gt; &gt; &gt; Minor one: Why not use the member variable as before, the display connection is guaranteed to be alive for app life time??
&gt; &gt; 
&gt; &gt; What for?
&gt; &gt; All display() calls will be inlined and convert to the direct call to displayConnection::display(), which also will be inlined.
&gt; &gt; Extra m_display member is extra memory. Not much, but it adds up.
&gt; &gt; Also, all this m_display everywhere break general common sense rule to program for API. If there is display() API, m_display member normally shouldn&apos;t be used outside initialization and destruction.
&gt; 
&gt; LGTM, if we can ensure that this doesn&apos;t break anything(Comment 5).

I&apos;ll try to check after updating my builds. So far I didn&apos;t see any issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811045</commentid>
    <comment_count>11</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-18 14:30:12 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; (From update of attachment 183293 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=183293&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:-198
&gt; &gt; &gt; &gt;&gt; -        : m_display(m_offScreenWindow.display())
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Minor one: Why not use the member variable as before, the display connection is guaranteed to be alive for app life time??
&gt; &gt; &gt; 
&gt; &gt; &gt; What for?
&gt; &gt; &gt; All display() calls will be inlined and convert to the direct call to displayConnection::display(), which also will be inlined.
&gt; &gt; &gt; Extra m_display member is extra memory. Not much, but it adds up.
&gt; &gt; &gt; Also, all this m_display everywhere break general common sense rule to program for API. If there is display() API, m_display member normally shouldn&apos;t be used outside initialization and destruction.
&gt; &gt; 
&gt; &gt; LGTM, if we can ensure that this doesn&apos;t break anything(Comment 5).
&gt; 
&gt; I&apos;ll try to check after updating my builds. So far I didn&apos;t see any issues.

Try any WebGL Demo.

For example load: https://www.khronos.org/registry/webgl/sdk/demos/webkit/WebGL+CSS.html

Once pot is visible try to refresh the page. Pot doesn&apos;t come up anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811285</commentid>
    <comment_count>12</comment_count>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2013-01-18 21:06:52 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; &gt; (From update of attachment 183293 [details] [details] [details] [details])
&gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=183293&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt;&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:-198
&gt; &gt; &gt; &gt; &gt;&gt; -        : m_display(m_offScreenWindow.display())
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Minor one: Why not use the member variable as before, the display connection is guaranteed to be alive for app life time??
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; What for?
&gt; &gt; &gt; &gt; All display() calls will be inlined and convert to the direct call to displayConnection::display(), which also will be inlined.
&gt; &gt; &gt; &gt; Extra m_display member is extra memory. Not much, but it adds up.
&gt; &gt; &gt; &gt; Also, all this m_display everywhere break general common sense rule to program for API. If there is display() API, m_display member normally shouldn&apos;t be used outside initialization and destruction.
&gt; &gt; &gt; 
&gt; &gt; &gt; LGTM, if we can ensure that this doesn&apos;t break anything(Comment 5).
&gt; &gt; 
&gt; &gt; I&apos;ll try to check after updating my builds. So far I didn&apos;t see any issues.
&gt; 
&gt; Try any WebGL Demo.
&gt; 
&gt; For example load: https://www.khronos.org/registry/webgl/sdk/demos/webkit/WebGL+CSS.html
&gt; 
&gt; Once pot is visible try to refresh the page. Pot doesn&apos;t come up anymore.

Very strange. I have reload problem even without my patch.
Jelly fishes (http://aleksandarrodic.com/p/jellyfish/) have the same problem.
Also webgl-composite-modes and webgl-composite-modes-repaint tests sometimes don&apos;t show anything, sometimes webproces crash. After webprocess crash next reload shows normally.
Seems to be new regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811335</commentid>
    <comment_count>13</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-19 00:17:07 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Seems to be new regression.

&gt;&gt;Very strange. I have reload problem even without my patch.
&gt;&gt;Jelly fishes (http://aleksandarrodic.com/p/jellyfish/) have the same problem.
&gt;&gt;Also webgl-composite-modes and webgl-composite-modes-repaint tests sometimes &gt;&gt;don&apos;t show anything, sometimes webproces crash. After webprocess crash next &gt;&gt;reload shows normally.
&gt;&gt;Seems to be new regression.

k, I didnt see any issues if I didnt take this patch into use. That&apos;s why I added the comment here. I was having a clean build with the patch from 106878 and this one. We do seem to have a regression though which is not related to this patch. The regression seems to be that resizing the Window breaks some demos, I think the case is when canvas(not viewport) is resized. JellyFish draws fine but doesn&apos;t draw anything if Window is resized. I will create a new bug for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811336</commentid>
    <comment_count>14</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-19 00:20:08 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; Seems to be new regression.
&gt; 
&gt; k, I didnt see any issues if I didnt take this patch into use. That&apos;s why I &gt;added the comment here. I was having a clean build with the patch from 106878 &gt;and this one. We do seem to have a regression though which is not related to &gt;this patch. The regression seems to be that resizing the Window breaks some &gt;demos, I think the case is when canvas(not viewport) is resized. JellyFish &gt;draws fine but doesn&apos;t draw anything if Window is resized. I will create a new &gt;bug for this.

Can you check after taking 106878 into use ??</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811390</commentid>
    <comment_count>15</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-19 05:36:30 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; Seems to be new regression.
&gt; Also webgl-composite-modes and webgl-composite-modes-repaint tests sometimes &gt; &gt; don&apos;t show anything, sometimes webproces crash. After webprocess crash next 
&gt; reload shows normally.
Seems to be new regression.
&gt;  I think the case is when canvas(not viewport) is resized. JellyFish draws &gt;fine but doesn&apos;t draw anything if Window is resized. I will create a new bug &gt;for this.

k, I found reason for the regression. This is being tracked in 107366</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811398</commentid>
    <comment_count>16</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-19 07:01:19 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #13)
&gt; k, I found reason for the regression. This is being tracked in 107366

After the fix from 107366, I don&apos;t see any regressions with this patch. Sorry for the false alarm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812206</commentid>
    <comment_count>17</comment_count>
      <attachid>183471</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-21 09:00:51 -0800</bug_when>
    <thetext>Comment on attachment 183471
Patch

Rejecting attachment 183471 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
 2 diffs from patch file(s).
patching file Source/WebCore/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp
Hunk #11 FAILED at 442.
1 out of 11 hunks FAILED -- saving rejects to file Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp.rej

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, &apos;Noam Rosenthal&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/16011383</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812215</commentid>
    <comment_count>18</comment_count>
      <attachid>183796</attachid>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2013-01-21 09:18:07 -0800</bug_when>
    <thetext>Created attachment 183796
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812237</commentid>
    <comment_count>19</comment_count>
      <attachid>183796</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-21 09:58:34 -0800</bug_when>
    <thetext>Comment on attachment 183796
Patch for landing

Clearing flags on attachment: 183796

Committed r140342: &lt;http://trac.webkit.org/changeset/140342&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812238</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-21 09:58:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183293</attachid>
            <date>2013-01-17 15:13:51 -0800</date>
            <delta_ts>2013-01-18 09:13:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107178-20130117181053.patch</filename>
            <type>text/plain</type>
            <size>12680</size>
            <attacher name="Viatcheslav Ostapenko">ostap73</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmE5YWIwMTM3MGI0ZGRk
NmFmOTczMGZiNGQ1ZGI1ZmU0ZmRhODMzZC4uNzg4YmViYmJiZmQyYWQ0YmYzMWNkNDZlZjY2M2Fi
MDkxMjNkYmY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTAxLTE3ICBWaWF0
Y2hlc2xhdiBPc3RhcGVua28gIDxzbC5vc3RhcGVua29Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAg
W0VGTF1bUXRdW1dlYkdsXSBSYW5kb20gY3Jhc2ggaW4gR3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdB
cnJheXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NzE3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdv
cmthcm91bmQgZm9yIHByb2JsZW0gaW4gbWVzYSB3aGVuIGludGVybmFsIGxsdm0gcGlwZSBvYmpl
Y3QgaXMgZGVsZXRlZAorICAgICAgICBsYXRlciB0aGVuIHNjcmVlbiBvYmplY3QuIFNjcmVlbiBv
YmplY3QgaXMgZGVsZXRlZCBiZWNhdXNlIGNvcnJlc3BvbmRpbmcgCisgICAgICAgIFggc2VydmVy
IGRpc3BsYXkgY29ubmVjdGlvbiBjbG9zZWQuCisgICAgICAgIEtlZXAgWCBzZXJ2ZXIgZGlzcGxh
eSBjb25uZWN0aW9uIG9wZW4gdW50aWwgcHJvZ3JhbSBzaHV0ZG93bi4gCisgICAgICAgIE9mZlNj
cmVlblJvb3RXaW5kb3c6OmRpc3BsYXkgaXMgbm93IHN0YXRpYywgc28gdGhlcmUgaXMgbm8gbmVl
ZCB0byBjcmVhdGUKKyAgICAgICAgT2ZmU2NyZWVuUm9vdFdpbmRvdyBvYmplY3Qgb24gY2xpZW50
IHNpZGUuCisKKyAgICAgICAgRml4ZXMgY3Jhc2ggdGhhdCBhcHBlYXJzIGR1cmluZyBydW4gb2Yg
ZmFzdC9jYW5hdnMvd2ViZ2wgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcDoKKyAgICAgICAgKE9mZlNjcmVlblJv
b3RXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6T2ZmU2NyZWVuUm9vdFdpbmRvdzo6RGlzcGxh
eVN0YXRpYzo6RGlzcGxheVN0YXRpYyk6CisgICAgICAgIChEaXNwbGF5U3RhdGljKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZlNjcmVlblJvb3RXaW5kb3c6OkRpc3BsYXlTdGF0aWM6On5EaXNwbGF5
U3RhdGljKToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZlNjcmVlblJvb3RXaW5kb3c6OkRpc3BsYXlT
dGF0aWM6OmRpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6T2ZmU2NyZWVuUm9vdFdpbmRvdzo6
ZGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpPZmZTY3JlZW5Sb290V2luZG93Ojp+T2ZmU2Ny
ZWVuUm9vdFdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzU3VyZmFjZVByaXZhdGU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6Y3JlYXRlU3VyZmFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpjcmVhdGVQaXhtYXApOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6bWFrZUN1cnJlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6ZG9uZUN1cnJlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6c3dhcEJ1ZmZlcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6ZGlzcGxheSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OmZpbmRGQkNvbmZpZ1dpdGhBbHBoYSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpjbGVhcik6CisgICAgICAgIChHcmFw
aGljc1N1cmZhY2VQcml2YXRlKToKKwogMjAxMy0wMS0xNyAgT2phbiBWYWZhaSAgPG9qYW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIE1hdGhNTCBwYWRkaW5nIG92ZXJyaWRlcyBvbmx5IG5lZWQg
dG8gYmUgb24gUmVuZGVyTWF0aE1MUm9vdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJmYWNl
R0xYLmNwcAppbmRleCBjODlmOWFmN2IwZmU2NTc1NzIxOWI3ZjE4ZDI1NjJjYzM2Y2QxYWQ1Li5j
MWI5MzNkZjYwYWM0MGVjNjc2ZDkzNzFkODI1NThiOTJkNmM0NTQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJmYWNl
R0xYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9n
bHgvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcApAQCAtMTQ0LDM3ICsxNDQsNDkgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbV93aW5kb3c7CiAgICAgfQogCi0gICAgRGlzcGxheSogZGlzcGxheSgp
Ci0gICAgewotICAgICAgICBpZiAoIW1fZGlzcGxheSkKK3ByaXZhdGU6CisgICAgc3RydWN0IERp
c3BsYXlTdGF0aWMgeworICAgICAgICBEaXNwbGF5U3RhdGljKCkKKyAgICAgICAgewogICAgICAg
ICAgICAgbV9kaXNwbGF5ID0gWE9wZW5EaXNwbGF5KDApOwotICAgICAgICByZXR1cm4gbV9kaXNw
bGF5OworICAgICAgICB9CisKKyAgICAgICAgfkRpc3BsYXlTdGF0aWMoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBYQ2xvc2VEaXNwbGF5KG1fZGlzcGxheSk7CisgICAgICAgIH0KKworICAgICAg
ICBEaXNwbGF5KiBkaXNwbGF5KCkgeyByZXR1cm4gbV9kaXNwbGF5OyB9CisgICAgcHJpdmF0ZToK
KyAgICAgICAgRGlzcGxheSogbV9kaXNwbGF5OworICAgIH07CisKK3B1YmxpYzoKKyAgICBzdGF0
aWMgRGlzcGxheSogZGlzcGxheSgpCisgICAgeworICAgICAgICBzdGF0aWMgRGlzcGxheVN0YXRp
YyBkaXNwbGF5U3RhdGljOworICAgICAgICByZXR1cm4gZGlzcGxheVN0YXRpYy5kaXNwbGF5KCk7
CiAgICAgfQogCiAgICAgfk9mZlNjcmVlblJvb3RXaW5kb3coKQogICAgIHsKLSAgICAgICAgaWYg
KC0tbV9yZWZDb3VudCB8fCAhbV9kaXNwbGF5KQorICAgICAgICBpZiAoLS1tX3JlZkNvdW50KQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChtX3dpbmRvdykgewotICAgICAgICAg
ICAgWFVubWFwV2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cpOwotICAgICAgICAgICAgWERlc3Ry
b3lXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdyk7CisgICAgICAgICAgICBYVW5tYXBXaW5kb3co
ZGlzcGxheSgpLCBtX3dpbmRvdyk7CisgICAgICAgICAgICBYRGVzdHJveVdpbmRvdyhkaXNwbGF5
KCksIG1fd2luZG93KTsKICAgICAgICAgICAgIG1fd2luZG93ID0gMDsKICAgICAgICAgfQotCi0g
ICAgICAgIFhDbG9zZURpc3BsYXkobV9kaXNwbGF5KTsKLSAgICAgICAgbV9kaXNwbGF5ID0gMDsK
ICAgICB9CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGludCBtX3JlZkNvdW50OwogICAgIHN0YXRp
YyBXaW5kb3cgbV93aW5kb3c7Ci0gICAgc3RhdGljIERpc3BsYXkqIG1fZGlzcGxheTsKIH07CiAK
IGludCBPZmZTY3JlZW5Sb290V2luZG93OjptX3JlZkNvdW50ID0gMDsKIFdpbmRvdyBPZmZTY3Jl
ZW5Sb290V2luZG93OjptX3dpbmRvdyA9IDA7Ci1EaXNwbGF5KiBPZmZTY3JlZW5Sb290V2luZG93
OjptX2Rpc3BsYXkgPSAwOwogCiBzdGF0aWMgY29uc3QgaW50IGdseFNwZWNbXSA9IHsKICAgICAv
LyBUaGUgc3BlY2lmaWNhdGlvbiBpcyBhIHNldCBrZXkgdmFsdWUgcGFpcnMgc3RvcmVkIGluIGEg
c2ltcGxlIGFycmF5LgpAQCAtMTk1LDcgKzIwNyw3IEBAIHN0YXRpYyBjb25zdCBpbnQgZ2x4QXR0
cmlidXRlc1tdID0gewogCiBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSB7CiAgICAgR3Jh
cGhpY3NTdXJmYWNlUHJpdmF0ZShjb25zdCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHNoYXJl
Q29udGV4dCA9IDApCi0gICAgICAgIDogbV9kaXNwbGF5KG1fb2ZmU2NyZWVuV2luZG93LmRpc3Bs
YXkoKSkKKyAgICAgICAgOiBtX29mZlNjcmVlbldpbmRvdyhhZG9wdFB0cihuZXcgT2ZmU2NyZWVu
Um9vdFdpbmRvdygpKSkKICAgICAgICAgLCBtX3hQaXhtYXAoMCkKICAgICAgICAgLCBtX2dseFBp
eG1hcCgwKQogICAgICAgICAsIG1fc3VyZmFjZSgwKQpAQCAtMjIyLDcgKzIzNCw3IEBAIHN0cnVj
dCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsKICNlbmRpZgogCiAgICAgICAgIGludCBudW1SZXR1
cm5lZDsKLSAgICAgICAgR0xYRkJDb25maWcqIGZiQ29uZmlncyA9IGdsWENob29zZUZCQ29uZmln
KG1fZGlzcGxheSwgRGVmYXVsdFNjcmVlbihtX2Rpc3BsYXkpLCBhdHRyaWJ1dGVzLCAmbnVtUmV0
dXJuZWQpOworICAgICAgICBHTFhGQkNvbmZpZyogZmJDb25maWdzID0gZ2xYQ2hvb3NlRkJDb25m
aWcoZGlzcGxheSgpLCBEZWZhdWx0U2NyZWVuKGRpc3BsYXkoKSksIGF0dHJpYnV0ZXMsICZudW1S
ZXR1cm5lZCk7CiAKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgd2UgY2hvb3NlIGEgY29uZmln
dXJhdGlvbiB0aGF0IHN1cHBvcnRzIGFuIGFscGhhIG1hc2suCiAgICAgICAgIG1fZmJDb25maWcg
PSBmaW5kRkJDb25maWdXaXRoQWxwaGEoZmJDb25maWdzLCBudW1SZXR1cm5lZCk7CkBAIC0yMzAs
MTIgKzI0MiwxMSBAQCBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSB7CiAgICAgICAgIFhG
cmVlKGZiQ29uZmlncyk7CiAKICAgICAgICAgLy8gQ3JlYXRlIGEgR0xYIGNvbnRleHQgZm9yIE9w
ZW5HTCByZW5kZXJpbmcKLSAgICAgICAgbV9nbENvbnRleHQgPSBnbFhDcmVhdGVOZXdDb250ZXh0
KG1fZGlzcGxheSwgbV9mYkNvbmZpZywgR0xYX1JHQkFfVFlQRSwgc2hhcmVDb250ZXh0T2JqZWN0
LCB0cnVlKTsKKyAgICAgICAgbV9nbENvbnRleHQgPSBnbFhDcmVhdGVOZXdDb250ZXh0KGRpc3Bs
YXkoKSwgbV9mYkNvbmZpZywgR0xYX1JHQkFfVFlQRSwgc2hhcmVDb250ZXh0T2JqZWN0LCB0cnVl
KTsKICAgICB9CiAKICAgICBHcmFwaGljc1N1cmZhY2VQcml2YXRlKHVpbnQzMl90IHdpbklkKQot
ICAgICAgICA6IG1fZGlzcGxheShtX29mZlNjcmVlbldpbmRvdy5kaXNwbGF5KCkpCi0gICAgICAg
ICwgbV94UGl4bWFwKDApCisgICAgICAgIDogIG1feFBpeG1hcCgwKQogICAgICAgICAsIG1fZ2x4
UGl4bWFwKDApCiAgICAgICAgICwgbV9zdXJmYWNlKHdpbklkKQogICAgICAgICAsIG1fZ2x4U3Vy
ZmFjZSgwKQpAQCAtMjU1LDYzICsyNjYsNjMgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZh
dGUgewogCiAgICAgdWludDMyX3QgY3JlYXRlU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplKQog
ICAgIHsKLSAgICAgICAgWFZpc3VhbEluZm8qIHZpc3VhbEluZm8gPSBnbFhHZXRWaXN1YWxGcm9t
RkJDb25maWcobV9kaXNwbGF5LCBtX2ZiQ29uZmlnKTsKKyAgICAgICAgWFZpc3VhbEluZm8qIHZp
c3VhbEluZm8gPSBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcoZGlzcGxheSgpLCBtX2ZiQ29uZmln
KTsKICAgICAgICAgaWYgKCF2aXN1YWxJbmZvKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICAgICAgQ29sb3JtYXAgY21hcCA9IFhDcmVhdGVDb2xvcm1hcChtX2Rpc3BsYXksIG1fb2ZmU2Ny
ZWVuV2luZG93LmdldFhXaW5kb3coKSwgdmlzdWFsSW5mby0+dmlzdWFsLCBBbGxvY05vbmUpOwor
ICAgICAgICBDb2xvcm1hcCBjbWFwID0gWENyZWF0ZUNvbG9ybWFwKGRpc3BsYXkoKSwgbV9vZmZT
Y3JlZW5XaW5kb3ctPmdldFhXaW5kb3coKSwgdmlzdWFsSW5mby0+dmlzdWFsLCBBbGxvY05vbmUp
OwogCiAgICAgICAgIFhTZXRXaW5kb3dBdHRyaWJ1dGVzIGE7Ci0gICAgICAgIGEuYmFja2dyb3Vu
ZF9waXhlbCA9IFdoaXRlUGl4ZWwobV9kaXNwbGF5LCAwKTsKLSAgICAgICAgYS5ib3JkZXJfcGl4
ZWwgPSBCbGFja1BpeGVsKG1fZGlzcGxheSwgMCk7CisgICAgICAgIGEuYmFja2dyb3VuZF9waXhl
bCA9IFdoaXRlUGl4ZWwoZGlzcGxheSgpLCAwKTsKKyAgICAgICAgYS5ib3JkZXJfcGl4ZWwgPSBC
bGFja1BpeGVsKGRpc3BsYXkoKSwgMCk7CiAgICAgICAgIGEuY29sb3JtYXAgPSBjbWFwOwotICAg
ICAgICBtX3N1cmZhY2UgPSBYQ3JlYXRlV2luZG93KG1fZGlzcGxheSwgbV9vZmZTY3JlZW5XaW5k
b3cuZ2V0WFdpbmRvdygpLCAwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksCisgICAg
ICAgIG1fc3VyZmFjZSA9IFhDcmVhdGVXaW5kb3coZGlzcGxheSgpLCBtX29mZlNjcmVlbldpbmRv
dy0+Z2V0WFdpbmRvdygpLCAwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksCiAgICAg
ICAgICAgICAwLCB2aXN1YWxJbmZvLT5kZXB0aCwgSW5wdXRPdXRwdXQsIHZpc3VhbEluZm8tPnZp
c3VhbCwKICAgICAgICAgICAgIENXQmFja1BpeGVsIHwgQ1dCb3JkZXJQaXhlbCB8IENXQ29sb3Jt
YXAsICZhKTsKLSAgICAgICAgWFNldFdpbmRvd0JhY2tncm91bmRQaXhtYXAobV9kaXNwbGF5LCBt
X3N1cmZhY2UsIDApOwotICAgICAgICBYQ29tcG9zaXRlUmVkaXJlY3RXaW5kb3cobV9kaXNwbGF5
LCBtX3N1cmZhY2UsIENvbXBvc2l0ZVJlZGlyZWN0TWFudWFsKTsKLSAgICAgICAgbV9nbHhTdXJm
YWNlID0gZ2xYQ3JlYXRlV2luZG93KG1fZGlzcGxheSwgbV9mYkNvbmZpZywgbV9zdXJmYWNlLCAw
KTsKKyAgICAgICAgWFNldFdpbmRvd0JhY2tncm91bmRQaXhtYXAoZGlzcGxheSgpLCBtX3N1cmZh
Y2UsIDApOworICAgICAgICBYQ29tcG9zaXRlUmVkaXJlY3RXaW5kb3coZGlzcGxheSgpLCBtX3N1
cmZhY2UsIENvbXBvc2l0ZVJlZGlyZWN0TWFudWFsKTsKKyAgICAgICAgbV9nbHhTdXJmYWNlID0g
Z2xYQ3JlYXRlV2luZG93KGRpc3BsYXkoKSwgbV9mYkNvbmZpZywgbV9zdXJmYWNlLCAwKTsKICAg
ICAgICAgWEZyZWUodmlzdWFsSW5mbyk7CiAKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBYUmVu
ZGVyIEV4dGVuc2lvbiBpcyBhdmFpbGFibGUuCiAgICAgICAgIGludCBldmVudEJhc2VwLCBlcnJv
ckJhc2VwOwotICAgICAgICBpZiAoIVhSZW5kZXJRdWVyeUV4dGVuc2lvbihtX2Rpc3BsYXksICZl
dmVudEJhc2VwLCAmZXJyb3JCYXNlcCkpCisgICAgICAgIGlmICghWFJlbmRlclF1ZXJ5RXh0ZW5z
aW9uKGRpc3BsYXkoKSwgJmV2ZW50QmFzZXAsICZlcnJvckJhc2VwKSkKICAgICAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgICAgIFhNYXBXaW5kb3cobV9kaXNwbGF5LCBtX3N1cmZhY2UpOworICAg
ICAgICBYTWFwV2luZG93KGRpc3BsYXkoKSwgbV9zdXJmYWNlKTsKICAgICAgICAgcmV0dXJuIG1f
c3VyZmFjZTsKICAgICB9CiAKICAgICB2b2lkIGNyZWF0ZVBpeG1hcCh1aW50MzJfdCB3aW5JZCkK
ICAgICB7CiAgICAgICAgIFhXaW5kb3dBdHRyaWJ1dGVzIGF0dHI7Ci0gICAgICAgIGlmICghWEdl
dFdpbmRvd0F0dHJpYnV0ZXMobV9kaXNwbGF5LCB3aW5JZCwgJmF0dHIpKQorICAgICAgICBpZiAo
IVhHZXRXaW5kb3dBdHRyaWJ1dGVzKGRpc3BsYXkoKSwgd2luSWQsICZhdHRyKSkKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgd2luZG93IGlzIG1hcHBl
ZC4KICAgICAgICAgaWYgKGF0dHIubWFwX3N0YXRlID09IElzVW5tYXBwZWQgfHwgYXR0ci5tYXBf
c3RhdGUgPT0gSXNVbnZpZXdhYmxlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFNj
b3BlZFhQaXhtYXBDcmVhdGlvbkVycm9ySGFuZGxlciBoYW5kbGVyKG1fZGlzcGxheSk7CisgICAg
ICAgIFNjb3BlZFhQaXhtYXBDcmVhdGlvbkVycm9ySGFuZGxlciBoYW5kbGVyKGRpc3BsYXkoKSk7
CiAgICAgICAgIG1fc2l6ZSA9IEludFNpemUoYXR0ci53aWR0aCwgYXR0ci5oZWlnaHQpOwogCi0g
ICAgICAgIFhSZW5kZXJQaWN0Rm9ybWF0KiBmb3JtYXQgPSBYUmVuZGVyRmluZFZpc3VhbEZvcm1h
dChtX2Rpc3BsYXksIGF0dHIudmlzdWFsKTsKKyAgICAgICAgWFJlbmRlclBpY3RGb3JtYXQqIGZv
cm1hdCA9IFhSZW5kZXJGaW5kVmlzdWFsRm9ybWF0KGRpc3BsYXkoKSwgYXR0ci52aXN1YWwpOwog
ICAgICAgICBtX2hhc0FscGhhID0gKGZvcm1hdC0+dHlwZSA9PSBQaWN0VHlwZURpcmVjdCAmJiBm
b3JtYXQtPmRpcmVjdC5hbHBoYU1hc2spOwogCiAgICAgICAgIGludCBudW1iZXJPZkNvbmZpZ3M7
Ci0gICAgICAgIEdMWEZCQ29uZmlnKiBjb25maWdzID0gZ2xYQ2hvb3NlRkJDb25maWcobV9kaXNw
bGF5LCBYRGVmYXVsdFNjcmVlbihtX2Rpc3BsYXkpLCBnbHhTcGVjLCAmbnVtYmVyT2ZDb25maWdz
KTsKKyAgICAgICAgR0xYRkJDb25maWcqIGNvbmZpZ3MgPSBnbFhDaG9vc2VGQkNvbmZpZyhkaXNw
bGF5KCksIFhEZWZhdWx0U2NyZWVuKGRpc3BsYXkoKSksIGdseFNwZWMsICZudW1iZXJPZkNvbmZp
Z3MpOwogCiAgICAgICAgIC8vIElmIG9yaWdpbiB3aW5kb3cgaGFzIGFscGhhIHRoZW4gZmluZCBj
b25maWcgd2l0aCBhbHBoYS4KICAgICAgICAgR0xYRkJDb25maWcmIGNvbmZpZyA9IG1faGFzQWxw
aGEgPyBmaW5kRkJDb25maWdXaXRoQWxwaGEoY29uZmlncywgbnVtYmVyT2ZDb25maWdzKSA6IGNv
bmZpZ3NbMF07CiAKLSAgICAgICAgbV94UGl4bWFwID0gWENvbXBvc2l0ZU5hbWVXaW5kb3dQaXht
YXAobV9kaXNwbGF5LCB3aW5JZCk7Ci0gICAgICAgIG1fZ2x4UGl4bWFwID0gZ2xYQ3JlYXRlUGl4
bWFwKG1fZGlzcGxheSwgY29uZmlnLCBtX3hQaXhtYXAsIGdseEF0dHJpYnV0ZXMpOworICAgICAg
ICBtX3hQaXhtYXAgPSBYQ29tcG9zaXRlTmFtZVdpbmRvd1BpeG1hcChkaXNwbGF5KCksIHdpbklk
KTsKKyAgICAgICAgbV9nbHhQaXhtYXAgPSBnbFhDcmVhdGVQaXhtYXAoZGlzcGxheSgpLCBjb25m
aWcsIG1feFBpeG1hcCwgZ2x4QXR0cmlidXRlcyk7CiAKICAgICAgICAgaWYgKCFoYW5kbGVyLmlz
VmFsaWRPcGVyYXRpb24oKSkKICAgICAgICAgICAgIGNsZWFyKCk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgdWludCBpbnZlcnRlZCA9IDA7Ci0gICAgICAgICAgICBnbFhRdWVyeURyYXdh
YmxlKG1fZGlzcGxheSwgbV9nbHhQaXhtYXAsIEdMWF9ZX0lOVkVSVEVEX0VYVCwgJmludmVydGVk
KTsKKyAgICAgICAgICAgIGdsWFF1ZXJ5RHJhd2FibGUoZGlzcGxheSgpLCBtX2dseFBpeG1hcCwg
R0xYX1lfSU5WRVJURURfRVhULCAmaW52ZXJ0ZWQpOwogICAgICAgICAgICAgbV90ZXh0dXJlSXNZ
SW52ZXJ0ZWQgPSAhIWludmVydGVkOwogICAgICAgICB9CiAKQEAgLTMyOCwxMyArMzM5LDEzIEBA
IHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsKICAgICAgICAgbV9kZXRhY2hlZENvbnRl
eHQgPSBnbFhHZXRDdXJyZW50Q29udGV4dCgpOwogICAgICAgICBtX2RldGFjaGVkU3VyZmFjZSA9
IGdsWEdldEN1cnJlbnREcmF3YWJsZSgpOwogICAgICAgICBpZiAobV9zdXJmYWNlICYmIG1fZ2xD
b250ZXh0KQotICAgICAgICAgICAgZ2xYTWFrZUN1cnJlbnQobV9kaXNwbGF5LCBtX3N1cmZhY2Us
IG1fZ2xDb250ZXh0KTsKKyAgICAgICAgICAgIGdsWE1ha2VDdXJyZW50KGRpc3BsYXkoKSwgbV9z
dXJmYWNlLCBtX2dsQ29udGV4dCk7CiAgICAgfQogCiAgICAgdm9pZCBkb25lQ3VycmVudCgpCiAg
ICAgewogICAgICAgICBpZiAobV9kZXRhY2hlZENvbnRleHQpCi0gICAgICAgICAgICBnbFhNYWtl
Q3VycmVudChtX2Rpc3BsYXksIG1fZGV0YWNoZWRTdXJmYWNlLCBtX2RldGFjaGVkQ29udGV4dCk7
CisgICAgICAgICAgICBnbFhNYWtlQ3VycmVudChkaXNwbGF5KCksIG1fZGV0YWNoZWRTdXJmYWNl
LCBtX2RldGFjaGVkQ29udGV4dCk7CiAgICAgICAgIG1fZGV0YWNoZWRDb250ZXh0ID0gMDsKICAg
ICB9CiAKQEAgLTM1MSw3ICszNjIsNyBAQCBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSB7
CiAgICAgICAgICAgICBHTGludCBvbGRGQk87CiAgICAgICAgICAgICBnbEdldEludGVnZXJ2KEdM
X0ZSQU1FQlVGRkVSX0JJTkRJTkcsICZvbGRGQk8pOwogICAgICAgICAgICAgcEdsQmluZEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKLSAgICAgICAgICAgIGdsWFN3YXBCdWZmZXJzKG1f
ZGlzcGxheSwgbV9zdXJmYWNlKTsKKyAgICAgICAgICAgIGdsWFN3YXBCdWZmZXJzKGRpc3BsYXko
KSwgbV9zdXJmYWNlKTsKICAgICAgICAgICAgIHBHbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJV
RkZFUiwgb2xkRkJPKTsKICAgICAgICAgfQogICAgIH0KQEAgLTM4OCw3ICszOTksNyBAQCBzdHJ1
Y3QgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSB7CiAgICAgICAgIGRvbmVDdXJyZW50KCk7CiAgICAg
fQogCi0gICAgRGlzcGxheSogZGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheTsgfQor
ICAgIERpc3BsYXkqIGRpc3BsYXkoKSBjb25zdCB7IHJldHVybiBPZmZTY3JlZW5Sb290V2luZG93
OjpkaXNwbGF5KCk7IH0KIAogICAgIEdMWFBpeG1hcCBnbHhQaXhtYXAoKSBjb25zdAogICAgIHsK
QEAgLTQwMSw3ICs0MTIsNyBAQCBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSB7CiAgICAg
ewogICAgICAgICBpZiAobV9zaXplLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgWFdpbmRvd0F0
dHJpYnV0ZXMgYXR0cjsKLSAgICAgICAgICAgIGlmIChYR2V0V2luZG93QXR0cmlidXRlcyhtX2Rp
c3BsYXksIG1fc3VyZmFjZSwgJmF0dHIpKQorICAgICAgICAgICAgaWYgKFhHZXRXaW5kb3dBdHRy
aWJ1dGVzKGRpc3BsYXkoKSwgbV9zdXJmYWNlLCAmYXR0cikpCiAgICAgICAgICAgICAgICAgY29u
c3RfY2FzdDxHcmFwaGljc1N1cmZhY2VQcml2YXRlKj4odGhpcyktPm1fc2l6ZSA9IEludFNpemUo
YXR0ci53aWR0aCwgYXR0ci5oZWlnaHQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX3Np
emU7CkBAIC00MTIsMTEgKzQyMywxMSBAQCBwcml2YXRlOgogICAgIEdMWEZCQ29uZmlnJiBmaW5k
RkJDb25maWdXaXRoQWxwaGEoR0xYRkJDb25maWcqIGZiQ29uZmlncywgaW50IG51bWJlck9mQ29u
ZmlncykKICAgICB7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZDb25maWdz
OyArK2kpIHsKLSAgICAgICAgICAgIFhWaXN1YWxJbmZvKiB2aXN1YWxJbmZvID0gZ2xYR2V0Vmlz
dWFsRnJvbUZCQ29uZmlnKG1fZGlzcGxheSwgZmJDb25maWdzW2ldKTsKKyAgICAgICAgICAgIFhW
aXN1YWxJbmZvKiB2aXN1YWxJbmZvID0gZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmlnKGRpc3BsYXko
KSwgZmJDb25maWdzW2ldKTsKICAgICAgICAgICAgIGlmICghdmlzdWFsSW5mbykKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgWFJlbmRlclBpY3RGb3JtYXQqIGZvcm1h
dCA9IFhSZW5kZXJGaW5kVmlzdWFsRm9ybWF0KG1fZGlzcGxheSwgdmlzdWFsSW5mby0+dmlzdWFs
KTsKKyAgICAgICAgICAgIFhSZW5kZXJQaWN0Rm9ybWF0KiBmb3JtYXQgPSBYUmVuZGVyRmluZFZp
c3VhbEZvcm1hdChkaXNwbGF5KCksIHZpc3VhbEluZm8tPnZpc3VhbCk7CiAgICAgICAgICAgICBY
RnJlZSh2aXN1YWxJbmZvKTsKIAogICAgICAgICAgICAgaWYgKGZvcm1hdCAmJiBmb3JtYXQtPmRp
cmVjdC5hbHBoYU1hc2sgPiAwKQpAQCAtNDMwLDI5ICs0NDEsMjggQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNsZWFyKCkKICAgICB7CiAgICAgICAgIGlmIChtX2dseFBpeG1hcCkgewotICAgICAgICAg
ICAgZ2xYRGVzdHJveVBpeG1hcChtX2Rpc3BsYXksIG1fZ2x4UGl4bWFwKTsKKyAgICAgICAgICAg
IGdsWERlc3Ryb3lQaXhtYXAoZGlzcGxheSgpLCBtX2dseFBpeG1hcCk7CiAgICAgICAgICAgICBt
X2dseFBpeG1hcCA9IDA7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV94UGl4bWFwKSB7Ci0g
ICAgICAgICAgICBYRnJlZVBpeG1hcChtX2Rpc3BsYXksIG1feFBpeG1hcCk7CisgICAgICAgICAg
ICBYRnJlZVBpeG1hcChkaXNwbGF5KCksIG1feFBpeG1hcCk7CiAgICAgICAgICAgICBtX3hQaXht
YXAgPSAwOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fc3VyZmFjZSkgewotICAgICAgICAg
ICAgWERlc3Ryb3lXaW5kb3cobV9kaXNwbGF5LCBtX3N1cmZhY2UpOworICAgICAgICAgICAgWERl
c3Ryb3lXaW5kb3coZGlzcGxheSgpLCBtX3N1cmZhY2UpOwogICAgICAgICAgICAgbV9zdXJmYWNl
ID0gMDsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2dsQ29udGV4dCkgewotICAgICAgICAg
ICAgZ2xYRGVzdHJveUNvbnRleHQobV9kaXNwbGF5LCBtX2dsQ29udGV4dCk7CisgICAgICAgICAg
ICBnbFhEZXN0cm95Q29udGV4dChkaXNwbGF5KCksIG1fZ2xDb250ZXh0KTsKICAgICAgICAgICAg
IG1fZ2xDb250ZXh0ID0gMDsKICAgICAgICAgfQogICAgIH0KIAotICAgIE9mZlNjcmVlblJvb3RX
aW5kb3cgbV9vZmZTY3JlZW5XaW5kb3c7CisgICAgT3duUHRyPE9mZlNjcmVlblJvb3RXaW5kb3c+
IG1fb2ZmU2NyZWVuV2luZG93OwogICAgIEludFNpemUgbV9zaXplOwotICAgIERpc3BsYXkqIG1f
ZGlzcGxheTsKICAgICBQaXhtYXAgbV94UGl4bWFwOwogICAgIEdMWFBpeG1hcCBtX2dseFBpeG1h
cDsKICAgICBXaW5kb3cgbV9zdXJmYWNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183471</attachid>
            <date>2013-01-18 08:59:23 -0800</date>
            <delta_ts>2013-01-21 09:18:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107178-20130118115626.patch</filename>
            <type>text/plain</type>
            <size>12811</size>
            <attacher name="Viatcheslav Ostapenko">ostap73</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmE5YWIwMTM3MGI0ZGRk
NmFmOTczMGZiNGQ1ZGI1ZmU0ZmRhODMzZC4uOGM3MTdhNmY3OTUyZmMyM2EwODJhZmUwZTY0MWRj
MmE1YTRkYmFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTAxLTE4ICBWaWF0
Y2hlc2xhdiBPc3RhcGVua28gIDxzbC5vc3RhcGVua29Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAg
W0VGTF1bUXRdW1dlYkdsXSBSYW5kb20gY3Jhc2ggaW4gR3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdB
cnJheXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NzE3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdv
cmthcm91bmQgZm9yIHRoZSBwcm9ibGVtIGluIG1lc2Egd2hlbiBpbnRlcm5hbCBsbHZtIHBpcGUg
b2JqZWN0IGlzIGRlbGV0ZWQKKyAgICAgICAgbGF0ZXIgdGhhbiB0aGUgc2NyZWVuIG9iamVjdC4g
U2NyZWVuIG9iamVjdCBpcyBkZWxldGVkIGJlY2F1c2UgdGhlIGNvcnJlc3BvbmRpbmcgCisgICAg
ICAgIFggc2VydmVyIGRpc3BsYXkgY29ubmVjdGlvbiBjbG9zZWQuCisgICAgICAgIEtlZXAgWCBz
ZXJ2ZXIgZGlzcGxheSBjb25uZWN0aW9uIG9wZW4gdW50aWwgcHJvZ3JhbSBzaHV0ZG93bi4gCisg
ICAgICAgIE9mZlNjcmVlblJvb3RXaW5kb3c6OmRpc3BsYXkgaXMgbm93IHN0YXRpYywgc28gdGhl
cmUgaXMgbm8gbmVlZCB0byBjcmVhdGUKKyAgICAgICAgT2ZmU2NyZWVuUm9vdFdpbmRvdyBvYmpl
Y3Qgb24gY2xpZW50IHNpZGUuCisKKyAgICAgICAgRml4ZXMgY3Jhc2ggdGhhdCBhcHBlYXJzIGR1
cmluZyBydW4gb2YgZmFzdC9jYW5hdnMvd2ViZ2wgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcDoKKyAgICAgICAg
KE9mZlNjcmVlblJvb3RXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6T2ZmU2NyZWVuUm9vdFdp
bmRvdzo6RGlzcGxheUNvbm5lY3Rpb246OkRpc3BsYXlDb25uZWN0aW9uKToKKyAgICAgICAgKERp
c3BsYXlDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZlNjcmVlblJvb3RXaW5kb3c6
OkRpc3BsYXlDb25uZWN0aW9uOjp+RGlzcGxheUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6T2ZmU2NyZWVuUm9vdFdpbmRvdzo6RGlzcGxheUNvbm5lY3Rpb246OmRpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6T2ZmU2NyZWVuUm9vdFdpbmRvdzo6ZGlzcGxheSk6CisgICAgICAgIChX
ZWJDb3JlOjpPZmZTY3JlZW5Sb290V2luZG93Ojp+T2ZmU2NyZWVuUm9vdFdpbmRvdyk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6
OkdyYXBoaWNzU3VyZmFjZVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJm
YWNlUHJpdmF0ZTo6Y3JlYXRlU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1
cmZhY2VQcml2YXRlOjpjcmVhdGVQaXhtYXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlUHJpdmF0ZTo6bWFrZUN1cnJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlUHJpdmF0ZTo6ZG9uZUN1cnJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlUHJpdmF0ZTo6c3dhcEJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlUHJpdmF0ZTo6ZGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2VQcml2YXRlOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZh
dGU6OmZpbmRGQkNvbmZpZ1dpdGhBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1
cmZhY2VQcml2YXRlOjpjbGVhcik6CisgICAgICAgIChHcmFwaGljc1N1cmZhY2VQcml2YXRlKToK
KwogMjAxMy0wMS0xNyAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IE1hdGhNTCBwYWRkaW5nIG92ZXJyaWRlcyBvbmx5IG5lZWQgdG8gYmUgb24gUmVuZGVyTWF0aE1M
Um9vdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcAppbmRleCBjODlmOWFm
N2IwZmU2NTc1NzIxOWI3ZjE4ZDI1NjJjYzM2Y2QxYWQ1Li44OWFkMjYzZjY1ZDIxM2QyOThkYWQ0
YzY3ZjVlNDEzMDBlM2E4YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJmYWNlR0xY
LmNwcApAQCAtMTQ0LDM3ICsxNDQsNTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV93aW5k
b3c7CiAgICAgfQogCi0gICAgRGlzcGxheSogZGlzcGxheSgpCi0gICAgewotICAgICAgICBpZiAo
IW1fZGlzcGxheSkKK3ByaXZhdGU6CisgICAgc3RydWN0IERpc3BsYXlDb25uZWN0aW9uIHsKKyAg
ICAgICAgRGlzcGxheUNvbm5lY3Rpb24oKQorICAgICAgICB7CiAgICAgICAgICAgICBtX2Rpc3Bs
YXkgPSBYT3BlbkRpc3BsYXkoMCk7Ci0gICAgICAgIHJldHVybiBtX2Rpc3BsYXk7CisgICAgICAg
IH0KKworICAgICAgICB+RGlzcGxheUNvbm5lY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAg
ICBYQ2xvc2VEaXNwbGF5KG1fZGlzcGxheSk7CisgICAgICAgIH0KKworICAgICAgICBEaXNwbGF5
KiBkaXNwbGF5KCkgeyByZXR1cm4gbV9kaXNwbGF5OyB9CisgICAgcHJpdmF0ZToKKyAgICAgICAg
RGlzcGxheSogbV9kaXNwbGF5OworICAgIH07CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgRGlzcGxh
eSogZGlzcGxheSgpCisgICAgeworICAgICAgICAvLyBEaXNwbGF5IGNvbm5lY3Rpb24gd2lsbCBv
bmx5IGJlIGJyb2tlbiBhdCBwcm9ncmFtIHNodXRkb3duLgorICAgICAgICBzdGF0aWMgRGlzcGxh
eUNvbm5lY3Rpb24gZGlzcGxheUNvbm5lY3Rpb247CisgICAgICAgIHJldHVybiBkaXNwbGF5Q29u
bmVjdGlvbi5kaXNwbGF5KCk7CiAgICAgfQogCiAgICAgfk9mZlNjcmVlblJvb3RXaW5kb3coKQog
ICAgIHsKLSAgICAgICAgaWYgKC0tbV9yZWZDb3VudCB8fCAhbV9kaXNwbGF5KQorICAgICAgICBp
ZiAoLS1tX3JlZkNvdW50KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChtX3dp
bmRvdykgewotICAgICAgICAgICAgWFVubWFwV2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cpOwot
ICAgICAgICAgICAgWERlc3Ryb3lXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdyk7CisgICAgICAg
ICAgICBYVW5tYXBXaW5kb3coZGlzcGxheSgpLCBtX3dpbmRvdyk7CisgICAgICAgICAgICBYRGVz
dHJveVdpbmRvdyhkaXNwbGF5KCksIG1fd2luZG93KTsKICAgICAgICAgICAgIG1fd2luZG93ID0g
MDsKICAgICAgICAgfQotCi0gICAgICAgIFhDbG9zZURpc3BsYXkobV9kaXNwbGF5KTsKLSAgICAg
ICAgbV9kaXNwbGF5ID0gMDsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGludCBtX3Jl
ZkNvdW50OwogICAgIHN0YXRpYyBXaW5kb3cgbV93aW5kb3c7Ci0gICAgc3RhdGljIERpc3BsYXkq
IG1fZGlzcGxheTsKIH07CiAKIGludCBPZmZTY3JlZW5Sb290V2luZG93OjptX3JlZkNvdW50ID0g
MDsKIFdpbmRvdyBPZmZTY3JlZW5Sb290V2luZG93OjptX3dpbmRvdyA9IDA7Ci1EaXNwbGF5KiBP
ZmZTY3JlZW5Sb290V2luZG93OjptX2Rpc3BsYXkgPSAwOwogCiBzdGF0aWMgY29uc3QgaW50IGds
eFNwZWNbXSA9IHsKICAgICAvLyBUaGUgc3BlY2lmaWNhdGlvbiBpcyBhIHNldCBrZXkgdmFsdWUg
cGFpcnMgc3RvcmVkIGluIGEgc2ltcGxlIGFycmF5LgpAQCAtMTk1LDcgKzIwOCw3IEBAIHN0YXRp
YyBjb25zdCBpbnQgZ2x4QXR0cmlidXRlc1tdID0gewogCiBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNl
UHJpdmF0ZSB7CiAgICAgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZShjb25zdCBQbGF0Zm9ybUdyYXBo
aWNzQ29udGV4dDNEIHNoYXJlQ29udGV4dCA9IDApCi0gICAgICAgIDogbV9kaXNwbGF5KG1fb2Zm
U2NyZWVuV2luZG93LmRpc3BsYXkoKSkKKyAgICAgICAgOiBtX29mZlNjcmVlbldpbmRvdyhhZG9w
dFB0cihuZXcgT2ZmU2NyZWVuUm9vdFdpbmRvdygpKSkKICAgICAgICAgLCBtX3hQaXhtYXAoMCkK
ICAgICAgICAgLCBtX2dseFBpeG1hcCgwKQogICAgICAgICAsIG1fc3VyZmFjZSgwKQpAQCAtMjIy
LDcgKzIzNSw3IEBAIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsKICNlbmRpZgogCiAg
ICAgICAgIGludCBudW1SZXR1cm5lZDsKLSAgICAgICAgR0xYRkJDb25maWcqIGZiQ29uZmlncyA9
IGdsWENob29zZUZCQ29uZmlnKG1fZGlzcGxheSwgRGVmYXVsdFNjcmVlbihtX2Rpc3BsYXkpLCBh
dHRyaWJ1dGVzLCAmbnVtUmV0dXJuZWQpOworICAgICAgICBHTFhGQkNvbmZpZyogZmJDb25maWdz
ID0gZ2xYQ2hvb3NlRkJDb25maWcoZGlzcGxheSgpLCBEZWZhdWx0U2NyZWVuKGRpc3BsYXkoKSks
IGF0dHJpYnV0ZXMsICZudW1SZXR1cm5lZCk7CiAKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQg
d2UgY2hvb3NlIGEgY29uZmlndXJhdGlvbiB0aGF0IHN1cHBvcnRzIGFuIGFscGhhIG1hc2suCiAg
ICAgICAgIG1fZmJDb25maWcgPSBmaW5kRkJDb25maWdXaXRoQWxwaGEoZmJDb25maWdzLCBudW1S
ZXR1cm5lZCk7CkBAIC0yMzAsMTIgKzI0MywxMSBAQCBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlUHJp
dmF0ZSB7CiAgICAgICAgIFhGcmVlKGZiQ29uZmlncyk7CiAKICAgICAgICAgLy8gQ3JlYXRlIGEg
R0xYIGNvbnRleHQgZm9yIE9wZW5HTCByZW5kZXJpbmcKLSAgICAgICAgbV9nbENvbnRleHQgPSBn
bFhDcmVhdGVOZXdDb250ZXh0KG1fZGlzcGxheSwgbV9mYkNvbmZpZywgR0xYX1JHQkFfVFlQRSwg
c2hhcmVDb250ZXh0T2JqZWN0LCB0cnVlKTsKKyAgICAgICAgbV9nbENvbnRleHQgPSBnbFhDcmVh
dGVOZXdDb250ZXh0KGRpc3BsYXkoKSwgbV9mYkNvbmZpZywgR0xYX1JHQkFfVFlQRSwgc2hhcmVD
b250ZXh0T2JqZWN0LCB0cnVlKTsKICAgICB9CiAKICAgICBHcmFwaGljc1N1cmZhY2VQcml2YXRl
KHVpbnQzMl90IHdpbklkKQotICAgICAgICA6IG1fZGlzcGxheShtX29mZlNjcmVlbldpbmRvdy5k
aXNwbGF5KCkpCi0gICAgICAgICwgbV94UGl4bWFwKDApCisgICAgICAgIDogbV94UGl4bWFwKDAp
CiAgICAgICAgICwgbV9nbHhQaXhtYXAoMCkKICAgICAgICAgLCBtX3N1cmZhY2Uod2luSWQpCiAg
ICAgICAgICwgbV9nbHhTdXJmYWNlKDApCkBAIC0yNTUsNjMgKzI2Nyw2MyBAQCBzdHJ1Y3QgR3Jh
cGhpY3NTdXJmYWNlUHJpdmF0ZSB7CiAKICAgICB1aW50MzJfdCBjcmVhdGVTdXJmYWNlKGNvbnN0
IEludFNpemUmIHNpemUpCiAgICAgewotICAgICAgICBYVmlzdWFsSW5mbyogdmlzdWFsSW5mbyA9
IGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyhtX2Rpc3BsYXksIG1fZmJDb25maWcpOworICAgICAg
ICBYVmlzdWFsSW5mbyogdmlzdWFsSW5mbyA9IGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyhkaXNw
bGF5KCksIG1fZmJDb25maWcpOwogICAgICAgICBpZiAoIXZpc3VhbEluZm8pCiAgICAgICAgICAg
ICByZXR1cm4gMDsKIAotICAgICAgICBDb2xvcm1hcCBjbWFwID0gWENyZWF0ZUNvbG9ybWFwKG1f
ZGlzcGxheSwgbV9vZmZTY3JlZW5XaW5kb3cuZ2V0WFdpbmRvdygpLCB2aXN1YWxJbmZvLT52aXN1
YWwsIEFsbG9jTm9uZSk7CisgICAgICAgIENvbG9ybWFwIGNtYXAgPSBYQ3JlYXRlQ29sb3JtYXAo
ZGlzcGxheSgpLCBtX29mZlNjcmVlbldpbmRvdy0+Z2V0WFdpbmRvdygpLCB2aXN1YWxJbmZvLT52
aXN1YWwsIEFsbG9jTm9uZSk7CiAKICAgICAgICAgWFNldFdpbmRvd0F0dHJpYnV0ZXMgYTsKLSAg
ICAgICAgYS5iYWNrZ3JvdW5kX3BpeGVsID0gV2hpdGVQaXhlbChtX2Rpc3BsYXksIDApOwotICAg
ICAgICBhLmJvcmRlcl9waXhlbCA9IEJsYWNrUGl4ZWwobV9kaXNwbGF5LCAwKTsKKyAgICAgICAg
YS5iYWNrZ3JvdW5kX3BpeGVsID0gV2hpdGVQaXhlbChkaXNwbGF5KCksIDApOworICAgICAgICBh
LmJvcmRlcl9waXhlbCA9IEJsYWNrUGl4ZWwoZGlzcGxheSgpLCAwKTsKICAgICAgICAgYS5jb2xv
cm1hcCA9IGNtYXA7Ci0gICAgICAgIG1fc3VyZmFjZSA9IFhDcmVhdGVXaW5kb3cobV9kaXNwbGF5
LCBtX29mZlNjcmVlbldpbmRvdy5nZXRYV2luZG93KCksIDAsIDAsIHNpemUud2lkdGgoKSwgc2l6
ZS5oZWlnaHQoKSwKKyAgICAgICAgbV9zdXJmYWNlID0gWENyZWF0ZVdpbmRvdyhkaXNwbGF5KCks
IG1fb2ZmU2NyZWVuV2luZG93LT5nZXRYV2luZG93KCksIDAsIDAsIHNpemUud2lkdGgoKSwgc2l6
ZS5oZWlnaHQoKSwKICAgICAgICAgICAgIDAsIHZpc3VhbEluZm8tPmRlcHRoLCBJbnB1dE91dHB1
dCwgdmlzdWFsSW5mby0+dmlzdWFsLAogICAgICAgICAgICAgQ1dCYWNrUGl4ZWwgfCBDV0JvcmRl
clBpeGVsIHwgQ1dDb2xvcm1hcCwgJmEpOwotICAgICAgICBYU2V0V2luZG93QmFja2dyb3VuZFBp
eG1hcChtX2Rpc3BsYXksIG1fc3VyZmFjZSwgMCk7Ci0gICAgICAgIFhDb21wb3NpdGVSZWRpcmVj
dFdpbmRvdyhtX2Rpc3BsYXksIG1fc3VyZmFjZSwgQ29tcG9zaXRlUmVkaXJlY3RNYW51YWwpOwot
ICAgICAgICBtX2dseFN1cmZhY2UgPSBnbFhDcmVhdGVXaW5kb3cobV9kaXNwbGF5LCBtX2ZiQ29u
ZmlnLCBtX3N1cmZhY2UsIDApOworICAgICAgICBYU2V0V2luZG93QmFja2dyb3VuZFBpeG1hcChk
aXNwbGF5KCksIG1fc3VyZmFjZSwgMCk7CisgICAgICAgIFhDb21wb3NpdGVSZWRpcmVjdFdpbmRv
dyhkaXNwbGF5KCksIG1fc3VyZmFjZSwgQ29tcG9zaXRlUmVkaXJlY3RNYW51YWwpOworICAgICAg
ICBtX2dseFN1cmZhY2UgPSBnbFhDcmVhdGVXaW5kb3coZGlzcGxheSgpLCBtX2ZiQ29uZmlnLCBt
X3N1cmZhY2UsIDApOwogICAgICAgICBYRnJlZSh2aXN1YWxJbmZvKTsKIAogICAgICAgICAvLyBN
YWtlIHN1cmUgdGhlIFhSZW5kZXIgRXh0ZW5zaW9uIGlzIGF2YWlsYWJsZS4KICAgICAgICAgaW50
IGV2ZW50QmFzZXAsIGVycm9yQmFzZXA7Ci0gICAgICAgIGlmICghWFJlbmRlclF1ZXJ5RXh0ZW5z
aW9uKG1fZGlzcGxheSwgJmV2ZW50QmFzZXAsICZlcnJvckJhc2VwKSkKKyAgICAgICAgaWYgKCFY
UmVuZGVyUXVlcnlFeHRlbnNpb24oZGlzcGxheSgpLCAmZXZlbnRCYXNlcCwgJmVycm9yQmFzZXAp
KQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgWE1hcFdpbmRvdyhtX2Rpc3BsYXks
IG1fc3VyZmFjZSk7CisgICAgICAgIFhNYXBXaW5kb3coZGlzcGxheSgpLCBtX3N1cmZhY2UpOwog
ICAgICAgICByZXR1cm4gbV9zdXJmYWNlOwogICAgIH0KIAogICAgIHZvaWQgY3JlYXRlUGl4bWFw
KHVpbnQzMl90IHdpbklkKQogICAgIHsKICAgICAgICAgWFdpbmRvd0F0dHJpYnV0ZXMgYXR0cjsK
LSAgICAgICAgaWYgKCFYR2V0V2luZG93QXR0cmlidXRlcyhtX2Rpc3BsYXksIHdpbklkLCAmYXR0
cikpCisgICAgICAgIGlmICghWEdldFdpbmRvd0F0dHJpYnV0ZXMoZGlzcGxheSgpLCB3aW5JZCwg
JmF0dHIpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHRo
ZSB3aW5kb3cgaXMgbWFwcGVkLgogICAgICAgICBpZiAoYXR0ci5tYXBfc3RhdGUgPT0gSXNVbm1h
cHBlZCB8fCBhdHRyLm1hcF9zdGF0ZSA9PSBJc1Vudmlld2FibGUpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgU2NvcGVkWFBpeG1hcENyZWF0aW9uRXJyb3JIYW5kbGVyIGhhbmRsZXIo
bV9kaXNwbGF5KTsKKyAgICAgICAgU2NvcGVkWFBpeG1hcENyZWF0aW9uRXJyb3JIYW5kbGVyIGhh
bmRsZXIoZGlzcGxheSgpKTsKICAgICAgICAgbV9zaXplID0gSW50U2l6ZShhdHRyLndpZHRoLCBh
dHRyLmhlaWdodCk7CiAKLSAgICAgICAgWFJlbmRlclBpY3RGb3JtYXQqIGZvcm1hdCA9IFhSZW5k
ZXJGaW5kVmlzdWFsRm9ybWF0KG1fZGlzcGxheSwgYXR0ci52aXN1YWwpOworICAgICAgICBYUmVu
ZGVyUGljdEZvcm1hdCogZm9ybWF0ID0gWFJlbmRlckZpbmRWaXN1YWxGb3JtYXQoZGlzcGxheSgp
LCBhdHRyLnZpc3VhbCk7CiAgICAgICAgIG1faGFzQWxwaGEgPSAoZm9ybWF0LT50eXBlID09IFBp
Y3RUeXBlRGlyZWN0ICYmIGZvcm1hdC0+ZGlyZWN0LmFscGhhTWFzayk7CiAKICAgICAgICAgaW50
IG51bWJlck9mQ29uZmlnczsKLSAgICAgICAgR0xYRkJDb25maWcqIGNvbmZpZ3MgPSBnbFhDaG9v
c2VGQkNvbmZpZyhtX2Rpc3BsYXksIFhEZWZhdWx0U2NyZWVuKG1fZGlzcGxheSksIGdseFNwZWMs
ICZudW1iZXJPZkNvbmZpZ3MpOworICAgICAgICBHTFhGQkNvbmZpZyogY29uZmlncyA9IGdsWENo
b29zZUZCQ29uZmlnKGRpc3BsYXkoKSwgWERlZmF1bHRTY3JlZW4oZGlzcGxheSgpKSwgZ2x4U3Bl
YywgJm51bWJlck9mQ29uZmlncyk7CiAKICAgICAgICAgLy8gSWYgb3JpZ2luIHdpbmRvdyBoYXMg
YWxwaGEgdGhlbiBmaW5kIGNvbmZpZyB3aXRoIGFscGhhLgogICAgICAgICBHTFhGQkNvbmZpZyYg
Y29uZmlnID0gbV9oYXNBbHBoYSA/IGZpbmRGQkNvbmZpZ1dpdGhBbHBoYShjb25maWdzLCBudW1i
ZXJPZkNvbmZpZ3MpIDogY29uZmlnc1swXTsKIAotICAgICAgICBtX3hQaXhtYXAgPSBYQ29tcG9z
aXRlTmFtZVdpbmRvd1BpeG1hcChtX2Rpc3BsYXksIHdpbklkKTsKLSAgICAgICAgbV9nbHhQaXht
YXAgPSBnbFhDcmVhdGVQaXhtYXAobV9kaXNwbGF5LCBjb25maWcsIG1feFBpeG1hcCwgZ2x4QXR0
cmlidXRlcyk7CisgICAgICAgIG1feFBpeG1hcCA9IFhDb21wb3NpdGVOYW1lV2luZG93UGl4bWFw
KGRpc3BsYXkoKSwgd2luSWQpOworICAgICAgICBtX2dseFBpeG1hcCA9IGdsWENyZWF0ZVBpeG1h
cChkaXNwbGF5KCksIGNvbmZpZywgbV94UGl4bWFwLCBnbHhBdHRyaWJ1dGVzKTsKIAogICAgICAg
ICBpZiAoIWhhbmRsZXIuaXNWYWxpZE9wZXJhdGlvbigpKQogICAgICAgICAgICAgY2xlYXIoKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICB1aW50IGludmVydGVkID0gMDsKLSAgICAgICAg
ICAgIGdsWFF1ZXJ5RHJhd2FibGUobV9kaXNwbGF5LCBtX2dseFBpeG1hcCwgR0xYX1lfSU5WRVJU
RURfRVhULCAmaW52ZXJ0ZWQpOworICAgICAgICAgICAgZ2xYUXVlcnlEcmF3YWJsZShkaXNwbGF5
KCksIG1fZ2x4UGl4bWFwLCBHTFhfWV9JTlZFUlRFRF9FWFQsICZpbnZlcnRlZCk7CiAgICAgICAg
ICAgICBtX3RleHR1cmVJc1lJbnZlcnRlZCA9ICEhaW52ZXJ0ZWQ7CiAgICAgICAgIH0KIApAQCAt
MzI4LDEzICszNDAsMTMgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogICAgICAg
ICBtX2RldGFjaGVkQ29udGV4dCA9IGdsWEdldEN1cnJlbnRDb250ZXh0KCk7CiAgICAgICAgIG1f
ZGV0YWNoZWRTdXJmYWNlID0gZ2xYR2V0Q3VycmVudERyYXdhYmxlKCk7CiAgICAgICAgIGlmICht
X3N1cmZhY2UgJiYgbV9nbENvbnRleHQpCi0gICAgICAgICAgICBnbFhNYWtlQ3VycmVudChtX2Rp
c3BsYXksIG1fc3VyZmFjZSwgbV9nbENvbnRleHQpOworICAgICAgICAgICAgZ2xYTWFrZUN1cnJl
bnQoZGlzcGxheSgpLCBtX3N1cmZhY2UsIG1fZ2xDb250ZXh0KTsKICAgICB9CiAKICAgICB2b2lk
IGRvbmVDdXJyZW50KCkKICAgICB7CiAgICAgICAgIGlmIChtX2RldGFjaGVkQ29udGV4dCkKLSAg
ICAgICAgICAgIGdsWE1ha2VDdXJyZW50KG1fZGlzcGxheSwgbV9kZXRhY2hlZFN1cmZhY2UsIG1f
ZGV0YWNoZWRDb250ZXh0KTsKKyAgICAgICAgICAgIGdsWE1ha2VDdXJyZW50KGRpc3BsYXkoKSwg
bV9kZXRhY2hlZFN1cmZhY2UsIG1fZGV0YWNoZWRDb250ZXh0KTsKICAgICAgICAgbV9kZXRhY2hl
ZENvbnRleHQgPSAwOwogICAgIH0KIApAQCAtMzUxLDcgKzM2Myw3IEBAIHN0cnVjdCBHcmFwaGlj
c1N1cmZhY2VQcml2YXRlIHsKICAgICAgICAgICAgIEdMaW50IG9sZEZCTzsKICAgICAgICAgICAg
IGdsR2V0SW50ZWdlcnYoR0xfRlJBTUVCVUZGRVJfQklORElORywgJm9sZEZCTyk7CiAgICAgICAg
ICAgICBwR2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOwotICAgICAgICAgICAg
Z2xYU3dhcEJ1ZmZlcnMobV9kaXNwbGF5LCBtX3N1cmZhY2UpOworICAgICAgICAgICAgZ2xYU3dh
cEJ1ZmZlcnMoZGlzcGxheSgpLCBtX3N1cmZhY2UpOwogICAgICAgICAgICAgcEdsQmluZEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBvbGRGQk8pOwogICAgICAgICB9CiAgICAgfQpAQCAtMzg4
LDcgKzQwMCw3IEBAIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsKICAgICAgICAgZG9u
ZUN1cnJlbnQoKTsKICAgICB9CiAKLSAgICBEaXNwbGF5KiBkaXNwbGF5KCkgY29uc3QgeyByZXR1
cm4gbV9kaXNwbGF5OyB9CisgICAgRGlzcGxheSogZGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIE9m
ZlNjcmVlblJvb3RXaW5kb3c6OmRpc3BsYXkoKTsgfQogCiAgICAgR0xYUGl4bWFwIGdseFBpeG1h
cCgpIGNvbnN0CiAgICAgewpAQCAtNDAxLDcgKzQxMyw3IEBAIHN0cnVjdCBHcmFwaGljc1N1cmZh
Y2VQcml2YXRlIHsKICAgICB7CiAgICAgICAgIGlmIChtX3NpemUuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICBYV2luZG93QXR0cmlidXRlcyBhdHRyOwotICAgICAgICAgICAgaWYgKFhHZXRXaW5k
b3dBdHRyaWJ1dGVzKG1fZGlzcGxheSwgbV9zdXJmYWNlLCAmYXR0cikpCisgICAgICAgICAgICBp
ZiAoWEdldFdpbmRvd0F0dHJpYnV0ZXMoZGlzcGxheSgpLCBtX3N1cmZhY2UsICZhdHRyKSkKICAg
ICAgICAgICAgICAgICBjb25zdF9jYXN0PEdyYXBoaWNzU3VyZmFjZVByaXZhdGUqPih0aGlzKS0+
bV9zaXplID0gSW50U2l6ZShhdHRyLndpZHRoLCBhdHRyLmhlaWdodCk7CiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIG1fc2l6ZTsKQEAgLTQxMiwxMSArNDI0LDExIEBAIHByaXZhdGU6CiAgICAg
R0xYRkJDb25maWcmIGZpbmRGQkNvbmZpZ1dpdGhBbHBoYShHTFhGQkNvbmZpZyogZmJDb25maWdz
LCBpbnQgbnVtYmVyT2ZDb25maWdzKQogICAgIHsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBudW1iZXJPZkNvbmZpZ3M7ICsraSkgewotICAgICAgICAgICAgWFZpc3VhbEluZm8qIHZpc3Vh
bEluZm8gPSBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcobV9kaXNwbGF5LCBmYkNvbmZpZ3NbaV0p
OworICAgICAgICAgICAgWFZpc3VhbEluZm8qIHZpc3VhbEluZm8gPSBnbFhHZXRWaXN1YWxGcm9t
RkJDb25maWcoZGlzcGxheSgpLCBmYkNvbmZpZ3NbaV0pOwogICAgICAgICAgICAgaWYgKCF2aXN1
YWxJbmZvKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBYUmVuZGVy
UGljdEZvcm1hdCogZm9ybWF0ID0gWFJlbmRlckZpbmRWaXN1YWxGb3JtYXQobV9kaXNwbGF5LCB2
aXN1YWxJbmZvLT52aXN1YWwpOworICAgICAgICAgICAgWFJlbmRlclBpY3RGb3JtYXQqIGZvcm1h
dCA9IFhSZW5kZXJGaW5kVmlzdWFsRm9ybWF0KGRpc3BsYXkoKSwgdmlzdWFsSW5mby0+dmlzdWFs
KTsKICAgICAgICAgICAgIFhGcmVlKHZpc3VhbEluZm8pOwogCiAgICAgICAgICAgICBpZiAoZm9y
bWF0ICYmIGZvcm1hdC0+ZGlyZWN0LmFscGhhTWFzayA+IDApCkBAIC00MzAsMjkgKzQ0MiwyOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXIoKQogICAgIHsKICAgICAgICAgaWYgKG1fZ2x4UGl4
bWFwKSB7Ci0gICAgICAgICAgICBnbFhEZXN0cm95UGl4bWFwKG1fZGlzcGxheSwgbV9nbHhQaXht
YXApOworICAgICAgICAgICAgZ2xYRGVzdHJveVBpeG1hcChkaXNwbGF5KCksIG1fZ2x4UGl4bWFw
KTsKICAgICAgICAgICAgIG1fZ2x4UGl4bWFwID0gMDsKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChtX3hQaXhtYXApIHsKLSAgICAgICAgICAgIFhGcmVlUGl4bWFwKG1fZGlzcGxheSwgbV94UGl4
bWFwKTsKKyAgICAgICAgICAgIFhGcmVlUGl4bWFwKGRpc3BsYXkoKSwgbV94UGl4bWFwKTsKICAg
ICAgICAgICAgIG1feFBpeG1hcCA9IDA7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9zdXJm
YWNlKSB7Ci0gICAgICAgICAgICBYRGVzdHJveVdpbmRvdyhtX2Rpc3BsYXksIG1fc3VyZmFjZSk7
CisgICAgICAgICAgICBYRGVzdHJveVdpbmRvdyhkaXNwbGF5KCksIG1fc3VyZmFjZSk7CiAgICAg
ICAgICAgICBtX3N1cmZhY2UgPSAwOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fZ2xDb250
ZXh0KSB7Ci0gICAgICAgICAgICBnbFhEZXN0cm95Q29udGV4dChtX2Rpc3BsYXksIG1fZ2xDb250
ZXh0KTsKKyAgICAgICAgICAgIGdsWERlc3Ryb3lDb250ZXh0KGRpc3BsYXkoKSwgbV9nbENvbnRl
eHQpOwogICAgICAgICAgICAgbV9nbENvbnRleHQgPSAwOwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgT2ZmU2NyZWVuUm9vdFdpbmRvdyBtX29mZlNjcmVlbldpbmRvdzsKKyAgICBPd25QdHI8T2Zm
U2NyZWVuUm9vdFdpbmRvdz4gbV9vZmZTY3JlZW5XaW5kb3c7CiAgICAgSW50U2l6ZSBtX3NpemU7
Ci0gICAgRGlzcGxheSogbV9kaXNwbGF5OwogICAgIFBpeG1hcCBtX3hQaXhtYXA7CiAgICAgR0xY
UGl4bWFwIG1fZ2x4UGl4bWFwOwogICAgIFdpbmRvdyBtX3N1cmZhY2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183796</attachid>
            <date>2013-01-21 09:18:07 -0800</date>
            <delta_ts>2013-01-21 09:58:34 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-107178-20130121121510.patch</filename>
            <type>text/plain</type>
            <size>12898</size>
            <attacher name="Viatcheslav Ostapenko">ostap73</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwMjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzkzN2YwNDQyZGFkMTc1
MWZiZDBkOTBhZmI2Mzg0MjI5YjQ5ZWYyNC4uZDgxN2ZjZTcyZjc5MjMzNGU1ZTlmNjA1MjU2NTlh
YjAzODhhMTI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTAxLTE4ICBWaWF0
Y2hlc2xhdiBPc3RhcGVua28gIDxzbC5vc3RhcGVua29Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAg
W0VGTF1bUXRdW1dlYkdsXSBSYW5kb20gY3Jhc2ggaW4gR3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdB
cnJheXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NzE3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5vYW0gUm9zZW50aGFsLgorCisgICAgICAgIFdv
cmthcm91bmQgZm9yIHRoZSBwcm9ibGVtIGluIG1lc2Egd2hlbiBpbnRlcm5hbCBsbHZtIHBpcGUg
b2JqZWN0IGlzIGRlbGV0ZWQKKyAgICAgICAgbGF0ZXIgdGhhbiB0aGUgc2NyZWVuIG9iamVjdC4g
U2NyZWVuIG9iamVjdCBpcyBkZWxldGVkIGJlY2F1c2UgdGhlIGNvcnJlc3BvbmRpbmcgCisgICAg
ICAgIFggc2VydmVyIGRpc3BsYXkgY29ubmVjdGlvbiBjbG9zZWQuCisgICAgICAgIEtlZXAgWCBz
ZXJ2ZXIgZGlzcGxheSBjb25uZWN0aW9uIG9wZW4gdW50aWwgcHJvZ3JhbSBzaHV0ZG93bi4gCisg
ICAgICAgIE9mZlNjcmVlblJvb3RXaW5kb3c6OmRpc3BsYXkgaXMgbm93IHN0YXRpYywgc28gdGhl
cmUgaXMgbm8gbmVlZCB0byBjcmVhdGUKKyAgICAgICAgT2ZmU2NyZWVuUm9vdFdpbmRvdyBvYmpl
Y3Qgb24gY2xpZW50IHNpZGUuCisKKyAgICAgICAgRml4ZXMgY3Jhc2ggdGhhdCBhcHBlYXJzIGR1
cmluZyBydW4gb2YgZmFzdC9jYW5hdnMvd2ViZ2wgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcDoKKyAgICAgICAg
KE9mZlNjcmVlblJvb3RXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6T2ZmU2NyZWVuUm9vdFdp
bmRvdzo6RGlzcGxheUNvbm5lY3Rpb246OkRpc3BsYXlDb25uZWN0aW9uKToKKyAgICAgICAgKERp
c3BsYXlDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZlNjcmVlblJvb3RXaW5kb3c6
OkRpc3BsYXlDb25uZWN0aW9uOjp+RGlzcGxheUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6T2ZmU2NyZWVuUm9vdFdpbmRvdzo6RGlzcGxheUNvbm5lY3Rpb246OmRpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6T2ZmU2NyZWVuUm9vdFdpbmRvdzo6ZGlzcGxheSk6CisgICAgICAgIChX
ZWJDb3JlOjpPZmZTY3JlZW5Sb290V2luZG93Ojp+T2ZmU2NyZWVuUm9vdFdpbmRvdyk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6
OkdyYXBoaWNzU3VyZmFjZVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJm
YWNlUHJpdmF0ZTo6Y3JlYXRlU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1
cmZhY2VQcml2YXRlOjpjcmVhdGVQaXhtYXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlUHJpdmF0ZTo6bWFrZUN1cnJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlUHJpdmF0ZTo6ZG9uZUN1cnJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlUHJpdmF0ZTo6c3dhcEJ1ZmZlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlUHJpdmF0ZTo6ZGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2VQcml2YXRlOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZh
dGU6OmZpbmRGQkNvbmZpZ1dpdGhBbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1
cmZhY2VQcml2YXRlOjpjbGVhcik6CisgICAgICAgIChHcmFwaGljc1N1cmZhY2VQcml2YXRlKToK
KwogMjAxMy0wMS0yMCAgTGFzemxvIEdvbWJvcyAgPGwuZ29tYm9zQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFNpbXBsaWZ5IGEgbGlzdCBvZiBuZWdhdGl2ZSBQTEFURk9STSgpIHRlc3RzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR3Jh
cGhpY3NTdXJmYWNlR0xYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1
cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCmluZGV4IDkzM2Q2ZmE5MDE5ZTc5MWJi
ZGNmYTk3YTJlNGI1MzJlMGFhYjAzZjQuLmE1N2I2Mzg2OTY4OTJmYTE1ZGI0NzlmNjhhNWMzMmQ1
ZTdiOGVhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1
cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCkBAIC0x
NDQsMzcgKzE0NCw1MCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3dpbmRvdzsKICAgICB9
CiAKLSAgICBEaXNwbGF5KiBkaXNwbGF5KCkKLSAgICB7Ci0gICAgICAgIGlmICghbV9kaXNwbGF5
KQorcHJpdmF0ZToKKyAgICBzdHJ1Y3QgRGlzcGxheUNvbm5lY3Rpb24geworICAgICAgICBEaXNw
bGF5Q29ubmVjdGlvbigpCisgICAgICAgIHsKICAgICAgICAgICAgIG1fZGlzcGxheSA9IFhPcGVu
RGlzcGxheSgwKTsKLSAgICAgICAgcmV0dXJuIG1fZGlzcGxheTsKKyAgICAgICAgfQorCisgICAg
ICAgIH5EaXNwbGF5Q29ubmVjdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIFhDbG9zZURp
c3BsYXkobV9kaXNwbGF5KTsKKyAgICAgICAgfQorCisgICAgICAgIERpc3BsYXkqIGRpc3BsYXko
KSB7IHJldHVybiBtX2Rpc3BsYXk7IH0KKyAgICBwcml2YXRlOgorICAgICAgICBEaXNwbGF5KiBt
X2Rpc3BsYXk7CisgICAgfTsKKworcHVibGljOgorICAgIHN0YXRpYyBEaXNwbGF5KiBkaXNwbGF5
KCkKKyAgICB7CisgICAgICAgIC8vIERpc3BsYXkgY29ubmVjdGlvbiB3aWxsIG9ubHkgYmUgYnJv
a2VuIGF0IHByb2dyYW0gc2h1dGRvd24uCisgICAgICAgIHN0YXRpYyBEaXNwbGF5Q29ubmVjdGlv
biBkaXNwbGF5Q29ubmVjdGlvbjsKKyAgICAgICAgcmV0dXJuIGRpc3BsYXlDb25uZWN0aW9uLmRp
c3BsYXkoKTsKICAgICB9CiAKICAgICB+T2ZmU2NyZWVuUm9vdFdpbmRvdygpCiAgICAgewotICAg
ICAgICBpZiAoLS1tX3JlZkNvdW50IHx8ICFtX2Rpc3BsYXkpCisgICAgICAgIGlmICgtLW1fcmVm
Q291bnQpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKG1fd2luZG93KSB7Ci0g
ICAgICAgICAgICBYVW5tYXBXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdyk7Ci0gICAgICAgICAg
ICBYRGVzdHJveVdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93KTsKKyAgICAgICAgICAgIFhVbm1h
cFdpbmRvdyhkaXNwbGF5KCksIG1fd2luZG93KTsKKyAgICAgICAgICAgIFhEZXN0cm95V2luZG93
KGRpc3BsYXkoKSwgbV93aW5kb3cpOwogICAgICAgICAgICAgbV93aW5kb3cgPSAwOwogICAgICAg
ICB9Ci0KLSAgICAgICAgWENsb3NlRGlzcGxheShtX2Rpc3BsYXkpOwotICAgICAgICBtX2Rpc3Bs
YXkgPSAwOwogICAgIH0KIAogcHJpdmF0ZToKICAgICBzdGF0aWMgaW50IG1fcmVmQ291bnQ7CiAg
ICAgc3RhdGljIFdpbmRvdyBtX3dpbmRvdzsKLSAgICBzdGF0aWMgRGlzcGxheSogbV9kaXNwbGF5
OwogfTsKIAogaW50IE9mZlNjcmVlblJvb3RXaW5kb3c6Om1fcmVmQ291bnQgPSAwOwogV2luZG93
IE9mZlNjcmVlblJvb3RXaW5kb3c6Om1fd2luZG93ID0gMDsKLURpc3BsYXkqIE9mZlNjcmVlblJv
b3RXaW5kb3c6Om1fZGlzcGxheSA9IDA7CiAKIHN0YXRpYyBjb25zdCBpbnQgZ2x4U3BlY1tdID0g
ewogICAgIC8vIFRoZSBzcGVjaWZpY2F0aW9uIGlzIGEgc2V0IGtleSB2YWx1ZSBwYWlycyBzdG9y
ZWQgaW4gYSBzaW1wbGUgYXJyYXkuCkBAIC0xOTUsNyArMjA4LDcgQEAgc3RhdGljIGNvbnN0IGlu
dCBnbHhBdHRyaWJ1dGVzW10gPSB7CiAKIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsK
ICAgICBHcmFwaGljc1N1cmZhY2VQcml2YXRlKGNvbnN0IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
M0Qgc2hhcmVDb250ZXh0ID0gMCkKLSAgICAgICAgOiBtX2Rpc3BsYXkobV9vZmZTY3JlZW5XaW5k
b3cuZGlzcGxheSgpKQorICAgICAgICA6IG1fb2ZmU2NyZWVuV2luZG93KGFkb3B0UHRyKG5ldyBP
ZmZTY3JlZW5Sb290V2luZG93KCkpKQogICAgICAgICAsIG1feFBpeG1hcCgwKQogICAgICAgICAs
IG1fZ2x4UGl4bWFwKDApCiAgICAgICAgICwgbV9zdXJmYWNlKDApCkBAIC0yMjIsNyArMjM1LDcg
QEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogI2VuZGlmCiAKICAgICAgICAgaW50
IG51bVJldHVybmVkOwotICAgICAgICBHTFhGQkNvbmZpZyogZmJDb25maWdzID0gZ2xYQ2hvb3Nl
RkJDb25maWcobV9kaXNwbGF5LCBEZWZhdWx0U2NyZWVuKG1fZGlzcGxheSksIGF0dHJpYnV0ZXMs
ICZudW1SZXR1cm5lZCk7CisgICAgICAgIEdMWEZCQ29uZmlnKiBmYkNvbmZpZ3MgPSBnbFhDaG9v
c2VGQkNvbmZpZyhkaXNwbGF5KCksIERlZmF1bHRTY3JlZW4oZGlzcGxheSgpKSwgYXR0cmlidXRl
cywgJm51bVJldHVybmVkKTsKIAogICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSBjaG9vc2Ug
YSBjb25maWd1cmF0aW9uIHRoYXQgc3VwcG9ydHMgYW4gYWxwaGEgbWFzay4KICAgICAgICAgbV9m
YkNvbmZpZyA9IGZpbmRGQkNvbmZpZ1dpdGhBbHBoYShmYkNvbmZpZ3MsIG51bVJldHVybmVkKTsK
QEAgLTIzMCwxMiArMjQzLDExIEBAIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsKICAg
ICAgICAgWEZyZWUoZmJDb25maWdzKTsKIAogICAgICAgICAvLyBDcmVhdGUgYSBHTFggY29udGV4
dCBmb3IgT3BlbkdMIHJlbmRlcmluZwotICAgICAgICBtX2dsQ29udGV4dCA9IGdsWENyZWF0ZU5l
d0NvbnRleHQobV9kaXNwbGF5LCBtX2ZiQ29uZmlnLCBHTFhfUkdCQV9UWVBFLCBzaGFyZUNvbnRl
eHRPYmplY3QsIHRydWUpOworICAgICAgICBtX2dsQ29udGV4dCA9IGdsWENyZWF0ZU5ld0NvbnRl
eHQoZGlzcGxheSgpLCBtX2ZiQ29uZmlnLCBHTFhfUkdCQV9UWVBFLCBzaGFyZUNvbnRleHRPYmpl
Y3QsIHRydWUpOwogICAgIH0KIAogICAgIEdyYXBoaWNzU3VyZmFjZVByaXZhdGUodWludDMyX3Qg
d2luSWQpCi0gICAgICAgIDogbV9kaXNwbGF5KG1fb2ZmU2NyZWVuV2luZG93LmRpc3BsYXkoKSkK
LSAgICAgICAgLCBtX3hQaXhtYXAoMCkKKyAgICAgICAgOiBtX3hQaXhtYXAoMCkKICAgICAgICAg
LCBtX2dseFBpeG1hcCgwKQogICAgICAgICAsIG1fc3VyZmFjZSh3aW5JZCkKICAgICAgICAgLCBt
X2dseFN1cmZhY2UoMCkKQEAgLTI1NSw2MyArMjY3LDYzIEBAIHN0cnVjdCBHcmFwaGljc1N1cmZh
Y2VQcml2YXRlIHsKIAogICAgIHVpbnQzMl90IGNyZWF0ZVN1cmZhY2UoY29uc3QgSW50U2l6ZSYg
c2l6ZSkKICAgICB7Ci0gICAgICAgIFhWaXN1YWxJbmZvKiB2aXN1YWxJbmZvID0gZ2xYR2V0Vmlz
dWFsRnJvbUZCQ29uZmlnKG1fZGlzcGxheSwgbV9mYkNvbmZpZyk7CisgICAgICAgIFhWaXN1YWxJ
bmZvKiB2aXN1YWxJbmZvID0gZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmlnKGRpc3BsYXkoKSwgbV9m
YkNvbmZpZyk7CiAgICAgICAgIGlmICghdmlzdWFsSW5mbykKICAgICAgICAgICAgIHJldHVybiAw
OwogCi0gICAgICAgIENvbG9ybWFwIGNtYXAgPSBYQ3JlYXRlQ29sb3JtYXAobV9kaXNwbGF5LCBt
X29mZlNjcmVlbldpbmRvdy5nZXRYV2luZG93KCksIHZpc3VhbEluZm8tPnZpc3VhbCwgQWxsb2NO
b25lKTsKKyAgICAgICAgQ29sb3JtYXAgY21hcCA9IFhDcmVhdGVDb2xvcm1hcChkaXNwbGF5KCks
IG1fb2ZmU2NyZWVuV2luZG93LT5nZXRYV2luZG93KCksIHZpc3VhbEluZm8tPnZpc3VhbCwgQWxs
b2NOb25lKTsKIAogICAgICAgICBYU2V0V2luZG93QXR0cmlidXRlcyBhOwotICAgICAgICBhLmJh
Y2tncm91bmRfcGl4ZWwgPSBXaGl0ZVBpeGVsKG1fZGlzcGxheSwgMCk7Ci0gICAgICAgIGEuYm9y
ZGVyX3BpeGVsID0gQmxhY2tQaXhlbChtX2Rpc3BsYXksIDApOworICAgICAgICBhLmJhY2tncm91
bmRfcGl4ZWwgPSBXaGl0ZVBpeGVsKGRpc3BsYXkoKSwgMCk7CisgICAgICAgIGEuYm9yZGVyX3Bp
eGVsID0gQmxhY2tQaXhlbChkaXNwbGF5KCksIDApOwogICAgICAgICBhLmNvbG9ybWFwID0gY21h
cDsKLSAgICAgICAgbV9zdXJmYWNlID0gWENyZWF0ZVdpbmRvdyhtX2Rpc3BsYXksIG1fb2ZmU2Ny
ZWVuV2luZG93LmdldFhXaW5kb3coKSwgMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
LAorICAgICAgICBtX3N1cmZhY2UgPSBYQ3JlYXRlV2luZG93KGRpc3BsYXkoKSwgbV9vZmZTY3Jl
ZW5XaW5kb3ctPmdldFhXaW5kb3coKSwgMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
LAogICAgICAgICAgICAgMCwgdmlzdWFsSW5mby0+ZGVwdGgsIElucHV0T3V0cHV0LCB2aXN1YWxJ
bmZvLT52aXN1YWwsCiAgICAgICAgICAgICBDV0JhY2tQaXhlbCB8IENXQm9yZGVyUGl4ZWwgfCBD
V0NvbG9ybWFwLCAmYSk7Ci0gICAgICAgIFhTZXRXaW5kb3dCYWNrZ3JvdW5kUGl4bWFwKG1fZGlz
cGxheSwgbV9zdXJmYWNlLCAwKTsKLSAgICAgICAgWENvbXBvc2l0ZVJlZGlyZWN0V2luZG93KG1f
ZGlzcGxheSwgbV9zdXJmYWNlLCBDb21wb3NpdGVSZWRpcmVjdE1hbnVhbCk7Ci0gICAgICAgIG1f
Z2x4U3VyZmFjZSA9IGdsWENyZWF0ZVdpbmRvdyhtX2Rpc3BsYXksIG1fZmJDb25maWcsIG1fc3Vy
ZmFjZSwgMCk7CisgICAgICAgIFhTZXRXaW5kb3dCYWNrZ3JvdW5kUGl4bWFwKGRpc3BsYXkoKSwg
bV9zdXJmYWNlLCAwKTsKKyAgICAgICAgWENvbXBvc2l0ZVJlZGlyZWN0V2luZG93KGRpc3BsYXko
KSwgbV9zdXJmYWNlLCBDb21wb3NpdGVSZWRpcmVjdE1hbnVhbCk7CisgICAgICAgIG1fZ2x4U3Vy
ZmFjZSA9IGdsWENyZWF0ZVdpbmRvdyhkaXNwbGF5KCksIG1fZmJDb25maWcsIG1fc3VyZmFjZSwg
MCk7CiAgICAgICAgIFhGcmVlKHZpc3VhbEluZm8pOwogCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0
aGUgWFJlbmRlciBFeHRlbnNpb24gaXMgYXZhaWxhYmxlLgogICAgICAgICBpbnQgZXZlbnRCYXNl
cCwgZXJyb3JCYXNlcDsKLSAgICAgICAgaWYgKCFYUmVuZGVyUXVlcnlFeHRlbnNpb24obV9kaXNw
bGF5LCAmZXZlbnRCYXNlcCwgJmVycm9yQmFzZXApKQorICAgICAgICBpZiAoIVhSZW5kZXJRdWVy
eUV4dGVuc2lvbihkaXNwbGF5KCksICZldmVudEJhc2VwLCAmZXJyb3JCYXNlcCkpCiAgICAgICAg
ICAgICByZXR1cm4gMDsKIAotICAgICAgICBYTWFwV2luZG93KG1fZGlzcGxheSwgbV9zdXJmYWNl
KTsKKyAgICAgICAgWE1hcFdpbmRvdyhkaXNwbGF5KCksIG1fc3VyZmFjZSk7CiAgICAgICAgIHJl
dHVybiBtX3N1cmZhY2U7CiAgICAgfQogCiAgICAgdm9pZCBjcmVhdGVQaXhtYXAodWludDMyX3Qg
d2luSWQpCiAgICAgewogICAgICAgICBYV2luZG93QXR0cmlidXRlcyBhdHRyOwotICAgICAgICBp
ZiAoIVhHZXRXaW5kb3dBdHRyaWJ1dGVzKG1fZGlzcGxheSwgd2luSWQsICZhdHRyKSkKKyAgICAg
ICAgaWYgKCFYR2V0V2luZG93QXR0cmlidXRlcyhkaXNwbGF5KCksIHdpbklkLCAmYXR0cikpCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIHdpbmRvdyBp
cyBtYXBwZWQuCiAgICAgICAgIGlmIChhdHRyLm1hcF9zdGF0ZSA9PSBJc1VubWFwcGVkIHx8IGF0
dHIubWFwX3N0YXRlID09IElzVW52aWV3YWJsZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBTY29wZWRYUGl4bWFwQ3JlYXRpb25FcnJvckhhbmRsZXIgaGFuZGxlcihtX2Rpc3BsYXkp
OworICAgICAgICBTY29wZWRYUGl4bWFwQ3JlYXRpb25FcnJvckhhbmRsZXIgaGFuZGxlcihkaXNw
bGF5KCkpOwogICAgICAgICBtX3NpemUgPSBJbnRTaXplKGF0dHIud2lkdGgsIGF0dHIuaGVpZ2h0
KTsKIAotICAgICAgICBYUmVuZGVyUGljdEZvcm1hdCogZm9ybWF0ID0gWFJlbmRlckZpbmRWaXN1
YWxGb3JtYXQobV9kaXNwbGF5LCBhdHRyLnZpc3VhbCk7CisgICAgICAgIFhSZW5kZXJQaWN0Rm9y
bWF0KiBmb3JtYXQgPSBYUmVuZGVyRmluZFZpc3VhbEZvcm1hdChkaXNwbGF5KCksIGF0dHIudmlz
dWFsKTsKICAgICAgICAgbV9oYXNBbHBoYSA9IChmb3JtYXQtPnR5cGUgPT0gUGljdFR5cGVEaXJl
Y3QgJiYgZm9ybWF0LT5kaXJlY3QuYWxwaGFNYXNrKTsKIAogICAgICAgICBpbnQgbnVtYmVyT2ZD
b25maWdzOwotICAgICAgICBHTFhGQkNvbmZpZyogY29uZmlncyA9IGdsWENob29zZUZCQ29uZmln
KG1fZGlzcGxheSwgWERlZmF1bHRTY3JlZW4obV9kaXNwbGF5KSwgZ2x4U3BlYywgJm51bWJlck9m
Q29uZmlncyk7CisgICAgICAgIEdMWEZCQ29uZmlnKiBjb25maWdzID0gZ2xYQ2hvb3NlRkJDb25m
aWcoZGlzcGxheSgpLCBYRGVmYXVsdFNjcmVlbihkaXNwbGF5KCkpLCBnbHhTcGVjLCAmbnVtYmVy
T2ZDb25maWdzKTsKIAogICAgICAgICAvLyBJZiBvcmlnaW4gd2luZG93IGhhcyBhbHBoYSB0aGVu
IGZpbmQgY29uZmlnIHdpdGggYWxwaGEuCiAgICAgICAgIEdMWEZCQ29uZmlnJiBjb25maWcgPSBt
X2hhc0FscGhhID8gZmluZEZCQ29uZmlnV2l0aEFscGhhKGNvbmZpZ3MsIG51bWJlck9mQ29uZmln
cykgOiBjb25maWdzWzBdOwogCi0gICAgICAgIG1feFBpeG1hcCA9IFhDb21wb3NpdGVOYW1lV2lu
ZG93UGl4bWFwKG1fZGlzcGxheSwgd2luSWQpOwotICAgICAgICBtX2dseFBpeG1hcCA9IGdsWENy
ZWF0ZVBpeG1hcChtX2Rpc3BsYXksIGNvbmZpZywgbV94UGl4bWFwLCBnbHhBdHRyaWJ1dGVzKTsK
KyAgICAgICAgbV94UGl4bWFwID0gWENvbXBvc2l0ZU5hbWVXaW5kb3dQaXhtYXAoZGlzcGxheSgp
LCB3aW5JZCk7CisgICAgICAgIG1fZ2x4UGl4bWFwID0gZ2xYQ3JlYXRlUGl4bWFwKGRpc3BsYXko
KSwgY29uZmlnLCBtX3hQaXhtYXAsIGdseEF0dHJpYnV0ZXMpOwogCiAgICAgICAgIGlmICghaGFu
ZGxlci5pc1ZhbGlkT3BlcmF0aW9uKCkpCiAgICAgICAgICAgICBjbGVhcigpOwogICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgIHVpbnQgaW52ZXJ0ZWQgPSAwOwotICAgICAgICAgICAgZ2xYUXVl
cnlEcmF3YWJsZShtX2Rpc3BsYXksIG1fZ2x4UGl4bWFwLCBHTFhfWV9JTlZFUlRFRF9FWFQsICZp
bnZlcnRlZCk7CisgICAgICAgICAgICBnbFhRdWVyeURyYXdhYmxlKGRpc3BsYXkoKSwgbV9nbHhQ
aXhtYXAsIEdMWF9ZX0lOVkVSVEVEX0VYVCwgJmludmVydGVkKTsKICAgICAgICAgICAgIG1fdGV4
dHVyZUlzWUludmVydGVkID0gISFpbnZlcnRlZDsKICAgICAgICAgfQogCkBAIC0zMjgsMTMgKzM0
MCwxMyBAQCBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSB7CiAgICAgICAgIG1fZGV0YWNo
ZWRDb250ZXh0ID0gZ2xYR2V0Q3VycmVudENvbnRleHQoKTsKICAgICAgICAgbV9kZXRhY2hlZFN1
cmZhY2UgPSBnbFhHZXRDdXJyZW50RHJhd2FibGUoKTsKICAgICAgICAgaWYgKG1fc3VyZmFjZSAm
JiBtX2dsQ29udGV4dCkKLSAgICAgICAgICAgIGdsWE1ha2VDdXJyZW50KG1fZGlzcGxheSwgbV9z
dXJmYWNlLCBtX2dsQ29udGV4dCk7CisgICAgICAgICAgICBnbFhNYWtlQ3VycmVudChkaXNwbGF5
KCksIG1fc3VyZmFjZSwgbV9nbENvbnRleHQpOwogICAgIH0KIAogICAgIHZvaWQgZG9uZUN1cnJl
bnQoKQogICAgIHsKICAgICAgICAgaWYgKG1fZGV0YWNoZWRDb250ZXh0KQotICAgICAgICAgICAg
Z2xYTWFrZUN1cnJlbnQobV9kaXNwbGF5LCBtX2RldGFjaGVkU3VyZmFjZSwgbV9kZXRhY2hlZENv
bnRleHQpOworICAgICAgICAgICAgZ2xYTWFrZUN1cnJlbnQoZGlzcGxheSgpLCBtX2RldGFjaGVk
U3VyZmFjZSwgbV9kZXRhY2hlZENvbnRleHQpOwogICAgICAgICBtX2RldGFjaGVkQ29udGV4dCA9
IDA7CiAgICAgfQogCkBAIC0zNTEsNyArMzYzLDcgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVBy
aXZhdGUgewogICAgICAgICAgICAgR0xpbnQgb2xkRkJPOwogICAgICAgICAgICAgZ2xHZXRJbnRl
Z2VydihHTF9GUkFNRUJVRkZFUl9CSU5ESU5HLCAmb2xkRkJPKTsKICAgICAgICAgICAgIHBHbEJp
bmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7Ci0gICAgICAgICAgICBnbFhTd2FwQnVm
ZmVycyhtX2Rpc3BsYXksIG1fc3VyZmFjZSk7CisgICAgICAgICAgICBnbFhTd2FwQnVmZmVycyhk
aXNwbGF5KCksIG1fc3VyZmFjZSk7CiAgICAgICAgICAgICBwR2xCaW5kRnJhbWVidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIG9sZEZCTyk7CiAgICAgICAgIH0KICAgICB9CkBAIC0zODgsNyArNDAwLDcg
QEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogICAgICAgICBkb25lQ3VycmVudCgp
OwogICAgIH0KIAotICAgIERpc3BsYXkqIGRpc3BsYXkoKSBjb25zdCB7IHJldHVybiBtX2Rpc3Bs
YXk7IH0KKyAgICBEaXNwbGF5KiBkaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gT2ZmU2NyZWVuUm9v
dFdpbmRvdzo6ZGlzcGxheSgpOyB9CiAKICAgICBHTFhQaXhtYXAgZ2x4UGl4bWFwKCkgY29uc3QK
ICAgICB7CkBAIC00MDEsNyArNDEzLDcgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUg
ewogICAgIHsKICAgICAgICAgaWYgKG1fc2l6ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIFhX
aW5kb3dBdHRyaWJ1dGVzIGF0dHI7Ci0gICAgICAgICAgICBpZiAoWEdldFdpbmRvd0F0dHJpYnV0
ZXMobV9kaXNwbGF5LCBtX3N1cmZhY2UsICZhdHRyKSkKKyAgICAgICAgICAgIGlmIChYR2V0V2lu
ZG93QXR0cmlidXRlcyhkaXNwbGF5KCksIG1fc3VyZmFjZSwgJmF0dHIpKQogICAgICAgICAgICAg
ICAgIGNvbnN0X2Nhc3Q8R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSo+KHRoaXMpLT5tX3NpemUgPSBJ
bnRTaXplKGF0dHIud2lkdGgsIGF0dHIuaGVpZ2h0KTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gbV9zaXplOwpAQCAtNDEyLDExICs0MjQsMTEgQEAgcHJpdmF0ZToKICAgICBHTFhGQkNvbmZp
ZyYgZmluZEZCQ29uZmlnV2l0aEFscGhhKEdMWEZCQ29uZmlnKiBmYkNvbmZpZ3MsIGludCBudW1i
ZXJPZkNvbmZpZ3MpCiAgICAgewogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9m
Q29uZmlnczsgKytpKSB7Ci0gICAgICAgICAgICBYVmlzdWFsSW5mbyogdmlzdWFsSW5mbyA9IGds
WEdldFZpc3VhbEZyb21GQkNvbmZpZyhtX2Rpc3BsYXksIGZiQ29uZmlnc1tpXSk7CisgICAgICAg
ICAgICBYVmlzdWFsSW5mbyogdmlzdWFsSW5mbyA9IGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyhk
aXNwbGF5KCksIGZiQ29uZmlnc1tpXSk7CiAgICAgICAgICAgICBpZiAoIXZpc3VhbEluZm8pCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIFhSZW5kZXJQaWN0Rm9ybWF0
KiBmb3JtYXQgPSBYUmVuZGVyRmluZFZpc3VhbEZvcm1hdChtX2Rpc3BsYXksIHZpc3VhbEluZm8t
PnZpc3VhbCk7CisgICAgICAgICAgICBYUmVuZGVyUGljdEZvcm1hdCogZm9ybWF0ID0gWFJlbmRl
ckZpbmRWaXN1YWxGb3JtYXQoZGlzcGxheSgpLCB2aXN1YWxJbmZvLT52aXN1YWwpOwogICAgICAg
ICAgICAgWEZyZWUodmlzdWFsSW5mbyk7CiAKICAgICAgICAgICAgIGlmIChmb3JtYXQgJiYgZm9y
bWF0LT5kaXJlY3QuYWxwaGFNYXNrID4gMCkKQEAgLTQzMCwzMCArNDQyLDI5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjbGVhcigpCiAgICAgewogICAgICAgICBpZiAobV9nbHhQaXhtYXApIHsKLSAg
ICAgICAgICAgIGdsWERlc3Ryb3lQaXhtYXAobV9kaXNwbGF5LCBtX2dseFBpeG1hcCk7CisgICAg
ICAgICAgICBnbFhEZXN0cm95UGl4bWFwKGRpc3BsYXkoKSwgbV9nbHhQaXhtYXApOwogICAgICAg
ICAgICAgbV9nbHhQaXhtYXAgPSAwOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1feFBpeG1h
cCkgewotICAgICAgICAgICAgWEZyZWVQaXhtYXAobV9kaXNwbGF5LCBtX3hQaXhtYXApOworICAg
ICAgICAgICAgWEZyZWVQaXhtYXAoZGlzcGxheSgpLCBtX3hQaXhtYXApOwogICAgICAgICAgICAg
bV94UGl4bWFwID0gMDsKICAgICAgICAgfQogCiAgICAgICAgIC8vIENsaWVudCBkb2Vzbid0IG93
biB0aGUgd2luZG93LiBEZWxldGUgc3VyZmFjZSBvbmx5IG9uIHdyaXRpbmcgc2lkZS4KICAgICAg
ICAgaWYgKCFtX2lzUmVjZWl2ZXIgJiYgbV9zdXJmYWNlKSB7Ci0gICAgICAgICAgICBYRGVzdHJv
eVdpbmRvdyhtX2Rpc3BsYXksIG1fc3VyZmFjZSk7CisgICAgICAgICAgICBYRGVzdHJveVdpbmRv
dyhkaXNwbGF5KCksIG1fc3VyZmFjZSk7CiAgICAgICAgICAgICBtX3N1cmZhY2UgPSAwOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKG1fZ2xDb250ZXh0KSB7Ci0gICAgICAgICAgICBnbFhEZXN0
cm95Q29udGV4dChtX2Rpc3BsYXksIG1fZ2xDb250ZXh0KTsKKyAgICAgICAgICAgIGdsWERlc3Ry
b3lDb250ZXh0KGRpc3BsYXkoKSwgbV9nbENvbnRleHQpOwogICAgICAgICAgICAgbV9nbENvbnRl
eHQgPSAwOwogICAgICAgICB9CiAgICAgfQogCi0gICAgT2ZmU2NyZWVuUm9vdFdpbmRvdyBtX29m
ZlNjcmVlbldpbmRvdzsKKyAgICBPd25QdHI8T2ZmU2NyZWVuUm9vdFdpbmRvdz4gbV9vZmZTY3Jl
ZW5XaW5kb3c7CiAgICAgSW50U2l6ZSBtX3NpemU7Ci0gICAgRGlzcGxheSogbV9kaXNwbGF5Owog
ICAgIFBpeG1hcCBtX3hQaXhtYXA7CiAgICAgR0xYUGl4bWFwIG1fZ2x4UGl4bWFwOwogICAgIFdp
bmRvdyBtX3N1cmZhY2U7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>