<?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>94417</bug_id>
          
          <creation_ts>2012-08-18 13:38:28 -0700</creation_ts>
          <short_desc>[GTK] [WebKit2] Use XComposite window for accelerated compositing</short_desc>
          <delta_ts>2012-09-19 03:12:46 -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>WebKitGTK</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>
          <dependson>90085</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>alex</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cwhong893</cc>
    
    <cc>dev</cc>
    
    <cc>dongseong.hwang</cc>
    
    <cc>gustavo</cc>
    
    <cc>skyul</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yoon</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>698943</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-08-18 13:38:28 -0700</bug_when>
    <thetext>Like WebKit1, WebKit2 should use an XComposite window to implement accelerated compositing. This will allow rendering to fit into the GTK+ drawing loop and also fix GtkOverlay widgets atop the WebView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698982</commentid>
    <comment_count>1</comment_count>
      <attachid>159279</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-08-18 18:28:10 -0700</bug_when>
    <thetext>Created attachment 159279
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699018</commentid>
    <comment_count>2</comment_count>
      <attachid>159279</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-08-19 04:01:24 -0700</bug_when>
    <thetext>Comment on attachment 159279
Patch

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

&gt; Source/WebCore/platform/gtk/RedirectedXCompositeWindow.h:31
&gt; +#include &quot;GRefPtrGtk.h&quot;

What is this for?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:285
&gt; +    if (webViewBase-&gt;priv-&gt;redirectedWindow &amp;&amp; layerTreeContext.windowHandle != webViewBase-&gt;priv-&gt;redirectedWindow-&gt;windowHandle())
&gt; +        webViewBase-&gt;priv-&gt;redirectedWindow = nullptr;
&gt; +
&gt; +    if (!webViewBase-&gt;priv-&gt;redirectedWindow)
&gt; +        webViewBase-&gt;priv-&gt;redirectedWindow = WebCore::RedirectedXCompositeWindow::create(layerTreeContext.windowHandle);
&gt; +
&gt; +    return webViewBase-&gt;priv-&gt;redirectedWindow.get();

I think this method would be a bit easier to read if you get the priv pointer first:

WebKitWebViewBasePrivate* priv = webViewBase-&gt;priv;

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:319
&gt; +#if USE(TEXTURE_MAPPER_GL) 
&gt; +    if (drawingArea-&gt;isInAcceleratedCompositingMode()) {
&gt; +        webkitWebViewBaseDrawAcceleratedCompositingResults(webViewBase, drawingArea, cr);
&gt; +        return FALSE;
&gt; +    }
&gt; +#endif

Shouldn&apos;t we pass also de clipRect? and use it in webkitWebViewBaseDrawAcceleratedCompositingResults?

&gt; Source/WebKit2/UIProcess/WebPageProxy.messages.in:182
&gt; +#
&gt; +#if PLATFORM(GTK) &amp;&amp; USE(TEXTURE_MAPPER_GL)
&gt; +    InvalidateWidget()
&gt; +#endif

You should also remove the WidgetMapped meesage.

&gt; Source/WebKit2/UIProcess/gtk/WebPageProxyGtk.cpp:115
&gt; +void WebPageProxy::invalidateWidget()
&gt;  {
&gt; -    process()-&gt;send(Messages::WebPage::WidgetMapped(nativeWindowId), m_pageID);
&gt; +    gtk_widget_queue_draw(static_cast&lt;PageClientImpl*&gt;(m_pageClient)-&gt;viewWidget());

hmm, do we always have to redraw the whole widget? don&apos;t we have a damaged rect? Maybe we could call this redrawWidget to make it clear we want the widget to be redrawn.

&gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:193
&gt; +void WebPage::invalidateWidget()
&gt; +{
&gt; +    send(Messages::WebPageProxy::InvalidateWidget());
&gt; +}

The messages is protected by USE(TEXTURE_MAPPER_GL), so this should be inside a USE(TEXTURE_MAPPER_GL) block I guess. You should also remove the implementation of widgetMapped</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699251</commentid>
    <comment_count>3</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-08-19 23:27:57 -0700</bug_when>
    <thetext>(In reply to comment #2)

Thanks for the review!

&gt; &gt; Source/WebCore/platform/gtk/RedirectedXCompositeWindow.h:31
&gt; &gt; +#include &quot;GRefPtrGtk.h&quot;
&gt; 
&gt; What is this for?

This was left over from a previous iteration. Removed.

&gt; I think this method would be a bit easier to read if you get the priv pointer first:

Fair enough.

&gt; Shouldn&apos;t we pass also de clipRect? and use it in webkitWebViewBaseDrawAcceleratedCompositingResults?

Sure. That&apos;s a little faster when painting damage events.

&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.messages.in:182
&gt; &gt; +#
&gt; &gt; +#if PLATFORM(GTK) &amp;&amp; USE(TEXTURE_MAPPER_GL)
&gt; &gt; +    InvalidateWidget()
&gt; &gt; +#endif
&gt; 
&gt; You should also remove the WidgetMapped meesage.

Good catch. Removed.

&gt; &gt; Source/WebKit2/UIProcess/gtk/WebPageProxyGtk.cpp:115
&gt; &gt; +void WebPageProxy::invalidateWidget()
&gt; &gt;  {
&gt; &gt; -    process()-&gt;send(Messages::WebPage::WidgetMapped(nativeWindowId), m_pageID);
&gt; &gt; +    gtk_widget_queue_draw(static_cast&lt;PageClientImpl*&gt;(m_pageClient)-&gt;viewWidget());
&gt; 
&gt; hmm, do we always have to redraw the whole widget? don&apos;t we have a damaged rect? Maybe we could call this redrawWidget to make it clear we want the widget to be redrawn.

Yes, OpenGL doesn&apos;t always repaints the entire scene. I dislike the name &quot;redrawWidget&quot; because that&apos;s not actually what happens on the UI side. Instead, it queues a redraw by invalidating the widget. The actual redraw happens at some point later.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp:193
&gt; &gt; +void WebPage::invalidateWidget()
&gt; &gt; +{
&gt; &gt; +    send(Messages::WebPageProxy::InvalidateWidget());
&gt; &gt; +}
&gt; 
&gt; The messages is protected by USE(TEXTURE_MAPPER_GL), so this should be inside a USE(TEXTURE_MAPPER_GL) block I guess. You should also remove the implementation of widgetMapped

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699253</commentid>
    <comment_count>4</comment_count>
      <attachid>159340</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-08-19 23:30:19 -0700</bug_when>
    <thetext>Created attachment 159340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699271</commentid>
    <comment_count>5</comment_count>
      <attachid>159340</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-08-20 00:06:44 -0700</bug_when>
    <thetext>Comment on attachment 159340
Patch

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

Patch looks good to me in general, but I think this should be reviewed by Alex.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:280
&gt; +    if (priv-&gt;redirectedWindow &amp;&amp; layerTreeContext.windowHandle != webViewBase-&gt;priv-&gt;redirectedWindow-&gt;windowHandle())

webViewBase-&gt;priv -&gt; priv

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:363
&gt; +    DrawingAreaProxy* drawingArea = webViewBase-&gt;priv-&gt;pageProxy-&gt;drawingArea();
&gt; +    if (drawingArea) {
&gt;          priv-&gt;pageProxy-&gt;drawingArea()-&gt;setSize(viewRect.size(), IntSize());
&gt;  
&gt; +        if (static_cast&lt;DrawingAreaProxyImpl*&gt;(drawingArea)-&gt;isInAcceleratedCompositingMode() &amp;&amp; webViewBase-&gt;priv-&gt;redirectedWindow)
&gt; +            webViewBase-&gt;priv-&gt;redirectedWindow-&gt;notifyResized();
&gt; +    }

You already have a priv variable in this method, so you could use it to make the lines a bit shorter and easier to read.

&gt; Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp:99
&gt;      if (!context) {
&gt; -        m_isValid = false;
&gt; +         m_isValid = false;
&gt;          return;

what is this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699495</commentid>
    <comment_count>6</comment_count>
      <attachid>159424</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-08-20 07:40:50 -0700</bug_when>
    <thetext>Created attachment 159424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701355</commentid>
    <comment_count>7</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2012-08-21 17:20:59 -0700</bug_when>
    <thetext>Good job!

I have a question about this.

In Webkit1 case, It seems sufficient to use Single Buffer + glFlush operation.
But WebKit2, I think RedirectedXCompositeWindow needs double buffering and swap-like operation, as like GrapihicsSurfaceGLX.
If we try to share a single pixmap between two process, we will encounter a number of synchronization issues.

For example, Single Buffer + glFlush operation didn&apos;t work for compositing. But Double Buffer + swapBuffers() works in my environment.
(OS : Ubuntu 12.04 64bit, GPU : nVidia GeForce GTS 450, Driver : nVidia proprietary driver 295.71)

Maybe this is a driver specific issue, maybe not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701359</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-08-21 17:25:09 -0700</bug_when>
    <thetext>(In reply to comment #7)

&gt; For example, Single Buffer + glFlush operation didn&apos;t work for compositing. But Double Buffer + swapBuffers() works in my environment.
&gt; (OS : Ubuntu 12.04 64bit, GPU : nVidia GeForce GTS 450, Driver : nVidia proprietary driver 295.71)

I found that single buffered contexts work poorly with Nvidia in general. We&apos;ll almost certainly be using double-buffered contexts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701593</commentid>
    <comment_count>9</comment_count>
      <attachid>159865</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-08-21 23:17:20 -0700</bug_when>
    <thetext>Created attachment 159865
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701595</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-21 23:20:24 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701603</commentid>
    <comment_count>11</comment_count>
      <attachid>159865</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-21 23:26:06 -0700</bug_when>
    <thetext>Comment on attachment 159865
Patch

Attachment 159865 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13570114</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701625</commentid>
    <comment_count>12</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2012-08-21 23:47:53 -0700</bug_when>
    <thetext>310299    context-&gt;swapBuffers();
 300
 301    // FIXME: It seems that when using double-buffering (and on some drivers single-buffering)
 302    // and XComposite window redirection, two swap buffers are required to force the pixmap
 303    // to update. This isn&apos;t a problem during animations, because swapBuffer is continuously 
 304    // called. For non-animation situations we use this terrible hack until we can get to the
 305    // bottom of the issue.
 306    if (!toTextureMapperLayer(m_rootLayer.get())-&gt;descendantsOrSelfHaveRunningAnimations()) {
 307        context-&gt;swapBuffers();
 308        context-&gt;swapBuffers();
 309    }

It seems like there will be three swapBuffers operations on non-animation situations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701962</commentid>
    <comment_count>13</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-08-22 08:41:44 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; 310299    context-&gt;swapBuffers();
&gt;  300
&gt;  301    // FIXME: It seems that when using double-buffering (and on some drivers single-buffering)
&gt;  302    // and XComposite window redirection, two swap buffers are required to force the pixmap
&gt;  303    // to update. This isn&apos;t a problem during animations, because swapBuffer is continuously 
&gt;  304    // called. For non-animation situations we use this terrible hack until we can get to the
&gt;  305    // bottom of the issue.
&gt;  306    if (!toTextureMapperLayer(m_rootLayer.get())-&gt;descendantsOrSelfHaveRunningAnimations()) {
&gt;  307        context-&gt;swapBuffers();
&gt;  308        context-&gt;swapBuffers();
&gt;  309    }
&gt; 
&gt; It seems like there will be three swapBuffers operations on non-animation situations.

Yes, the comment tries to explain what&apos;s happening here. This is a work-around until the real problem is found. Do you have any idea what&apos;s causing this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701989</commentid>
    <comment_count>14</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2012-08-22 09:10:09 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; 310299    context-&gt;swapBuffers();
&gt; &gt;  300
&gt; &gt;  301    // FIXME: It seems that when using double-buffering (and on some drivers single-buffering)
&gt; &gt;  302    // and XComposite window redirection, two swap buffers are required to force the pixmap
&gt; &gt;  303    // to update. This isn&apos;t a problem during animations, because swapBuffer is continuously 
&gt; &gt;  304    // called. For non-animation situations we use this terrible hack until we can get to the
&gt; &gt;  305    // bottom of the issue.
&gt; &gt;  306    if (!toTextureMapperLayer(m_rootLayer.get())-&gt;descendantsOrSelfHaveRunningAnimations()) {
&gt; &gt;  307        context-&gt;swapBuffers();
&gt; &gt;  308        context-&gt;swapBuffers();
&gt; &gt;  309    }
&gt; &gt; 
&gt; &gt; It seems like there will be three swapBuffers operations on non-animation situations.
&gt; 
&gt; Yes, the comment tries to explain what&apos;s happening here. This is a work-around until the real problem is found. Do you have any idea what&apos;s causing this?

As I remember, nVidia&apos;s driver didn&apos;t support 32bit ARGB pixmap surface with XComposite extension. But we creates GLContextGLX with GL_RGBA, right?
I think that can cause this situation.

It&apos;s mid-night on my timezone, I cannot test/verify my assumption right now. If you found any idea, plz let me know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710757</commentid>
    <comment_count>15</comment_count>
      <attachid>161947</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-03 16:15:49 -0700</bug_when>
    <thetext>Created attachment 161947
Try to fix the EFL build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713088</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-06 02:48:23 -0700</bug_when>
    <thetext>I&apos;ve tried the patch and I see a lot of flickering while resizing the window with MiniBrowser. I also got a crash in the web process, I don&apos;t have a debug build but this is the bt just in case it helps:

Program received signal SIGSEGV, Segmentation fault.
0xb75af163 in WebCore::GraphicsContext3D::makeContextCurrent() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
(gdb) bt
#0  0xb75af163 in WebCore::GraphicsContext3D::makeContextCurrent() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#1  0xb710194b in WebCore::GraphicsContext3D::deleteTexture(unsigned int) () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#2  0xb75b10ac in WebCore::BitmapTextureGL::~BitmapTextureGL() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#3  0xb75b1102 in WebCore::BitmapTextureGL::~BitmapTextureGL() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#4  0xb75bb540 in WebCore::TextureMapperTile::~TextureMapperTile() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#5  0xb75bb60b in WebCore::TextureMapperTiledBackingStore::~TextureMapperTiledBackingStore() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#6  0xb75be7b8 in WebCore::TextureMapperLayer::~TextureMapperLayer() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#7  0xb75be802 in WebCore::TextureMapperLayer::~TextureMapperLayer() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#8  0xb75b6289 in WebCore::GraphicsLayerTextureMapper::~GraphicsLayerTextureMapper() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#9  0xb75b6402 in WebCore::GraphicsLayerTextureMapper::~GraphicsLayerTextureMapper() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#10 0xb7299e31 in WebCore::RenderLayerBacking::destroyGraphicsLayers() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#11 0xb729ad1f in WebCore::RenderLayerBacking::~RenderLayerBacking() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#12 0xb729adf2 in WebCore::RenderLayerBacking::~RenderLayerBacking() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#13 0xb728b71c in WebCore::RenderLayer::clearBacking(bool) () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#14 0xb728d421 in WebCore::RenderLayer::~RenderLayer() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#15 0xb728d5b2 in WebCore::RenderLayer::~RenderLayer() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#16 0xb72833d9 in WebCore::RenderLayer::destroy(WebCore::RenderArena*) () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#17 0xb7236125 in WebCore::RenderBoxModelObject::destroyLayer() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#18 0xb72d0956 in WebCore::RenderObject::willBeDestroyed() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#19 0xb72450da in WebCore::RenderBoxModelObject::willBeDestroyed() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#20 0xb7233402 in WebCore::RenderBox::willBeDestroyed() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#21 0xb71f4018 in WebCore::RenderBlock::willBeDestroyed() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#22 0xb72cd3e5 in WebCore::RenderObject::destroy() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#23 0xb72cd272 in WebCore::RenderObject::destroyAndCleanupAnonymousWrappers() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#24 0xb6c825ad in WebCore::Node::detach() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#25 0xb6c1edb1 in WebCore::ContainerNode::detach() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#26 0xb6c63ca7 in WebCore::Element::detach() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#27 0xb6c1ed9b in WebCore::ContainerNode::detach() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#28 0xb6c63ca7 in WebCore::Element::detach() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#29 0xb6c1ed9b in WebCore::ContainerNode::detach() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#30 0xb6c63ca7 in WebCore::Element::detach() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#31 0xb6c1ed9b in WebCore::ContainerNode::detach() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#32 0xb6c63ca7 in WebCore::Element::detach() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#33 0xb6c1ed9b in WebCore::ContainerNode::detach() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#34 0xb6c63ca7 in WebCore::Element::detach() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#35 0xb6c1ed9b in WebCore::ContainerNode::detach() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#36 0xb6c43052 in WebCore::Document::detach() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#37 0xb6c3145f in WebCore::Document::prepareForDestruction() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#38 0xb7070859 in WebCore::Frame::setView(WTF::PassRefPtr&lt;WebCore::FrameView&gt;) () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#39 0xb6fce113 in WebCore::FrameLoader::closeAndRemoveChild(WebCore::Frame*) () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#40 0xb6fd2097 in WebCore::FrameLoader::detachFromParent() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#41 0xb6fd2268 in WebCore::FrameLoader::detachChildren() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#42 0xb6fd230c in WebCore::FrameLoader::setDocumentLoader(WebCore::DocumentLoader*) () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#43 0xb6fd2a6e in WebCore::FrameLoader::transitionToCommitted(WTF::PassRefPtr&lt;WebCore::CachedPage&gt;) () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#44 0xb6fd56ef in WebCore::FrameLoader::commitProvisionalLoad() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#45 0xb6fb9f13 in WebCore::DocumentLoader::commitIfReady() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#46 0xb6fb9f58 in WebCore::DocumentLoader::commitLoad(char const*, int) () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#47 0xb6fba0b0 in WebCore::DocumentLoader::receivedData(char const*, int) () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#48 0xb6ff2a86 in WebCore::MainResourceLoader::addData(char const*, int, bool) () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#49 0xb7007bd6 in WebCore::ResourceLoader::didReceiveData(char const*, int, long long, bool) () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#50 0xb6ff2b6b in WebCore::MainResourceLoader::didReceiveData(char const*, int, long long, bool) () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
---Type &lt;return&gt; to continue, or q &lt;return&gt; to quit---
#51 0xb7007209 in WebCore::ResourceLoader::didReceiveData(WebCore::ResourceHandle*, char const*, int, int) ()
   from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#52 0xb716c65a in WebCore::readCallback(_GObject*, _GAsyncResult*, void*) () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#53 0xb56089d8 in async_ready_callback_wrapper (source_object=0xaf602cd0, res=0xb0002590, user_data=0xacd3fae0) at ginputstream.c:529
#54 0xb561f8c0 in g_simple_async_result_complete (simple=0xb0002590) at gsimpleasyncresult.c:775
#55 0xb561f9ec in complete_in_idle_cb (data=0xb0002590) at gsimpleasyncresult.c:787
#56 0xb5157310 in g_idle_dispatch (source=0x87466c0, callback=0xb561f9c0 &lt;complete_in_idle_cb&gt;, user_data=0xb0002590) at gmain.c:4797
#57 0xb515a036 in g_main_dispatch (context=0x80785e0) at gmain.c:2707
#58 g_main_context_dispatch (context=0x80785e0) at gmain.c:3211
#59 0xb515a3d5 in g_main_context_iterate (dispatch=1, block=-1256817280, context=0x80785e0, self=&lt;optimized out&gt;) at gmain.c:3282
#60 g_main_context_iterate (context=0x80785e0, block=-1256817280, dispatch=1, self=&lt;optimized out&gt;) at gmain.c:3219
#61 0xb515a81b in g_main_loop_run (loop=0x81127d8) at gmain.c:3476
#62 0xb7b65758 in WebCore::RunLoop::run() () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#63 0xb699a53d in WebProcessMainGtk () from /home/cgarcia/src/git/gnome/WebKit/WebKitBuild/.libs/libwebkit2gtk-3.0.so.0
#64 0x0804853b in main ()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713211</commentid>
    <comment_count>17</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-06 06:04:14 -0700</bug_when>
    <thetext>How do you reproduce the crash?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713217</commentid>
    <comment_count>18</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-06 06:09:43 -0700</bug_when>
    <thetext>1.- Open MiniBrowser
2.- Go to any website
3.- Go to http://www.webkit.org/blog/386/3d-transforms/
4.- Use the bf list to go to webkitgtk page for example or the other one I think it doesn&apos;t matter
5.- Use the bf list to go to http://www.webkit.org/blog/386/3d-transforms/ again
6.- Reload the page by pressing enter in the location bar
CRASH
Try to reload again or repeat the steps if you don&apos;t get the crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714625</commentid>
    <comment_count>19</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-07 09:53:04 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; 1.- Open MiniBrowser
&gt; 2.- Go to any website
&gt; 3.- Go to http://www.webkit.org/blog/386/3d-transforms/
&gt; 4.- Use the bf list to go to webkitgtk page for example or the other one I think it doesn&apos;t matter
&gt; 5.- Use the bf list to go to http://www.webkit.org/blog/386/3d-transforms/ again
&gt; 6.- Reload the page by pressing enter in the location bar
&gt; CRASH
&gt; Try to reload again or repeat the steps if you don&apos;t get the crash

I was able to reproduce this crash with both WebKit1 and WebKit2 without the patch, so it&apos;s likely fallout from http://trac.webkit.org/changeset/127063 and unrelated to this patch.

I&apos;ll try to address the flickering, which is, again, probably fallout from the TextureMapper port to GC3D.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721483</commentid>
    <comment_count>20</comment_count>
      <attachid>161947</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-15 13:20:31 -0700</bug_when>
    <thetext>Comment on attachment 161947
Try to fix the EFL build

Should have a new patch soon fixing the flickering and removing the need for the double swap buffer in most cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722177</commentid>
    <comment_count>21</comment_count>
      <attachid>164442</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-17 12:39:20 -0700</bug_when>
    <thetext>Created attachment 164442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722212</commentid>
    <comment_count>22</comment_count>
      <attachid>164442</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-17 13:12:33 -0700</bug_when>
    <thetext>Comment on attachment 164442
Patch

Attachment 164442 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13883155</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722336</commentid>
    <comment_count>23</comment_count>
      <attachid>164468</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-17 15:48:04 -0700</bug_when>
    <thetext>Created attachment 164468
Try to fix the Qt build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722621</commentid>
    <comment_count>24</comment_count>
      <attachid>164468</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-18 03:09:15 -0700</bug_when>
    <thetext>Comment on attachment 164468
Try to fix the Qt build

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:281
&gt; +    webkitWebViewBase-&gt;priv-&gt;redirectedWindow = RedirectedXCompositeWindow::create(IntSize(1, 1));
&gt; +    webkitWebViewBase-&gt;priv-&gt;readyToRenderAcceleratedCompositingResults = false;

Use priv instead of webkitWebViewBase-&gt;priv.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:361
&gt; +    if (webViewBase-&gt;priv-&gt;redirectedWindow)
&gt; +        webViewBase-&gt;priv-&gt;redirectedWindow-&gt;resize(IntSize(allocation-&gt;width, allocation-&gt;height));
&gt; +
&gt; +    if (DrawingAreaProxyImpl* drawingArea = static_cast&lt;DrawingAreaProxyImpl*&gt;(webViewBase-&gt;priv-&gt;pageProxy-&gt;drawingArea()))
&gt; +        drawingArea-&gt;setSize(viewRect.size(), IntSize());

Ditto, you have priv here too already.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:375
&gt; +        if (!gtk_widget_get_mapped(GTK_WIDGET(webViewBase)) &amp;&amp; !webViewBase-&gt;priv-&gt;pageProxy-&gt;drawingArea()-&gt;size().isEmpty()) {

You don&apos;t need to cast this back to GtkWidget again, simply use widget !gtk_widget_get_mapped(widget)

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:865
&gt; +    gpointer* webViewBasePointer = static_cast&lt;gpointer*&gt;(fastMalloc(sizeof(gpointer)));
&gt; +    g_object_add_weak_pointer(G_OBJECT(webViewBase), webViewBasePointer);
&gt; +    *webViewBasePointer = webViewBase;
&gt; +    g_timeout_add(1000 / 60, reinterpret_cast&lt;GSourceFunc&gt;(queueAnotherDrawOfAcceleratedCompositingResults), webViewBasePointer);

You can save the handler id of g_timeout_add() and destroy the source in WebKitWebViewBase::dispose, so that queueAnotherDrawOfAcceleratedCompositingResults() will never be called if the widget is destroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722690</commentid>
    <comment_count>25</comment_count>
      <attachid>164468</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-18 05:24:32 -0700</bug_when>
    <thetext>Comment on attachment 164468
Try to fix the Qt build

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:285
&gt; +static bool renderAcceleratedCompositingResults(WebKitWebViewBase* webViewBase, cairo_t* cr, DrawingAreaProxyImpl* drawingArea)

In previous patches this received the clip rect also.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:357
&gt; +    if (webViewBase-&gt;priv-&gt;redirectedWindow)

This is created unconditionally in _init() so I don&apos;t think you need to check it&apos;s != NULL here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:358
&gt; +        webViewBase-&gt;priv-&gt;redirectedWindow-&gt;resize(IntSize(allocation-&gt;width, allocation-&gt;height));

This will always be done, shouldn&apos;t you check first that there&apos;s a drawing area in AC mode?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:383
&gt; +    GTK_WIDGET_CLASS(webkit_web_view_base_parent_class)-&gt;size_allocate(widget, allocation);

Why have you moved this here? Are you sure you don&apos;t need to call the parent first, if you return early the allocation won&apos;t be called on the parent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722818</commentid>
    <comment_count>26</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-18 08:32:42 -0700</bug_when>
    <thetext>(In reply to comment #24)

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:865
&gt; &gt; +    gpointer* webViewBasePointer = static_cast&lt;gpointer*&gt;(fastMalloc(sizeof(gpointer)));
&gt; &gt; +    g_object_add_weak_pointer(G_OBJECT(webViewBase), webViewBasePointer);
&gt; &gt; +    *webViewBasePointer = webViewBase;
&gt; &gt; +    g_timeout_add(1000 / 60, reinterpret_cast&lt;GSourceFunc&gt;(queueAnotherDrawOfAcceleratedCompositingResults), webViewBasePointer);
&gt; 
&gt; You can save the handler id of g_timeout_add() and destroy the source in WebKitWebViewBase::dispose, so that queueAnotherDrawOfAcceleratedCompositingResults() will never be called if the widget is destroyed.

I considered that, but there may be more than one handler pending and the task of figuring out to cancel the existing one or not is a bit more complicated than simply using a weak reference.

(In reply to comment #25)
&gt; (From update of attachment 164468 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164468&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:285
&gt; &gt; +static bool renderAcceleratedCompositingResults(WebKitWebViewBase* webViewBase, cairo_t* cr, DrawingAreaProxyImpl* drawingArea)
&gt; 
&gt; In previous patches this received the clip rect also.

Okay.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:358
&gt; &gt; +        webViewBase-&gt;priv-&gt;redirectedWindow-&gt;resize(IntSize(allocation-&gt;width, allocation-&gt;height));
&gt; 
&gt; This will always be done, shouldn&apos;t you check first that there&apos;s a drawing area in AC mode?

The issue is then once we enter AC mode we need to resize the window and there&apos;s no good way to track that in the WebView at this moment.


&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:383
&gt; &gt; +    GTK_WIDGET_CLASS(webkit_web_view_base_parent_class)-&gt;size_allocate(widget, allocation);
&gt; 
&gt; Why have you moved this here? Are you sure you don&apos;t need to call the parent first, if you return early the allocation won&apos;t be called on the parent.

I moved it back to the top. Nice catch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722819</commentid>
    <comment_count>27</comment_count>
      <attachid>164565</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-18 08:33:21 -0700</bug_when>
    <thetext>Created attachment 164565
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722837</commentid>
    <comment_count>28</comment_count>
      <attachid>164565</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-18 09:07:09 -0700</bug_when>
    <thetext>Comment on attachment 164565
Patch

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

Setting r- because it breaks the attached inspector.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:281
&gt; +    priv-&gt;redirectedWindow = RedirectedXCompositeWindow::create(IntSize(1, 1));
&gt; +    priv-&gt;readyToRenderAcceleratedCompositingResults = false;

These are now only defined when USE(TEXTURE_MAPPER_GL)

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:358
&gt; +    webViewBase-&gt;priv-&gt;redirectedWindow-&gt;resize(IntSize(allocation-&gt;width, allocation-&gt;height));

Ditto, this should be protected by #if USE(TEXTURE_MAPPER_GL) #endif block. I think this breaks the inspector when attached to the view. you should probably use the view size, not the whole window size.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:371
&gt; +    GtkAllocation oldAllocation;
&gt; +    gtk_widget_get_allocation(widget, &amp;oldAllocation);

Since you are only interested in the size and not the position, you could create an IntSize oldSize(gtk_widget_get_allocated_width(widget), gtk_widget_get_allocated_height(widget));

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:375
&gt; +    if (oldAllocation.width != allocation-&gt;width || oldAllocation.height != allocation-&gt;height) {

And you could create an IntRect for the new allocation and here compare oldSize != viewRect.size().

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:382
&gt; +        resizeWebKitWebViewBaseFromAllocation(webViewBase, allocation);

And here you pass the viewRect instead of the GtkAllocation and then you don&apos;t need to create the viewRect in resizeWebKitWebViewBaseFromAllocation

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:865
&gt; +    gpointer* webViewBasePointer = static_cast&lt;gpointer*&gt;(fastMalloc(sizeof(gpointer)));
&gt; +    g_object_add_weak_pointer(G_OBJECT(webViewBase), webViewBasePointer);
&gt; +    *webViewBasePointer = webViewBase;
&gt; +    g_timeout_add(1000 / 60, reinterpret_cast&lt;GSourceFunc&gt;(queueAnotherDrawOfAcceleratedCompositingResults), webViewBasePointer);

If you need something to be created and destroyed for the life of a GSource, you can use g_time_add_full and provide a GDestroyNotify, that way you don&apos;t need to care about destroying the data in the idle callback, and the data will be destroyed even if the source is destroyed before the callback is called. In this case I would use a helper struct, something like this:

struct DelayedQueueDraw {
    WebKitWebViewBase* view;
};

or a better name for the struct, I don&apos;t know.

static DelayedQueueDraw* delayed_queue_draw_create(WebKitWebViewBase* view)
{
    DelayedQueueDraw* delayedDraw = g_slice_new0(DelayedQueueDraw); // Or new instead of g_slice
    delayedDraw-&gt;view = view;
    g_object_add_weak_pointer(G_OBJECT(webViewBase), &amp;delayedDraw-&gt;view);
    return delayedDraw;
}

static void delayed_queue_draw_free(DelayedQueueDraw* delayedDraw)
{
    if (delayedDraw-&gt;view)
        g_object_remove_weak_pointer(G_OBJECT(delayedDraw-&gt;view), &amp;delayedDraw-&gt;view);
    g_slice_free(DelayedQueueDraw, delayedDraw);
}

then you can use g_timeout_add_full this way:

g_timeout_add_full(G_PRIORITY_DEFAULT, 1000 / 60, reinterpret_cast&lt;GSourceFunc&gt;(queueAnotherDrawOfAcceleratedCompositingResults), delayed_queue_draw_create(webViewBase), delayed_queue_draw_free);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722879</commentid>
    <comment_count>29</comment_count>
      <attachid>164582</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-18 10:18:06 -0700</bug_when>
    <thetext>Created attachment 164582
Fix embedded inspector and build errors for non TM builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722893</commentid>
    <comment_count>30</comment_count>
      <attachid>164582</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-18 10:44:46 -0700</bug_when>
    <thetext>Comment on attachment 164582
Fix embedded inspector and build errors for non TM builds

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

Looks good to me, thanks!

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:367
&gt; +    if (DrawingAreaProxyImpl* drawingArea = static_cast&lt;DrawingAreaProxyImpl*&gt;(priv-&gt;pageProxy-&gt;drawingArea()))
&gt; +        drawingArea-&gt;setSize(viewRect.size(), IntSize());

setSize is in the parent class, so you don&apos;t need the cast, you can simply use the code that we are currently using:

if (priv-&gt;pageProxy-&gt;drawingArea())
    priv-&gt;pageProxy-&gt;drawingArea()-&gt;setSize(viewRect.size(), IntSize());

&gt; Source/WebKit2/UIProcess/WebPageProxy.messages.in:179
&gt; +#

Extra # here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722899</commentid>
    <comment_count>31</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-18 10:53:45 -0700</bug_when>
    <thetext>Committed r128907: &lt;http://trac.webkit.org/changeset/128907&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723426</commentid>
    <comment_count>32</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-19 03:12:46 -0700</bug_when>
    <thetext>See https://bugs.webkit.org/show_bug.cgi?id=97092</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159279</attachid>
            <date>2012-08-18 18:28:10 -0700</date>
            <delta_ts>2012-08-19 23:30:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94417-20120818182732.patch</filename>
            <type>text/plain</type>
            <size>25345</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzExYTIxMjBhNzE0OGNi
OTY0M2QxZTZlMmI5YjY1Yjk0YzM3Nzk5NC4uZDRlNjRjZjU2YmFmNWVjMDQ0ZDJlMmRmOTQ2NTcw
NjI1M2Y0OWQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA4LTE4ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBbV2Vi
S2l0Ml0gVXNlIFhDb21wb3NpdGUgd2luZG93IGZvciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ0MTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYW4gWENv
bXBvc2l0ZSB3aW5kb3cgdmlhIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93IGZvciBXZWJLaXQy
IGFjY2VsZXJhdGVkCisgICAgICAgIGNvbXBvc2l0aW5nLiBUaGlzIGFsbG93cyB1cyB0byBhdm9p
ZCB1c2luZyBhIG5hdGl2ZSBHREsgd2luZG93IGZvciBvdXIgd2lkZ2V0cywKKyAgICAgICAgZml4
aW5nIGludGVyYWN0aW9uIHdpdGggR3RrT3ZlcmxheS4gV2UgY2FuIGFsc28gbm93IGhvb2sgZGly
ZWN0bHkgaW50byB0aGUgR1RLKworICAgICAgICBkcmF3aW5nIGxvb3AsIHByb2JhYmx5IG1ha2lu
ZyBhbnkgZnV0dXJlIEdUSysgNCBwb3J0IHNpbXBsZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LiBUaGVzZSBjaGFuZ2VzIGFyZSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIGNvbXBvc2l0aW5nIHRlc3Rz
IGFuZCBmdXJ0aGVybW9yZSwKKyAgICAgICAgYWxsb3cgcGl4ZWwgZHVtcGluZyBvZiBjb21wb3Np
dGluZyByZXN1bHRzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9z
aXRlV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2lu
ZG93OjpjcmVhdGUpOiBBbGxvdyBjcmVhdGluZyBhICJmb3JlaWduIiBYQ29tcG9zaXRlCisgICAg
ICAgIHdpbmRvdywgd2hpY2ggZG9lc24ndCBhY3R1YWxseSBjcmVhdGUgdGhlIFgxMSB3aW5kb3cs
IGJ1dCBhdHRhY2hlcyB0byBvbmUgZ2l2ZW4gaXRzCisgICAgICAgIFhJRC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdyk6IFRoZSBuZXcgY29uc3RydWN0b3IKKyAgICAgICAgZm9yIHRoZSBmb3JlaWduIHdpbmRv
dy4KKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojp+UmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3cpOiBJZiB0aGUgd2luZG93IGlzCisgICAgICAgIGZvcmVpZ24s
IGRvbid0IGRlc3Ryb3kgaXQgd2hlbiB0aGlzIG9iamVjdCBkaWVzLgorICAgICAgICAoV2ViQ29y
ZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNhaXJvU3VyZmFjZUZvcldpZGdldCk6IFF1
ZXJ5IHRoZSBzaXplIGlmIHdlCisgICAgICAgIGRvbid0IGtub3cgaXQsIHdoaWNoIHdlIHdvbid0
IGlmIHdlIHdlcmUgbm90IHJlc3BvbnNpYmxlIGZvciByZXNpemluZyB0aGUgd2luZG93IGkuZS4K
KyAgICAgICAgd2UgYXJlIGEgZm9yZWlnbiB3aW5kb3cuCisgICAgICAgIChXZWJDb3JlOjpSZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6bm90aWZ5UmVzaXplZCk6IEludmFsaWRhdGUgdGhlIFBp
eG1hcCBhbmQgc2l6ZQorICAgICAgICB3aGVuIHdlIGtub3cgdGhlIHdpbmRvdyBoYXMgYmVlbiBy
ZXNpemVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dy5oOiBOZXcgbWV0aG9kcyBhbmQgbWVtYmVycyB0byB0cmFjayBmb3JlaWduCisgICAgICAgIHdp
bmRvd3MuCisKIDIwMTItMDgtMTYgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdIFVzaW5nIGEgbmF0aXZlIHdpbmRvdyBmb3IgdGhlIFdlYlZp
ZXcgYnJlYWtzIEd0a092ZXJsYXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4YTk1YmQ5YWU2OTRmZDFlNTQzYzVh
ODc3NWM4NTRlMDZiMTBhOGUyLi4zYTgyZjhiYWU5N2RiZGI3YTg5NGYyMWQxZGRjYjI5MmQ1M2Vm
M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTItMDgtMTggIE1hcnRpbiBSb2Jp
bnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFtXZWJLaXQyXSBV
c2UgWENvbXBvc2l0ZSB3aW5kb3cgZm9yIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDQxNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBhbiBYQ29tcG9zaXRl
IHdpbmRvdyB2aWEgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cgZm9yIFdlYktpdDIgYWNjZWxl
cmF0ZWQKKyAgICAgICAgY29tcG9zaXRpbmcuIFRoaXMgYWxsb3dzIHVzIHRvIGF2b2lkIHVzaW5n
IGEgbmF0aXZlIEdESyB3aW5kb3cgZm9yIG91ciB3aWRnZXRzLAorICAgICAgICBmaXhpbmcgaW50
ZXJhY3Rpb24gd2l0aCBHdGtPdmVybGF5LiBXZSBjYW4gYWxzbyBub3cgaG9vayBkaXJlY3RseSBp
bnRvIHRoZSBHVEsrCisgICAgICAgIGRyYXdpbmcgbG9vcCwgcHJvYmFibHkgbWFraW5nIGFueSBm
dXR1cmUgR1RLKyA0IHBvcnQgc2ltcGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGUpOiBXZSBub3cgaGF2ZSBhIGZvcmVpZ24gUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cgbWVt
YmVyLAorICAgICAgICB3aGljaCB0cmFja3MgdGhlIFdlYlByb2Nlc3MnIG9mZnNjcmVlbiB3aW5k
b3cgdXNlZCBmb3IgQUMuCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVJlYWxpemUpOiBXZSBu
byBsb25nZXIgbmVlZCBhIG5hdGl2ZSB3aW5kb3cgYmVjYXVzZSB3ZSBhcmVuJ3QKKyAgICAgICAg
Y3JlYXRpbmcgYSBHTFggY29udGV4dCBkaXJlY3RseSBmcm9tIHRoZSB3aW5kb3cuIAorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X2Jhc2VfaW5pdCk6IFdlIGRvbid0IG5lZWQgdG8gdHVybiBvZmYg
ZG91YmxlLWJ1ZmZlcmluZyBhbnkgbG9uZ2VyLgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VH
ZXRPckNyZWF0ZVJlZGlyZWN0ZWRXaW5kb3cpOiBUaGlzIGhlbHBlciBpcyByZXNwb25zaWJsZSBm
b3IgZ2V0dGluZworICAgICAgICBhIGNhY2hlZCBYQ29tcG9zaXRlIHdpbmRvdy4KKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdCYXNlRHJhd0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKTogVGhp
cyBoZWxwZXIgZ2V0cyB0aGUgcGl4bWFwCisgICAgICAgIGJhY2tpbmcgdGhlIFhDb21wb3NpdGUg
d2luZG93IGFuZCBwYWludHMgaXQgdG8gdGhlIHdpZGdldCBkcmF3aW5nIGNvbnRleHQuCisgICAg
ICAgICh3ZWJraXRXZWJWaWV3QmFzZURyYXcpOiBVc2Ugd2Via2l0V2ViVmlld0Jhc2VEcmF3QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMgd2hlbgorICAgICAgICBhcHByb3ByaWF0ZS4KKyAg
ICAgICAgKHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFsbG9jYXRpb24pOiBOb3RpZnkgdGhl
IGZvcmVpZ24gcmVkaXJlY3RlZCB3aW5kb3cKKyAgICAgICAgd2hlbiB0aGUgdmlldyByZXNpemVz
LCBzbyB0aGF0IGl0IGtub3dzIHRvIGludmFsaWRhdGUgaXRzIHBpeG1hcC4KKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdCYXNlU2l6ZUFsbG9jYXRlKTogT25seSByZXNpemUgdGhlIFdlYlZpZXcgaWYg
dGhlIGFsbG9jYXRpb24KKyAgICAgICAgcmVhbGx5IGNoYW5nZWQuCisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QmFzZU1hcCk6IFdlIG5vIGxvbmdlciBuZWVkIHRvIG5vdGlmeSB0aGUgV2ViUHJvY2Vz
cyB3aGVuIHRoZQorICAgICAgICB3aWRnZXQgaXMgbWFwcGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oOiBFeHBvc2UgdGhlIGZvbGxvd2luZyB0d28gbWV0aG9k
cyBwdWJsaWNseQorICAgICAgICBzbyB0aGV5IGNhbiBiZSB1c2VkIGJ5IEdUSysncyBXZWJWaWV3
IHdpZGdldC4KKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUltcGw6OmlzSW5BY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJv
eHlJbXBsOjpsYXllclRyZWVDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgIChXZWJQYWdlUHJveHkpOiBBZGQgYSB3YXkgdG8gc2lnbmFsIHRoZSBV
SVByb2Nlc3MgdG8gcXVldWUgYSBkcmF3LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW46IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUGFnZVBy
b3h5R3RrLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW52YWxp
ZGF0ZVdpZGdldCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDogRGl0
dG8uCisgICAgICAgIChXZWJQYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L0xheWVyVHJlZUhvc3RHdGsuY3BwOiBTd2l0Y2ggdG8gdXNpbmcgYSByZWRpcmVjdGVkIFhDb21w
b3NpdGUKKyAgICAgICAgd2luZG93IGFuZCB1c2UgdGhlIHdpbmRvdyBYSUQgYXMgdGhlIExheWVy
VHJlZUNvbnRleHQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVI
b3N0R3RrLmg6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFn
ZUd0ay5jcHA6IEFkZCBhIG1ldGhvZCBmb3IgaW52YWxpZGF0aW5nIHRoZSBVSVByb2Nlc3MKKyAg
ICAgICAgd2lkZ2V0LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnZhbGlkYXRlV2lkZ2V0
KToKKyAgICAgICAgKFdlYktpdCk6CisKIDIwMTItMDgtMTIgIE51bm8gTG9wZXMgIDxubG9wZXNA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBidWlsZCB3aXRoIHJlY2VudCBjbGFuZy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3cuY3BwCmluZGV4IDZiZTZhNTJhMGQ4MzI4OTRmNTRjNjM0NTkzOGE3NDQ2Y2U5OWE3
OWYuLmRjM2M0YTcwY2NjNjhjZDkwOTM0Njg1NTNjOWI1OWQwNzg3N2NjNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93LmNwcApAQCAtNDIsNiArNDIsMTEgQEAgUGFzc093blB0cjxSZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdz4gUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNyZWF0ZShjb25zdAogICAg
IHJldHVybiBhZG9wdFB0cihuZXcgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coc2l6ZSkpOwog
fQogCitQYXNzT3duUHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBSZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdzo6Y3JlYXRlKHVpbnQ2NF90IHdpbmRvd0lkKQoreworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cod2luZG93SWQpKTsKK30KKwog
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KGNv
bnN0IEludFNpemUmIHNpemUpCiAgICAgOiBtX3dpbmRvdygwKQogICAgICwgbV9wYXJlbnRXaW5k
b3coMCkKQEAgLTQ5LDYgKzU0LDcgQEAgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93KGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgLCBtX3N1cmZh
Y2UoMCkKICAgICAsIG1fcGVuZGluZ1Jlc2l6ZVNvdXJjZUlkKDApCiAgICAgLCBtX25lZWRzTmV3
UGl4bWFwQWZ0ZXJSZXNpemUoZmFsc2UpCisgICAgLCBtX293bnNXaW5kb3codHJ1ZSkKIHsKICAg
ICBEaXNwbGF5KiBkaXNwbGF5ID0gR0xDb250ZXh0R0xYOjpzaGFyZWREaXNwbGF5KCk7CiAKQEAg
LTkzLDEyICs5OSwyMyBAQCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhD
b21wb3NpdGVXaW5kb3coY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICByZXNpemVMYXRlcigpOyAv
LyBGb3JjZSB1cGRhdGUgb2YgdGhlIHVzYWJsZSBhcmVhLgogfQogCitSZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3codWludDY0X3Qgd2luZG93SWQp
CisgICAgOiBtX3dpbmRvdyh3aW5kb3dJZCkKKyAgICAsIG1fcGFyZW50V2luZG93KDApCisgICAg
LCBtX3BpeG1hcCgwKQorICAgICwgbV9zdXJmYWNlKDApCisgICAgLCBtX3BlbmRpbmdSZXNpemVT
b3VyY2VJZCgwKQorICAgICwgbV9uZWVkc05ld1BpeG1hcEFmdGVyUmVzaXplKGZhbHNlKQorICAg
ICwgbV9vd25zV2luZG93KGZhbHNlKQoreworfQorCiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dzo6flJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KCkKIHsKICAgICBEaXNwbGF5KiBkaXNwbGF5
ID0gR0xDb250ZXh0R0xYOjpzaGFyZWREaXNwbGF5KCk7Ci0gICAgaWYgKG1fd2luZG93KQorICAg
IGlmIChtX3dpbmRvdyAmJiBtX293bnNXaW5kb3cpCiAgICAgICAgIFhEZXN0cm95V2luZG93KGRp
c3BsYXksIG1fd2luZG93KTsKLSAgICBpZiAobV9wYXJlbnRXaW5kb3cpCisgICAgaWYgKG1fcGFy
ZW50V2luZG93ICYmIG1fb3duc1dpbmRvdykKICAgICAgICAgWERlc3Ryb3lXaW5kb3coZGlzcGxh
eSwgbV9wYXJlbnRXaW5kb3cpOwogICAgIGNsZWFudXBQaXhtYXBBbmRQaXhtYXBTdXJmYWNlKCk7
CiB9CkBAIC0xODcsNiArMjA0LDIxIEBAIGNhaXJvX3N1cmZhY2VfdCogUmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3c6OmNhaXJvU3VyZmFjZUZvcldpZGdldChHdGtXaWRnZXQqIHdpCiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAorICAgIC8vIFRoZSBzaXplIG1heSBiZSB1bmluaXRpYWxpemVk
IGlmIHdlIGRvIG5vdCBvd24gdGhpcyB3aW5kb3cgKGl0IGJlbG9uZ3MgdG8gc29tZSBvdGhlciBS
ZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdykuCisgICAgaWYgKG1fc2l6ZS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgaW50IHgsIHk7CisgICAgICAgIFdpbmRvdyByb290V2luZG93OworICAgICAgICB1
bnNpZ25lZCBpbnQgd2lkdGgsIGhlaWdodCwgYm9yZGVyV2lkdGgsIGRlcHRoOworICAgICAgICBY
R2V0R2VvbWV0cnkobmV3UGl4bWFwRGlzcGxheSwgbV93aW5kb3csICZyb290V2luZG93LCAmeCwg
JnksICZ3aWR0aCwgJmhlaWdodCwgJmJvcmRlcldpZHRoLCAmZGVwdGgpOworICAgICAgICBtX3Vz
YWJsZVNpemUgPSBtX3NpemUgPSBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOworICAgIH0KKworICAg
IGlmIChtX3NpemUuaXNFbXB0eSgpKSB7CisgICAgICAgIGNsZWFudXBQaXhtYXBBbmRQaXhtYXBT
dXJmYWNlKCk7CisgICAgICAgIFhGcmVlUGl4bWFwKG5ld1BpeG1hcERpc3BsYXksIG5ld1BpeG1h
cCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IG5ld1N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb194bGliX3N1cmZhY2VfY3JlYXRlKG5ld1Bp
eG1hcERpc3BsYXksIG5ld1BpeG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dBdHRyaWJ1
dGVzLnZpc3VhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhl
aWdodCgpKSk7CkBAIC0yMTAsNCArMjQyLDEwIEBAIGNhaXJvX3N1cmZhY2VfdCogUmVkaXJlY3Rl
ZFhDb21wb3NpdGVXaW5kb3c6OmNhaXJvU3VyZmFjZUZvcldpZGdldChHdGtXaWRnZXQqIHdpCiAg
ICAgcmV0dXJuIG1fc3VyZmFjZS5nZXQoKTsKIH0KIAordm9pZCBSZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdzo6bm90aWZ5UmVzaXplZCgpCit7CisgICAgbV9zaXplID0gbV91c2FibGVTaXplID0g
SW50U2l6ZSgpOworICAgIG1fbmVlZHNOZXdQaXhtYXBBZnRlclJlc2l6ZSA9IHRydWU7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgKaW5kZXggMzllYzdlZGIyNmI4
ZGVhNDI2ZmJmNGU2NGE5NWUyNTlkYTRkN2EzOC4uMDk5MWE4MDE3ZWRlODdmNjFiZTcxMDY3YWNm
MGU3MTkxNGFkMDhmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Jl
ZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNkZWZp
bmUgIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93X2gKIAogI2luY2x1ZGUgIkdMQ29udGV4dEdM
WC5oIgorI2luY2x1ZGUgIkdSZWZQdHJHdGsuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5j
bHVkZSAiUmVmUHRyQ2Fpcm8uaCIKIApAQCAtMzksMTAgKzQwLDEzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc093blB0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gY3JlYXRlKGNvbnN0
IEludFNpemUmKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdz4gY3JlYXRlKHVpbnQ2NF90IHdpbmRvd0lkKTsKICAgICB2aXJ0dWFsIH5SZWRpcmVjdGVk
WENvbXBvc2l0ZVdpbmRvdygpOwogCiAgICAgY29uc3QgSW50U2l6ZSYgdXNhYmxlU2l6ZSgpIHsg
cmV0dXJuIG1fdXNhYmxlU2l6ZTsgfQogICAgIGNvbnN0IEludFNpemUmIHNpemUoKSB7IHJldHVy
biBtX3NpemU7IH0KKyAgICBXaW5kb3cgd2luZG93SGFuZGxlKCkgeyByZXR1cm4gbV93aW5kb3c7
IH0KKyAgICB2b2lkIG5vdGlmeVJlc2l6ZWQoKTsKIAogICAgIHZvaWQgcmVzaXplKGNvbnN0IElu
dFNpemUmIG5ld1NpemUpOwogICAgIEdMQ29udGV4dCogY29udGV4dCgpOwpAQCAtNTAsNiArNTQs
NyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3co
Y29uc3QgSW50U2l6ZSYpOworICAgIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KHVpbnQ2NF90
IHdpbmRvd0lkKTsKIAogICAgIHN0YXRpYyBnYm9vbGVhbiByZXNpemVMYXRlckNhbGxiYWNrKFJl
ZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Kik7CiAgICAgdm9pZCByZXNpemVMYXRlcigpOwpAQCAt
NjQsNiArNjksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3Vy
ZmFjZTsKICAgICB1bnNpZ25lZCBpbnQgbV9wZW5kaW5nUmVzaXplU291cmNlSWQ7CiAgICAgYm9v
bCBtX25lZWRzTmV3UGl4bWFwQWZ0ZXJSZXNpemU7CisgICAgYm9vbCBtX293bnNXaW5kb3c7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggNDkyNWI1YTdjMWNl
ZTljODRmZTU4NDJiY2QwYzFhOTEyMjZlNTk0YS4uYmNhZDc2NjkwMDU1MmNlYTlhNzBhYjg2MmJm
M2M5YzRjNzUzMzM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtNjcsNyArNjcsNyBAQAogI2VuZGlmCiAK
ICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19YMTEp
Ci0jaW5jbHVkZSA8Z2RrL2dka3guaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZGlyZWN0ZWRYQ29t
cG9zaXRlV2luZG93Lmg+CiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTk3
LDYgKzk3LDkgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogICAgIHVuc2ln
bmVkIGluc3BlY3RvclZpZXdIZWlnaHQ7CiAgICAgR093blB0cjxHZGtFdmVudD4gY29udGV4dE1l
bnVFdmVudDsKICAgICBXZWJDb250ZXh0TWVudVByb3h5R3RrKiBhY3RpdmVDb250ZXh0TWVudVBy
b3h5OworI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgZGVmaW5lZChHREtfV0lORE9XSU5H
X1gxMSkKKyAgICBPd25QdHI8V2ViQ29yZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IHJl
ZGlyZWN0ZWRXaW5kb3c7CisjZW5kaWYKIH07CiAKIEdfREVGSU5FX1RZUEUoV2ViS2l0V2ViVmll
d0Jhc2UsIHdlYmtpdF93ZWJfdmlld19iYXNlLCBHVEtfVFlQRV9DT05UQUlORVIpCkBAIC0xNTgs
OSArMTYxLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VSZWFsaXplKEd0a1dpZGdl
dCogd2lkZ2V0KQogICAgIGdpbnQgYXR0cmlidXRlc01hc2sgPSBHREtfV0FfWCB8IEdES19XQV9Z
IHwgR0RLX1dBX1ZJU1VBTDsKIAogICAgIEdka1dpbmRvdyogd2luZG93ID0gZ2RrX3dpbmRvd19u
ZXcoZ3RrX3dpZGdldF9nZXRfcGFyZW50X3dpbmRvdyh3aWRnZXQpLCAmYXR0cmlidXRlcywgYXR0
cmlidXRlc01hc2spOwotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICBnZGtfd2luZG93
X2Vuc3VyZV9uYXRpdmUod2luZG93KTsKLSNlbmRpZgogICAgIGd0a193aWRnZXRfc2V0X3dpbmRv
dyh3aWRnZXQsIHdpbmRvdyk7CiAgICAgZ2RrX3dpbmRvd19zZXRfdXNlcl9kYXRhKHdpbmRvdywg
d2lkZ2V0KTsKIApAQCAtMjczLDkgKzI3MywzNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfYmFzZV9pbml0KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKICAgICBn
dGtfZHJhZ19kZXN0X3NldF90YXJnZXRfbGlzdCh2aWV3V2lkZ2V0LCBQYXN0ZWJvYXJkSGVscGVy
OjpkZWZhdWx0UGFzdGVib2FyZEhlbHBlcigpLT50YXJnZXRMaXN0KCkpOwogfQogCisjaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKSAKK3N0YXRpYyBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyog
d2Via2l0V2ViVmlld0Jhc2VHZXRPckNyZWF0ZVJlZGlyZWN0ZWRXaW5kb3coV2ViS2l0V2ViVmll
d0Jhc2UqIHdlYlZpZXdCYXNlLCBjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250
ZXh0KQoreworICAgIGlmICh3ZWJWaWV3QmFzZS0+cHJpdi0+cmVkaXJlY3RlZFdpbmRvdyAmJiBs
YXllclRyZWVDb250ZXh0LndpbmRvd0hhbmRsZSAhPSB3ZWJWaWV3QmFzZS0+cHJpdi0+cmVkaXJl
Y3RlZFdpbmRvdy0+d2luZG93SGFuZGxlKCkpCisgICAgICAgIHdlYlZpZXdCYXNlLT5wcml2LT5y
ZWRpcmVjdGVkV2luZG93ID0gbnVsbHB0cjsKKworICAgIGlmICghd2ViVmlld0Jhc2UtPnByaXYt
PnJlZGlyZWN0ZWRXaW5kb3cpCisgICAgICAgIHdlYlZpZXdCYXNlLT5wcml2LT5yZWRpcmVjdGVk
V2luZG93ID0gV2ViQ29yZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNyZWF0ZShsYXll
clRyZWVDb250ZXh0LndpbmRvd0hhbmRsZSk7CisKKyAgICByZXR1cm4gd2ViVmlld0Jhc2UtPnBy
aXYtPnJlZGlyZWN0ZWRXaW5kb3cuZ2V0KCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZp
ZXdCYXNlRHJhd0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKFdlYktpdFdlYlZpZXdCYXNl
KiB3ZWJWaWV3QmFzZSwgRHJhd2luZ0FyZWFQcm94eUltcGwqIGRyYXdpbmdBcmVhLCBjYWlyb190
KiBjcikKK3sKKyAgICBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyogcmVkaXJlY3RlZFdpbmRv
dyA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0T3JDcmVhdGVSZWRpcmVjdGVkV2luZG93KHdlYlZpZXdC
YXNlLCBkcmF3aW5nQXJlYS0+bGF5ZXJUcmVlQ29udGV4dCgpKTsKKyAgICBjYWlyb19zdXJmYWNl
X3QqIHdpbmRvd1N1cmZhY2UgPSByZWRpcmVjdGVkV2luZG93LT5jYWlyb1N1cmZhY2VGb3JXaWRn
ZXQoR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSkpOworICAgIGlmICghd2luZG93U3VyZmFjZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgSW50U2l6ZSB1c2FibGVTaXplID0gcmVkaXJlY3RlZFdpbmRv
dy0+dXNhYmxlU2l6ZSgpOworICAgIGNhaXJvX3JlY3RhbmdsZShjciwgMCwgMCwgdXNhYmxlU2l6
ZS53aWR0aCgpLCB1c2FibGVTaXplLmhlaWdodCgpKTsKKyAgICBjYWlyb19zZXRfc291cmNlX3N1
cmZhY2UoY3IsIHdpbmRvd1N1cmZhY2UsIDAsIDApOworICAgIGNhaXJvX3NldF9vcGVyYXRvcihj
ciwgQ0FJUk9fT1BFUkFUT1JfU09VUkNFKTsKKyAgICBjYWlyb19maWxsKGNyKTsKK30KKyNlbmRp
ZgorCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VEcmF3KEd0a1dpZGdldCogd2lk
Z2V0LCBjYWlyb190KiBjcikKIHsKLSAgICBEcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJlYSA9
IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCktPnByaXYtPnBhZ2VQcm94eS0+ZHJhd2luZ0Fy
ZWEoKTsKKyAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJ
RVdfQkFTRSh3aWRnZXQpOworICAgIERyYXdpbmdBcmVhUHJveHlJbXBsKiBkcmF3aW5nQXJlYSA9
IHN0YXRpY19jYXN0PERyYXdpbmdBcmVhUHJveHlJbXBsKj4od2ViVmlld0Jhc2UtPnByaXYtPnBh
Z2VQcm94eS0+ZHJhd2luZ0FyZWEoKSk7CiAgICAgaWYgKCFkcmF3aW5nQXJlYSkKICAgICAgICAg
cmV0dXJuIEZBTFNFOwogCkBAIC0yODMsOSArMzExLDE1IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJr
aXRXZWJWaWV3QmFzZURyYXcoR3RrV2lkZ2V0KiB3aWRnZXQsIGNhaXJvX3QqIGNyKQogICAgIGlm
ICghZ2RrX2NhaXJvX2dldF9jbGlwX3JlY3RhbmdsZShjciwgJmNsaXBSZWN0KSkKICAgICAgICAg
cmV0dXJuIEZBTFNFOwogCi0gICAgV2ViQ29yZTo6UmVnaW9uIHVucGFpbnRlZFJlZ2lvbjsgLy8g
VGhpcyBpcyBzaW1wbHkgdW51c2VkLgotICAgIHN0YXRpY19jYXN0PERyYXdpbmdBcmVhUHJveHlJ
bXBsKj4oZHJhd2luZ0FyZWEpLT5wYWludChjciwgY2xpcFJlY3QsIHVucGFpbnRlZFJlZ2lvbik7
CisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAKKyAgICBpZiAoZHJhd2luZ0FyZWEtPmlzSW5B
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpKSB7CisgICAgICAgIHdlYmtpdFdlYlZpZXdCYXNl
RHJhd0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKHdlYlZpZXdCYXNlLCBkcmF3aW5nQXJl
YSwgY3IpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorI2VuZGlmCiAKKyAgICBXZWJD
b3JlOjpSZWdpb24gdW5wYWludGVkUmVnaW9uOworICAgIHN0YXRpY19jYXN0PERyYXdpbmdBcmVh
UHJveHlJbXBsKj4oZHJhd2luZ0FyZWEpLT5wYWludChjciwgY2xpcFJlY3QsIHVucGFpbnRlZFJl
Z2lvbik7CiAgICAgcmV0dXJuIEZBTFNFOwogfQogCkBAIC0zMjAsOSArMzU0LDE0IEBAIHN0YXRp
YyB2b2lkIHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFsbG9jYXRpb24oV2ViS2l0V2ViVmll
d0Jhc2UqIHdlYlZpZXdCYXNlCiAgICAgICAgIHZpZXdSZWN0LnNldEhlaWdodChhbGxvY2F0aW9u
LT5oZWlnaHQgLSBwcml2LT5pbnNwZWN0b3JWaWV3SGVpZ2h0KTsKICAgICB9CiAKLSAgICBpZiAo
cHJpdi0+cGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpKQorICAgIERyYXdpbmdBcmVhUHJveHkqIGRy
YXdpbmdBcmVhID0gd2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKTsK
KyAgICBpZiAoZHJhd2luZ0FyZWEpIHsKICAgICAgICAgcHJpdi0+cGFnZVByb3h5LT5kcmF3aW5n
QXJlYSgpLT5zZXRTaXplKHZpZXdSZWN0LnNpemUoKSwgSW50U2l6ZSgpKTsKIAorICAgICAgICBp
ZiAoc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUltcGwqPihkcmF3aW5nQXJlYSktPmlzSW5B
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpICYmIHdlYlZpZXdCYXNlLT5wcml2LT5yZWRpcmVj
dGVkV2luZG93KQorICAgICAgICAgICAgd2ViVmlld0Jhc2UtPnByaXYtPnJlZGlyZWN0ZWRXaW5k
b3ctPm5vdGlmeVJlc2l6ZWQoKTsKKyAgICB9CisKICAgICBHdGtXaWRnZXQqIHRvcGxldmVsID0g
Z3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSkpOwogICAgIGlm
ICh3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3codG9wbGV2ZWwpKQogICAgICAgICB3ZWJr
aXRXZWJWaWV3QmFzZU5vdGlmeVJlc2l6ZXJTaXplRm9yV2luZG93KHdlYlZpZXdCYXNlLCBHVEtf
V0lORE9XKHRvcGxldmVsKSk7CkBAIC0zMzAsNiArMzY5LDkgQEAgc3RhdGljIHZvaWQgcmVzaXpl
V2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxsb2NhdGlvbihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmll
d0Jhc2UKIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTaXplQWxsb2NhdGUoR3RrV2lk
Z2V0KiB3aWRnZXQsIEd0a0FsbG9jYXRpb24qIGFsbG9jYXRpb24pCiB7CisgICAgR3RrQWxsb2Nh
dGlvbiBvbGRBbGxvY2F0aW9uOworICAgIGd0a193aWRnZXRfZ2V0X2FsbG9jYXRpb24od2lkZ2V0
LCAmb2xkQWxsb2NhdGlvbik7CisKICAgICBHVEtfV0lER0VUX0NMQVNTKHdlYmtpdF93ZWJfdmll
d19iYXNlX3BhcmVudF9jbGFzcyktPnNpemVfYWxsb2NhdGUod2lkZ2V0LCBhbGxvY2F0aW9uKTsK
IAogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19C
QVNFKHdpZGdldCk7CkBAIC0zMzcsNiArMzc5LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmll
d0Jhc2VTaXplQWxsb2NhdGUoR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a0FsbG9jYXRpb24qIGFsbG8K
ICAgICAgICAgd2ViVmlld0Jhc2UtPnByaXYtPm5lZWRzUmVzaXplT25NYXAgPSB0cnVlOwogICAg
ICAgICByZXR1cm47CiAgICAgfQorCisgICAgaWYgKG9sZEFsbG9jYXRpb24ud2lkdGggPT0gYWxs
b2NhdGlvbi0+d2lkdGggJiYgb2xkQWxsb2NhdGlvbi5oZWlnaHQgPT0gYWxsb2NhdGlvbi0+aGVp
Z2h0KQorICAgICAgICByZXR1cm47CiAgICAgcmVzaXplV2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxs
b2NhdGlvbih3ZWJWaWV3QmFzZSwgYWxsb2NhdGlvbik7CiB9CiAKQEAgLTM0NSwxMyArMzkwLDYg
QEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VNYXAoR3RrV2lkZ2V0KiB3aWRnZXQpCiAg
ICAgR1RLX1dJREdFVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9wYXJlbnRfY2xhc3MpLT5t
YXAod2lkZ2V0KTsKIAogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJ
VF9XRUJfVklFV19CQVNFKHdpZGdldCk7Ci0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiBk
ZWZpbmVkKEdES19XSU5ET1dJTkdfWDExKQotICAgIEdka1dpbmRvdyogZ2RrV2luZG93ID0gZ3Rr
X3dpZGdldF9nZXRfd2luZG93KHdpZGdldCk7Ci0gICAgQVNTRVJUKGdka1dpbmRvdyk7Ci0gICAg
aWYgKGdka193aW5kb3dfaGFzX25hdGl2ZShnZGtXaW5kb3cpKQotICAgICAgICB3ZWJWaWV3QmFz
ZS0+cHJpdi0+cGFnZVByb3h5LT53aWRnZXRNYXBwZWQoR0RLX1dJTkRPV19YSUQoZ2RrV2luZG93
KSk7Ci0jZW5kaWYKLQogICAgIGlmICghd2ViVmlld0Jhc2UtPnByaXYtPm5lZWRzUmVzaXplT25N
YXApCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eUltcGwuaAppbmRleCAwYzlmMDRmOGUwMmRhOGYwY2RiYzBhMzAxMGY1ZjA0
MWZhMzM5OTg4Li5hZGQ2Y2EzOTA3OTEwNGJlYjQ1NjBjYWJiZjQ1NTNmNjFkNjYyNzg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaApAQCAt
NDgsNiArNDgsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBhaW50KEJhY2tpbmdTdG9yZTo6UGxh
dGZvcm1HcmFwaGljc0NvbnRleHQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpS
ZWdpb24mIHVucGFpbnRlZFJlZ2lvbik7CiAKKyAgICBib29sIGlzSW5BY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuICFtX2xheWVyVHJlZUNvbnRleHQuaXNFbXB0eSgp
OyB9CisgICAgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCgpIHsgcmV0
dXJuIG1fbGF5ZXJUcmVlQ29udGV4dDsgfQorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERyYXdp
bmdBcmVhUHJveHlJbXBsKFdlYlBhZ2VQcm94eSopOwogCkBAIC03OSw3ICs4Miw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKTsKICAgICB2b2lk
IHVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQm
KTsKIAotICAgIGJvb2wgaXNJbkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gIW1fbGF5ZXJUcmVlQ29udGV4dC5pc0VtcHR5KCk7IH0KIAogI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZpc2libGVDb250ZW50c1JlY3QsIGZsb2F0IHNjYWxl
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBiODhhNWQ0OTg1NTU4NTZhNmI3MDEzNjY5YTYw
MDg5ZjdkYjRmYWQ4Li5mMjRhMDJiMDY1ZDhiYzAxOGM2NzRjMDAxNGY2NmJhNDIzNDNhZTQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC03MDksNyArNzA5LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgTmF0aXZlV2ViTW91c2VFdmVudCogY3VycmVudGx5UHJv
Y2Vzc2VkTW91c2VEb3duRXZlbnQoKTsKIAogI2lmIFBMQVRGT1JNKEdUSykgJiYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKQotICAgIHZvaWQgd2lkZ2V0TWFwcGVkKHVpbnQ2NF90IG5hdGl2ZVdpbmRv
d0lkKTsKKyAgICB2b2lkIGludmFsaWRhdGVXaWRnZXQoKTsKICNlbmRpZgogCiAgICAgdm9pZCBz
ZXRTdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzKGJvb2wgZmxhZykgeyBtX3N1cHByZXNzVmlzaWJp
bGl0eVVwZGF0ZXMgPSBmbGFnOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA3ZmE4MWJlNWE1ZWVkN2UwODhjOWQ3ODI4M2Jk
MTUzMmY2M2ZjYmZiLi5mYjQ3NTkwYzgxMjk0YTM0NzUwMDZjM2U1NDZjMWZlNzhlMDZmYTE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KQEAgLTE3Niw2ICsxNzYsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICAj
IFN1cHBvcnQgZm9yIGNvbm5lY3RpbmcgdGhlIEFjY2Vzc2liaWxpdHkgd29ybGRzIG9mIHRoZSBV
SSBhbmQgdGhlIFdlYiBwcm9jZXNzZXMKICAgICBCaW5kQWNjZXNzaWJpbGl0eVRyZWUoV1RGOjpT
dHJpbmcgcGx1Z0lEKQogI2VuZGlmCisjCisjaWYgUExBVEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpCisgICAgSW52YWxpZGF0ZVdpZGdldCgpCisjZW5kaWYKIAogICAgICMgQmFj
a0ZvcndhcmQgbWVzc2FnZXMKICAgICBCYWNrRm9yd2FyZEFkZEl0ZW0odWludDY0X3QgaXRlbUlE
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlH
dGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3Bw
CmluZGV4IGFjMjZjMGNiOGZkYmI4YzllNzI1ZjkzM2I4NDc4YTJhNGRjYzBmN2MuLjQ1ZmQ5Yzll
MTExZmEyYjI2YWU2YjljNjgxYzUxODcwYmQ5ZmI5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKQEAgLTExMCw5ICsxMTAsOSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBmcmFtZQogfQogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQot
dm9pZCBXZWJQYWdlUHJveHk6OndpZGdldE1hcHBlZCh1aW50NjRfdCBuYXRpdmVXaW5kb3dJZCkK
K3ZvaWQgV2ViUGFnZVByb3h5OjppbnZhbGlkYXRlV2lkZ2V0KCkKIHsKLSAgICBwcm9jZXNzKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OldpZGdldE1hcHBlZChuYXRpdmVXaW5kb3dJZCksIG1f
cGFnZUlEKTsKKyAgICBndGtfd2lkZ2V0X3F1ZXVlX2RyYXcoc3RhdGljX2Nhc3Q8UGFnZUNsaWVu
dEltcGwqPihtX3BhZ2VDbGllbnQpLT52aWV3V2lkZ2V0KCkpOwogfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGJiZmFiZDA0YWE3
M2I0ZmJjYzk1NTIwNTg1MmVmYzUzOTg2MTdkNmYuLjcwZTliM2ZjOWFhODRiYTBjOTE3OTRiM2Q1
OWYyMmUxYjZlNTk2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaApAQCAtNDU0LDYgKzQ1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhbmRsZU1vdXNl
UHJlc3NlZEV2ZW50KGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCYpOwogI2lmIFVT
RShURVhUVVJFX01BUFBFUl9HTCkKICAgICB2b2lkIHdpZGdldE1hcHBlZChpbnQ2NF90IG5hdGl2
ZVdpbmRvd0hhbmRsZSk7CisgICAgdm9pZCBpbnZhbGlkYXRlV2lkZ2V0KCk7CiAjZW5kaWYKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L0xheWVyVHJlZUhvc3RHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcAppbmRleCBhNDEyYTg1MDA5ZmM5M2Q4NzA3NGM3YjMy
NjVkYmQ5ZDBkMWQ5ZTIyLi45MjQ2ODhjYTExMDBjYmI0NjE2MTRjN2M0NDEwODk2NzFlYWFhMDIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVy
VHJlZUhvc3RHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKQEAgLTY0LDI0ICs2NCwxMiBAQCBMYXllclRyZWVIb3N0
R3RrOjpMYXllclRyZWVIb3N0R3RrKFdlYlBhZ2UqIHdlYlBhZ2UpCiAgICAgOiBMYXllclRyZWVI
b3N0KHdlYlBhZ2UpCiAgICAgLCBtX2lzVmFsaWQodHJ1ZSkKICAgICAsIG1fbm90aWZ5QWZ0ZXJT
Y2hlZHVsZWRMYXllckZsdXNoKGZhbHNlKQorICAgICwgbV9yZWRpcmVjdGVkV2luZG93KFJlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpjcmVhdGUoSW50U2l6ZSgxLCAxKSkpCiAgICAgLCBtX2xh
eWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZCh0cnVlKQogICAgICwgbV9sYXllckZsdXNoVGltZXJD
YWxsYmFja0lkKDApCiB7CiB9CiAKLUdMQ29udGV4dCogTGF5ZXJUcmVlSG9zdEd0azo6Z2xDb250
ZXh0KCkKLXsKLSAgICBpZiAobV9jb250ZXh0KQotICAgICAgICByZXR1cm4gbV9jb250ZXh0Lmdl
dCgpOwotCi0gICAgdWludDY0X3Qgd2luZG93SGFuZGxlID0gbV93ZWJQYWdlLT5uYXRpdmVXaW5k
b3dIYW5kbGUoKTsKLSAgICBpZiAoIXdpbmRvd0hhbmRsZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0K
LSAgICBtX2NvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3cod2luZG93
SGFuZGxlLCBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCksIEdMQ29udGV4dDo6U2luZ2xlQnVm
ZmVyKTsKLSAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOwotfQotCiB2b2lkIExheWVyVHJlZUhv
c3RHdGs6OmluaXRpYWxpemUoKQogewogICAgIG1fcm9vdExheWVyID0gR3JhcGhpY3NMYXllcjo6
Y3JlYXRlKHRoaXMpOwpAQCAtMTA0LDEzICs5MiwxMyBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6
OmluaXRpYWxpemUoKQogICAgIG1fcm9vdExheWVyLT5hZGRDaGlsZChtX25vbkNvbXBvc2l0ZWRD
b250ZW50TGF5ZXIuZ2V0KCkpOwogICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0
TmVlZHNEaXNwbGF5KCk7CiAKLSAgICBtX2xheWVyVHJlZUNvbnRleHQud2luZG93SGFuZGxlID0g
bV93ZWJQYWdlLT5uYXRpdmVXaW5kb3dIYW5kbGUoKTsKLQotICAgIEdMQ29udGV4dCogY29udGV4
dCA9IGdsQ29udGV4dCgpOworICAgIG1fcmVkaXJlY3RlZFdpbmRvdy0+cmVzaXplKG1fd2ViUGFn
ZS0+c2l6ZSgpKTsKKyAgICBHTENvbnRleHQqIGNvbnRleHQgPSBtX3JlZGlyZWN0ZWRXaW5kb3ct
PmNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpIHsKLSAgICAgICAgbV9pc1ZhbGlkID0gZmFs
c2U7CisgICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KyAgICBtX2xheWVyVHJlZUNvbnRleHQud2luZG93SGFuZGxlID0gbV9yZWRpcmVjdGVkV2luZG93
LT53aW5kb3dIYW5kbGUoKTsKIAogICAgIC8vIFRoZSBjcmVhdGlvbiBvZiB0aGUgVGV4dHVyZU1h
cHBlciBuZWVkcyBhbiBhY3RpdmUgT3BlbkdMIGNvbnRleHQuCiAgICAgY29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCk7CkBAIC0xNjEsNyArMTQ5LDYgQEAgdm9pZCBMYXllclRyZWVIb3N0R3Rr
OjppbnZhbGlkYXRlKCkKICAgICBtX3BhZ2VPdmVybGF5TGF5ZXIgPSBudWxscHRyOwogICAgIG1f
dGV4dHVyZU1hcHBlciA9IG51bGxwdHI7CiAKLSAgICBtX2NvbnRleHQgPSBudWxscHRyOwogICAg
IG1faXNWYWxpZCA9IGZhbHNlOwogfQogCkBAIC0xODMsNiArMTcwLDggQEAgdm9pZCBMYXllclRy
ZWVIb3N0R3RrOjpzaXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiB7CiAgICAg
aWYgKG1fcm9vdExheWVyLT5zaXplKCkgPT0gbmV3U2l6ZSkKICAgICAgICAgcmV0dXJuOworCisg
ICAgbV9yZWRpcmVjdGVkV2luZG93LT5yZXNpemUobmV3U2l6ZSk7CiAgICAgbV9yb290TGF5ZXIt
PnNldFNpemUobmV3U2l6ZSk7CiAKICAgICAvLyBJZiB0aGUgbmV3U2l6ZSBleHBvc2VzIG5ldyBh
cmVhcyBvZiB0aGUgbm9uLWNvbXBvc2l0ZWQgY29udGVudCBhIHNldE5lZWRzRGlzcGxheSBpcyBu
ZWVkZWQKQEAgLTI5MywyMSArMjgyLDIxIEBAIGJvb2wgTGF5ZXJUcmVlSG9zdEd0azo6Zmx1c2hQ
ZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKIAogdm9pZCBMYXllclRyZWVIb3N0R3RrOjpjb21wb3NpdGVM
YXllcnNUb0NvbnRleHQoKQogewotICAgIEdMQ29udGV4dCogY29udGV4dCA9IGdsQ29udGV4dCgp
OworICAgIEdMQ29udGV4dCogY29udGV4dCA9IG1fcmVkaXJlY3RlZFdpbmRvdy0+Y29udGV4dCgp
OwogICAgIGlmICghY29udGV4dCB8fCAhY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIFRoZSB3aW5kb3cgc2l6ZSBtYXkgYmUgb3V0IG9mIHN5
bmMgd2l0aCB0aGUgcGFnZSBzaXplIGF0IHRoaXMgcG9pbnQsIGFuZCBnZXR0aW5nCiAgICAgLy8g
dGhlIHZpZXdwb3J0IHBhcmFtZXRlcnMgaW5jb3JyZWN0LCBtZWFucyB0aGF0IHRoZSBjb250ZW50
IHdpbGwgYmUgbWlzcGxhY2VkLiBUaHVzCiAgICAgLy8gd2Ugc2V0IHRoZSB2aWV3cG9ydCBwYXJh
bWV0ZXJzIGRpcmVjdGx5IGZyb20gdGhlIHdpbmRvdyBzaXplLgotICAgIEludFNpemUgY29udGV4
dFNpemUgPSBtX2NvbnRleHQtPmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKTsKKyAgICBJbnRTaXpl
IGNvbnRleHRTaXplID0gY29udGV4dC0+ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpOwogICAgIGds
Vmlld3BvcnQoMCwgMCwgY29udGV4dFNpemUud2lkdGgoKSwgY29udGV4dFNpemUuaGVpZ2h0KCkp
OwogCiAgICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpblBhaW50aW5nKCk7CiAgICAgdG9UZXh0dXJl
TWFwcGVyTGF5ZXIobV9yb290TGF5ZXIuZ2V0KCkpLT5wYWludCgpOwogICAgIG1fdGV4dHVyZU1h
cHBlci0+ZW5kUGFpbnRpbmcoKTsKIAotICAgIGNvbnRleHQtPnN3YXBCdWZmZXJzKCk7CisgICAg
Z2xGbHVzaCgpOwogfQogCiB2b2lkIExheWVyVHJlZUhvc3RHdGs6OmZsdXNoQW5kUmVuZGVyTGF5
ZXJzKCkKQEAgLTMyMCw3ICszMDksNyBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OmZsdXNoQW5k
UmVuZGVyTGF5ZXJzKCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBHTENvbnRl
eHQqIGNvbnRleHQgPSBnbENvbnRleHQoKTsKKyAgICBHTENvbnRleHQqIGNvbnRleHQgPSBtX3Jl
ZGlyZWN0ZWRXaW5kb3ctPmNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQgfHwgIWNvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTMyOSw2ICszMTgs
NyBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OmZsdXNoQW5kUmVuZGVyTGF5ZXJzKCkKIAogICAg
IC8vIE91ciBtb2RlbCBpcyB2ZXJ5IHNpbXBsZS4gV2UgYWx3YXlzIGNvbXBvc2l0ZSBhbmQgcmVu
ZGVyIHRoZSB0cmVlIGltbWVkaWF0ZWx5IGFmdGVyIHVwZGF0aW5nIGl0LgogICAgIGNvbXBvc2l0
ZUxheWVyc1RvQ29udGV4dCgpOworICAgIG1fd2ViUGFnZS0+aW52YWxpZGF0ZVdpZGdldCgpOwog
CiAgICAgaWYgKG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoKSB7CiAgICAgICAgIC8v
IExldCB0aGUgZHJhd2luZyBhcmVhIGtub3cgdGhhdCB3ZSd2ZSBkb25lIGEgZmx1c2ggb2YgdGhl
IGxheWVyIGNoYW5nZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCmluZGV4IDA2MDU3MGI2NDkxNDhkZjU1M2M4
MDNiNDc1ZmY0ZjQ5NDAyNDI1YjYuLjZhNThkNTk1NGIzMjcwYmQwNmFjZmFjNWJkMzU4N2ZjMmY2
ZDhiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsv
TGF5ZXJUcmVlSG9zdEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlckxheWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HTENvbnRleHQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jl
ZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTk5LDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRy
PFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllcjsKICAg
ICBPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9wYWdlT3ZlcmxheUxheWVyOwogICAg
IE93blB0cjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyPiBtX3RleHR1cmVNYXBwZXI7Ci0gICAgT3du
UHRyPFdlYkNvcmU6OkdMQ29udGV4dD4gbV9jb250ZXh0OworICAgIE93blB0cjxXZWJDb3JlOjpS
ZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gbV9yZWRpcmVjdGVkV2luZG93OwogICAgIGJvb2wg
bV9sYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQ7CiAgICAgdW5zaWduZWQgbV9sYXllckZsdXNo
VGltZXJDYWxsYmFja0lkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCmluZGV4IDMwYWFhNDAzN2Y3YzQ3ZDE0ZDU2YTQ3
YzcxZWFhYzY3M2JjYTgyNDIuLmUxOWRhNjNhYTVmZGE2MDcxYjMwNjBlMDJiMmE5MjhiOGM5MmY1
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2Vi
UGFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9X
ZWJQYWdlR3RrLmNwcApAQCAtMTg3LDQgKzE4Nyw5IEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxlTW91
c2VQcmVzc2VkRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9ybU1vdXNlRXZl
CiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCit2b2lkIFdlYlBhZ2U6OmludmFsaWRhdGVX
aWRnZXQoKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SW52YWxpZGF0ZVdp
ZGdldCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159340</attachid>
            <date>2012-08-19 23:30:19 -0700</date>
            <delta_ts>2012-08-20 07:40:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94417-20120819232940.patch</filename>
            <type>text/plain</type>
            <size>26197</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzExYTIxMjBhNzE0OGNi
OTY0M2QxZTZlMmI5YjY1Yjk0YzM3Nzk5NC4uZDRlNjRjZjU2YmFmNWVjMDQ0ZDJlMmRmOTQ2NTcw
NjI1M2Y0OWQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA4LTE4ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBbV2Vi
S2l0Ml0gVXNlIFhDb21wb3NpdGUgd2luZG93IGZvciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ0MTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYW4gWENv
bXBvc2l0ZSB3aW5kb3cgdmlhIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93IGZvciBXZWJLaXQy
IGFjY2VsZXJhdGVkCisgICAgICAgIGNvbXBvc2l0aW5nLiBUaGlzIGFsbG93cyB1cyB0byBhdm9p
ZCB1c2luZyBhIG5hdGl2ZSBHREsgd2luZG93IGZvciBvdXIgd2lkZ2V0cywKKyAgICAgICAgZml4
aW5nIGludGVyYWN0aW9uIHdpdGggR3RrT3ZlcmxheS4gV2UgY2FuIGFsc28gbm93IGhvb2sgZGly
ZWN0bHkgaW50byB0aGUgR1RLKworICAgICAgICBkcmF3aW5nIGxvb3AsIHByb2JhYmx5IG1ha2lu
ZyBhbnkgZnV0dXJlIEdUSysgNCBwb3J0IHNpbXBsZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LiBUaGVzZSBjaGFuZ2VzIGFyZSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIGNvbXBvc2l0aW5nIHRlc3Rz
IGFuZCBmdXJ0aGVybW9yZSwKKyAgICAgICAgYWxsb3cgcGl4ZWwgZHVtcGluZyBvZiBjb21wb3Np
dGluZyByZXN1bHRzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9z
aXRlV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2lu
ZG93OjpjcmVhdGUpOiBBbGxvdyBjcmVhdGluZyBhICJmb3JlaWduIiBYQ29tcG9zaXRlCisgICAg
ICAgIHdpbmRvdywgd2hpY2ggZG9lc24ndCBhY3R1YWxseSBjcmVhdGUgdGhlIFgxMSB3aW5kb3cs
IGJ1dCBhdHRhY2hlcyB0byBvbmUgZ2l2ZW4gaXRzCisgICAgICAgIFhJRC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdyk6IFRoZSBuZXcgY29uc3RydWN0b3IKKyAgICAgICAgZm9yIHRoZSBmb3JlaWduIHdpbmRv
dy4KKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojp+UmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3cpOiBJZiB0aGUgd2luZG93IGlzCisgICAgICAgIGZvcmVpZ24s
IGRvbid0IGRlc3Ryb3kgaXQgd2hlbiB0aGlzIG9iamVjdCBkaWVzLgorICAgICAgICAoV2ViQ29y
ZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNhaXJvU3VyZmFjZUZvcldpZGdldCk6IFF1
ZXJ5IHRoZSBzaXplIGlmIHdlCisgICAgICAgIGRvbid0IGtub3cgaXQsIHdoaWNoIHdlIHdvbid0
IGlmIHdlIHdlcmUgbm90IHJlc3BvbnNpYmxlIGZvciByZXNpemluZyB0aGUgd2luZG93IGkuZS4K
KyAgICAgICAgd2UgYXJlIGEgZm9yZWlnbiB3aW5kb3cuCisgICAgICAgIChXZWJDb3JlOjpSZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6bm90aWZ5UmVzaXplZCk6IEludmFsaWRhdGUgdGhlIFBp
eG1hcCBhbmQgc2l6ZQorICAgICAgICB3aGVuIHdlIGtub3cgdGhlIHdpbmRvdyBoYXMgYmVlbiBy
ZXNpemVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dy5oOiBOZXcgbWV0aG9kcyBhbmQgbWVtYmVycyB0byB0cmFjayBmb3JlaWduCisgICAgICAgIHdp
bmRvd3MuCisKIDIwMTItMDgtMTYgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdIFVzaW5nIGEgbmF0aXZlIHdpbmRvdyBmb3IgdGhlIFdlYlZp
ZXcgYnJlYWtzIEd0a092ZXJsYXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4YTk1YmQ5YWU2OTRmZDFlNTQzYzVh
ODc3NWM4NTRlMDZiMTBhOGUyLi4zYTgyZjhiYWU5N2RiZGI3YTg5NGYyMWQxZGRjYjI5MmQ1M2Vm
M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTItMDgtMTggIE1hcnRpbiBSb2Jp
bnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFtXZWJLaXQyXSBV
c2UgWENvbXBvc2l0ZSB3aW5kb3cgZm9yIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDQxNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBhbiBYQ29tcG9zaXRl
IHdpbmRvdyB2aWEgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cgZm9yIFdlYktpdDIgYWNjZWxl
cmF0ZWQKKyAgICAgICAgY29tcG9zaXRpbmcuIFRoaXMgYWxsb3dzIHVzIHRvIGF2b2lkIHVzaW5n
IGEgbmF0aXZlIEdESyB3aW5kb3cgZm9yIG91ciB3aWRnZXRzLAorICAgICAgICBmaXhpbmcgaW50
ZXJhY3Rpb24gd2l0aCBHdGtPdmVybGF5LiBXZSBjYW4gYWxzbyBub3cgaG9vayBkaXJlY3RseSBp
bnRvIHRoZSBHVEsrCisgICAgICAgIGRyYXdpbmcgbG9vcCwgcHJvYmFibHkgbWFraW5nIGFueSBm
dXR1cmUgR1RLKyA0IHBvcnQgc2ltcGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGUpOiBXZSBub3cgaGF2ZSBhIGZvcmVpZ24gUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cgbWVt
YmVyLAorICAgICAgICB3aGljaCB0cmFja3MgdGhlIFdlYlByb2Nlc3MnIG9mZnNjcmVlbiB3aW5k
b3cgdXNlZCBmb3IgQUMuCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVJlYWxpemUpOiBXZSBu
byBsb25nZXIgbmVlZCBhIG5hdGl2ZSB3aW5kb3cgYmVjYXVzZSB3ZSBhcmVuJ3QKKyAgICAgICAg
Y3JlYXRpbmcgYSBHTFggY29udGV4dCBkaXJlY3RseSBmcm9tIHRoZSB3aW5kb3cuIAorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X2Jhc2VfaW5pdCk6IFdlIGRvbid0IG5lZWQgdG8gdHVybiBvZmYg
ZG91YmxlLWJ1ZmZlcmluZyBhbnkgbG9uZ2VyLgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VH
ZXRPckNyZWF0ZVJlZGlyZWN0ZWRXaW5kb3cpOiBUaGlzIGhlbHBlciBpcyByZXNwb25zaWJsZSBm
b3IgZ2V0dGluZworICAgICAgICBhIGNhY2hlZCBYQ29tcG9zaXRlIHdpbmRvdy4KKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdCYXNlRHJhd0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKTogVGhp
cyBoZWxwZXIgZ2V0cyB0aGUgcGl4bWFwCisgICAgICAgIGJhY2tpbmcgdGhlIFhDb21wb3NpdGUg
d2luZG93IGFuZCBwYWludHMgaXQgdG8gdGhlIHdpZGdldCBkcmF3aW5nIGNvbnRleHQuCisgICAg
ICAgICh3ZWJraXRXZWJWaWV3QmFzZURyYXcpOiBVc2Ugd2Via2l0V2ViVmlld0Jhc2VEcmF3QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMgd2hlbgorICAgICAgICBhcHByb3ByaWF0ZS4KKyAg
ICAgICAgKHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFsbG9jYXRpb24pOiBOb3RpZnkgdGhl
IGZvcmVpZ24gcmVkaXJlY3RlZCB3aW5kb3cKKyAgICAgICAgd2hlbiB0aGUgdmlldyByZXNpemVz
LCBzbyB0aGF0IGl0IGtub3dzIHRvIGludmFsaWRhdGUgaXRzIHBpeG1hcC4KKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdCYXNlU2l6ZUFsbG9jYXRlKTogT25seSByZXNpemUgdGhlIFdlYlZpZXcgaWYg
dGhlIGFsbG9jYXRpb24KKyAgICAgICAgcmVhbGx5IGNoYW5nZWQuCisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QmFzZU1hcCk6IFdlIG5vIGxvbmdlciBuZWVkIHRvIG5vdGlmeSB0aGUgV2ViUHJvY2Vz
cyB3aGVuIHRoZQorICAgICAgICB3aWRnZXQgaXMgbWFwcGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oOiBFeHBvc2UgdGhlIGZvbGxvd2luZyB0d28gbWV0aG9k
cyBwdWJsaWNseQorICAgICAgICBzbyB0aGV5IGNhbiBiZSB1c2VkIGJ5IEdUSysncyBXZWJWaWV3
IHdpZGdldC4KKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUltcGw6OmlzSW5BY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJv
eHlJbXBsOjpsYXllclRyZWVDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgIChXZWJQYWdlUHJveHkpOiBBZGQgYSB3YXkgdG8gc2lnbmFsIHRoZSBV
SVByb2Nlc3MgdG8gcXVldWUgYSBkcmF3LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW46IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUGFnZVBy
b3h5R3RrLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW52YWxp
ZGF0ZVdpZGdldCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDogRGl0
dG8uCisgICAgICAgIChXZWJQYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L0xheWVyVHJlZUhvc3RHdGsuY3BwOiBTd2l0Y2ggdG8gdXNpbmcgYSByZWRpcmVjdGVkIFhDb21w
b3NpdGUKKyAgICAgICAgd2luZG93IGFuZCB1c2UgdGhlIHdpbmRvdyBYSUQgYXMgdGhlIExheWVy
VHJlZUNvbnRleHQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVI
b3N0R3RrLmg6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFn
ZUd0ay5jcHA6IEFkZCBhIG1ldGhvZCBmb3IgaW52YWxpZGF0aW5nIHRoZSBVSVByb2Nlc3MKKyAg
ICAgICAgd2lkZ2V0LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnZhbGlkYXRlV2lkZ2V0
KToKKyAgICAgICAgKFdlYktpdCk6CisKIDIwMTItMDgtMTIgIE51bm8gTG9wZXMgIDxubG9wZXNA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBidWlsZCB3aXRoIHJlY2VudCBjbGFuZy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3cuY3BwCmluZGV4IDJlZWM3ZTg0YTAyOWFlZGM0MGZjNTFmZDkwMDlmODcwODNiYmE0
MjcuLjJjMTc2NTAzNDQ0MzcyNGRhODhlYWRlNWU5MDc2ODNiNGYzMDZmMjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93LmNwcApAQCAtNDIsNiArNDIsMTEgQEAgUGFzc093blB0cjxSZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdz4gUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNyZWF0ZShjb25zdAogICAg
IHJldHVybiBhZG9wdFB0cihuZXcgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coc2l6ZSkpOwog
fQogCitQYXNzT3duUHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBSZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdzo6Y3JlYXRlKHVpbnQ2NF90IHdpbmRvd0lkKQoreworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cod2luZG93SWQpKTsKK30KKwog
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KGNv
bnN0IEludFNpemUmIHNpemUpCiAgICAgOiBtX3dpbmRvdygwKQogICAgICwgbV9wYXJlbnRXaW5k
b3coMCkKQEAgLTQ5LDYgKzU0LDcgQEAgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93KGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgLCBtX3N1cmZh
Y2UoMCkKICAgICAsIG1fcGVuZGluZ1Jlc2l6ZVNvdXJjZUlkKDApCiAgICAgLCBtX25lZWRzTmV3
UGl4bWFwQWZ0ZXJSZXNpemUoZmFsc2UpCisgICAgLCBtX293bnNXaW5kb3codHJ1ZSkKIHsKICAg
ICBEaXNwbGF5KiBkaXNwbGF5ID0gR0xDb250ZXh0R0xYOjpzaGFyZWREaXNwbGF5KCk7CiAKQEAg
LTkzLDEyICs5OSwyMyBAQCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhD
b21wb3NpdGVXaW5kb3coY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICByZXNpemVMYXRlcigpOyAv
LyBGb3JjZSB1cGRhdGUgb2YgdGhlIHVzYWJsZSBhcmVhLgogfQogCitSZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3codWludDY0X3Qgd2luZG93SWQp
CisgICAgOiBtX3dpbmRvdyh3aW5kb3dJZCkKKyAgICAsIG1fcGFyZW50V2luZG93KDApCisgICAg
LCBtX3BpeG1hcCgwKQorICAgICwgbV9zdXJmYWNlKDApCisgICAgLCBtX3BlbmRpbmdSZXNpemVT
b3VyY2VJZCgwKQorICAgICwgbV9uZWVkc05ld1BpeG1hcEFmdGVyUmVzaXplKGZhbHNlKQorICAg
ICwgbV9vd25zV2luZG93KGZhbHNlKQoreworfQorCiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dzo6flJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KCkKIHsKICAgICBEaXNwbGF5KiBkaXNwbGF5
ID0gR0xDb250ZXh0R0xYOjpzaGFyZWREaXNwbGF5KCk7Ci0gICAgaWYgKG1fd2luZG93KQorICAg
IGlmIChtX3dpbmRvdyAmJiBtX293bnNXaW5kb3cpCiAgICAgICAgIFhEZXN0cm95V2luZG93KGRp
c3BsYXksIG1fd2luZG93KTsKLSAgICBpZiAobV9wYXJlbnRXaW5kb3cpCisgICAgaWYgKG1fcGFy
ZW50V2luZG93ICYmIG1fb3duc1dpbmRvdykKICAgICAgICAgWERlc3Ryb3lXaW5kb3coZGlzcGxh
eSwgbV9wYXJlbnRXaW5kb3cpOwogICAgIGNsZWFudXBQaXhtYXBBbmRQaXhtYXBTdXJmYWNlKCk7
CiAKQEAgLTE5MCw2ICsyMDcsMjEgQEAgY2Fpcm9fc3VyZmFjZV90KiBSZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdzo6Y2Fpcm9TdXJmYWNlRm9yV2lkZ2V0KEd0a1dpZGdldCogd2kKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogCisgICAgLy8gVGhlIHNpemUgbWF5IGJlIHVuaW5pdGlhbGl6ZWQg
aWYgd2UgZG8gbm90IG93biB0aGlzIHdpbmRvdyAoaXQgYmVsb25ncyB0byBzb21lIG90aGVyIFJl
ZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KS4KKyAgICBpZiAobV9zaXplLmlzRW1wdHkoKSkgewor
ICAgICAgICBpbnQgeCwgeTsKKyAgICAgICAgV2luZG93IHJvb3RXaW5kb3c7CisgICAgICAgIHVu
c2lnbmVkIGludCB3aWR0aCwgaGVpZ2h0LCBib3JkZXJXaWR0aCwgZGVwdGg7CisgICAgICAgIFhH
ZXRHZW9tZXRyeShuZXdQaXhtYXBEaXNwbGF5LCBtX3dpbmRvdywgJnJvb3RXaW5kb3csICZ4LCAm
eSwgJndpZHRoLCAmaGVpZ2h0LCAmYm9yZGVyV2lkdGgsICZkZXB0aCk7CisgICAgICAgIG1fdXNh
YmxlU2l6ZSA9IG1fc2l6ZSA9IEludFNpemUod2lkdGgsIGhlaWdodCk7CisgICAgfQorCisgICAg
aWYgKG1fc2l6ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgY2xlYW51cFBpeG1hcEFuZFBpeG1hcFN1
cmZhY2UoKTsKKyAgICAgICAgWEZyZWVQaXhtYXAobmV3UGl4bWFwRGlzcGxheSwgbmV3UGl4bWFw
KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4gbmV3U3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVhdGUobmV3UGl4
bWFwRGlzcGxheSwgbmV3UGl4bWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd0F0dHJpYnV0
ZXMudmlzdWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVp
Z2h0KCkpKTsKQEAgLTIxMyw0ICsyNDUsMTAgQEAgY2Fpcm9fc3VyZmFjZV90KiBSZWRpcmVjdGVk
WENvbXBvc2l0ZVdpbmRvdzo6Y2Fpcm9TdXJmYWNlRm9yV2lkZ2V0KEd0a1dpZGdldCogd2kKICAg
ICByZXR1cm4gbV9zdXJmYWNlLmdldCgpOwogfQogCit2b2lkIFJlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93Ojpub3RpZnlSZXNpemVkKCkKK3sKKyAgICBtX3NpemUgPSBtX3VzYWJsZVNpemUgPSBJ
bnRTaXplKCk7CisgICAgbV9uZWVkc05ld1BpeG1hcEFmdGVyUmVzaXplID0gdHJ1ZTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaAppbmRleCAzOWVjN2VkYjI2Yjhk
ZWE0MjZmYmY0ZTY0YTk1ZTI1OWRhNGQ3YTM4Li42ZDlmZGE1NzQzMmJkYjJiYzZmYmZjNWYwNjU3
NzNjY2NkOTNkMzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaApAQCAtMzksMTAgKzM5LDEzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc093blB0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gY3Jl
YXRlKGNvbnN0IEludFNpemUmKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxSZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdz4gY3JlYXRlKHVpbnQ2NF90IHdpbmRvd0lkKTsKICAgICB2aXJ0dWFsIH5S
ZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdygpOwogCiAgICAgY29uc3QgSW50U2l6ZSYgdXNhYmxl
U2l6ZSgpIHsgcmV0dXJuIG1fdXNhYmxlU2l6ZTsgfQogICAgIGNvbnN0IEludFNpemUmIHNpemUo
KSB7IHJldHVybiBtX3NpemU7IH0KKyAgICBXaW5kb3cgd2luZG93SGFuZGxlKCkgeyByZXR1cm4g
bV93aW5kb3c7IH0KKyAgICB2b2lkIG5vdGlmeVJlc2l6ZWQoKTsKIAogICAgIHZvaWQgcmVzaXpl
KGNvbnN0IEludFNpemUmIG5ld1NpemUpOwogICAgIEdMQ29udGV4dCogY29udGV4dCgpOwpAQCAt
NTAsNiArNTMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgUmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3coY29uc3QgSW50U2l6ZSYpOworICAgIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
KHVpbnQ2NF90IHdpbmRvd0lkKTsKIAogICAgIHN0YXRpYyBnYm9vbGVhbiByZXNpemVMYXRlckNh
bGxiYWNrKFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Kik7CiAgICAgdm9pZCByZXNpemVMYXRl
cigpOwpAQCAtNjQsNiArNjgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IG1fc3VyZmFjZTsKICAgICB1bnNpZ25lZCBpbnQgbV9wZW5kaW5nUmVzaXplU291cmNlSWQ7
CiAgICAgYm9vbCBtX25lZWRzTmV3UGl4bWFwQWZ0ZXJSZXNpemU7CisgICAgYm9vbCBtX293bnNX
aW5kb3c7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggNDky
NWI1YTdjMWNlZTljODRmZTU4NDJiY2QwYzFhOTEyMjZlNTk0YS4uNDNjY2U2ZTA2MmZmYTZlZjZi
YzU5YzQ2YmU3ZTliNTQ1ZTEyNjJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtNjcsNyArNjcsNyBAQAog
I2VuZGlmCiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIGRlZmluZWQoR0RLX1dJTkRP
V0lOR19YMTEpCi0jaW5jbHVkZSA8Z2RrL2dka3guaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93Lmg+CiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKQEAgLTk3LDYgKzk3LDkgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewog
ICAgIHVuc2lnbmVkIGluc3BlY3RvclZpZXdIZWlnaHQ7CiAgICAgR093blB0cjxHZGtFdmVudD4g
Y29udGV4dE1lbnVFdmVudDsKICAgICBXZWJDb250ZXh0TWVudVByb3h5R3RrKiBhY3RpdmVDb250
ZXh0TWVudVByb3h5OworI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgZGVmaW5lZChHREtf
V0lORE9XSU5HX1gxMSkKKyAgICBPd25QdHI8V2ViQ29yZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVX
aW5kb3c+IHJlZGlyZWN0ZWRXaW5kb3c7CisjZW5kaWYKIH07CiAKIEdfREVGSU5FX1RZUEUoV2Vi
S2l0V2ViVmlld0Jhc2UsIHdlYmtpdF93ZWJfdmlld19iYXNlLCBHVEtfVFlQRV9DT05UQUlORVIp
CkBAIC0xNTgsOSArMTYxLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VSZWFsaXpl
KEd0a1dpZGdldCogd2lkZ2V0KQogICAgIGdpbnQgYXR0cmlidXRlc01hc2sgPSBHREtfV0FfWCB8
IEdES19XQV9ZIHwgR0RLX1dBX1ZJU1VBTDsKIAogICAgIEdka1dpbmRvdyogd2luZG93ID0gZ2Rr
X3dpbmRvd19uZXcoZ3RrX3dpZGdldF9nZXRfcGFyZW50X3dpbmRvdyh3aWRnZXQpLCAmYXR0cmli
dXRlcywgYXR0cmlidXRlc01hc2spOwotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICBn
ZGtfd2luZG93X2Vuc3VyZV9uYXRpdmUod2luZG93KTsKLSNlbmRpZgogICAgIGd0a193aWRnZXRf
c2V0X3dpbmRvdyh3aWRnZXQsIHdpbmRvdyk7CiAgICAgZ2RrX3dpbmRvd19zZXRfdXNlcl9kYXRh
KHdpbmRvdywgd2lkZ2V0KTsKIApAQCAtMjczLDkgKzI3MywzNyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3ZpZXdfYmFzZV9pbml0KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFz
ZSkKICAgICBndGtfZHJhZ19kZXN0X3NldF90YXJnZXRfbGlzdCh2aWV3V2lkZ2V0LCBQYXN0ZWJv
YXJkSGVscGVyOjpkZWZhdWx0UGFzdGVib2FyZEhlbHBlcigpLT50YXJnZXRMaXN0KCkpOwogfQog
CisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAKK3N0YXRpYyBSZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdyogd2Via2l0V2ViVmlld0Jhc2VHZXRPckNyZWF0ZVJlZGlyZWN0ZWRXaW5kb3coV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXll
clRyZWVDb250ZXh0KQoreworICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdl
YlZpZXdCYXNlLT5wcml2OworICAgIGlmIChwcml2LT5yZWRpcmVjdGVkV2luZG93ICYmIGxheWVy
VHJlZUNvbnRleHQud2luZG93SGFuZGxlICE9IHdlYlZpZXdCYXNlLT5wcml2LT5yZWRpcmVjdGVk
V2luZG93LT53aW5kb3dIYW5kbGUoKSkKKyAgICAgICAgcHJpdi0+cmVkaXJlY3RlZFdpbmRvdyA9
IG51bGxwdHI7CisKKyAgICBpZiAoIXByaXYtPnJlZGlyZWN0ZWRXaW5kb3cpCisgICAgICAgIHBy
aXYtPnJlZGlyZWN0ZWRXaW5kb3cgPSBXZWJDb3JlOjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dzo6Y3JlYXRlKGxheWVyVHJlZUNvbnRleHQud2luZG93SGFuZGxlKTsKKworICAgIHJldHVybiBw
cml2LT5yZWRpcmVjdGVkV2luZG93LmdldCgpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRXZWJW
aWV3QmFzZURyYXdBY2NlbGVyYXRlZENvbXBvc2l0aW5nUmVzdWx0cyhXZWJLaXRXZWJWaWV3QmFz
ZSogd2ViVmlld0Jhc2UsIERyYXdpbmdBcmVhUHJveHlJbXBsKiBkcmF3aW5nQXJlYSwgY2Fpcm9f
dCogY3IsIEdka1JlY3RhbmdsZSogY2xpcFJlY3QpCit7CisgICAgUmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3cqIHJlZGlyZWN0ZWRXaW5kb3cgPSB3ZWJraXRXZWJWaWV3QmFzZUdldE9yQ3JlYXRl
UmVkaXJlY3RlZFdpbmRvdyh3ZWJWaWV3QmFzZSwgZHJhd2luZ0FyZWEtPmxheWVyVHJlZUNvbnRl
eHQoKSk7CisgICAgY2Fpcm9fc3VyZmFjZV90KiB3aW5kb3dTdXJmYWNlID0gcmVkaXJlY3RlZFdp
bmRvdy0+Y2Fpcm9TdXJmYWNlRm9yV2lkZ2V0KEdUS19XSURHRVQod2ViVmlld0Jhc2UpKTsKKyAg
ICBpZiAoIXdpbmRvd1N1cmZhY2UpCisgICAgICAgIHJldHVybjsKKworICAgIGNhaXJvX3JlY3Rh
bmdsZShjciwgY2xpcFJlY3QtPngsIGNsaXBSZWN0LT55LCBjbGlwUmVjdC0+d2lkdGgsIGNsaXBS
ZWN0LT5oZWlnaHQpOworICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjciwgd2luZG93U3Vy
ZmFjZSwgMCwgMCk7CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBDQUlST19PUEVSQVRPUl9T
T1VSQ0UpOworICAgIGNhaXJvX2ZpbGwoY3IpOworfQorI2VuZGlmCisKIHN0YXRpYyBnYm9vbGVh
biB3ZWJraXRXZWJWaWV3QmFzZURyYXcoR3RrV2lkZ2V0KiB3aWRnZXQsIGNhaXJvX3QqIGNyKQog
ewotICAgIERyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhID0gV0VCS0lUX1dFQl9WSUVXX0JB
U0Uod2lkZ2V0KS0+cHJpdi0+cGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpOworICAgIFdlYktpdFdl
YlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7Cisg
ICAgRHJhd2luZ0FyZWFQcm94eUltcGwqIGRyYXdpbmdBcmVhID0gc3RhdGljX2Nhc3Q8RHJhd2lu
Z0FyZWFQcm94eUltcGwqPih3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5kcmF3aW5nQXJl
YSgpKTsKICAgICBpZiAoIWRyYXdpbmdBcmVhKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKQEAg
LTI4Myw5ICszMTEsMTUgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlRHJhdyhH
dGtXaWRnZXQqIHdpZGdldCwgY2Fpcm9fdCogY3IpCiAgICAgaWYgKCFnZGtfY2Fpcm9fZ2V0X2Ns
aXBfcmVjdGFuZ2xlKGNyLCAmY2xpcFJlY3QpKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKLSAg
ICBXZWJDb3JlOjpSZWdpb24gdW5wYWludGVkUmVnaW9uOyAvLyBUaGlzIGlzIHNpbXBseSB1bnVz
ZWQuCi0gICAgc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUltcGwqPihkcmF3aW5nQXJlYSkt
PnBhaW50KGNyLCBjbGlwUmVjdCwgdW5wYWludGVkUmVnaW9uKTsKKyNpZiBVU0UoVEVYVFVSRV9N
QVBQRVJfR0wpIAorICAgIGlmIChkcmF3aW5nQXJlYS0+aXNJbkFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKCkpIHsKKyAgICAgICAgd2Via2l0V2ViVmlld0Jhc2VEcmF3QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ1Jlc3VsdHMod2ViVmlld0Jhc2UsIGRyYXdpbmdBcmVhLCBjciwgJmNsaXBSZWN0KTsK
KyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyNlbmRpZgogCisgICAgV2ViQ29yZTo6UmVn
aW9uIHVucGFpbnRlZFJlZ2lvbjsKKyAgICBzdGF0aWNfY2FzdDxEcmF3aW5nQXJlYVByb3h5SW1w
bCo+KGRyYXdpbmdBcmVhKS0+cGFpbnQoY3IsIGNsaXBSZWN0LCB1bnBhaW50ZWRSZWdpb24pOwog
ICAgIHJldHVybiBGQUxTRTsKIH0KIApAQCAtMzIwLDkgKzM1NCwxNCBAQCBzdGF0aWMgdm9pZCBy
ZXNpemVXZWJLaXRXZWJWaWV3QmFzZUZyb21BbGxvY2F0aW9uKFdlYktpdFdlYlZpZXdCYXNlKiB3
ZWJWaWV3QmFzZQogICAgICAgICB2aWV3UmVjdC5zZXRIZWlnaHQoYWxsb2NhdGlvbi0+aGVpZ2h0
IC0gcHJpdi0+aW5zcGVjdG9yVmlld0hlaWdodCk7CiAgICAgfQogCi0gICAgaWYgKHByaXYtPnBh
Z2VQcm94eS0+ZHJhd2luZ0FyZWEoKSkKKyAgICBEcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJl
YSA9IHdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJveHktPmRyYXdpbmdBcmVhKCk7CisgICAgaWYg
KGRyYXdpbmdBcmVhKSB7CiAgICAgICAgIHByaXYtPnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKS0+
c2V0U2l6ZSh2aWV3UmVjdC5zaXplKCksIEludFNpemUoKSk7CiAKKyAgICAgICAgaWYgKHN0YXRp
Y19jYXN0PERyYXdpbmdBcmVhUHJveHlJbXBsKj4oZHJhd2luZ0FyZWEpLT5pc0luQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoKSAmJiB3ZWJWaWV3QmFzZS0+cHJpdi0+cmVkaXJlY3RlZFdpbmRv
dykKKyAgICAgICAgICAgIHdlYlZpZXdCYXNlLT5wcml2LT5yZWRpcmVjdGVkV2luZG93LT5ub3Rp
ZnlSZXNpemVkKCk7CisgICAgfQorCiAgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0a193aWRn
ZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQod2ViVmlld0Jhc2UpKTsKICAgICBpZiAod2lkZ2V0
SXNPbnNjcmVlblRvcGxldmVsV2luZG93KHRvcGxldmVsKSkKICAgICAgICAgd2Via2l0V2ViVmll
d0Jhc2VOb3RpZnlSZXNpemVyU2l6ZUZvcldpbmRvdyh3ZWJWaWV3QmFzZSwgR1RLX1dJTkRPVyh0
b3BsZXZlbCkpOwpAQCAtMzMwLDYgKzM2OSw5IEBAIHN0YXRpYyB2b2lkIHJlc2l6ZVdlYktpdFdl
YlZpZXdCYXNlRnJvbUFsbG9jYXRpb24oV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlCiAK
IHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2l6ZUFsbG9jYXRlKEd0a1dpZGdldCogd2lk
Z2V0LCBHdGtBbGxvY2F0aW9uKiBhbGxvY2F0aW9uKQogeworICAgIEd0a0FsbG9jYXRpb24gb2xk
QWxsb2NhdGlvbjsKKyAgICBndGtfd2lkZ2V0X2dldF9hbGxvY2F0aW9uKHdpZGdldCwgJm9sZEFs
bG9jYXRpb24pOworCiAgICAgR1RLX1dJREdFVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9w
YXJlbnRfY2xhc3MpLT5zaXplX2FsbG9jYXRlKHdpZGdldCwgYWxsb2NhdGlvbik7CiAKICAgICBX
ZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRn
ZXQpOwpAQCAtMzM3LDYgKzM3OSw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2l6
ZUFsbG9jYXRlKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtBbGxvY2F0aW9uKiBhbGxvCiAgICAgICAg
IHdlYlZpZXdCYXNlLT5wcml2LT5uZWVkc1Jlc2l6ZU9uTWFwID0gdHJ1ZTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KKworICAgIGlmIChvbGRBbGxvY2F0aW9uLndpZHRoID09IGFsbG9jYXRpb24t
PndpZHRoICYmIG9sZEFsbG9jYXRpb24uaGVpZ2h0ID09IGFsbG9jYXRpb24tPmhlaWdodCkKKyAg
ICAgICAgcmV0dXJuOwogICAgIHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFsbG9jYXRpb24o
d2ViVmlld0Jhc2UsIGFsbG9jYXRpb24pOwogfQogCkBAIC0zNDUsMTMgKzM5MCw2IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlTWFwKEd0a1dpZGdldCogd2lkZ2V0KQogICAgIEdUS19X
SURHRVRfQ0xBU1Mod2Via2l0X3dlYl92aWV3X2Jhc2VfcGFyZW50X2NsYXNzKS0+bWFwKHdpZGdl
dCk7CiAKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJ
RVdfQkFTRSh3aWRnZXQpOwotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgZGVmaW5lZChH
REtfV0lORE9XSU5HX1gxMSkKLSAgICBHZGtXaW5kb3cqIGdka1dpbmRvdyA9IGd0a193aWRnZXRf
Z2V0X3dpbmRvdyh3aWRnZXQpOwotICAgIEFTU0VSVChnZGtXaW5kb3cpOwotICAgIGlmIChnZGtf
d2luZG93X2hhc19uYXRpdmUoZ2RrV2luZG93KSkKLSAgICAgICAgd2ViVmlld0Jhc2UtPnByaXYt
PnBhZ2VQcm94eS0+d2lkZ2V0TWFwcGVkKEdES19XSU5ET1dfWElEKGdka1dpbmRvdykpOwotI2Vu
ZGlmCi0KICAgICBpZiAoIXdlYlZpZXdCYXNlLT5wcml2LT5uZWVkc1Jlc2l6ZU9uTWFwKQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3
aW5nQXJlYVByb3h5SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVh
UHJveHlJbXBsLmgKaW5kZXggMGM5ZjA0ZjhlMDJkYThmMGNkYmMwYTMwMTBmNWYwNDFmYTMzOTk4
OC4uYWRkNmNhMzkwNzkxMDRiZWI0NTYwY2FiYmY0NTUzZjYxZDY2Mjc4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgKQEAgLTQ4LDYgKzQ4
LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBwYWludChCYWNraW5nU3RvcmU6OlBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6UmVnaW9uJiB1
bnBhaW50ZWRSZWdpb24pOwogCisgICAgYm9vbCBpc0luQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoKSBjb25zdCB7IHJldHVybiAhbV9sYXllclRyZWVDb250ZXh0LmlzRW1wdHkoKTsgfQorICAg
IGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQoKSB7IHJldHVybiBtX2xh
eWVyVHJlZUNvbnRleHQ7IH0KKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBEcmF3aW5nQXJlYVBy
b3h5SW1wbChXZWJQYWdlUHJveHkqKTsKIApAQCAtNzksNyArODIsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCk7CiAgICAgdm9pZCB1cGRhdGVB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jik7CiAKLSAg
ICBib29sIGlzSW5BY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuICFt
X2xheWVyVHJlZUNvbnRleHQuaXNFbXB0eSgpOyB9CiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiB2aXNpYmxlQ29udGVudHNSZWN0LCBmbG9hdCBzY2FsZSwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggYjg4YTVkNDk4NTU1ODU2YTZiNzAxMzY2OWE2MDA4OWY3ZGI0
ZmFkOC4uZjI0YTAyYjA2NWQ4YmMwMThjNjc0YzAwMTRmNjZiYTQyMzQzYWU0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNzA5LDcgKzcwOSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIE5hdGl2ZVdlYk1vdXNlRXZlbnQqIGN1cnJlbnRseVByb2Nlc3NlZE1v
dXNlRG93bkV2ZW50KCk7CiAKICNpZiBQTEFURk9STShHVEspICYmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkKLSAgICB2b2lkIHdpZGdldE1hcHBlZCh1aW50NjRfdCBuYXRpdmVXaW5kb3dJZCk7Cisg
ICAgdm9pZCBpbnZhbGlkYXRlV2lkZ2V0KCk7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0U3VwcHJl
c3NWaXNpYmlsaXR5VXBkYXRlcyhib29sIGZsYWcpIHsgbV9zdXBwcmVzc1Zpc2liaWxpdHlVcGRh
dGVzID0gZmxhZzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KaW5kZXggN2ZhODFiZTVhNWVlZDdlMDg4YzlkNzgyODNiZDE1MzJmNjNm
Y2JmYi4uZmI0NzU5MGM4MTI5NGEzNDc1MDA2YzNlNTQ2YzFmZTc4ZTA2ZmExNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0x
NzYsNiArMTc2LDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgIyBTdXBwb3J0
IGZvciBjb25uZWN0aW5nIHRoZSBBY2Nlc3NpYmlsaXR5IHdvcmxkcyBvZiB0aGUgVUkgYW5kIHRo
ZSBXZWIgcHJvY2Vzc2VzCiAgICAgQmluZEFjY2Vzc2liaWxpdHlUcmVlKFdURjo6U3RyaW5nIHBs
dWdJRCkKICNlbmRpZgorIworI2lmIFBMQVRGT1JNKEdUSykgJiYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKQorICAgIEludmFsaWRhdGVXaWRnZXQoKQorI2VuZGlmCiAKICAgICAjIEJhY2tGb3J3YXJk
IG1lc3NhZ2VzCiAgICAgQmFja0ZvcndhcmRBZGRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAppbmRleCBh
YzI2YzBjYjhmZGJiOGM5ZTcyNWY5MzNiODQ3OGEyYTRkY2MwZjdjLi40NWZkOWM5ZTExMWZhMmIy
NmFlNmI5YzY4MWM1MTg3MGJkOWZiOWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCkBAIC0xMTAsOSArMTEwLDkgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgZnJhbWUKIH0KIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLXZvaWQgV2Vi
UGFnZVByb3h5Ojp3aWRnZXRNYXBwZWQodWludDY0X3QgbmF0aXZlV2luZG93SWQpCit2b2lkIFdl
YlBhZ2VQcm94eTo6aW52YWxpZGF0ZVdpZGdldCgpCiB7Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpXaWRnZXRNYXBwZWQobmF0aXZlV2luZG93SWQpLCBtX3BhZ2VJRCk7
CisgICAgZ3RrX3dpZGdldF9xdWV1ZV9kcmF3KHN0YXRpY19jYXN0PFBhZ2VDbGllbnRJbXBsKj4o
bV9wYWdlQ2xpZW50KS0+dmlld1dpZGdldCgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBiYmZhYmQwNGFhNzNiNGZiY2M5
NTUyMDU4NTJlZmM1Mzk4NjE3ZDZmLi5kZThmMGE3YTQzODUxZGJmMWIyODlhYzJmMjlkNTE5MTRh
MTg5YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
QEAgLTQ1Myw3ICs0NTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVBY2Nlc3NpYmlsaXR5
VHJlZSgpOwogICAgIGJvb2wgaGFuZGxlTW91c2VQcmVzc2VkRXZlbnQoY29uc3QgV2ViQ29yZTo6
UGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotICAgIHZv
aWQgd2lkZ2V0TWFwcGVkKGludDY0X3QgbmF0aXZlV2luZG93SGFuZGxlKTsKKyAgICB2b2lkIGlu
dmFsaWRhdGVXaWRnZXQoKTsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZTNmZjIz
Y2FkY2FhODJmZjgzOGVjM2EwNDA2ZjlhOWI0MWMzYjBjYS4uMTA2MTdhZmJlYmYzMzMzYWRmMWU1
ZDEwZjk3MzBmMzBmYWU3NDIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTI5NSw4ICsyOTUsNCBAQCBtZXNz
YWdlcyAtPiBXZWJQYWdlIHsKICNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKICAgICBT
ZXRWaXNpYmlsaXR5U3RhdGUoaW50IHZpc2liaWxpdHlTdGF0ZSwgYm9vbCBpc0luaXRpYWxTdGF0
ZSk7CiAjZW5kaWYKLQotI2lmIFBMQVRGT1JNKEdUSykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KQotICAgIFdpZGdldE1hcHBlZChpbnQ2NF90IGlkKQotI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3Rr
LmNwcAppbmRleCBhNDEyYTg1MDA5ZmM5M2Q4NzA3NGM3YjMyNjVkYmQ5ZDBkMWQ5ZTIyLi45MjQ2
ODhjYTExMDBjYmI0NjE2MTRjN2M0NDEwODk2NzFlYWFhMDIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5j
cHAKQEAgLTY0LDI0ICs2NCwxMiBAQCBMYXllclRyZWVIb3N0R3RrOjpMYXllclRyZWVIb3N0R3Rr
KFdlYlBhZ2UqIHdlYlBhZ2UpCiAgICAgOiBMYXllclRyZWVIb3N0KHdlYlBhZ2UpCiAgICAgLCBt
X2lzVmFsaWQodHJ1ZSkKICAgICAsIG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoKGZh
bHNlKQorICAgICwgbV9yZWRpcmVjdGVkV2luZG93KFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
OjpjcmVhdGUoSW50U2l6ZSgxLCAxKSkpCiAgICAgLCBtX2xheWVyRmx1c2hTY2hlZHVsaW5nRW5h
YmxlZCh0cnVlKQogICAgICwgbV9sYXllckZsdXNoVGltZXJDYWxsYmFja0lkKDApCiB7CiB9CiAK
LUdMQ29udGV4dCogTGF5ZXJUcmVlSG9zdEd0azo6Z2xDb250ZXh0KCkKLXsKLSAgICBpZiAobV9j
b250ZXh0KQotICAgICAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOwotCi0gICAgdWludDY0X3Qg
d2luZG93SGFuZGxlID0gbV93ZWJQYWdlLT5uYXRpdmVXaW5kb3dIYW5kbGUoKTsKLSAgICBpZiAo
IXdpbmRvd0hhbmRsZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBtX2NvbnRleHQgPSBHTENv
bnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3cod2luZG93SGFuZGxlLCBHTENvbnRleHQ6OnNo
YXJpbmdDb250ZXh0KCksIEdMQ29udGV4dDo6U2luZ2xlQnVmZmVyKTsKLSAgICByZXR1cm4gbV9j
b250ZXh0LmdldCgpOwotfQotCiB2b2lkIExheWVyVHJlZUhvc3RHdGs6OmluaXRpYWxpemUoKQog
ewogICAgIG1fcm9vdExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKHRoaXMpOwpAQCAtMTA0
LDEzICs5MiwxMyBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OmluaXRpYWxpemUoKQogICAgIG1f
cm9vdExheWVyLT5hZGRDaGlsZChtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIuZ2V0KCkpOwog
ICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CiAKLSAg
ICBtX2xheWVyVHJlZUNvbnRleHQud2luZG93SGFuZGxlID0gbV93ZWJQYWdlLT5uYXRpdmVXaW5k
b3dIYW5kbGUoKTsKLQotICAgIEdMQ29udGV4dCogY29udGV4dCA9IGdsQ29udGV4dCgpOworICAg
IG1fcmVkaXJlY3RlZFdpbmRvdy0+cmVzaXplKG1fd2ViUGFnZS0+c2l6ZSgpKTsKKyAgICBHTENv
bnRleHQqIGNvbnRleHQgPSBtX3JlZGlyZWN0ZWRXaW5kb3ctPmNvbnRleHQoKTsKICAgICBpZiAo
IWNvbnRleHQpIHsKLSAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7CisgICAgICAgICBtX2lzVmFs
aWQgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBtX2xheWVyVHJlZUNvbnRl
eHQud2luZG93SGFuZGxlID0gbV9yZWRpcmVjdGVkV2luZG93LT53aW5kb3dIYW5kbGUoKTsKIAog
ICAgIC8vIFRoZSBjcmVhdGlvbiBvZiB0aGUgVGV4dHVyZU1hcHBlciBuZWVkcyBhbiBhY3RpdmUg
T3BlbkdMIGNvbnRleHQuCiAgICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CkBAIC0x
NjEsNyArMTQ5LDYgQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjppbnZhbGlkYXRlKCkKICAgICBt
X3BhZ2VPdmVybGF5TGF5ZXIgPSBudWxscHRyOwogICAgIG1fdGV4dHVyZU1hcHBlciA9IG51bGxw
dHI7CiAKLSAgICBtX2NvbnRleHQgPSBudWxscHRyOwogICAgIG1faXNWYWxpZCA9IGZhbHNlOwog
fQogCkBAIC0xODMsNiArMTcwLDggQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjpzaXplRGlkQ2hh
bmdlKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiB7CiAgICAgaWYgKG1fcm9vdExheWVyLT5zaXpl
KCkgPT0gbmV3U2l6ZSkKICAgICAgICAgcmV0dXJuOworCisgICAgbV9yZWRpcmVjdGVkV2luZG93
LT5yZXNpemUobmV3U2l6ZSk7CiAgICAgbV9yb290TGF5ZXItPnNldFNpemUobmV3U2l6ZSk7CiAK
ICAgICAvLyBJZiB0aGUgbmV3U2l6ZSBleHBvc2VzIG5ldyBhcmVhcyBvZiB0aGUgbm9uLWNvbXBv
c2l0ZWQgY29udGVudCBhIHNldE5lZWRzRGlzcGxheSBpcyBuZWVkZWQKQEAgLTI5MywyMSArMjgy
LDIxIEBAIGJvb2wgTGF5ZXJUcmVlSG9zdEd0azo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkK
IAogdm9pZCBMYXllclRyZWVIb3N0R3RrOjpjb21wb3NpdGVMYXllcnNUb0NvbnRleHQoKQogewot
ICAgIEdMQ29udGV4dCogY29udGV4dCA9IGdsQ29udGV4dCgpOworICAgIEdMQ29udGV4dCogY29u
dGV4dCA9IG1fcmVkaXJlY3RlZFdpbmRvdy0+Y29udGV4dCgpOwogICAgIGlmICghY29udGV4dCB8
fCAhY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIFRoZSB3aW5kb3cgc2l6ZSBtYXkgYmUgb3V0IG9mIHN5bmMgd2l0aCB0aGUgcGFnZSBzaXpl
IGF0IHRoaXMgcG9pbnQsIGFuZCBnZXR0aW5nCiAgICAgLy8gdGhlIHZpZXdwb3J0IHBhcmFtZXRl
cnMgaW5jb3JyZWN0LCBtZWFucyB0aGF0IHRoZSBjb250ZW50IHdpbGwgYmUgbWlzcGxhY2VkLiBU
aHVzCiAgICAgLy8gd2Ugc2V0IHRoZSB2aWV3cG9ydCBwYXJhbWV0ZXJzIGRpcmVjdGx5IGZyb20g
dGhlIHdpbmRvdyBzaXplLgotICAgIEludFNpemUgY29udGV4dFNpemUgPSBtX2NvbnRleHQtPmRl
ZmF1bHRGcmFtZUJ1ZmZlclNpemUoKTsKKyAgICBJbnRTaXplIGNvbnRleHRTaXplID0gY29udGV4
dC0+ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpOwogICAgIGdsVmlld3BvcnQoMCwgMCwgY29udGV4
dFNpemUud2lkdGgoKSwgY29udGV4dFNpemUuaGVpZ2h0KCkpOwogCiAgICAgbV90ZXh0dXJlTWFw
cGVyLT5iZWdpblBhaW50aW5nKCk7CiAgICAgdG9UZXh0dXJlTWFwcGVyTGF5ZXIobV9yb290TGF5
ZXIuZ2V0KCkpLT5wYWludCgpOwogICAgIG1fdGV4dHVyZU1hcHBlci0+ZW5kUGFpbnRpbmcoKTsK
IAotICAgIGNvbnRleHQtPnN3YXBCdWZmZXJzKCk7CisgICAgZ2xGbHVzaCgpOwogfQogCiB2b2lk
IExheWVyVHJlZUhvc3RHdGs6OmZsdXNoQW5kUmVuZGVyTGF5ZXJzKCkKQEAgLTMyMCw3ICszMDks
NyBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OmZsdXNoQW5kUmVuZGVyTGF5ZXJzKCkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBHTENvbnRleHQqIGNvbnRleHQgPSBnbENvbnRl
eHQoKTsKKyAgICBHTENvbnRleHQqIGNvbnRleHQgPSBtX3JlZGlyZWN0ZWRXaW5kb3ctPmNvbnRl
eHQoKTsKICAgICBpZiAoIWNvbnRleHQgfHwgIWNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
KQogICAgICAgICByZXR1cm47CiAKQEAgLTMyOSw2ICszMTgsNyBAQCB2b2lkIExheWVyVHJlZUhv
c3RHdGs6OmZsdXNoQW5kUmVuZGVyTGF5ZXJzKCkKIAogICAgIC8vIE91ciBtb2RlbCBpcyB2ZXJ5
IHNpbXBsZS4gV2UgYWx3YXlzIGNvbXBvc2l0ZSBhbmQgcmVuZGVyIHRoZSB0cmVlIGltbWVkaWF0
ZWx5IGFmdGVyIHVwZGF0aW5nIGl0LgogICAgIGNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dCgpOwor
ICAgIG1fd2ViUGFnZS0+aW52YWxpZGF0ZVdpZGdldCgpOwogCiAgICAgaWYgKG1fbm90aWZ5QWZ0
ZXJTY2hlZHVsZWRMYXllckZsdXNoKSB7CiAgICAgICAgIC8vIExldCB0aGUgZHJhd2luZyBhcmVh
IGtub3cgdGhhdCB3ZSd2ZSBkb25lIGEgZmx1c2ggb2YgdGhlIGxheWVyIGNoYW5nZXMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhv
c3RHdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVl
SG9zdEd0ay5oCmluZGV4IDA2MDU3MGI2NDkxNDhkZjU1M2M4MDNiNDc1ZmY0ZjQ5NDAyNDI1YjYu
LjZhNThkNTk1NGIzMjcwYmQwNmFjZmFjNWJkMzU4N2ZjMmY2ZDhiNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0
ay5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9HTENvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
TGF5ZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2lu
ZG93Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTk5LDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXI+IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllcjsKICAgICBPd25QdHI8V2ViQ29yZTo6R3Jh
cGhpY3NMYXllcj4gbV9wYWdlT3ZlcmxheUxheWVyOwogICAgIE93blB0cjxXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyPiBtX3RleHR1cmVNYXBwZXI7Ci0gICAgT3duUHRyPFdlYkNvcmU6OkdMQ29udGV4
dD4gbV9jb250ZXh0OworICAgIE93blB0cjxXZWJDb3JlOjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdz4gbV9yZWRpcmVjdGVkV2luZG93OwogICAgIGJvb2wgbV9sYXllckZsdXNoU2NoZWR1bGlu
Z0VuYWJsZWQ7CiAgICAgdW5zaWduZWQgbV9sYXllckZsdXNoVGltZXJDYWxsYmFja0lkOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFn
ZUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VH
dGsuY3BwCmluZGV4IDMwYWFhNDAzN2Y3YzQ3ZDE0ZDU2YTQ3YzcxZWFhYzY3M2JjYTgyNDIuLjY5
YzgzNGRlMjAyMTg3ZjZhODBiYmZkNzA3OTJiNWZjNmU0OWMzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcApAQCAtMTU1
LDEzICsxNTUsNiBAQCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGFnZTo6Y2FjaGVkUmVz
cG9uc2VEYXRhRm9yVVJMKGNvbnN0IEtVUkwmKQogICAgIHJldHVybiAwOwogfQogCi0jaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKQotdm9pZCBXZWJQYWdlOjp3aWRnZXRNYXBwZWQoaW50NjRfdCBu
YXRpdmVXaW5kb3dIYW5kbGUpCi17Ci0gICAgbV9uYXRpdmVXaW5kb3dIYW5kbGUgPSBuYXRpdmVX
aW5kb3dIYW5kbGU7Ci19Ci0jZW5kaWYKLQogYm9vbCBXZWJQYWdlOjpoYW5kbGVNb3VzZVByZXNz
ZWRFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91c2VFdmVudCkKIHsK
ICAgICBib29sIHJldHVyblZhbHVlID0gZmFsc2U7CkBAIC0xODcsNCArMTgwLDExIEBAIGJvb2wg
V2ViUGFnZTo6aGFuZGxlTW91c2VQcmVzc2VkRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBwbGF0Zm9ybU1vdXNlRXZlCiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCisjaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKQordm9pZCBXZWJQYWdlOjppbnZhbGlkYXRlV2lkZ2V0KCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkludmFsaWRhdGVXaWRnZXQoKSk7Cit9
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159424</attachid>
            <date>2012-08-20 07:40:50 -0700</date>
            <delta_ts>2012-08-21 23:17:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94417-20120820074011.patch</filename>
            <type>text/plain</type>
            <size>26116</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzExYTIxMjBhNzE0OGNi
OTY0M2QxZTZlMmI5YjY1Yjk0YzM3Nzk5NC4uZDRlNjRjZjU2YmFmNWVjMDQ0ZDJlMmRmOTQ2NTcw
NjI1M2Y0OWQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA4LTE4ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBbV2Vi
S2l0Ml0gVXNlIFhDb21wb3NpdGUgd2luZG93IGZvciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ0MTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYW4gWENv
bXBvc2l0ZSB3aW5kb3cgdmlhIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93IGZvciBXZWJLaXQy
IGFjY2VsZXJhdGVkCisgICAgICAgIGNvbXBvc2l0aW5nLiBUaGlzIGFsbG93cyB1cyB0byBhdm9p
ZCB1c2luZyBhIG5hdGl2ZSBHREsgd2luZG93IGZvciBvdXIgd2lkZ2V0cywKKyAgICAgICAgZml4
aW5nIGludGVyYWN0aW9uIHdpdGggR3RrT3ZlcmxheS4gV2UgY2FuIGFsc28gbm93IGhvb2sgZGly
ZWN0bHkgaW50byB0aGUgR1RLKworICAgICAgICBkcmF3aW5nIGxvb3AsIHByb2JhYmx5IG1ha2lu
ZyBhbnkgZnV0dXJlIEdUSysgNCBwb3J0IHNpbXBsZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LiBUaGVzZSBjaGFuZ2VzIGFyZSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIGNvbXBvc2l0aW5nIHRlc3Rz
IGFuZCBmdXJ0aGVybW9yZSwKKyAgICAgICAgYWxsb3cgcGl4ZWwgZHVtcGluZyBvZiBjb21wb3Np
dGluZyByZXN1bHRzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9z
aXRlV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2lu
ZG93OjpjcmVhdGUpOiBBbGxvdyBjcmVhdGluZyBhICJmb3JlaWduIiBYQ29tcG9zaXRlCisgICAg
ICAgIHdpbmRvdywgd2hpY2ggZG9lc24ndCBhY3R1YWxseSBjcmVhdGUgdGhlIFgxMSB3aW5kb3cs
IGJ1dCBhdHRhY2hlcyB0byBvbmUgZ2l2ZW4gaXRzCisgICAgICAgIFhJRC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdyk6IFRoZSBuZXcgY29uc3RydWN0b3IKKyAgICAgICAgZm9yIHRoZSBmb3JlaWduIHdpbmRv
dy4KKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojp+UmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3cpOiBJZiB0aGUgd2luZG93IGlzCisgICAgICAgIGZvcmVpZ24s
IGRvbid0IGRlc3Ryb3kgaXQgd2hlbiB0aGlzIG9iamVjdCBkaWVzLgorICAgICAgICAoV2ViQ29y
ZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNhaXJvU3VyZmFjZUZvcldpZGdldCk6IFF1
ZXJ5IHRoZSBzaXplIGlmIHdlCisgICAgICAgIGRvbid0IGtub3cgaXQsIHdoaWNoIHdlIHdvbid0
IGlmIHdlIHdlcmUgbm90IHJlc3BvbnNpYmxlIGZvciByZXNpemluZyB0aGUgd2luZG93IGkuZS4K
KyAgICAgICAgd2UgYXJlIGEgZm9yZWlnbiB3aW5kb3cuCisgICAgICAgIChXZWJDb3JlOjpSZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6bm90aWZ5UmVzaXplZCk6IEludmFsaWRhdGUgdGhlIFBp
eG1hcCBhbmQgc2l6ZQorICAgICAgICB3aGVuIHdlIGtub3cgdGhlIHdpbmRvdyBoYXMgYmVlbiBy
ZXNpemVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dy5oOiBOZXcgbWV0aG9kcyBhbmQgbWVtYmVycyB0byB0cmFjayBmb3JlaWduCisgICAgICAgIHdp
bmRvd3MuCisKIDIwMTItMDgtMTYgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdIFVzaW5nIGEgbmF0aXZlIHdpbmRvdyBmb3IgdGhlIFdlYlZp
ZXcgYnJlYWtzIEd0a092ZXJsYXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4YTk1YmQ5YWU2OTRmZDFlNTQzYzVh
ODc3NWM4NTRlMDZiMTBhOGUyLi4zYTgyZjhiYWU5N2RiZGI3YTg5NGYyMWQxZGRjYjI5MmQ1M2Vm
M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTItMDgtMTggIE1hcnRpbiBSb2Jp
bnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFtXZWJLaXQyXSBV
c2UgWENvbXBvc2l0ZSB3aW5kb3cgZm9yIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDQxNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBhbiBYQ29tcG9zaXRl
IHdpbmRvdyB2aWEgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cgZm9yIFdlYktpdDIgYWNjZWxl
cmF0ZWQKKyAgICAgICAgY29tcG9zaXRpbmcuIFRoaXMgYWxsb3dzIHVzIHRvIGF2b2lkIHVzaW5n
IGEgbmF0aXZlIEdESyB3aW5kb3cgZm9yIG91ciB3aWRnZXRzLAorICAgICAgICBmaXhpbmcgaW50
ZXJhY3Rpb24gd2l0aCBHdGtPdmVybGF5LiBXZSBjYW4gYWxzbyBub3cgaG9vayBkaXJlY3RseSBp
bnRvIHRoZSBHVEsrCisgICAgICAgIGRyYXdpbmcgbG9vcCwgcHJvYmFibHkgbWFraW5nIGFueSBm
dXR1cmUgR1RLKyA0IHBvcnQgc2ltcGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGUpOiBXZSBub3cgaGF2ZSBhIGZvcmVpZ24gUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cgbWVt
YmVyLAorICAgICAgICB3aGljaCB0cmFja3MgdGhlIFdlYlByb2Nlc3MnIG9mZnNjcmVlbiB3aW5k
b3cgdXNlZCBmb3IgQUMuCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVJlYWxpemUpOiBXZSBu
byBsb25nZXIgbmVlZCBhIG5hdGl2ZSB3aW5kb3cgYmVjYXVzZSB3ZSBhcmVuJ3QKKyAgICAgICAg
Y3JlYXRpbmcgYSBHTFggY29udGV4dCBkaXJlY3RseSBmcm9tIHRoZSB3aW5kb3cuIAorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X2Jhc2VfaW5pdCk6IFdlIGRvbid0IG5lZWQgdG8gdHVybiBvZmYg
ZG91YmxlLWJ1ZmZlcmluZyBhbnkgbG9uZ2VyLgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VH
ZXRPckNyZWF0ZVJlZGlyZWN0ZWRXaW5kb3cpOiBUaGlzIGhlbHBlciBpcyByZXNwb25zaWJsZSBm
b3IgZ2V0dGluZworICAgICAgICBhIGNhY2hlZCBYQ29tcG9zaXRlIHdpbmRvdy4KKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdCYXNlRHJhd0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKTogVGhp
cyBoZWxwZXIgZ2V0cyB0aGUgcGl4bWFwCisgICAgICAgIGJhY2tpbmcgdGhlIFhDb21wb3NpdGUg
d2luZG93IGFuZCBwYWludHMgaXQgdG8gdGhlIHdpZGdldCBkcmF3aW5nIGNvbnRleHQuCisgICAg
ICAgICh3ZWJraXRXZWJWaWV3QmFzZURyYXcpOiBVc2Ugd2Via2l0V2ViVmlld0Jhc2VEcmF3QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMgd2hlbgorICAgICAgICBhcHByb3ByaWF0ZS4KKyAg
ICAgICAgKHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFsbG9jYXRpb24pOiBOb3RpZnkgdGhl
IGZvcmVpZ24gcmVkaXJlY3RlZCB3aW5kb3cKKyAgICAgICAgd2hlbiB0aGUgdmlldyByZXNpemVz
LCBzbyB0aGF0IGl0IGtub3dzIHRvIGludmFsaWRhdGUgaXRzIHBpeG1hcC4KKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdCYXNlU2l6ZUFsbG9jYXRlKTogT25seSByZXNpemUgdGhlIFdlYlZpZXcgaWYg
dGhlIGFsbG9jYXRpb24KKyAgICAgICAgcmVhbGx5IGNoYW5nZWQuCisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QmFzZU1hcCk6IFdlIG5vIGxvbmdlciBuZWVkIHRvIG5vdGlmeSB0aGUgV2ViUHJvY2Vz
cyB3aGVuIHRoZQorICAgICAgICB3aWRnZXQgaXMgbWFwcGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oOiBFeHBvc2UgdGhlIGZvbGxvd2luZyB0d28gbWV0aG9k
cyBwdWJsaWNseQorICAgICAgICBzbyB0aGV5IGNhbiBiZSB1c2VkIGJ5IEdUSysncyBXZWJWaWV3
IHdpZGdldC4KKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUltcGw6OmlzSW5BY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJv
eHlJbXBsOjpsYXllclRyZWVDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgIChXZWJQYWdlUHJveHkpOiBBZGQgYSB3YXkgdG8gc2lnbmFsIHRoZSBV
SVByb2Nlc3MgdG8gcXVldWUgYSBkcmF3LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW46IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUGFnZVBy
b3h5R3RrLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW52YWxp
ZGF0ZVdpZGdldCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDogRGl0
dG8uCisgICAgICAgIChXZWJQYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L0xheWVyVHJlZUhvc3RHdGsuY3BwOiBTd2l0Y2ggdG8gdXNpbmcgYSByZWRpcmVjdGVkIFhDb21w
b3NpdGUKKyAgICAgICAgd2luZG93IGFuZCB1c2UgdGhlIHdpbmRvdyBYSUQgYXMgdGhlIExheWVy
VHJlZUNvbnRleHQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVI
b3N0R3RrLmg6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFn
ZUd0ay5jcHA6IEFkZCBhIG1ldGhvZCBmb3IgaW52YWxpZGF0aW5nIHRoZSBVSVByb2Nlc3MKKyAg
ICAgICAgd2lkZ2V0LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnZhbGlkYXRlV2lkZ2V0
KToKKyAgICAgICAgKFdlYktpdCk6CisKIDIwMTItMDgtMTIgIE51bm8gTG9wZXMgIDxubG9wZXNA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBidWlsZCB3aXRoIHJlY2VudCBjbGFuZy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3cuY3BwCmluZGV4IDJlZWM3ZTg0YTAyOWFlZGM0MGZjNTFmZDkwMDlmODcwODNiYmE0
MjcuLjJjMTc2NTAzNDQ0MzcyNGRhODhlYWRlNWU5MDc2ODNiNGYzMDZmMjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93LmNwcApAQCAtNDIsNiArNDIsMTEgQEAgUGFzc093blB0cjxSZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdz4gUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNyZWF0ZShjb25zdAogICAg
IHJldHVybiBhZG9wdFB0cihuZXcgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coc2l6ZSkpOwog
fQogCitQYXNzT3duUHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBSZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdzo6Y3JlYXRlKHVpbnQ2NF90IHdpbmRvd0lkKQoreworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cod2luZG93SWQpKTsKK30KKwog
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KGNv
bnN0IEludFNpemUmIHNpemUpCiAgICAgOiBtX3dpbmRvdygwKQogICAgICwgbV9wYXJlbnRXaW5k
b3coMCkKQEAgLTQ5LDYgKzU0LDcgQEAgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93KGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgLCBtX3N1cmZh
Y2UoMCkKICAgICAsIG1fcGVuZGluZ1Jlc2l6ZVNvdXJjZUlkKDApCiAgICAgLCBtX25lZWRzTmV3
UGl4bWFwQWZ0ZXJSZXNpemUoZmFsc2UpCisgICAgLCBtX293bnNXaW5kb3codHJ1ZSkKIHsKICAg
ICBEaXNwbGF5KiBkaXNwbGF5ID0gR0xDb250ZXh0R0xYOjpzaGFyZWREaXNwbGF5KCk7CiAKQEAg
LTkzLDEyICs5OSwyMyBAQCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhD
b21wb3NpdGVXaW5kb3coY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICByZXNpemVMYXRlcigpOyAv
LyBGb3JjZSB1cGRhdGUgb2YgdGhlIHVzYWJsZSBhcmVhLgogfQogCitSZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3codWludDY0X3Qgd2luZG93SWQp
CisgICAgOiBtX3dpbmRvdyh3aW5kb3dJZCkKKyAgICAsIG1fcGFyZW50V2luZG93KDApCisgICAg
LCBtX3BpeG1hcCgwKQorICAgICwgbV9zdXJmYWNlKDApCisgICAgLCBtX3BlbmRpbmdSZXNpemVT
b3VyY2VJZCgwKQorICAgICwgbV9uZWVkc05ld1BpeG1hcEFmdGVyUmVzaXplKGZhbHNlKQorICAg
ICwgbV9vd25zV2luZG93KGZhbHNlKQoreworfQorCiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dzo6flJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KCkKIHsKICAgICBEaXNwbGF5KiBkaXNwbGF5
ID0gR0xDb250ZXh0R0xYOjpzaGFyZWREaXNwbGF5KCk7Ci0gICAgaWYgKG1fd2luZG93KQorICAg
IGlmIChtX3dpbmRvdyAmJiBtX293bnNXaW5kb3cpCiAgICAgICAgIFhEZXN0cm95V2luZG93KGRp
c3BsYXksIG1fd2luZG93KTsKLSAgICBpZiAobV9wYXJlbnRXaW5kb3cpCisgICAgaWYgKG1fcGFy
ZW50V2luZG93ICYmIG1fb3duc1dpbmRvdykKICAgICAgICAgWERlc3Ryb3lXaW5kb3coZGlzcGxh
eSwgbV9wYXJlbnRXaW5kb3cpOwogICAgIGNsZWFudXBQaXhtYXBBbmRQaXhtYXBTdXJmYWNlKCk7
CiAKQEAgLTE5MCw2ICsyMDcsMjEgQEAgY2Fpcm9fc3VyZmFjZV90KiBSZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdzo6Y2Fpcm9TdXJmYWNlRm9yV2lkZ2V0KEd0a1dpZGdldCogd2kKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogCisgICAgLy8gVGhlIHNpemUgbWF5IGJlIHVuaW5pdGlhbGl6ZWQg
aWYgd2UgZG8gbm90IG93biB0aGlzIHdpbmRvdyAoaXQgYmVsb25ncyB0byBzb21lIG90aGVyIFJl
ZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KS4KKyAgICBpZiAobV9zaXplLmlzRW1wdHkoKSkgewor
ICAgICAgICBpbnQgeCwgeTsKKyAgICAgICAgV2luZG93IHJvb3RXaW5kb3c7CisgICAgICAgIHVu
c2lnbmVkIGludCB3aWR0aCwgaGVpZ2h0LCBib3JkZXJXaWR0aCwgZGVwdGg7CisgICAgICAgIFhH
ZXRHZW9tZXRyeShuZXdQaXhtYXBEaXNwbGF5LCBtX3dpbmRvdywgJnJvb3RXaW5kb3csICZ4LCAm
eSwgJndpZHRoLCAmaGVpZ2h0LCAmYm9yZGVyV2lkdGgsICZkZXB0aCk7CisgICAgICAgIG1fdXNh
YmxlU2l6ZSA9IG1fc2l6ZSA9IEludFNpemUod2lkdGgsIGhlaWdodCk7CisgICAgfQorCisgICAg
aWYgKG1fc2l6ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgY2xlYW51cFBpeG1hcEFuZFBpeG1hcFN1
cmZhY2UoKTsKKyAgICAgICAgWEZyZWVQaXhtYXAobmV3UGl4bWFwRGlzcGxheSwgbmV3UGl4bWFw
KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2Vf
dD4gbmV3U3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVhdGUobmV3UGl4
bWFwRGlzcGxheSwgbmV3UGl4bWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd0F0dHJpYnV0
ZXMudmlzdWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVp
Z2h0KCkpKTsKQEAgLTIxMyw0ICsyNDUsMTAgQEAgY2Fpcm9fc3VyZmFjZV90KiBSZWRpcmVjdGVk
WENvbXBvc2l0ZVdpbmRvdzo6Y2Fpcm9TdXJmYWNlRm9yV2lkZ2V0KEd0a1dpZGdldCogd2kKICAg
ICByZXR1cm4gbV9zdXJmYWNlLmdldCgpOwogfQogCit2b2lkIFJlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93Ojpub3RpZnlSZXNpemVkKCkKK3sKKyAgICBtX3NpemUgPSBtX3VzYWJsZVNpemUgPSBJ
bnRTaXplKCk7CisgICAgbV9uZWVkc05ld1BpeG1hcEFmdGVyUmVzaXplID0gdHJ1ZTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaAppbmRleCAzOWVjN2VkYjI2Yjhk
ZWE0MjZmYmY0ZTY0YTk1ZTI1OWRhNGQ3YTM4Li42ZDlmZGE1NzQzMmJkYjJiYzZmYmZjNWYwNjU3
NzNjY2NkOTNkMzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaApAQCAtMzksMTAgKzM5LDEzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc093blB0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gY3Jl
YXRlKGNvbnN0IEludFNpemUmKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxSZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdz4gY3JlYXRlKHVpbnQ2NF90IHdpbmRvd0lkKTsKICAgICB2aXJ0dWFsIH5S
ZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdygpOwogCiAgICAgY29uc3QgSW50U2l6ZSYgdXNhYmxl
U2l6ZSgpIHsgcmV0dXJuIG1fdXNhYmxlU2l6ZTsgfQogICAgIGNvbnN0IEludFNpemUmIHNpemUo
KSB7IHJldHVybiBtX3NpemU7IH0KKyAgICBXaW5kb3cgd2luZG93SGFuZGxlKCkgeyByZXR1cm4g
bV93aW5kb3c7IH0KKyAgICB2b2lkIG5vdGlmeVJlc2l6ZWQoKTsKIAogICAgIHZvaWQgcmVzaXpl
KGNvbnN0IEludFNpemUmIG5ld1NpemUpOwogICAgIEdMQ29udGV4dCogY29udGV4dCgpOwpAQCAt
NTAsNiArNTMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgUmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3coY29uc3QgSW50U2l6ZSYpOworICAgIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
KHVpbnQ2NF90IHdpbmRvd0lkKTsKIAogICAgIHN0YXRpYyBnYm9vbGVhbiByZXNpemVMYXRlckNh
bGxiYWNrKFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Kik7CiAgICAgdm9pZCByZXNpemVMYXRl
cigpOwpAQCAtNjQsNiArNjgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IG1fc3VyZmFjZTsKICAgICB1bnNpZ25lZCBpbnQgbV9wZW5kaW5nUmVzaXplU291cmNlSWQ7
CiAgICAgYm9vbCBtX25lZWRzTmV3UGl4bWFwQWZ0ZXJSZXNpemU7CisgICAgYm9vbCBtX293bnNX
aW5kb3c7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggNDky
NWI1YTdjMWNlZTljODRmZTU4NDJiY2QwYzFhOTEyMjZlNTk0YS4uZTkzMWQ5OGEzMTJlNmZmMzFh
NjU0OTM3ODAzY2ZlNDJmNGI3YzIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtNjcsNyArNjcsNyBAQAog
I2VuZGlmCiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIGRlZmluZWQoR0RLX1dJTkRP
V0lOR19YMTEpCi0jaW5jbHVkZSA8Z2RrL2dka3guaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93Lmg+CiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKQEAgLTk3LDYgKzk3LDkgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewog
ICAgIHVuc2lnbmVkIGluc3BlY3RvclZpZXdIZWlnaHQ7CiAgICAgR093blB0cjxHZGtFdmVudD4g
Y29udGV4dE1lbnVFdmVudDsKICAgICBXZWJDb250ZXh0TWVudVByb3h5R3RrKiBhY3RpdmVDb250
ZXh0TWVudVByb3h5OworI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgZGVmaW5lZChHREtf
V0lORE9XSU5HX1gxMSkKKyAgICBPd25QdHI8V2ViQ29yZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVX
aW5kb3c+IHJlZGlyZWN0ZWRXaW5kb3c7CisjZW5kaWYKIH07CiAKIEdfREVGSU5FX1RZUEUoV2Vi
S2l0V2ViVmlld0Jhc2UsIHdlYmtpdF93ZWJfdmlld19iYXNlLCBHVEtfVFlQRV9DT05UQUlORVIp
CkBAIC0xNTgsOSArMTYxLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VSZWFsaXpl
KEd0a1dpZGdldCogd2lkZ2V0KQogICAgIGdpbnQgYXR0cmlidXRlc01hc2sgPSBHREtfV0FfWCB8
IEdES19XQV9ZIHwgR0RLX1dBX1ZJU1VBTDsKIAogICAgIEdka1dpbmRvdyogd2luZG93ID0gZ2Rr
X3dpbmRvd19uZXcoZ3RrX3dpZGdldF9nZXRfcGFyZW50X3dpbmRvdyh3aWRnZXQpLCAmYXR0cmli
dXRlcywgYXR0cmlidXRlc01hc2spOwotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICBn
ZGtfd2luZG93X2Vuc3VyZV9uYXRpdmUod2luZG93KTsKLSNlbmRpZgogICAgIGd0a193aWRnZXRf
c2V0X3dpbmRvdyh3aWRnZXQsIHdpbmRvdyk7CiAgICAgZ2RrX3dpbmRvd19zZXRfdXNlcl9kYXRh
KHdpbmRvdywgd2lkZ2V0KTsKIApAQCAtMjczLDkgKzI3MywzNyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3ZpZXdfYmFzZV9pbml0KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFz
ZSkKICAgICBndGtfZHJhZ19kZXN0X3NldF90YXJnZXRfbGlzdCh2aWV3V2lkZ2V0LCBQYXN0ZWJv
YXJkSGVscGVyOjpkZWZhdWx0UGFzdGVib2FyZEhlbHBlcigpLT50YXJnZXRMaXN0KCkpOwogfQog
CisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAKK3N0YXRpYyBSZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdyogd2Via2l0V2ViVmlld0Jhc2VHZXRPckNyZWF0ZVJlZGlyZWN0ZWRXaW5kb3coV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXll
clRyZWVDb250ZXh0KQoreworICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdl
YlZpZXdCYXNlLT5wcml2OworICAgIGlmIChwcml2LT5yZWRpcmVjdGVkV2luZG93ICYmIGxheWVy
VHJlZUNvbnRleHQud2luZG93SGFuZGxlICE9IHByaXYtPnJlZGlyZWN0ZWRXaW5kb3ctPndpbmRv
d0hhbmRsZSgpKQorICAgICAgICBwcml2LT5yZWRpcmVjdGVkV2luZG93ID0gbnVsbHB0cjsKKwor
ICAgIGlmICghcHJpdi0+cmVkaXJlY3RlZFdpbmRvdykKKyAgICAgICAgcHJpdi0+cmVkaXJlY3Rl
ZFdpbmRvdyA9IFdlYkNvcmU6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpjcmVhdGUobGF5
ZXJUcmVlQ29udGV4dC53aW5kb3dIYW5kbGUpOworCisgICAgcmV0dXJuIHByaXYtPnJlZGlyZWN0
ZWRXaW5kb3cuZ2V0KCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRHJhd0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFz
ZSwgRHJhd2luZ0FyZWFQcm94eUltcGwqIGRyYXdpbmdBcmVhLCBjYWlyb190KiBjciwgR2RrUmVj
dGFuZ2xlKiBjbGlwUmVjdCkKK3sKKyAgICBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyogcmVk
aXJlY3RlZFdpbmRvdyA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0T3JDcmVhdGVSZWRpcmVjdGVkV2lu
ZG93KHdlYlZpZXdCYXNlLCBkcmF3aW5nQXJlYS0+bGF5ZXJUcmVlQ29udGV4dCgpKTsKKyAgICBj
YWlyb19zdXJmYWNlX3QqIHdpbmRvd1N1cmZhY2UgPSByZWRpcmVjdGVkV2luZG93LT5jYWlyb1N1
cmZhY2VGb3JXaWRnZXQoR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSkpOworICAgIGlmICghd2luZG93
U3VyZmFjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCBjbGlw
UmVjdC0+eCwgY2xpcFJlY3QtPnksIGNsaXBSZWN0LT53aWR0aCwgY2xpcFJlY3QtPmhlaWdodCk7
CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCB3aW5kb3dTdXJmYWNlLCAwLCAwKTsK
KyAgICBjYWlyb19zZXRfb3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7CisgICAg
Y2Fpcm9fZmlsbChjcik7Cit9CisjZW5kaWYKKwogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZp
ZXdCYXNlRHJhdyhHdGtXaWRnZXQqIHdpZGdldCwgY2Fpcm9fdCogY3IpCiB7Ci0gICAgRHJhd2lu
Z0FyZWFQcm94eSogZHJhd2luZ0FyZWEgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpLT5w
cml2LT5wYWdlUHJveHktPmRyYXdpbmdBcmVhKCk7CisgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YlZpZXdCYXNlID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KTsKKyAgICBEcmF3aW5nQXJl
YVByb3h5SW1wbCogZHJhd2luZ0FyZWEgPSBzdGF0aWNfY2FzdDxEcmF3aW5nQXJlYVByb3h5SW1w
bCo+KHdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJveHktPmRyYXdpbmdBcmVhKCkpOwogICAgIGlm
ICghZHJhd2luZ0FyZWEpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIApAQCAtMjgzLDkgKzMxMSwx
NSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VEcmF3KEd0a1dpZGdldCogd2lk
Z2V0LCBjYWlyb190KiBjcikKICAgICBpZiAoIWdka19jYWlyb19nZXRfY2xpcF9yZWN0YW5nbGUo
Y3IsICZjbGlwUmVjdCkpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAotICAgIFdlYkNvcmU6OlJl
Z2lvbiB1bnBhaW50ZWRSZWdpb247IC8vIFRoaXMgaXMgc2ltcGx5IHVudXNlZC4KLSAgICBzdGF0
aWNfY2FzdDxEcmF3aW5nQXJlYVByb3h5SW1wbCo+KGRyYXdpbmdBcmVhKS0+cGFpbnQoY3IsIGNs
aXBSZWN0LCB1bnBhaW50ZWRSZWdpb24pOworI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgCisg
ICAgaWYgKGRyYXdpbmdBcmVhLT5pc0luQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSkgewor
ICAgICAgICB3ZWJraXRXZWJWaWV3QmFzZURyYXdBY2NlbGVyYXRlZENvbXBvc2l0aW5nUmVzdWx0
cyh3ZWJWaWV3QmFzZSwgZHJhd2luZ0FyZWEsIGNyLCAmY2xpcFJlY3QpOworICAgICAgICByZXR1
cm4gRkFMU0U7CisgICAgfQorI2VuZGlmCiAKKyAgICBXZWJDb3JlOjpSZWdpb24gdW5wYWludGVk
UmVnaW9uOworICAgIHN0YXRpY19jYXN0PERyYXdpbmdBcmVhUHJveHlJbXBsKj4oZHJhd2luZ0Fy
ZWEpLT5wYWludChjciwgY2xpcFJlY3QsIHVucGFpbnRlZFJlZ2lvbik7CiAgICAgcmV0dXJuIEZB
TFNFOwogfQogCkBAIC0zMjAsOSArMzU0LDE0IEBAIHN0YXRpYyB2b2lkIHJlc2l6ZVdlYktpdFdl
YlZpZXdCYXNlRnJvbUFsbG9jYXRpb24oV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlCiAg
ICAgICAgIHZpZXdSZWN0LnNldEhlaWdodChhbGxvY2F0aW9uLT5oZWlnaHQgLSBwcml2LT5pbnNw
ZWN0b3JWaWV3SGVpZ2h0KTsKICAgICB9CiAKLSAgICBpZiAocHJpdi0+cGFnZVByb3h5LT5kcmF3
aW5nQXJlYSgpKQorICAgIERyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhID0gcHJpdi0+cGFn
ZVByb3h5LT5kcmF3aW5nQXJlYSgpOworICAgIGlmIChkcmF3aW5nQXJlYSkgewogICAgICAgICBw
cml2LT5wYWdlUHJveHktPmRyYXdpbmdBcmVhKCktPnNldFNpemUodmlld1JlY3Quc2l6ZSgpLCBJ
bnRTaXplKCkpOwogCisgICAgICAgIGlmIChzdGF0aWNfY2FzdDxEcmF3aW5nQXJlYVByb3h5SW1w
bCo+KGRyYXdpbmdBcmVhKS0+aXNJbkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgJiYgcHJp
di0+cmVkaXJlY3RlZFdpbmRvdykKKyAgICAgICAgICAgIHByaXYtPnJlZGlyZWN0ZWRXaW5kb3ct
Pm5vdGlmeVJlc2l6ZWQoKTsKKyAgICB9CisKICAgICBHdGtXaWRnZXQqIHRvcGxldmVsID0gZ3Rr
X3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSkpOwogICAgIGlmICh3
aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3codG9wbGV2ZWwpKQogICAgICAgICB3ZWJraXRX
ZWJWaWV3QmFzZU5vdGlmeVJlc2l6ZXJTaXplRm9yV2luZG93KHdlYlZpZXdCYXNlLCBHVEtfV0lO
RE9XKHRvcGxldmVsKSk7CkBAIC0zMzAsNiArMzY5LDkgQEAgc3RhdGljIHZvaWQgcmVzaXplV2Vi
S2l0V2ViVmlld0Jhc2VGcm9tQWxsb2NhdGlvbihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jh
c2UKIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTaXplQWxsb2NhdGUoR3RrV2lkZ2V0
KiB3aWRnZXQsIEd0a0FsbG9jYXRpb24qIGFsbG9jYXRpb24pCiB7CisgICAgR3RrQWxsb2NhdGlv
biBvbGRBbGxvY2F0aW9uOworICAgIGd0a193aWRnZXRfZ2V0X2FsbG9jYXRpb24od2lkZ2V0LCAm
b2xkQWxsb2NhdGlvbik7CisKICAgICBHVEtfV0lER0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19i
YXNlX3BhcmVudF9jbGFzcyktPnNpemVfYWxsb2NhdGUod2lkZ2V0LCBhbGxvY2F0aW9uKTsKIAog
ICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNF
KHdpZGdldCk7CkBAIC0zMzcsNiArMzc5LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jh
c2VTaXplQWxsb2NhdGUoR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a0FsbG9jYXRpb24qIGFsbG8KICAg
ICAgICAgd2ViVmlld0Jhc2UtPnByaXYtPm5lZWRzUmVzaXplT25NYXAgPSB0cnVlOwogICAgICAg
ICByZXR1cm47CiAgICAgfQorCisgICAgaWYgKG9sZEFsbG9jYXRpb24ud2lkdGggPT0gYWxsb2Nh
dGlvbi0+d2lkdGggJiYgb2xkQWxsb2NhdGlvbi5oZWlnaHQgPT0gYWxsb2NhdGlvbi0+aGVpZ2h0
KQorICAgICAgICByZXR1cm47CiAgICAgcmVzaXplV2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxsb2Nh
dGlvbih3ZWJWaWV3QmFzZSwgYWxsb2NhdGlvbik7CiB9CiAKQEAgLTM0NSwxMyArMzkwLDYgQEAg
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VNYXAoR3RrV2lkZ2V0KiB3aWRnZXQpCiAgICAg
R1RLX1dJREdFVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9wYXJlbnRfY2xhc3MpLT5tYXAo
d2lkZ2V0KTsKIAogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9X
RUJfVklFV19CQVNFKHdpZGdldCk7Ci0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiBkZWZp
bmVkKEdES19XSU5ET1dJTkdfWDExKQotICAgIEdka1dpbmRvdyogZ2RrV2luZG93ID0gZ3RrX3dp
ZGdldF9nZXRfd2luZG93KHdpZGdldCk7Ci0gICAgQVNTRVJUKGdka1dpbmRvdyk7Ci0gICAgaWYg
KGdka193aW5kb3dfaGFzX25hdGl2ZShnZGtXaW5kb3cpKQotICAgICAgICB3ZWJWaWV3QmFzZS0+
cHJpdi0+cGFnZVByb3h5LT53aWRnZXRNYXBwZWQoR0RLX1dJTkRPV19YSUQoZ2RrV2luZG93KSk7
Ci0jZW5kaWYKLQogICAgIGlmICghd2ViVmlld0Jhc2UtPnByaXYtPm5lZWRzUmVzaXplT25NYXAp
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHlJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2lu
Z0FyZWFQcm94eUltcGwuaAppbmRleCAwYzlmMDRmOGUwMmRhOGYwY2RiYzBhMzAxMGY1ZjA0MWZh
MzM5OTg4Li5hZGQ2Y2EzOTA3OTEwNGJlYjQ1NjBjYWJiZjQ1NTNmNjFkNjYyNzg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaApAQCAtNDgs
NiArNDgsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBhaW50KEJhY2tpbmdTdG9yZTo6UGxhdGZv
cm1HcmFwaGljc0NvbnRleHQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpSZWdp
b24mIHVucGFpbnRlZFJlZ2lvbik7CiAKKyAgICBib29sIGlzSW5BY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuICFtX2xheWVyVHJlZUNvbnRleHQuaXNFbXB0eSgpOyB9
CisgICAgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCgpIHsgcmV0dXJu
IG1fbGF5ZXJUcmVlQ29udGV4dDsgfQorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERyYXdpbmdB
cmVhUHJveHlJbXBsKFdlYlBhZ2VQcm94eSopOwogCkBAIC03OSw3ICs4Miw2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKTsKICAgICB2b2lkIHVw
ZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKTsK
IAotICAgIGJvb2wgaXNJbkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1
cm4gIW1fbGF5ZXJUcmVlQ29udGV4dC5pc0VtcHR5KCk7IH0KIAogI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZpc2libGVDb250ZW50c1JlY3QsIGZsb2F0IHNjYWxlLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBiODhhNWQ0OTg1NTU4NTZhNmI3MDEzNjY5YTYwMDg5
ZjdkYjRmYWQ4Li5mMjRhMDJiMDY1ZDhiYzAxOGM2NzRjMDAxNGY2NmJhNDIzNDNhZTQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC03MDksNyArNzA5LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgTmF0aXZlV2ViTW91c2VFdmVudCogY3VycmVudGx5UHJvY2Vz
c2VkTW91c2VEb3duRXZlbnQoKTsKIAogI2lmIFBMQVRGT1JNKEdUSykgJiYgVVNFKFRFWFRVUkVf
TUFQUEVSX0dMKQotICAgIHZvaWQgd2lkZ2V0TWFwcGVkKHVpbnQ2NF90IG5hdGl2ZVdpbmRvd0lk
KTsKKyAgICB2b2lkIGludmFsaWRhdGVXaWRnZXQoKTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRT
dXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzKGJvb2wgZmxhZykgeyBtX3N1cHByZXNzVmlzaWJpbGl0
eVVwZGF0ZXMgPSBmbGFnOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA3ZmE4MWJlNWE1ZWVkN2UwODhjOWQ3ODI4M2JkMTUz
MmY2M2ZjYmZiLi5mYjQ3NTkwYzgxMjk0YTM0NzUwMDZjM2U1NDZjMWZlNzhlMDZmYTE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
QEAgLTE3Niw2ICsxNzYsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICAjIFN1
cHBvcnQgZm9yIGNvbm5lY3RpbmcgdGhlIEFjY2Vzc2liaWxpdHkgd29ybGRzIG9mIHRoZSBVSSBh
bmQgdGhlIFdlYiBwcm9jZXNzZXMKICAgICBCaW5kQWNjZXNzaWJpbGl0eVRyZWUoV1RGOjpTdHJp
bmcgcGx1Z0lEKQogI2VuZGlmCisjCisjaWYgUExBVEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9N
QVBQRVJfR0wpCisgICAgSW52YWxpZGF0ZVdpZGdldCgpCisjZW5kaWYKIAogICAgICMgQmFja0Zv
cndhcmQgbWVzc2FnZXMKICAgICBCYWNrRm9yd2FyZEFkZEl0ZW0odWludDY0X3QgaXRlbUlEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCmlu
ZGV4IGFjMjZjMGNiOGZkYmI4YzllNzI1ZjkzM2I4NDc4YTJhNGRjYzBmN2MuLjQ1ZmQ5YzllMTEx
ZmEyYjI2YWU2YjljNjgxYzUxODcwYmQ5ZmI5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKQEAgLTExMCw5ICsxMTAsOSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBmcmFtZQogfQogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotdm9p
ZCBXZWJQYWdlUHJveHk6OndpZGdldE1hcHBlZCh1aW50NjRfdCBuYXRpdmVXaW5kb3dJZCkKK3Zv
aWQgV2ViUGFnZVByb3h5OjppbnZhbGlkYXRlV2lkZ2V0KCkKIHsKLSAgICBwcm9jZXNzKCktPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OldpZGdldE1hcHBlZChuYXRpdmVXaW5kb3dJZCksIG1fcGFn
ZUlEKTsKKyAgICBndGtfd2lkZ2V0X3F1ZXVlX2RyYXcoc3RhdGljX2Nhc3Q8UGFnZUNsaWVudElt
cGwqPihtX3BhZ2VDbGllbnQpLT52aWV3V2lkZ2V0KCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGJiZmFiZDA0YWE3M2I0
ZmJjYzk1NTIwNTg1MmVmYzUzOTg2MTdkNmYuLmRlOGYwYTdhNDM4NTFkYmYxYjI4OWFjMmYyOWQ1
MTkxNGExODliMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaApAQCAtNDUzLDcgKzQ1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUFjY2Vzc2li
aWxpdHlUcmVlKCk7CiAgICAgYm9vbCBoYW5kbGVNb3VzZVByZXNzZWRFdmVudChjb25zdCBXZWJD
b3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCi0g
ICAgdm9pZCB3aWRnZXRNYXBwZWQoaW50NjRfdCBuYXRpdmVXaW5kb3dIYW5kbGUpOworICAgIHZv
aWQgaW52YWxpZGF0ZVdpZGdldCgpOwogI2VuZGlmCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBl
M2ZmMjNjYWRjYWE4MmZmODM4ZWMzYTA0MDZmOWE5YjQxYzNiMGNhLi4xMDYxN2FmYmViZjMzMzNh
ZGYxZTVkMTBmOTczMGYzMGZhZTc0MjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjk1LDggKzI5NSw0IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQog
ICAgIFNldFZpc2liaWxpdHlTdGF0ZShpbnQgdmlzaWJpbGl0eVN0YXRlLCBib29sIGlzSW5pdGlh
bFN0YXRlKTsKICNlbmRpZgotCi0jaWYgUExBVEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpCi0gICAgV2lkZ2V0TWFwcGVkKGludDY0X3QgaWQpCi0jZW5kaWYKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhv
c3RHdGsuY3BwCmluZGV4IGE0MTJhODUwMDlmYzkzZDg3MDc0YzdiMzI2NWRiZDlkMGQxZDllMjIu
LmEwYjkzM2MxYjM2NzJiMDM2MDdlYWEwYzgzNWQ2Zjc3ODYwNDdmZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0
R3RrLmNwcApAQCAtNjQsMjQgKzY0LDEyIEBAIExheWVyVHJlZUhvc3RHdGs6OkxheWVyVHJlZUhv
c3RHdGsoV2ViUGFnZSogd2ViUGFnZSkKICAgICA6IExheWVyVHJlZUhvc3Qod2ViUGFnZSkKICAg
ICAsIG1faXNWYWxpZCh0cnVlKQogICAgICwgbV9ub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1
c2goZmFsc2UpCisgICAgLCBtX3JlZGlyZWN0ZWRXaW5kb3coUmVkaXJlY3RlZFhDb21wb3NpdGVX
aW5kb3c6OmNyZWF0ZShJbnRTaXplKDEsIDEpKSkKICAgICAsIG1fbGF5ZXJGbHVzaFNjaGVkdWxp
bmdFbmFibGVkKHRydWUpCiAgICAgLCBtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrSWQoMCkKIHsK
IH0KIAotR0xDb250ZXh0KiBMYXllclRyZWVIb3N0R3RrOjpnbENvbnRleHQoKQotewotICAgIGlm
IChtX2NvbnRleHQpCi0gICAgICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7Ci0KLSAgICB1aW50
NjRfdCB3aW5kb3dIYW5kbGUgPSBtX3dlYlBhZ2UtPm5hdGl2ZVdpbmRvd0hhbmRsZSgpOwotICAg
IGlmICghd2luZG93SGFuZGxlKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIG1fY29udGV4dCA9
IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyh3aW5kb3dIYW5kbGUsIEdMQ29udGV4
dDo6c2hhcmluZ0NvbnRleHQoKSwgR0xDb250ZXh0OjpTaW5nbGVCdWZmZXIpOwotICAgIHJldHVy
biBtX2NvbnRleHQuZ2V0KCk7Ci19Ci0KIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6aW5pdGlhbGl6
ZSgpCiB7CiAgICAgbV9yb290TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUodGhpcyk7CkBA
IC0xMDQsMTMgKzkyLDEzIEBAIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6aW5pdGlhbGl6ZSgpCiAg
ICAgbV9yb290TGF5ZXItPmFkZENoaWxkKG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci5nZXQo
KSk7CiAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsK
IAotICAgIG1fbGF5ZXJUcmVlQ29udGV4dC53aW5kb3dIYW5kbGUgPSBtX3dlYlBhZ2UtPm5hdGl2
ZVdpbmRvd0hhbmRsZSgpOwotCi0gICAgR0xDb250ZXh0KiBjb250ZXh0ID0gZ2xDb250ZXh0KCk7
CisgICAgbV9yZWRpcmVjdGVkV2luZG93LT5yZXNpemUobV93ZWJQYWdlLT5zaXplKCkpOworICAg
IEdMQ29udGV4dCogY29udGV4dCA9IG1fcmVkaXJlY3RlZFdpbmRvdy0+Y29udGV4dCgpOwogICAg
IGlmICghY29udGV4dCkgewogICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KKyAgICBtX2xheWVyVHJlZUNvbnRleHQud2luZG93SGFuZGxlID0gbV9yZWRp
cmVjdGVkV2luZG93LT53aW5kb3dIYW5kbGUoKTsKIAogICAgIC8vIFRoZSBjcmVhdGlvbiBvZiB0
aGUgVGV4dHVyZU1hcHBlciBuZWVkcyBhbiBhY3RpdmUgT3BlbkdMIGNvbnRleHQuCiAgICAgY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CkBAIC0xNjEsNyArMTQ5LDYgQEAgdm9pZCBMYXll
clRyZWVIb3N0R3RrOjppbnZhbGlkYXRlKCkKICAgICBtX3BhZ2VPdmVybGF5TGF5ZXIgPSBudWxs
cHRyOwogICAgIG1fdGV4dHVyZU1hcHBlciA9IG51bGxwdHI7CiAKLSAgICBtX2NvbnRleHQgPSBu
dWxscHRyOwogICAgIG1faXNWYWxpZCA9IGZhbHNlOwogfQogCkBAIC0xODMsNiArMTcwLDggQEAg
dm9pZCBMYXllclRyZWVIb3N0R3RrOjpzaXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIG5ld1Np
emUpCiB7CiAgICAgaWYgKG1fcm9vdExheWVyLT5zaXplKCkgPT0gbmV3U2l6ZSkKICAgICAgICAg
cmV0dXJuOworCisgICAgbV9yZWRpcmVjdGVkV2luZG93LT5yZXNpemUobmV3U2l6ZSk7CiAgICAg
bV9yb290TGF5ZXItPnNldFNpemUobmV3U2l6ZSk7CiAKICAgICAvLyBJZiB0aGUgbmV3U2l6ZSBl
eHBvc2VzIG5ldyBhcmVhcyBvZiB0aGUgbm9uLWNvbXBvc2l0ZWQgY29udGVudCBhIHNldE5lZWRz
RGlzcGxheSBpcyBuZWVkZWQKQEAgLTI5MywyMSArMjgyLDIxIEBAIGJvb2wgTGF5ZXJUcmVlSG9z
dEd0azo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKIAogdm9pZCBMYXllclRyZWVIb3N0R3Rr
Ojpjb21wb3NpdGVMYXllcnNUb0NvbnRleHQoKQogewotICAgIEdMQ29udGV4dCogY29udGV4dCA9
IGdsQ29udGV4dCgpOworICAgIEdMQ29udGV4dCogY29udGV4dCA9IG1fcmVkaXJlY3RlZFdpbmRv
dy0+Y29udGV4dCgpOwogICAgIGlmICghY29udGV4dCB8fCAhY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRoZSB3aW5kb3cgc2l6ZSBtYXkg
YmUgb3V0IG9mIHN5bmMgd2l0aCB0aGUgcGFnZSBzaXplIGF0IHRoaXMgcG9pbnQsIGFuZCBnZXR0
aW5nCiAgICAgLy8gdGhlIHZpZXdwb3J0IHBhcmFtZXRlcnMgaW5jb3JyZWN0LCBtZWFucyB0aGF0
IHRoZSBjb250ZW50IHdpbGwgYmUgbWlzcGxhY2VkLiBUaHVzCiAgICAgLy8gd2Ugc2V0IHRoZSB2
aWV3cG9ydCBwYXJhbWV0ZXJzIGRpcmVjdGx5IGZyb20gdGhlIHdpbmRvdyBzaXplLgotICAgIElu
dFNpemUgY29udGV4dFNpemUgPSBtX2NvbnRleHQtPmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKTsK
KyAgICBJbnRTaXplIGNvbnRleHRTaXplID0gY29udGV4dC0+ZGVmYXVsdEZyYW1lQnVmZmVyU2l6
ZSgpOwogICAgIGdsVmlld3BvcnQoMCwgMCwgY29udGV4dFNpemUud2lkdGgoKSwgY29udGV4dFNp
emUuaGVpZ2h0KCkpOwogCiAgICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpblBhaW50aW5nKCk7CiAg
ICAgdG9UZXh0dXJlTWFwcGVyTGF5ZXIobV9yb290TGF5ZXIuZ2V0KCkpLT5wYWludCgpOwogICAg
IG1fdGV4dHVyZU1hcHBlci0+ZW5kUGFpbnRpbmcoKTsKIAotICAgIGNvbnRleHQtPnN3YXBCdWZm
ZXJzKCk7CisgICAgZ2xGbHVzaCgpOwogfQogCiB2b2lkIExheWVyVHJlZUhvc3RHdGs6OmZsdXNo
QW5kUmVuZGVyTGF5ZXJzKCkKQEAgLTMyMCw3ICszMDksNyBAQCB2b2lkIExheWVyVHJlZUhvc3RH
dGs6OmZsdXNoQW5kUmVuZGVyTGF5ZXJzKCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBHTENvbnRleHQqIGNvbnRleHQgPSBnbENvbnRleHQoKTsKKyAgICBHTENvbnRleHQqIGNv
bnRleHQgPSBtX3JlZGlyZWN0ZWRXaW5kb3ctPmNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQg
fHwgIWNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKQEAg
LTMyOSw2ICszMTgsNyBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OmZsdXNoQW5kUmVuZGVyTGF5
ZXJzKCkKIAogICAgIC8vIE91ciBtb2RlbCBpcyB2ZXJ5IHNpbXBsZS4gV2UgYWx3YXlzIGNvbXBv
c2l0ZSBhbmQgcmVuZGVyIHRoZSB0cmVlIGltbWVkaWF0ZWx5IGFmdGVyIHVwZGF0aW5nIGl0Lgog
ICAgIGNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dCgpOworICAgIG1fd2ViUGFnZS0+aW52YWxpZGF0
ZVdpZGdldCgpOwogCiAgICAgaWYgKG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoKSB7
CiAgICAgICAgIC8vIExldCB0aGUgZHJhd2luZyBhcmVhIGtub3cgdGhhdCB3ZSd2ZSBkb25lIGEg
Zmx1c2ggb2YgdGhlIGxheWVyIGNoYW5nZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCmluZGV4IDA2MDU3MGI2
NDkxNDhkZjU1M2M4MDNiNDc1ZmY0ZjQ5NDAyNDI1YjYuLjZhNThkNTk1NGIzMjcwYmQwNmFjZmFj
NWJkMzU4N2ZjMmY2ZDhiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HTENvbnRl
eHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDbGllbnQuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Lmg+CiAjaW5jbHVkZSA8d3RmL093
blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTk5LDcgKzEwMCw3IEBAIHByaXZhdGU6
CiAgICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fbm9uQ29tcG9zaXRlZENvbnRl
bnRMYXllcjsKICAgICBPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9wYWdlT3Zlcmxh
eUxheWVyOwogICAgIE93blB0cjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyPiBtX3RleHR1cmVNYXBw
ZXI7Ci0gICAgT3duUHRyPFdlYkNvcmU6OkdMQ29udGV4dD4gbV9jb250ZXh0OworICAgIE93blB0
cjxXZWJDb3JlOjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gbV9yZWRpcmVjdGVkV2luZG93
OwogICAgIGJvb2wgbV9sYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQ7CiAgICAgdW5zaWduZWQg
bV9sYXllckZsdXNoVGltZXJDYWxsYmFja0lkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCmluZGV4IDMwYWFhNDAzN2Y3
YzQ3ZDE0ZDU2YTQ3YzcxZWFhYzY3M2JjYTgyNDIuLjY5YzgzNGRlMjAyMTg3ZjZhODBiYmZkNzA3
OTJiNWZjNmU0OWMzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcApAQCAtMTU1LDEzICsxNTUsNiBAQCBQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gV2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VEYXRhRm9yVVJMKGNvbnN0IEtV
UkwmKQogICAgIHJldHVybiAwOwogfQogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotdm9p
ZCBXZWJQYWdlOjp3aWRnZXRNYXBwZWQoaW50NjRfdCBuYXRpdmVXaW5kb3dIYW5kbGUpCi17Ci0g
ICAgbV9uYXRpdmVXaW5kb3dIYW5kbGUgPSBuYXRpdmVXaW5kb3dIYW5kbGU7Ci19Ci0jZW5kaWYK
LQogYm9vbCBXZWJQYWdlOjpoYW5kbGVNb3VzZVByZXNzZWRFdmVudChjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIHBsYXRmb3JtTW91c2VFdmVudCkKIHsKICAgICBib29sIHJldHVyblZhbHVlID0g
ZmFsc2U7CkBAIC0xODcsNCArMTgwLDExIEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxlTW91c2VQcmVz
c2VkRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9ybU1vdXNlRXZlCiAgICAg
cmV0dXJuIHJldHVyblZhbHVlOwogfQogCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQordm9p
ZCBXZWJQYWdlOjppbnZhbGlkYXRlV2lkZ2V0KCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkludmFsaWRhdGVXaWRnZXQoKSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159865</attachid>
            <date>2012-08-21 23:17:20 -0700</date>
            <delta_ts>2012-09-03 16:15:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94417-20120821231720.patch</filename>
            <type>text/plain</type>
            <size>26825</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGM0N2NlZDkxODI5N2Qy
MmU5NTUzN2RlODkzNGZmZDAyZTFkZDAxZS4uZDcxNGYzMWE5YWJhZWVmOTFhMTExNDM1YmU0NTcx
YmJkNWYwMzg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM2IEBACiAyMDEyLTA4LTIxICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAorICAgICAgICBbR1RLXSBbV2Vi
S2l0Ml0gVXNlIFhDb21wb3NpdGUgd2luZG93IGZvciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ0MTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYW4gWENv
bXBvc2l0ZSB3aW5kb3cgdmlhIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93IGZvciBXZWJLaXQy
IGFjY2VsZXJhdGVkCisgICAgICAgIGNvbXBvc2l0aW5nLiBUaGlzIGFsbG93cyB1cyB0byBhdm9p
ZCB1c2luZyBhIG5hdGl2ZSBHREsgd2luZG93IGZvciBvdXIgd2lkZ2V0cywKKyAgICAgICAgZml4
aW5nIGludGVyYWN0aW9uIHdpdGggR3RrT3ZlcmxheS4gV2UgY2FuIGFsc28gbm93IGhvb2sgZGly
ZWN0bHkgaW50byB0aGUgR1RLKworICAgICAgICBkcmF3aW5nIGxvb3AsIHByb2JhYmx5IG1ha2lu
ZyBhbnkgZnV0dXJlIEdUSysgNCBwb3J0IHNpbXBsZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LiBUaGVzZSBjaGFuZ2VzIGFyZSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIGNvbXBvc2l0aW5nIHRlc3Rz
IGFuZCBmdXJ0aGVybW9yZSwKKyAgICAgICAgYWxsb3cgcGl4ZWwgZHVtcGluZyBvZiBjb21wb3Np
dGluZyByZXN1bHRzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9z
aXRlV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2lu
ZG93OjpjcmVhdGUpOiBBbGxvdyBjcmVhdGluZyBhICJmb3JlaWduIiBYQ29tcG9zaXRlCisgICAg
ICAgIHdpbmRvdywgd2hpY2ggZG9lc24ndCBhY3R1YWxseSBjcmVhdGUgdGhlIFgxMSB3aW5kb3cs
IGJ1dCBhdHRhY2hlcyB0byBvbmUgZ2l2ZW4gaXRzCisgICAgICAgIFhJRC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdyk6IFRoZSBuZXcgY29uc3RydWN0b3IKKyAgICAgICAgZm9yIHRoZSBmb3JlaWduIHdpbmRv
dy4KKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojp+UmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3cpOiBJZiB0aGUgd2luZG93IGlzCisgICAgICAgIGZvcmVpZ24s
IGRvbid0IGRlc3Ryb3kgaXQgd2hlbiB0aGlzIG9iamVjdCBkaWVzLgorICAgICAgICAoV2ViQ29y
ZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNhaXJvU3VyZmFjZUZvcldpZGdldCk6IFF1
ZXJ5IHRoZSBzaXplIGlmIHdlCisgICAgICAgIGRvbid0IGtub3cgaXQsIHdoaWNoIHdlIHdvbid0
IGlmIHdlIHdlcmUgbm90IHJlc3BvbnNpYmxlIGZvciByZXNpemluZyB0aGUgd2luZG93IGkuZS4K
KyAgICAgICAgd2UgYXJlIGEgZm9yZWlnbiB3aW5kb3cuCisgICAgICAgIChXZWJDb3JlOjpSZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6bm90aWZ5UmVzaXplZCk6IEludmFsaWRhdGUgdGhlIFBp
eG1hcCBhbmQgc2l6ZQorICAgICAgICB3aGVuIHdlIGtub3cgdGhlIHdpbmRvdyBoYXMgYmVlbiBy
ZXNpemVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dy5oOiBOZXcgbWV0aG9kcyBhbmQgbWVtYmVycyB0byB0cmFjayBmb3JlaWduCisgICAgICAgIHdp
bmRvd3MuCisKKzIwMTItMDgtMjEgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEu
Y29tPgorCiAgICAgICAgIFtHVEtdIFVzaW5nIGEgbmF0aXZlIHdpbmRvdyBmb3IgdGhlIFdlYlZp
ZXcgYnJlYWtzIEd0a092ZXJsYXkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkwMDg1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlMDI2NTdiMmRiNTYzNDY3Y2Q3Yzkz
ZGEwY2JlMDBkMjY3ZDQ5OWE1Li4yZGQyMzBkMWNhZWJmMmViNjEzMjQ3NGU5N2FhYTM2MmM1MTQ4
MWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTQgQEAKIDIwMTItMDgtMjEgIE1hcnRpbiBSb2Jp
bnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCisgICAgICAgIFtHVEtdIFtXZWJLaXQyXSBV
c2UgWENvbXBvc2l0ZSB3aW5kb3cgZm9yIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDQxNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBhbiBYQ29tcG9zaXRl
IHdpbmRvdyB2aWEgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cgZm9yIFdlYktpdDIgYWNjZWxl
cmF0ZWQKKyAgICAgICAgY29tcG9zaXRpbmcuIFRoaXMgYWxsb3dzIHVzIHRvIGF2b2lkIHVzaW5n
IGEgbmF0aXZlIEdESyB3aW5kb3cgZm9yIG91ciB3aWRnZXRzLAorICAgICAgICBmaXhpbmcgaW50
ZXJhY3Rpb24gd2l0aCBHdGtPdmVybGF5LiBXZSBjYW4gYWxzbyBub3cgaG9vayBkaXJlY3RseSBp
bnRvIHRoZSBHVEsrCisgICAgICAgIGRyYXdpbmcgbG9vcCwgcHJvYmFibHkgbWFraW5nIGFueSBm
dXR1cmUgR1RLKyA0IHBvcnQgc2ltcGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGUpOiBXZSBub3cgaGF2ZSBhIGZvcmVpZ24gUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cgbWVt
YmVyLAorICAgICAgICB3aGljaCB0cmFja3MgdGhlIFdlYlByb2Nlc3MnIG9mZnNjcmVlbiB3aW5k
b3cgdXNlZCBmb3IgQUMuCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVJlYWxpemUpOiBXZSBu
byBsb25nZXIgbmVlZCBhIG5hdGl2ZSB3aW5kb3cgYmVjYXVzZSB3ZSBhcmVuJ3QKKyAgICAgICAg
Y3JlYXRpbmcgYSBHTFggY29udGV4dCBkaXJlY3RseSBmcm9tIHRoZSB3aW5kb3cuIAorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X2Jhc2VfaW5pdCk6IFdlIGRvbid0IG5lZWQgdG8gdHVybiBvZmYg
ZG91YmxlLWJ1ZmZlcmluZyBhbnkgbG9uZ2VyLgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VH
ZXRPckNyZWF0ZVJlZGlyZWN0ZWRXaW5kb3cpOiBUaGlzIGhlbHBlciBpcyByZXNwb25zaWJsZSBm
b3IgZ2V0dGluZworICAgICAgICBhIGNhY2hlZCBYQ29tcG9zaXRlIHdpbmRvdy4KKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdCYXNlRHJhd0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKTogVGhp
cyBoZWxwZXIgZ2V0cyB0aGUgcGl4bWFwCisgICAgICAgIGJhY2tpbmcgdGhlIFhDb21wb3NpdGUg
d2luZG93IGFuZCBwYWludHMgaXQgdG8gdGhlIHdpZGdldCBkcmF3aW5nIGNvbnRleHQuCisgICAg
ICAgICh3ZWJraXRXZWJWaWV3QmFzZURyYXcpOiBVc2Ugd2Via2l0V2ViVmlld0Jhc2VEcmF3QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMgd2hlbgorICAgICAgICBhcHByb3ByaWF0ZS4KKyAg
ICAgICAgKHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFsbG9jYXRpb24pOiBOb3RpZnkgdGhl
IGZvcmVpZ24gcmVkaXJlY3RlZCB3aW5kb3cKKyAgICAgICAgd2hlbiB0aGUgdmlldyByZXNpemVz
LCBzbyB0aGF0IGl0IGtub3dzIHRvIGludmFsaWRhdGUgaXRzIHBpeG1hcC4KKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdCYXNlU2l6ZUFsbG9jYXRlKTogT25seSByZXNpemUgdGhlIFdlYlZpZXcgaWYg
dGhlIGFsbG9jYXRpb24KKyAgICAgICAgcmVhbGx5IGNoYW5nZWQuCisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QmFzZU1hcCk6IFdlIG5vIGxvbmdlciBuZWVkIHRvIG5vdGlmeSB0aGUgV2ViUHJvY2Vz
cyB3aGVuIHRoZQorICAgICAgICB3aWRnZXQgaXMgbWFwcGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oOiBFeHBvc2UgdGhlIGZvbGxvd2luZyB0d28gbWV0aG9k
cyBwdWJsaWNseQorICAgICAgICBzbyB0aGV5IGNhbiBiZSB1c2VkIGJ5IEdUSysncyBXZWJWaWV3
IHdpZGdldC4KKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFQcm94eUltcGw6OmlzSW5BY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJv
eHlJbXBsOjpsYXllclRyZWVDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgIChXZWJQYWdlUHJveHkpOiBBZGQgYSB3YXkgdG8gc2lnbmFsIHRoZSBV
SVByb2Nlc3MgdG8gcXVldWUgYSBkcmF3LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW46IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUGFnZVBy
b3h5R3RrLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW52YWxp
ZGF0ZVdpZGdldCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDogRGl0
dG8uCisgICAgICAgIChXZWJQYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L0xheWVyVHJlZUhvc3RHdGsuY3BwOiBTd2l0Y2ggdG8gdXNpbmcgYSByZWRpcmVjdGVkIFhDb21w
b3NpdGUKKyAgICAgICAgd2luZG93IGFuZCB1c2UgdGhlIHdpbmRvdyBYSUQgYXMgdGhlIExheWVy
VHJlZUNvbnRleHQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVI
b3N0R3RrLmg6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFn
ZUd0ay5jcHA6IEFkZCBhIG1ldGhvZCBmb3IgaW52YWxpZGF0aW5nIHRoZSBVSVByb2Nlc3MKKyAg
ICAgICAgd2lkZ2V0LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnZhbGlkYXRlV2lkZ2V0
KToKKyAgICAgICAgKFdlYktpdCk6CisKKzIwMTItMDgtMjEgIE1hcnRpbiBSb2JpbnNvbiAgPG1y
b2JpbnNvbkBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtHVEtdIFVzaW5nIGEgbmF0aXZlIHdpbmRv
dyBmb3IgdGhlIFdlYlZpZXcgYnJlYWtzIEd0a092ZXJsYXkKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMDg1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCmlu
ZGV4IGFlMWQyNjJkNzcwMGI0NGU4OGRmZjA3ODI0MGFmZGE0MGYwYjQ0MjguLjA4YTVjNWZmNjhm
ZjdkY2E2YTVmZjVhMzEyZWI2ZTFhZmRlOWYxYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcApAQCAt
NDIsNiArNDIsMTEgQEAgUGFzc093blB0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gUmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNyZWF0ZShjb25zdAogICAgIHJldHVybiBhZG9wdFB0
cihuZXcgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coc2l6ZSkpOwogfQogCitQYXNzT3duUHRy
PFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6
Y3JlYXRlKHVpbnQ2NF90IHdpbmRvd0lkKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3cod2luZG93SWQpKTsKK30KKwogUmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KGNvbnN0IEludFNpemUmIHNp
emUpCiAgICAgOiBtX3dpbmRvdygwKQogICAgICwgbV9wYXJlbnRXaW5kb3coMCkKQEAgLTQ5LDYg
KzU0LDcgQEAgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93KGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgLCBtX3N1cmZhY2UoMCkKICAgICAsIG1f
cGVuZGluZ1Jlc2l6ZVNvdXJjZUlkKDApCiAgICAgLCBtX25lZWRzTmV3UGl4bWFwQWZ0ZXJSZXNp
emUoZmFsc2UpCisgICAgLCBtX293bnNXaW5kb3codHJ1ZSkKIHsKICAgICBEaXNwbGF5KiBkaXNw
bGF5ID0gR0xDb250ZXh0R0xYOjpzaGFyZWREaXNwbGF5KCk7CiAKQEAgLTkzLDEyICs5OSwyMyBA
QCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3co
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICByZXNpemVMYXRlcigpOyAvLyBGb3JjZSB1cGRhdGUg
b2YgdGhlIHVzYWJsZSBhcmVhLgogfQogCitSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3codWludDY0X3Qgd2luZG93SWQpCisgICAgOiBtX3dpbmRv
dyh3aW5kb3dJZCkKKyAgICAsIG1fcGFyZW50V2luZG93KDApCisgICAgLCBtX3BpeG1hcCgwKQor
ICAgICwgbV9zdXJmYWNlKDApCisgICAgLCBtX3BlbmRpbmdSZXNpemVTb3VyY2VJZCgwKQorICAg
ICwgbV9uZWVkc05ld1BpeG1hcEFmdGVyUmVzaXplKGZhbHNlKQorICAgICwgbV9vd25zV2luZG93
KGZhbHNlKQoreworfQorCiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6flJlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93KCkKIHsKICAgICBEaXNwbGF5KiBkaXNwbGF5ID0gR0xDb250ZXh0R0xY
OjpzaGFyZWREaXNwbGF5KCk7Ci0gICAgaWYgKG1fd2luZG93KQorICAgIGlmIChtX3dpbmRvdyAm
JiBtX293bnNXaW5kb3cpCiAgICAgICAgIFhEZXN0cm95V2luZG93KGRpc3BsYXksIG1fd2luZG93
KTsKLSAgICBpZiAobV9wYXJlbnRXaW5kb3cpCisgICAgaWYgKG1fcGFyZW50V2luZG93ICYmIG1f
b3duc1dpbmRvdykKICAgICAgICAgWERlc3Ryb3lXaW5kb3coZGlzcGxheSwgbV9wYXJlbnRXaW5k
b3cpOwogICAgIGNsZWFudXBQaXhtYXBBbmRQaXhtYXBTdXJmYWNlKCk7CiAKQEAgLTE5MCw2ICsy
MDcsMjEgQEAgY2Fpcm9fc3VyZmFjZV90KiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6Y2Fp
cm9TdXJmYWNlRm9yV2lkZ2V0KEd0a1dpZGdldCogd2kKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCisgICAgLy8gVGhlIHNpemUgbWF5IGJlIHVuaW5pdGlhbGl6ZWQgaWYgd2UgZG8gbm90IG93
biB0aGlzIHdpbmRvdyAoaXQgYmVsb25ncyB0byBzb21lIG90aGVyIFJlZGlyZWN0ZWRYQ29tcG9z
aXRlV2luZG93KS4KKyAgICBpZiAobV9zaXplLmlzRW1wdHkoKSkgeworICAgICAgICBpbnQgeCwg
eTsKKyAgICAgICAgV2luZG93IHJvb3RXaW5kb3c7CisgICAgICAgIHVuc2lnbmVkIGludCB3aWR0
aCwgaGVpZ2h0LCBib3JkZXJXaWR0aCwgZGVwdGg7CisgICAgICAgIFhHZXRHZW9tZXRyeShuZXdQ
aXhtYXBEaXNwbGF5LCBtX3dpbmRvdywgJnJvb3RXaW5kb3csICZ4LCAmeSwgJndpZHRoLCAmaGVp
Z2h0LCAmYm9yZGVyV2lkdGgsICZkZXB0aCk7CisgICAgICAgIG1fdXNhYmxlU2l6ZSA9IG1fc2l6
ZSA9IEludFNpemUod2lkdGgsIGhlaWdodCk7CisgICAgfQorCisgICAgaWYgKG1fc2l6ZS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgY2xlYW51cFBpeG1hcEFuZFBpeG1hcFN1cmZhY2UoKTsKKyAgICAg
ICAgWEZyZWVQaXhtYXAobmV3UGl4bWFwRGlzcGxheSwgbmV3UGl4bWFwKTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbmV3U3VyZmFjZSA9
IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVhdGUobmV3UGl4bWFwRGlzcGxheSwgbmV3
UGl4bWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd0F0dHJpYnV0ZXMudmlzdWFsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpKTsKQEAgLTIx
Myw0ICsyNDUsMTAgQEAgY2Fpcm9fc3VyZmFjZV90KiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dzo6Y2Fpcm9TdXJmYWNlRm9yV2lkZ2V0KEd0a1dpZGdldCogd2kKICAgICByZXR1cm4gbV9zdXJm
YWNlLmdldCgpOwogfQogCit2b2lkIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojpub3RpZnlS
ZXNpemVkKCkKK3sKKyAgICBtX3NpemUgPSBtX3VzYWJsZVNpemUgPSBJbnRTaXplKCk7CisgICAg
bV9uZWVkc05ld1BpeG1hcEFmdGVyUmVzaXplID0gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0
ZWRYQ29tcG9zaXRlV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3cuaAppbmRleCAzOWVjN2VkYjI2YjhkZWE0MjZmYmY0ZTY0YTk1
ZTI1OWRhNGQ3YTM4Li42ZDlmZGE1NzQzMmJkYjJiYzZmYmZjNWYwNjU3NzNjY2NkOTNkMzliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhD
b21wb3NpdGVXaW5kb3cuaApAQCAtMzksMTAgKzM5LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc093blB0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gY3JlYXRlKGNvbnN0IEludFNp
emUmKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4g
Y3JlYXRlKHVpbnQ2NF90IHdpbmRvd0lkKTsKICAgICB2aXJ0dWFsIH5SZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdygpOwogCiAgICAgY29uc3QgSW50U2l6ZSYgdXNhYmxlU2l6ZSgpIHsgcmV0dXJu
IG1fdXNhYmxlU2l6ZTsgfQogICAgIGNvbnN0IEludFNpemUmIHNpemUoKSB7IHJldHVybiBtX3Np
emU7IH0KKyAgICBXaW5kb3cgd2luZG93SGFuZGxlKCkgeyByZXR1cm4gbV93aW5kb3c7IH0KKyAg
ICB2b2lkIG5vdGlmeVJlc2l6ZWQoKTsKIAogICAgIHZvaWQgcmVzaXplKGNvbnN0IEludFNpemUm
IG5ld1NpemUpOwogICAgIEdMQ29udGV4dCogY29udGV4dCgpOwpAQCAtNTAsNiArNTMsNyBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coY29uc3Qg
SW50U2l6ZSYpOworICAgIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KHVpbnQ2NF90IHdpbmRv
d0lkKTsKIAogICAgIHN0YXRpYyBnYm9vbGVhbiByZXNpemVMYXRlckNhbGxiYWNrKFJlZGlyZWN0
ZWRYQ29tcG9zaXRlV2luZG93Kik7CiAgICAgdm9pZCByZXNpemVMYXRlcigpOwpAQCAtNjQsNiAr
NjgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFjZTsK
ICAgICB1bnNpZ25lZCBpbnQgbV9wZW5kaW5nUmVzaXplU291cmNlSWQ7CiAgICAgYm9vbCBtX25l
ZWRzTmV3UGl4bWFwQWZ0ZXJSZXNpemU7CisgICAgYm9vbCBtX293bnNXaW5kb3c7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggNDkyNWI1YTdjMWNlZTljODRm
ZTU4NDJiY2QwYzFhOTEyMjZlNTk0YS4uZTkzMWQ5OGEzMTJlNmZmMzFhNjU0OTM3ODAzY2ZlNDJm
NGI3YzIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtNjcsNyArNjcsNyBAQAogI2VuZGlmCiAKICNpZiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19YMTEpCi0jaW5j
bHVkZSA8Z2RrL2dka3guaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93Lmg+CiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTk3LDYgKzk3
LDkgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogICAgIHVuc2lnbmVkIGlu
c3BlY3RvclZpZXdIZWlnaHQ7CiAgICAgR093blB0cjxHZGtFdmVudD4gY29udGV4dE1lbnVFdmVu
dDsKICAgICBXZWJDb250ZXh0TWVudVByb3h5R3RrKiBhY3RpdmVDb250ZXh0TWVudVByb3h5Owor
I2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgZGVmaW5lZChHREtfV0lORE9XSU5HX1gxMSkK
KyAgICBPd25QdHI8V2ViQ29yZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IHJlZGlyZWN0
ZWRXaW5kb3c7CisjZW5kaWYKIH07CiAKIEdfREVGSU5FX1RZUEUoV2ViS2l0V2ViVmlld0Jhc2Us
IHdlYmtpdF93ZWJfdmlld19iYXNlLCBHVEtfVFlQRV9DT05UQUlORVIpCkBAIC0xNTgsOSArMTYx
LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VSZWFsaXplKEd0a1dpZGdldCogd2lk
Z2V0KQogICAgIGdpbnQgYXR0cmlidXRlc01hc2sgPSBHREtfV0FfWCB8IEdES19XQV9ZIHwgR0RL
X1dBX1ZJU1VBTDsKIAogICAgIEdka1dpbmRvdyogd2luZG93ID0gZ2RrX3dpbmRvd19uZXcoZ3Rr
X3dpZGdldF9nZXRfcGFyZW50X3dpbmRvdyh3aWRnZXQpLCAmYXR0cmlidXRlcywgYXR0cmlidXRl
c01hc2spOwotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICBnZGtfd2luZG93X2Vuc3Vy
ZV9uYXRpdmUod2luZG93KTsKLSNlbmRpZgogICAgIGd0a193aWRnZXRfc2V0X3dpbmRvdyh3aWRn
ZXQsIHdpbmRvdyk7CiAgICAgZ2RrX3dpbmRvd19zZXRfdXNlcl9kYXRhKHdpbmRvdywgd2lkZ2V0
KTsKIApAQCAtMjczLDkgKzI3MywzNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYmFz
ZV9pbml0KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKICAgICBndGtfZHJh
Z19kZXN0X3NldF90YXJnZXRfbGlzdCh2aWV3V2lkZ2V0LCBQYXN0ZWJvYXJkSGVscGVyOjpkZWZh
dWx0UGFzdGVib2FyZEhlbHBlcigpLT50YXJnZXRMaXN0KCkpOwogfQogCisjaWYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKSAKK3N0YXRpYyBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyogd2Via2l0
V2ViVmlld0Jhc2VHZXRPckNyZWF0ZVJlZGlyZWN0ZWRXaW5kb3coV2ViS2l0V2ViVmlld0Jhc2Uq
IHdlYlZpZXdCYXNlLCBjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KQor
eworICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2
OworICAgIGlmIChwcml2LT5yZWRpcmVjdGVkV2luZG93ICYmIGxheWVyVHJlZUNvbnRleHQud2lu
ZG93SGFuZGxlICE9IHByaXYtPnJlZGlyZWN0ZWRXaW5kb3ctPndpbmRvd0hhbmRsZSgpKQorICAg
ICAgICBwcml2LT5yZWRpcmVjdGVkV2luZG93ID0gbnVsbHB0cjsKKworICAgIGlmICghcHJpdi0+
cmVkaXJlY3RlZFdpbmRvdykKKyAgICAgICAgcHJpdi0+cmVkaXJlY3RlZFdpbmRvdyA9IFdlYkNv
cmU6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpjcmVhdGUobGF5ZXJUcmVlQ29udGV4dC53
aW5kb3dIYW5kbGUpOworCisgICAgcmV0dXJuIHByaXYtPnJlZGlyZWN0ZWRXaW5kb3cuZ2V0KCk7
Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRHJhd0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdSZXN1bHRzKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgRHJhd2luZ0FyZWFQ
cm94eUltcGwqIGRyYXdpbmdBcmVhLCBjYWlyb190KiBjciwgR2RrUmVjdGFuZ2xlKiBjbGlwUmVj
dCkKK3sKKyAgICBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyogcmVkaXJlY3RlZFdpbmRvdyA9
IHdlYmtpdFdlYlZpZXdCYXNlR2V0T3JDcmVhdGVSZWRpcmVjdGVkV2luZG93KHdlYlZpZXdCYXNl
LCBkcmF3aW5nQXJlYS0+bGF5ZXJUcmVlQ29udGV4dCgpKTsKKyAgICBjYWlyb19zdXJmYWNlX3Qq
IHdpbmRvd1N1cmZhY2UgPSByZWRpcmVjdGVkV2luZG93LT5jYWlyb1N1cmZhY2VGb3JXaWRnZXQo
R1RLX1dJREdFVCh3ZWJWaWV3QmFzZSkpOworICAgIGlmICghd2luZG93U3VyZmFjZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCBjbGlwUmVjdC0+eCwgY2xpcFJl
Y3QtPnksIGNsaXBSZWN0LT53aWR0aCwgY2xpcFJlY3QtPmhlaWdodCk7CisgICAgY2Fpcm9fc2V0
X3NvdXJjZV9zdXJmYWNlKGNyLCB3aW5kb3dTdXJmYWNlLCAwLCAwKTsKKyAgICBjYWlyb19zZXRf
b3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7CisgICAgY2Fpcm9fZmlsbChjcik7
Cit9CisjZW5kaWYKKwogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlRHJhdyhHdGtX
aWRnZXQqIHdpZGdldCwgY2Fpcm9fdCogY3IpCiB7Ci0gICAgRHJhd2luZ0FyZWFQcm94eSogZHJh
d2luZ0FyZWEgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpLT5wcml2LT5wYWdlUHJveHkt
PmRyYXdpbmdBcmVhKCk7CisgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VC
S0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KTsKKyAgICBEcmF3aW5nQXJlYVByb3h5SW1wbCogZHJh
d2luZ0FyZWEgPSBzdGF0aWNfY2FzdDxEcmF3aW5nQXJlYVByb3h5SW1wbCo+KHdlYlZpZXdCYXNl
LT5wcml2LT5wYWdlUHJveHktPmRyYXdpbmdBcmVhKCkpOwogICAgIGlmICghZHJhd2luZ0FyZWEp
CiAgICAgICAgIHJldHVybiBGQUxTRTsKIApAQCAtMjgzLDkgKzMxMSwxNSBAQCBzdGF0aWMgZ2Jv
b2xlYW4gd2Via2l0V2ViVmlld0Jhc2VEcmF3KEd0a1dpZGdldCogd2lkZ2V0LCBjYWlyb190KiBj
cikKICAgICBpZiAoIWdka19jYWlyb19nZXRfY2xpcF9yZWN0YW5nbGUoY3IsICZjbGlwUmVjdCkp
CiAgICAgICAgIHJldHVybiBGQUxTRTsKIAotICAgIFdlYkNvcmU6OlJlZ2lvbiB1bnBhaW50ZWRS
ZWdpb247IC8vIFRoaXMgaXMgc2ltcGx5IHVudXNlZC4KLSAgICBzdGF0aWNfY2FzdDxEcmF3aW5n
QXJlYVByb3h5SW1wbCo+KGRyYXdpbmdBcmVhKS0+cGFpbnQoY3IsIGNsaXBSZWN0LCB1bnBhaW50
ZWRSZWdpb24pOworI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgCisgICAgaWYgKGRyYXdpbmdB
cmVhLT5pc0luQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSkgeworICAgICAgICB3ZWJraXRX
ZWJWaWV3QmFzZURyYXdBY2NlbGVyYXRlZENvbXBvc2l0aW5nUmVzdWx0cyh3ZWJWaWV3QmFzZSwg
ZHJhd2luZ0FyZWEsIGNyLCAmY2xpcFJlY3QpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAg
fQorI2VuZGlmCiAKKyAgICBXZWJDb3JlOjpSZWdpb24gdW5wYWludGVkUmVnaW9uOworICAgIHN0
YXRpY19jYXN0PERyYXdpbmdBcmVhUHJveHlJbXBsKj4oZHJhd2luZ0FyZWEpLT5wYWludChjciwg
Y2xpcFJlY3QsIHVucGFpbnRlZFJlZ2lvbik7CiAgICAgcmV0dXJuIEZBTFNFOwogfQogCkBAIC0z
MjAsOSArMzU0LDE0IEBAIHN0YXRpYyB2b2lkIHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFs
bG9jYXRpb24oV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlCiAgICAgICAgIHZpZXdSZWN0
LnNldEhlaWdodChhbGxvY2F0aW9uLT5oZWlnaHQgLSBwcml2LT5pbnNwZWN0b3JWaWV3SGVpZ2h0
KTsKICAgICB9CiAKLSAgICBpZiAocHJpdi0+cGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpKQorICAg
IERyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhID0gcHJpdi0+cGFnZVByb3h5LT5kcmF3aW5n
QXJlYSgpOworICAgIGlmIChkcmF3aW5nQXJlYSkgewogICAgICAgICBwcml2LT5wYWdlUHJveHkt
PmRyYXdpbmdBcmVhKCktPnNldFNpemUodmlld1JlY3Quc2l6ZSgpLCBJbnRTaXplKCkpOwogCisg
ICAgICAgIGlmIChzdGF0aWNfY2FzdDxEcmF3aW5nQXJlYVByb3h5SW1wbCo+KGRyYXdpbmdBcmVh
KS0+aXNJbkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgJiYgcHJpdi0+cmVkaXJlY3RlZFdp
bmRvdykKKyAgICAgICAgICAgIHByaXYtPnJlZGlyZWN0ZWRXaW5kb3ctPm5vdGlmeVJlc2l6ZWQo
KTsKKyAgICB9CisKICAgICBHdGtXaWRnZXQqIHRvcGxldmVsID0gZ3RrX3dpZGdldF9nZXRfdG9w
bGV2ZWwoR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSkpOwogICAgIGlmICh3aWRnZXRJc09uc2NyZWVu
VG9wbGV2ZWxXaW5kb3codG9wbGV2ZWwpKQogICAgICAgICB3ZWJraXRXZWJWaWV3QmFzZU5vdGlm
eVJlc2l6ZXJTaXplRm9yV2luZG93KHdlYlZpZXdCYXNlLCBHVEtfV0lORE9XKHRvcGxldmVsKSk7
CkBAIC0zMzAsNiArMzY5LDkgQEAgc3RhdGljIHZvaWQgcmVzaXplV2ViS2l0V2ViVmlld0Jhc2VG
cm9tQWxsb2NhdGlvbihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UKIAogc3RhdGljIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VTaXplQWxsb2NhdGUoR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a0Fs
bG9jYXRpb24qIGFsbG9jYXRpb24pCiB7CisgICAgR3RrQWxsb2NhdGlvbiBvbGRBbGxvY2F0aW9u
OworICAgIGd0a193aWRnZXRfZ2V0X2FsbG9jYXRpb24od2lkZ2V0LCAmb2xkQWxsb2NhdGlvbik7
CisKICAgICBHVEtfV0lER0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19iYXNlX3BhcmVudF9jbGFz
cyktPnNpemVfYWxsb2NhdGUod2lkZ2V0LCBhbGxvY2F0aW9uKTsKIAogICAgIFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7CkBAIC0z
MzcsNiArMzc5LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTaXplQWxsb2NhdGUo
R3RrV2lkZ2V0KiB3aWRnZXQsIEd0a0FsbG9jYXRpb24qIGFsbG8KICAgICAgICAgd2ViVmlld0Jh
c2UtPnByaXYtPm5lZWRzUmVzaXplT25NYXAgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAg
fQorCisgICAgaWYgKG9sZEFsbG9jYXRpb24ud2lkdGggPT0gYWxsb2NhdGlvbi0+d2lkdGggJiYg
b2xkQWxsb2NhdGlvbi5oZWlnaHQgPT0gYWxsb2NhdGlvbi0+aGVpZ2h0KQorICAgICAgICByZXR1
cm47CiAgICAgcmVzaXplV2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxsb2NhdGlvbih3ZWJWaWV3QmFz
ZSwgYWxsb2NhdGlvbik7CiB9CiAKQEAgLTM0NSwxMyArMzkwLDYgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VNYXAoR3RrV2lkZ2V0KiB3aWRnZXQpCiAgICAgR1RLX1dJREdFVF9DTEFT
Uyh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9wYXJlbnRfY2xhc3MpLT5tYXAod2lkZ2V0KTsKIAogICAg
IFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdp
ZGdldCk7Ci0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJ
TkdfWDExKQotICAgIEdka1dpbmRvdyogZ2RrV2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93
KHdpZGdldCk7Ci0gICAgQVNTRVJUKGdka1dpbmRvdyk7Ci0gICAgaWYgKGdka193aW5kb3dfaGFz
X25hdGl2ZShnZGtXaW5kb3cpKQotICAgICAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5
LT53aWRnZXRNYXBwZWQoR0RLX1dJTkRPV19YSUQoZ2RrV2luZG93KSk7Ci0jZW5kaWYKLQogICAg
IGlmICghd2ViVmlld0Jhc2UtPnByaXYtPm5lZWRzUmVzaXplT25NYXApCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHlJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwu
aAppbmRleCAwYzlmMDRmOGUwMmRhOGYwY2RiYzBhMzAxMGY1ZjA0MWZhMzM5OTg4Li5hZGQ2Y2Ez
OTA3OTEwNGJlYjQ1NjBjYWJiZjQ1NTNmNjFkNjYyNzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaApAQCAtNDgsNiArNDgsOSBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHBhaW50KEJhY2tpbmdTdG9yZTo6UGxhdGZvcm1HcmFwaGljc0NvbnRl
eHQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpSZWdpb24mIHVucGFpbnRlZFJl
Z2lvbik7CiAKKyAgICBib29sIGlzSW5BY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpIGNvbnN0
IHsgcmV0dXJuICFtX2xheWVyVHJlZUNvbnRleHQuaXNFbXB0eSgpOyB9CisgICAgY29uc3QgTGF5
ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCgpIHsgcmV0dXJuIG1fbGF5ZXJUcmVlQ29u
dGV4dDsgfQorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERyYXdpbmdBcmVhUHJveHlJbXBsKFdl
YlBhZ2VQcm94eSopOwogCkBAIC03OSw3ICs4Miw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBleGl0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKTsKICAgICB2b2lkIHVwZGF0ZUFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKTsKIAotICAgIGJvb2wgaXNJ
bkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gIW1fbGF5ZXJUcmVl
Q29udGV4dC5pc0VtcHR5KCk7IH0KIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIHZpc2libGVDb250ZW50c1JlY3QsIGZsb2F0IHNjYWxlLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50JiB0cmFqZWN0b3J5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAppbmRleCBiODhhNWQ0OTg1NTU4NTZhNmI3MDEzNjY5YTYwMDg5ZjdkYjRmYWQ4Li5mMjRh
MDJiMDY1ZDhiYzAxOGM2NzRjMDAxNGY2NmJhNDIzNDNhZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC03MDksNyArNzA5LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgTmF0aXZlV2ViTW91c2VFdmVudCogY3VycmVudGx5UHJvY2Vzc2VkTW91c2VEb3duRXZl
bnQoKTsKIAogI2lmIFBMQVRGT1JNKEdUSykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotICAg
IHZvaWQgd2lkZ2V0TWFwcGVkKHVpbnQ2NF90IG5hdGl2ZVdpbmRvd0lkKTsKKyAgICB2b2lkIGlu
dmFsaWRhdGVXaWRnZXQoKTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRTdXBwcmVzc1Zpc2liaWxp
dHlVcGRhdGVzKGJvb2wgZmxhZykgeyBtX3N1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMgPSBmbGFn
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgppbmRleCA3ZmE4MWJlNWE1ZWVkN2UwODhjOWQ3ODI4M2JkMTUzMmY2M2ZjYmZiLi5mYjQ3
NTkwYzgxMjk0YTM0NzUwMDZjM2U1NDZjMWZlNzhlMDZmYTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE3Niw2ICsxNzYs
MTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICAjIFN1cHBvcnQgZm9yIGNvbm5l
Y3RpbmcgdGhlIEFjY2Vzc2liaWxpdHkgd29ybGRzIG9mIHRoZSBVSSBhbmQgdGhlIFdlYiBwcm9j
ZXNzZXMKICAgICBCaW5kQWNjZXNzaWJpbGl0eVRyZWUoV1RGOjpTdHJpbmcgcGx1Z0lEKQogI2Vu
ZGlmCisjCisjaWYgUExBVEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisgICAg
SW52YWxpZGF0ZVdpZGdldCgpCisjZW5kaWYKIAogICAgICMgQmFja0ZvcndhcmQgbWVzc2FnZXMK
ICAgICBCYWNrRm9yd2FyZEFkZEl0ZW0odWludDY0X3QgaXRlbUlEKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCmluZGV4IGFjMjZjMGNiOGZk
YmI4YzllNzI1ZjkzM2I4NDc4YTJhNGRjYzBmN2MuLjQ1ZmQ5YzllMTExZmEyYjI2YWU2YjljNjgx
YzUxODcwYmQ5ZmI5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
V2ViUGFnZVByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dl
YlBhZ2VQcm94eUd0ay5jcHAKQEAgLTExMCw5ICsxMTAsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBm
cmFtZQogfQogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotdm9pZCBXZWJQYWdlUHJveHk6
OndpZGdldE1hcHBlZCh1aW50NjRfdCBuYXRpdmVXaW5kb3dJZCkKK3ZvaWQgV2ViUGFnZVByb3h5
OjppbnZhbGlkYXRlV2lkZ2V0KCkKIHsKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OldpZGdldE1hcHBlZChuYXRpdmVXaW5kb3dJZCksIG1fcGFnZUlEKTsKKyAgICBndGtf
d2lkZ2V0X3F1ZXVlX2RyYXcoc3RhdGljX2Nhc3Q8UGFnZUNsaWVudEltcGwqPihtX3BhZ2VDbGll
bnQpLT52aWV3V2lkZ2V0KCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGVjNWFmMGU5NjY4NGMzODYxODA3MjdmMDIwMzNk
NGE5Zjk1NTBmZTIuLmUwZDAwOGI3ZGIyMjQ5ZGZhMmY1NjZkNzRjZTUzN2M3MzZhMmY2NTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDU2LDcg
KzQ1Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUFjY2Vzc2liaWxpdHlUcmVlKCk7CiAg
ICAgYm9vbCBoYW5kbGVNb3VzZVByZXNzZWRFdmVudChjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybU1v
dXNlRXZlbnQmKTsKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCi0gICAgdm9pZCB3aWRnZXRN
YXBwZWQoaW50NjRfdCBuYXRpdmVXaW5kb3dIYW5kbGUpOworICAgIHZvaWQgaW52YWxpZGF0ZVdp
ZGdldCgpOwogI2VuZGlmCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBlM2ZmMjNjYWRjYWE4MmZm
ODM4ZWMzYTA0MDZmOWE5YjQxYzNiMGNhLi4xMDYxN2FmYmViZjMzMzNhZGYxZTVkMTBmOTczMGYz
MGZhZTc0MjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjk1LDggKzI5NSw0IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2UgewogI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQogICAgIFNldFZpc2liaWxp
dHlTdGF0ZShpbnQgdmlzaWJpbGl0eVN0YXRlLCBib29sIGlzSW5pdGlhbFN0YXRlKTsKICNlbmRp
ZgotCi0jaWYgUExBVEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCi0gICAgV2lk
Z2V0TWFwcGVkKGludDY0X3QgaWQpCi0jZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCmluZGV4
IDFiOTFkZTg0ZjEyYjM3Yzc1ZGViNmRmMDQ2M2FiYTE4NDFkZDU3OTEuLmExOTlmNjliY2U5YjE1
MDM2NGY4ODY2OGI1Y2YyMWM0ZmU1MDVhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcApAQCAtNjQs
MjQgKzY0LDEyIEBAIExheWVyVHJlZUhvc3RHdGs6OkxheWVyVHJlZUhvc3RHdGsoV2ViUGFnZSog
d2ViUGFnZSkKICAgICA6IExheWVyVHJlZUhvc3Qod2ViUGFnZSkKICAgICAsIG1faXNWYWxpZCh0
cnVlKQogICAgICwgbV9ub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1c2goZmFsc2UpCisgICAg
LCBtX3JlZGlyZWN0ZWRXaW5kb3coUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNyZWF0ZShJ
bnRTaXplKDEsIDEpKSkKICAgICAsIG1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKHRydWUp
CiAgICAgLCBtX2xheWVyRmx1c2hUaW1lckNhbGxiYWNrSWQoMCkKIHsKIH0KIAotR0xDb250ZXh0
KiBMYXllclRyZWVIb3N0R3RrOjpnbENvbnRleHQoKQotewotICAgIGlmIChtX2NvbnRleHQpCi0g
ICAgICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7Ci0KLSAgICB1aW50NjRfdCB3aW5kb3dIYW5k
bGUgPSBtX3dlYlBhZ2UtPm5hdGl2ZVdpbmRvd0hhbmRsZSgpOwotICAgIGlmICghd2luZG93SGFu
ZGxlKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIG1fY29udGV4dCA9IEdMQ29udGV4dDo6Y3Jl
YXRlQ29udGV4dEZvcldpbmRvdyh3aW5kb3dIYW5kbGUsIEdMQ29udGV4dDo6c2hhcmluZ0NvbnRl
eHQoKSk7Ci0gICAgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsKLX0KLQogdm9pZCBMYXllclRyZWVI
b3N0R3RrOjppbml0aWFsaXplKCkKIHsKICAgICBtX3Jvb3RMYXllciA9IEdyYXBoaWNzTGF5ZXI6
OmNyZWF0ZSh0aGlzKTsKQEAgLTEwNCwxMyArOTIsMTMgQEAgdm9pZCBMYXllclRyZWVIb3N0R3Rr
Ojppbml0aWFsaXplKCkKICAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQobV9ub25Db21wb3NpdGVk
Q29udGVudExheWVyLmdldCgpKTsKICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNl
dE5lZWRzRGlzcGxheSgpOwogCi0gICAgbV9sYXllclRyZWVDb250ZXh0LndpbmRvd0hhbmRsZSA9
IG1fd2ViUGFnZS0+bmF0aXZlV2luZG93SGFuZGxlKCk7Ci0KLSAgICBHTENvbnRleHQqIGNvbnRl
eHQgPSBnbENvbnRleHQoKTsKKyAgICBtX3JlZGlyZWN0ZWRXaW5kb3ctPnJlc2l6ZShtX3dlYlBh
Z2UtPnNpemUoKSk7CisgICAgR0xDb250ZXh0KiBjb250ZXh0ID0gbV9yZWRpcmVjdGVkV2luZG93
LT5jb250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIG1faXNWYWxpZCA9IGZh
bHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIG1fbGF5ZXJUcmVlQ29udGV4dC53aW5k
b3dIYW5kbGUgPSBtX3JlZGlyZWN0ZWRXaW5kb3ctPndpbmRvd0hhbmRsZSgpOwogCiAgICAgLy8g
VGhlIGNyZWF0aW9uIG9mIHRoZSBUZXh0dXJlTWFwcGVyIG5lZWRzIGFuIGFjdGl2ZSBPcGVuR0wg
Y29udGV4dC4KICAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKQEAgLTE2MSw3ICsx
NDksNiBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OmludmFsaWRhdGUoKQogICAgIG1fcGFnZU92
ZXJsYXlMYXllciA9IG51bGxwdHI7CiAgICAgbV90ZXh0dXJlTWFwcGVyID0gbnVsbHB0cjsKIAot
ICAgIG1fY29udGV4dCA9IG51bGxwdHI7CiAgICAgbV9pc1ZhbGlkID0gZmFsc2U7CiB9CiAKQEAg
LTE4Myw2ICsxNzAsOCBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OnNpemVEaWRDaGFuZ2UoY29u
c3QgSW50U2l6ZSYgbmV3U2l6ZSkKIHsKICAgICBpZiAobV9yb290TGF5ZXItPnNpemUoKSA9PSBu
ZXdTaXplKQogICAgICAgICByZXR1cm47CisKKyAgICBtX3JlZGlyZWN0ZWRXaW5kb3ctPnJlc2l6
ZShuZXdTaXplKTsKICAgICBtX3Jvb3RMYXllci0+c2V0U2l6ZShuZXdTaXplKTsKIAogICAgIC8v
IElmIHRoZSBuZXdTaXplIGV4cG9zZXMgbmV3IGFyZWFzIG9mIHRoZSBub24tY29tcG9zaXRlZCBj
b250ZW50IGEgc2V0TmVlZHNEaXNwbGF5IGlzIG5lZWRlZApAQCAtMjkzLDE0ICsyODIsMTQgQEAg
Ym9vbCBMYXllclRyZWVIb3N0R3RrOjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKQogCiB2b2lk
IExheWVyVHJlZUhvc3RHdGs6OmNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dCgpCiB7Ci0gICAgR0xD
b250ZXh0KiBjb250ZXh0ID0gZ2xDb250ZXh0KCk7CisgICAgR0xDb250ZXh0KiBjb250ZXh0ID0g
bV9yZWRpcmVjdGVkV2luZG93LT5jb250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0IHx8ICFjb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhl
IHdpbmRvdyBzaXplIG1heSBiZSBvdXQgb2Ygc3luYyB3aXRoIHRoZSBwYWdlIHNpemUgYXQgdGhp
cyBwb2ludCwgYW5kIGdldHRpbmcKICAgICAvLyB0aGUgdmlld3BvcnQgcGFyYW1ldGVycyBpbmNv
cnJlY3QsIG1lYW5zIHRoYXQgdGhlIGNvbnRlbnQgd2lsbCBiZSBtaXNwbGFjZWQuIFRodXMKICAg
ICAvLyB3ZSBzZXQgdGhlIHZpZXdwb3J0IHBhcmFtZXRlcnMgZGlyZWN0bHkgZnJvbSB0aGUgd2lu
ZG93IHNpemUuCi0gICAgSW50U2l6ZSBjb250ZXh0U2l6ZSA9IG1fY29udGV4dC0+ZGVmYXVsdEZy
YW1lQnVmZmVyU2l6ZSgpOworICAgIEludFNpemUgY29udGV4dFNpemUgPSBjb250ZXh0LT5kZWZh
dWx0RnJhbWVCdWZmZXJTaXplKCk7CiAgICAgZ2xWaWV3cG9ydCgwLCAwLCBjb250ZXh0U2l6ZS53
aWR0aCgpLCBjb250ZXh0U2l6ZS5oZWlnaHQoKSk7CiAKICAgICBtX3RleHR1cmVNYXBwZXItPmJl
Z2luUGFpbnRpbmcoKTsKQEAgLTMwOCw2ICsyOTcsMTYgQEAgdm9pZCBMYXllclRyZWVIb3N0R3Rr
Ojpjb21wb3NpdGVMYXllcnNUb0NvbnRleHQoKQogICAgIG1fdGV4dHVyZU1hcHBlci0+ZW5kUGFp
bnRpbmcoKTsKIAogICAgIGNvbnRleHQtPnN3YXBCdWZmZXJzKCk7CisKKyAgICAvLyBGSVhNRTog
SXQgc2VlbXMgdGhhdCB3aGVuIHVzaW5nIGRvdWJsZS1idWZmZXJpbmcgKGFuZCBvbiBzb21lIGRy
aXZlcnMgc2luZ2xlLWJ1ZmZlcmluZykKKyAgICAvLyBhbmQgWENvbXBvc2l0ZSB3aW5kb3cgcmVk
aXJlY3Rpb24sIHR3byBzd2FwIGJ1ZmZlcnMgYXJlIHJlcXVpcmVkIHRvIGZvcmNlIHRoZSBwaXht
YXAKKyAgICAvLyB0byB1cGRhdGUuIFRoaXMgaXNuJ3QgYSBwcm9ibGVtIGR1cmluZyBhbmltYXRp
b25zLCBiZWNhdXNlIHN3YXBCdWZmZXIgaXMgY29udGludW91c2x5IAorICAgIC8vIGNhbGxlZC4g
Rm9yIG5vbi1hbmltYXRpb24gc2l0dWF0aW9ucyB3ZSB1c2UgdGhpcyB0ZXJyaWJsZSBoYWNrIHVu
dGlsIHdlIGNhbiBnZXQgdG8gdGhlCisgICAgLy8gYm90dG9tIG9mIHRoZSBpc3N1ZS4KKyAgICBp
ZiAoIXRvVGV4dHVyZU1hcHBlckxheWVyKG1fcm9vdExheWVyLmdldCgpKS0+ZGVzY2VuZGFudHNP
clNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSkgeworICAgICAgICBjb250ZXh0LT5zd2FwQnVm
ZmVycygpOworICAgICAgICBjb250ZXh0LT5zd2FwQnVmZmVycygpOworICAgIH0KIH0KIAogdm9p
ZCBMYXllclRyZWVIb3N0R3RrOjpmbHVzaEFuZFJlbmRlckxheWVycygpCkBAIC0zMjAsNyArMzE5
LDcgQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjpmbHVzaEFuZFJlbmRlckxheWVycygpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgR0xDb250ZXh0KiBjb250ZXh0ID0gZ2xDb250
ZXh0KCk7CisgICAgR0xDb250ZXh0KiBjb250ZXh0ID0gbV9yZWRpcmVjdGVkV2luZG93LT5jb250
ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0IHx8ICFjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zMjksNiArMzI4LDcgQEAgdm9pZCBMYXllclRyZWVI
b3N0R3RrOjpmbHVzaEFuZFJlbmRlckxheWVycygpCiAKICAgICAvLyBPdXIgbW9kZWwgaXMgdmVy
eSBzaW1wbGUuIFdlIGFsd2F5cyBjb21wb3NpdGUgYW5kIHJlbmRlciB0aGUgdHJlZSBpbW1lZGlh
dGVseSBhZnRlciB1cGRhdGluZyBpdC4KICAgICBjb21wb3NpdGVMYXllcnNUb0NvbnRleHQoKTsK
KyAgICBtX3dlYlBhZ2UtPmludmFsaWRhdGVXaWRnZXQoKTsKIAogICAgIGlmIChtX25vdGlmeUFm
dGVyU2NoZWR1bGVkTGF5ZXJGbHVzaCkgewogICAgICAgICAvLyBMZXQgdGhlIGRyYXdpbmcgYXJl
YSBrbm93IHRoYXQgd2UndmUgZG9uZSBhIGZsdXNoIG9mIHRoZSBsYXllciBjaGFuZ2VzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVI
b3N0R3RrLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJl
ZUhvc3RHdGsuaAppbmRleCAwNjA1NzBiNjQ5MTQ4ZGY1NTNjODAzYjQ3NWZmNGY0OTQwMjQyNWI2
Li42YTU4ZDU5NTRiMzI3MGJkMDZhY2ZhYzViZDM1ODdmYzJmNmQ4YjQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RH
dGsuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvR0xDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGlj
c0xheWVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdy5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC05OSw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0xh
eWVyPiBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXI7CiAgICAgT3duUHRyPFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI+IG1fcGFnZU92ZXJsYXlMYXllcjsKICAgICBPd25QdHI8V2ViQ29yZTo6VGV4
dHVyZU1hcHBlcj4gbV90ZXh0dXJlTWFwcGVyOwotICAgIE93blB0cjxXZWJDb3JlOjpHTENvbnRl
eHQ+IG1fY29udGV4dDsKKyAgICBPd25QdHI8V2ViQ29yZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVX
aW5kb3c+IG1fcmVkaXJlY3RlZFdpbmRvdzsKICAgICBib29sIG1fbGF5ZXJGbHVzaFNjaGVkdWxp
bmdFbmFibGVkOwogICAgIHVuc2lnbmVkIG1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2tJZDsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBh
Z2VHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdl
R3RrLmNwcAppbmRleCAzMGFhYTQwMzdmN2M0N2QxNGQ1NmE0N2M3MWVhYWM2NzNiY2E4MjQyLi42
OWM4MzRkZTIwMjE4N2Y2YTgwYmJmZDcwNzkyYjVmYzZlNDljMzczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKQEAgLTE1
NSwxMyArMTU1LDYgQEAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBhZ2U6OmNhY2hlZFJl
c3BvbnNlRGF0YUZvclVSTChjb25zdCBLVVJMJikKICAgICByZXR1cm4gMDsKIH0KIAotI2lmIFVT
RShURVhUVVJFX01BUFBFUl9HTCkKLXZvaWQgV2ViUGFnZTo6d2lkZ2V0TWFwcGVkKGludDY0X3Qg
bmF0aXZlV2luZG93SGFuZGxlKQotewotICAgIG1fbmF0aXZlV2luZG93SGFuZGxlID0gbmF0aXZl
V2luZG93SGFuZGxlOwotfQotI2VuZGlmCi0KIGJvb2wgV2ViUGFnZTo6aGFuZGxlTW91c2VQcmVz
c2VkRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9ybU1vdXNlRXZlbnQpCiB7
CiAgICAgYm9vbCByZXR1cm5WYWx1ZSA9IGZhbHNlOwpAQCAtMTg3LDQgKzE4MCwxMSBAQCBib29s
IFdlYlBhZ2U6OmhhbmRsZU1vdXNlUHJlc3NlZEV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgcGxhdGZvcm1Nb3VzZUV2ZQogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KIAorI2lmIFVT
RShURVhUVVJFX01BUFBFUl9HTCkKK3ZvaWQgV2ViUGFnZTo6aW52YWxpZGF0ZVdpZGdldCgpCit7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJbnZhbGlkYXRlV2lkZ2V0KCkpOwor
fQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161947</attachid>
            <date>2012-09-03 16:15:49 -0700</date>
            <delta_ts>2012-09-17 12:39:05 -0700</delta_ts>
            <desc>Try to fix the EFL build</desc>
            <filename>bug-94417-20120903161533.patch</filename>
            <type>text/plain</type>
            <size>26923</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzhkYzY2NGZlNzhlY2Fh
NmViZDE5YmMyNWQzZjEzODdhYTVkOGY2MS4uMWEzNzU3OTFmMTk3NDdjOGMxNTFjYjJiYjgyZGYy
ZTIxMzU1NmMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA5LTAzICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBbV2Vi
S2l0Ml0gVXNlIFhDb21wb3NpdGUgd2luZG93IGZvciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ0MTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYW4gWENv
bXBvc2l0ZSB3aW5kb3cgdmlhIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93IGZvciBXZWJLaXQy
IGFjY2VsZXJhdGVkCisgICAgICAgIGNvbXBvc2l0aW5nLiBUaGlzIGFsbG93cyB1cyB0byBhdm9p
ZCB1c2luZyBhIG5hdGl2ZSBHREsgd2luZG93IGZvciBvdXIgd2lkZ2V0cywKKyAgICAgICAgZml4
aW5nIGludGVyYWN0aW9uIHdpdGggR3RrT3ZlcmxheS4gV2UgY2FuIGFsc28gbm93IGhvb2sgZGly
ZWN0bHkgaW50byB0aGUgR1RLKworICAgICAgICBkcmF3aW5nIGxvb3AsIHByb2JhYmx5IG1ha2lu
ZyBhbnkgZnV0dXJlIEdUSysgNCBwb3J0IHNpbXBsZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LiBUaGVzZSBjaGFuZ2VzIGFyZSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIGNvbXBvc2l0aW5nIHRlc3Rz
IGFuZCBmdXJ0aGVybW9yZSwKKyAgICAgICAgYWxsb3cgcGl4ZWwgZHVtcGluZyBvZiBjb21wb3Np
dGluZyByZXN1bHRzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9z
aXRlV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2lu
ZG93OjpjcmVhdGUpOiBBbGxvdyBjcmVhdGluZyBhICJmb3JlaWduIiBYQ29tcG9zaXRlCisgICAg
ICAgIHdpbmRvdywgd2hpY2ggZG9lc24ndCBhY3R1YWxseSBjcmVhdGUgdGhlIFgxMSB3aW5kb3cs
IGJ1dCBhdHRhY2hlcyB0byBvbmUgZ2l2ZW4gaXRzCisgICAgICAgIFhJRC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdyk6IFRoZSBuZXcgY29uc3RydWN0b3IKKyAgICAgICAgZm9yIHRoZSBmb3JlaWduIHdpbmRv
dy4KKyAgICAgICAgKFdlYkNvcmU6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojp+UmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3cpOiBJZiB0aGUgd2luZG93IGlzCisgICAgICAgIGZvcmVpZ24s
IGRvbid0IGRlc3Ryb3kgaXQgd2hlbiB0aGlzIG9iamVjdCBkaWVzLgorICAgICAgICAoV2ViQ29y
ZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNhaXJvU3VyZmFjZUZvcldpZGdldCk6IFF1
ZXJ5IHRoZSBzaXplIGlmIHdlCisgICAgICAgIGRvbid0IGtub3cgaXQsIHdoaWNoIHdlIHdvbid0
IGlmIHdlIHdlcmUgbm90IHJlc3BvbnNpYmxlIGZvciByZXNpemluZyB0aGUgd2luZG93IGkuZS4K
KyAgICAgICAgd2UgYXJlIGEgZm9yZWlnbiB3aW5kb3cuCisgICAgICAgIChXZWJDb3JlOjpSZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6bm90aWZ5UmVzaXplZCk6IEludmFsaWRhdGUgdGhlIFBp
eG1hcCBhbmQgc2l6ZQorICAgICAgICB3aGVuIHdlIGtub3cgdGhlIHdpbmRvdyBoYXMgYmVlbiBy
ZXNpemVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dy5oOiBOZXcgbWV0aG9kcyBhbmQgbWVtYmVycyB0byB0cmFjayBmb3JlaWduCisgICAgICAgIHdp
bmRvd3MuCisKIDIwMTItMDktMDMgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjc0MjcuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggZDc3MjdkZGM4OGQzZDI3Y2JkOTQwNzNlOGRlMzdkY2M5OWZiOWY5ZS4uNGE0ZWU5
Y2M0NDI4YWY3ODk4N2U5MWVmMzljYzIzOGQ0NzBkMzlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDUyIEBACisyMDEyLTA5LTAzICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBbV2ViS2l0Ml0gVXNlIFhDb21wb3NpdGUgd2luZG93IGZvciBh
Y2NlbGVyYXRlZCBjb21wb3NpdGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTQ0MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVc2UgYW4gWENvbXBvc2l0ZSB3aW5kb3cgdmlhIFJlZGlyZWN0ZWRYQ29t
cG9zaXRlV2luZG93IGZvciBXZWJLaXQyIGFjY2VsZXJhdGVkCisgICAgICAgIGNvbXBvc2l0aW5n
LiBUaGlzIGFsbG93cyB1cyB0byBhdm9pZCB1c2luZyBhIG5hdGl2ZSBHREsgd2luZG93IGZvciBv
dXIgd2lkZ2V0cywKKyAgICAgICAgZml4aW5nIGludGVyYWN0aW9uIHdpdGggR3RrT3ZlcmxheS4g
V2UgY2FuIGFsc28gbm93IGhvb2sgZGlyZWN0bHkgaW50byB0aGUgR1RLKworICAgICAgICBkcmF3
aW5nIGxvb3AsIHByb2JhYmx5IG1ha2luZyBhbnkgZnV0dXJlIEdUSysgNCBwb3J0IHNpbXBsZXIu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6Cisg
ICAgICAgIChfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKTogV2Ugbm93IGhhdmUgYSBmb3JlaWdu
IFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93IG1lbWJlciwKKyAgICAgICAgd2hpY2ggdHJhY2tz
IHRoZSBXZWJQcm9jZXNzJyBvZmZzY3JlZW4gd2luZG93IHVzZWQgZm9yIEFDLgorICAgICAgICAo
d2Via2l0V2ViVmlld0Jhc2VSZWFsaXplKTogV2Ugbm8gbG9uZ2VyIG5lZWQgYSBuYXRpdmUgd2lu
ZG93IGJlY2F1c2Ugd2UgYXJlbid0CisgICAgICAgIGNyZWF0aW5nIGEgR0xYIGNvbnRleHQgZGly
ZWN0bHkgZnJvbSB0aGUgd2luZG93LiAKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19iYXNlX2lu
aXQpOiBXZSBkb24ndCBuZWVkIHRvIHR1cm4gb2ZmIGRvdWJsZS1idWZmZXJpbmcgYW55IGxvbmdl
ci4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlR2V0T3JDcmVhdGVSZWRpcmVjdGVkV2luZG93
KTogVGhpcyBoZWxwZXIgaXMgcmVzcG9uc2libGUgZm9yIGdldHRpbmcKKyAgICAgICAgYSBjYWNo
ZWQgWENvbXBvc2l0ZSB3aW5kb3cuCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZURyYXdBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nUmVzdWx0cyk6IFRoaXMgaGVscGVyIGdldHMgdGhlIHBpeG1hcAor
ICAgICAgICBiYWNraW5nIHRoZSBYQ29tcG9zaXRlIHdpbmRvdyBhbmQgcGFpbnRzIGl0IHRvIHRo
ZSB3aWRnZXQgZHJhd2luZyBjb250ZXh0LgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VEcmF3
KTogVXNlIHdlYmtpdFdlYlZpZXdCYXNlRHJhd0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRz
IHdoZW4KKyAgICAgICAgYXBwcm9wcmlhdGUuCisgICAgICAgIChyZXNpemVXZWJLaXRXZWJWaWV3
QmFzZUZyb21BbGxvY2F0aW9uKTogTm90aWZ5IHRoZSBmb3JlaWduIHJlZGlyZWN0ZWQgd2luZG93
CisgICAgICAgIHdoZW4gdGhlIHZpZXcgcmVzaXplcywgc28gdGhhdCBpdCBrbm93cyB0byBpbnZh
bGlkYXRlIGl0cyBwaXhtYXAuCisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVNpemVBbGxvY2F0
ZSk6IE9ubHkgcmVzaXplIHRoZSBXZWJWaWV3IGlmIHRoZSBhbGxvY2F0aW9uCisgICAgICAgIHJl
YWxseSBjaGFuZ2VkLgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VNYXApOiBXZSBubyBsb25n
ZXIgbmVlZCB0byBub3RpZnkgdGhlIFdlYlByb2Nlc3Mgd2hlbiB0aGUKKyAgICAgICAgd2lkZ2V0
IGlzIG1hcHBlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaDog
RXhwb3NlIHRoZSBmb2xsb3dpbmcgdHdvIG1ldGhvZHMgcHVibGljbHkKKyAgICAgICAgc28gdGhl
eSBjYW4gYmUgdXNlZCBieSBHVEsrJ3MgV2ViVmlldyB3aWRnZXQuCisgICAgICAgIChXZWJLaXQ6
OkRyYXdpbmdBcmVhUHJveHlJbXBsOjppc0luQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOgor
ICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5SW1wbDo6bGF5ZXJUcmVlQ29udGV4dCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViUGFnZVBy
b3h5KTogQWRkIGEgd2F5IHRvIHNpZ25hbCB0aGUgVUlQcm9jZXNzIHRvIHF1ZXVlIGEgZHJhdy4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOiBEaXR0by4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHA6IERpdHRvLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmludmFsaWRhdGVXaWRnZXQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6IERpdHRvLgorICAgICAgICAoV2ViUGFnZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcDogU3dp
dGNoIHRvIHVzaW5nIGEgcmVkaXJlY3RlZCBYQ29tcG9zaXRlCisgICAgICAgIHdpbmRvdyBhbmQg
dXNlIHRoZSB3aW5kb3cgWElEIGFzIHRoZSBMYXllclRyZWVDb250ZXh0LgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oOiBEaXR0by4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwOiBBZGQgYSBtZXRob2QgZm9y
IGludmFsaWRhdGluZyB0aGUgVUlQcm9jZXNzCisgICAgICAgIHdpZGdldC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6aW52YWxpZGF0ZVdpZGdldCk6CisgICAgICAgIChXZWJLaXQpOgorCiAy
MDEyLTA5LTAzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29t
PgogCiAgICAgICAgIFtRdF0gTm90IGFsbCBhY3RpdmF0ZWQgZWxlbWVudHMgaGlnaGxpZ2h0ZWQs
IGJ1dCBzb21lIGZyYW1lcyBhcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCmluZGV4IGFlMWQyNjJkNzcw
MGI0NGU4OGRmZjA3ODI0MGFmZGE0MGYwYjQ0MjguLjA4YTVjNWZmNjhmZjdkY2E2YTVmZjVhMzEy
ZWI2ZTFhZmRlOWYxYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9S
ZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcApAQCAtNDIsNiArNDIsMTEgQEAg
UGFzc093blB0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gUmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3c6OmNyZWF0ZShjb25zdAogICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmVkaXJlY3Rl
ZFhDb21wb3NpdGVXaW5kb3coc2l6ZSkpOwogfQogCitQYXNzT3duUHRyPFJlZGlyZWN0ZWRYQ29t
cG9zaXRlV2luZG93PiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6Y3JlYXRlKHVpbnQ2NF90
IHdpbmRvd0lkKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3cod2luZG93SWQpKTsKK30KKwogUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJl
ZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgOiBtX3dp
bmRvdygwKQogICAgICwgbV9wYXJlbnRXaW5kb3coMCkKQEAgLTQ5LDYgKzU0LDcgQEAgUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KGNvbnN0IElu
dFNpemUmIHNpemUpCiAgICAgLCBtX3N1cmZhY2UoMCkKICAgICAsIG1fcGVuZGluZ1Jlc2l6ZVNv
dXJjZUlkKDApCiAgICAgLCBtX25lZWRzTmV3UGl4bWFwQWZ0ZXJSZXNpemUoZmFsc2UpCisgICAg
LCBtX293bnNXaW5kb3codHJ1ZSkKIHsKICAgICBEaXNwbGF5KiBkaXNwbGF5ID0gR0xDb250ZXh0
R0xYOjpzaGFyZWREaXNwbGF5KCk7CiAKQEAgLTkzLDEyICs5OSwyMyBAQCBSZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coY29uc3QgSW50U2l6ZSYg
c2l6ZSkKICAgICByZXNpemVMYXRlcigpOyAvLyBGb3JjZSB1cGRhdGUgb2YgdGhlIHVzYWJsZSBh
cmVhLgogfQogCitSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3codWludDY0X3Qgd2luZG93SWQpCisgICAgOiBtX3dpbmRvdyh3aW5kb3dJZCkKKyAg
ICAsIG1fcGFyZW50V2luZG93KDApCisgICAgLCBtX3BpeG1hcCgwKQorICAgICwgbV9zdXJmYWNl
KDApCisgICAgLCBtX3BlbmRpbmdSZXNpemVTb3VyY2VJZCgwKQorICAgICwgbV9uZWVkc05ld1Bp
eG1hcEFmdGVyUmVzaXplKGZhbHNlKQorICAgICwgbV9vd25zV2luZG93KGZhbHNlKQoreworfQor
CiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6flJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
KCkKIHsKICAgICBEaXNwbGF5KiBkaXNwbGF5ID0gR0xDb250ZXh0R0xYOjpzaGFyZWREaXNwbGF5
KCk7Ci0gICAgaWYgKG1fd2luZG93KQorICAgIGlmIChtX3dpbmRvdyAmJiBtX293bnNXaW5kb3cp
CiAgICAgICAgIFhEZXN0cm95V2luZG93KGRpc3BsYXksIG1fd2luZG93KTsKLSAgICBpZiAobV9w
YXJlbnRXaW5kb3cpCisgICAgaWYgKG1fcGFyZW50V2luZG93ICYmIG1fb3duc1dpbmRvdykKICAg
ICAgICAgWERlc3Ryb3lXaW5kb3coZGlzcGxheSwgbV9wYXJlbnRXaW5kb3cpOwogICAgIGNsZWFu
dXBQaXhtYXBBbmRQaXhtYXBTdXJmYWNlKCk7CiAKQEAgLTE5MCw2ICsyMDcsMjEgQEAgY2Fpcm9f
c3VyZmFjZV90KiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6Y2Fpcm9TdXJmYWNlRm9yV2lk
Z2V0KEd0a1dpZGdldCogd2kKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgLy8gVGhl
IHNpemUgbWF5IGJlIHVuaW5pdGlhbGl6ZWQgaWYgd2UgZG8gbm90IG93biB0aGlzIHdpbmRvdyAo
aXQgYmVsb25ncyB0byBzb21lIG90aGVyIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KS4KKyAg
ICBpZiAobV9zaXplLmlzRW1wdHkoKSkgeworICAgICAgICBpbnQgeCwgeTsKKyAgICAgICAgV2lu
ZG93IHJvb3RXaW5kb3c7CisgICAgICAgIHVuc2lnbmVkIGludCB3aWR0aCwgaGVpZ2h0LCBib3Jk
ZXJXaWR0aCwgZGVwdGg7CisgICAgICAgIFhHZXRHZW9tZXRyeShuZXdQaXhtYXBEaXNwbGF5LCBt
X3dpbmRvdywgJnJvb3RXaW5kb3csICZ4LCAmeSwgJndpZHRoLCAmaGVpZ2h0LCAmYm9yZGVyV2lk
dGgsICZkZXB0aCk7CisgICAgICAgIG1fdXNhYmxlU2l6ZSA9IG1fc2l6ZSA9IEludFNpemUod2lk
dGgsIGhlaWdodCk7CisgICAgfQorCisgICAgaWYgKG1fc2l6ZS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgY2xlYW51cFBpeG1hcEFuZFBpeG1hcFN1cmZhY2UoKTsKKyAgICAgICAgWEZyZWVQaXhtYXAo
bmV3UGl4bWFwRGlzcGxheSwgbmV3UGl4bWFwKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gbmV3U3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJv
X3hsaWJfc3VyZmFjZV9jcmVhdGUobmV3UGl4bWFwRGlzcGxheSwgbmV3UGl4bWFwLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdpbmRvd0F0dHJpYnV0ZXMudmlzdWFsLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpKTsKQEAgLTIxMyw0ICsyNDUsMTAgQEAg
Y2Fpcm9fc3VyZmFjZV90KiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6Y2Fpcm9TdXJmYWNl
Rm9yV2lkZ2V0KEd0a1dpZGdldCogd2kKICAgICByZXR1cm4gbV9zdXJmYWNlLmdldCgpOwogfQog
Cit2b2lkIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojpub3RpZnlSZXNpemVkKCkKK3sKKyAg
ICBtX3NpemUgPSBtX3VzYWJsZVNpemUgPSBJbnRTaXplKCk7CisgICAgbV9uZWVkc05ld1BpeG1h
cEFmdGVyUmVzaXplID0gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2lu
ZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVX
aW5kb3cuaAppbmRleCAzOWVjN2VkYjI2YjhkZWE0MjZmYmY0ZTY0YTk1ZTI1OWRhNGQ3YTM4Li42
ZDlmZGE1NzQzMmJkYjJiYzZmYmZjNWYwNjU3NzNjY2NkOTNkMzliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cu
aApAQCAtMzksMTAgKzM5LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlZGlyZWN0
ZWRYQ29tcG9zaXRlV2luZG93IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxSZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gY3JlYXRlKGNvbnN0IEludFNpemUmKTsKKyAgICBzdGF0
aWMgUGFzc093blB0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gY3JlYXRlKHVpbnQ2NF90
IHdpbmRvd0lkKTsKICAgICB2aXJ0dWFsIH5SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdygpOwog
CiAgICAgY29uc3QgSW50U2l6ZSYgdXNhYmxlU2l6ZSgpIHsgcmV0dXJuIG1fdXNhYmxlU2l6ZTsg
fQogICAgIGNvbnN0IEludFNpemUmIHNpemUoKSB7IHJldHVybiBtX3NpemU7IH0KKyAgICBXaW5k
b3cgd2luZG93SGFuZGxlKCkgeyByZXR1cm4gbV93aW5kb3c7IH0KKyAgICB2b2lkIG5vdGlmeVJl
c2l6ZWQoKTsKIAogICAgIHZvaWQgcmVzaXplKGNvbnN0IEludFNpemUmIG5ld1NpemUpOwogICAg
IEdMQ29udGV4dCogY29udGV4dCgpOwpAQCAtNTAsNiArNTMsNyBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coY29uc3QgSW50U2l6ZSYpOworICAg
IFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KHVpbnQ2NF90IHdpbmRvd0lkKTsKIAogICAgIHN0
YXRpYyBnYm9vbGVhbiByZXNpemVMYXRlckNhbGxiYWNrKFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2lu
ZG93Kik7CiAgICAgdm9pZCByZXNpemVMYXRlcigpOwpAQCAtNjQsNiArNjgsNyBAQCBwcml2YXRl
OgogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IG1fc3VyZmFjZTsKICAgICB1bnNpZ25lZCBp
bnQgbV9wZW5kaW5nUmVzaXplU291cmNlSWQ7CiAgICAgYm9vbCBtX25lZWRzTmV3UGl4bWFwQWZ0
ZXJSZXNpemU7CisgICAgYm9vbCBtX293bnNXaW5kb3c7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggZjViZDJkZGNjOTZhOThiZjEzMmFkMjE2NTI1ODJmZTRj
YTllOTgyYy4uNzI3YjFiZjA3NTJkMmMxZWRhZWYyNGIyMDZjOWJjZTgxOWY4ZTA5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcApAQCAtNjcsNyArNjcsNyBAQAogI2VuZGlmCiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19YMTEpCi0jaW5jbHVkZSA8Z2RrL2dka3gu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Lmg+CiAjZW5k
aWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTk3LDYgKzk3LDkgQEAgc3RydWN0IF9X
ZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogICAgIHVuc2lnbmVkIGluc3BlY3RvclZpZXdIZWln
aHQ7CiAgICAgR093blB0cjxHZGtFdmVudD4gY29udGV4dE1lbnVFdmVudDsKICAgICBXZWJDb250
ZXh0TWVudVByb3h5R3RrKiBhY3RpdmVDb250ZXh0TWVudVByb3h5OworI2lmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkgJiYgZGVmaW5lZChHREtfV0lORE9XSU5HX1gxMSkKKyAgICBPd25QdHI8V2Vi
Q29yZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IHJlZGlyZWN0ZWRXaW5kb3c7CisjZW5k
aWYKIH07CiAKIEdfREVGSU5FX1RZUEUoV2ViS2l0V2ViVmlld0Jhc2UsIHdlYmtpdF93ZWJfdmll
d19iYXNlLCBHVEtfVFlQRV9DT05UQUlORVIpCkBAIC0xNjEsOSArMTY0LDYgQEAgc3RhdGljIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VSZWFsaXplKEd0a1dpZGdldCogd2lkZ2V0KQogICAgIGdpbnQg
YXR0cmlidXRlc01hc2sgPSBHREtfV0FfWCB8IEdES19XQV9ZIHwgR0RLX1dBX1ZJU1VBTDsKIAog
ICAgIEdka1dpbmRvdyogd2luZG93ID0gZ2RrX3dpbmRvd19uZXcoZ3RrX3dpZGdldF9nZXRfcGFy
ZW50X3dpbmRvdyh3aWRnZXQpLCAmYXR0cmlidXRlcywgYXR0cmlidXRlc01hc2spOwotI2lmIFVT
RShURVhUVVJFX01BUFBFUl9HTCkKLSAgICBnZGtfd2luZG93X2Vuc3VyZV9uYXRpdmUod2luZG93
KTsKLSNlbmRpZgogICAgIGd0a193aWRnZXRfc2V0X3dpbmRvdyh3aWRnZXQsIHdpbmRvdyk7CiAg
ICAgZ2RrX3dpbmRvd19zZXRfdXNlcl9kYXRhKHdpbmRvdywgd2lkZ2V0KTsKIApAQCAtMjc2LDkg
KzI3NiwzNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYmFzZV9pbml0KFdlYktpdFdl
YlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKICAgICBndGtfZHJhZ19kZXN0X3NldF90YXJn
ZXRfbGlzdCh2aWV3V2lkZ2V0LCBQYXN0ZWJvYXJkSGVscGVyOjpkZWZhdWx0UGFzdGVib2FyZEhl
bHBlcigpLT50YXJnZXRMaXN0KCkpOwogfQogCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAK
K3N0YXRpYyBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyogd2Via2l0V2ViVmlld0Jhc2VHZXRP
ckNyZWF0ZVJlZGlyZWN0ZWRXaW5kb3coV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBj
b25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KQoreworICAgIFdlYktpdFdl
YlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OworICAgIGlmIChwcml2
LT5yZWRpcmVjdGVkV2luZG93ICYmIGxheWVyVHJlZUNvbnRleHQud2luZG93SGFuZGxlICE9IHBy
aXYtPnJlZGlyZWN0ZWRXaW5kb3ctPndpbmRvd0hhbmRsZSgpKQorICAgICAgICBwcml2LT5yZWRp
cmVjdGVkV2luZG93ID0gbnVsbHB0cjsKKworICAgIGlmICghcHJpdi0+cmVkaXJlY3RlZFdpbmRv
dykKKyAgICAgICAgcHJpdi0+cmVkaXJlY3RlZFdpbmRvdyA9IFdlYkNvcmU6OlJlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93OjpjcmVhdGUobGF5ZXJUcmVlQ29udGV4dC53aW5kb3dIYW5kbGUpOwor
CisgICAgcmV0dXJuIHByaXYtPnJlZGlyZWN0ZWRXaW5kb3cuZ2V0KCk7Cit9CisKK3N0YXRpYyB2
b2lkIHdlYmtpdFdlYlZpZXdCYXNlRHJhd0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKFdl
YktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgRHJhd2luZ0FyZWFQcm94eUltcGwqIGRyYXdp
bmdBcmVhLCBjYWlyb190KiBjciwgR2RrUmVjdGFuZ2xlKiBjbGlwUmVjdCkKK3sKKyAgICBSZWRp
cmVjdGVkWENvbXBvc2l0ZVdpbmRvdyogcmVkaXJlY3RlZFdpbmRvdyA9IHdlYmtpdFdlYlZpZXdC
YXNlR2V0T3JDcmVhdGVSZWRpcmVjdGVkV2luZG93KHdlYlZpZXdCYXNlLCBkcmF3aW5nQXJlYS0+
bGF5ZXJUcmVlQ29udGV4dCgpKTsKKyAgICBjYWlyb19zdXJmYWNlX3QqIHdpbmRvd1N1cmZhY2Ug
PSByZWRpcmVjdGVkV2luZG93LT5jYWlyb1N1cmZhY2VGb3JXaWRnZXQoR1RLX1dJREdFVCh3ZWJW
aWV3QmFzZSkpOworICAgIGlmICghd2luZG93U3VyZmFjZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCBjbGlwUmVjdC0+eCwgY2xpcFJlY3QtPnksIGNsaXBSZWN0
LT53aWR0aCwgY2xpcFJlY3QtPmhlaWdodCk7CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNl
KGNyLCB3aW5kb3dTdXJmYWNlLCAwLCAwKTsKKyAgICBjYWlyb19zZXRfb3BlcmF0b3IoY3IsIENB
SVJPX09QRVJBVE9SX1NPVVJDRSk7CisgICAgY2Fpcm9fZmlsbChjcik7Cit9CisjZW5kaWYKKwog
c3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlRHJhdyhHdGtXaWRnZXQqIHdpZGdldCwg
Y2Fpcm9fdCogY3IpCiB7Ci0gICAgRHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0FyZWEgPSBXRUJL
SVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpLT5wcml2LT5wYWdlUHJveHktPmRyYXdpbmdBcmVhKCk7
CisgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VCS0lUX1dFQl9WSUVXX0JB
U0Uod2lkZ2V0KTsKKyAgICBEcmF3aW5nQXJlYVByb3h5SW1wbCogZHJhd2luZ0FyZWEgPSBzdGF0
aWNfY2FzdDxEcmF3aW5nQXJlYVByb3h5SW1wbCo+KHdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJv
eHktPmRyYXdpbmdBcmVhKCkpOwogICAgIGlmICghZHJhd2luZ0FyZWEpCiAgICAgICAgIHJldHVy
biBGQUxTRTsKIApAQCAtMjg2LDkgKzMxNCwxNSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2Vi
Vmlld0Jhc2VEcmF3KEd0a1dpZGdldCogd2lkZ2V0LCBjYWlyb190KiBjcikKICAgICBpZiAoIWdk
a19jYWlyb19nZXRfY2xpcF9yZWN0YW5nbGUoY3IsICZjbGlwUmVjdCkpCiAgICAgICAgIHJldHVy
biBGQUxTRTsKIAotICAgIFdlYkNvcmU6OlJlZ2lvbiB1bnBhaW50ZWRSZWdpb247IC8vIFRoaXMg
aXMgc2ltcGx5IHVudXNlZC4KLSAgICBzdGF0aWNfY2FzdDxEcmF3aW5nQXJlYVByb3h5SW1wbCo+
KGRyYXdpbmdBcmVhKS0+cGFpbnQoY3IsIGNsaXBSZWN0LCB1bnBhaW50ZWRSZWdpb24pOworI2lm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkgCisgICAgaWYgKGRyYXdpbmdBcmVhLT5pc0luQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUoKSkgeworICAgICAgICB3ZWJraXRXZWJWaWV3QmFzZURyYXdB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nUmVzdWx0cyh3ZWJWaWV3QmFzZSwgZHJhd2luZ0FyZWEsIGNy
LCAmY2xpcFJlY3QpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorI2VuZGlmCiAKKyAg
ICBXZWJDb3JlOjpSZWdpb24gdW5wYWludGVkUmVnaW9uOworICAgIHN0YXRpY19jYXN0PERyYXdp
bmdBcmVhUHJveHlJbXBsKj4oZHJhd2luZ0FyZWEpLT5wYWludChjciwgY2xpcFJlY3QsIHVucGFp
bnRlZFJlZ2lvbik7CiAgICAgcmV0dXJuIEZBTFNFOwogfQogCkBAIC0zMjMsOSArMzU3LDE0IEBA
IHN0YXRpYyB2b2lkIHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFsbG9jYXRpb24oV2ViS2l0
V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlCiAgICAgICAgIHZpZXdSZWN0LnNldEhlaWdodChhbGxv
Y2F0aW9uLT5oZWlnaHQgLSBwcml2LT5pbnNwZWN0b3JWaWV3SGVpZ2h0KTsKICAgICB9CiAKLSAg
ICBpZiAocHJpdi0+cGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpKQorICAgIERyYXdpbmdBcmVhUHJv
eHkqIGRyYXdpbmdBcmVhID0gcHJpdi0+cGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpOworICAgIGlm
IChkcmF3aW5nQXJlYSkgewogICAgICAgICBwcml2LT5wYWdlUHJveHktPmRyYXdpbmdBcmVhKCkt
PnNldFNpemUodmlld1JlY3Quc2l6ZSgpLCBJbnRTaXplKCkpOwogCisgICAgICAgIGlmIChzdGF0
aWNfY2FzdDxEcmF3aW5nQXJlYVByb3h5SW1wbCo+KGRyYXdpbmdBcmVhKS0+aXNJbkFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKCkgJiYgcHJpdi0+cmVkaXJlY3RlZFdpbmRvdykKKyAgICAgICAg
ICAgIHByaXYtPnJlZGlyZWN0ZWRXaW5kb3ctPm5vdGlmeVJlc2l6ZWQoKTsKKyAgICB9CisKICAg
ICBHdGtXaWRnZXQqIHRvcGxldmVsID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdF
VCh3ZWJWaWV3QmFzZSkpOwogICAgIGlmICh3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3co
dG9wbGV2ZWwpKQogICAgICAgICB3ZWJraXRXZWJWaWV3QmFzZU5vdGlmeVJlc2l6ZXJTaXplRm9y
V2luZG93KHdlYlZpZXdCYXNlLCBHVEtfV0lORE9XKHRvcGxldmVsKSk7CkBAIC0zMzMsNiArMzcy
LDkgQEAgc3RhdGljIHZvaWQgcmVzaXplV2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxsb2NhdGlvbihX
ZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UKIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmll
d0Jhc2VTaXplQWxsb2NhdGUoR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a0FsbG9jYXRpb24qIGFsbG9j
YXRpb24pCiB7CisgICAgR3RrQWxsb2NhdGlvbiBvbGRBbGxvY2F0aW9uOworICAgIGd0a193aWRn
ZXRfZ2V0X2FsbG9jYXRpb24od2lkZ2V0LCAmb2xkQWxsb2NhdGlvbik7CisKICAgICBHVEtfV0lE
R0VUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19iYXNlX3BhcmVudF9jbGFzcyktPnNpemVfYWxsb2Nh
dGUod2lkZ2V0LCBhbGxvY2F0aW9uKTsKIAogICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3
QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7CkBAIC0zNDAsNiArMzgyLDkgQEAg
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTaXplQWxsb2NhdGUoR3RrV2lkZ2V0KiB3aWRn
ZXQsIEd0a0FsbG9jYXRpb24qIGFsbG8KICAgICAgICAgd2ViVmlld0Jhc2UtPnByaXYtPm5lZWRz
UmVzaXplT25NYXAgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgaWYgKG9s
ZEFsbG9jYXRpb24ud2lkdGggPT0gYWxsb2NhdGlvbi0+d2lkdGggJiYgb2xkQWxsb2NhdGlvbi5o
ZWlnaHQgPT0gYWxsb2NhdGlvbi0+aGVpZ2h0KQorICAgICAgICByZXR1cm47CiAgICAgcmVzaXpl
V2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxsb2NhdGlvbih3ZWJWaWV3QmFzZSwgYWxsb2NhdGlvbik7
CiB9CiAKQEAgLTM0OCwxMyArMzkzLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VN
YXAoR3RrV2lkZ2V0KiB3aWRnZXQpCiAgICAgR1RLX1dJREdFVF9DTEFTUyh3ZWJraXRfd2ViX3Zp
ZXdfYmFzZV9wYXJlbnRfY2xhc3MpLT5tYXAod2lkZ2V0KTsKIAogICAgIFdlYktpdFdlYlZpZXdC
YXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdldCk7Ci0jaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKSAmJiBkZWZpbmVkKEdES19XSU5ET1dJTkdfWDExKQotICAgIEdk
a1dpbmRvdyogZ2RrV2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KHdpZGdldCk7Ci0gICAg
QVNTRVJUKGdka1dpbmRvdyk7Ci0gICAgaWYgKGdka193aW5kb3dfaGFzX25hdGl2ZShnZGtXaW5k
b3cpKQotICAgICAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT53aWRnZXRNYXBwZWQo
R0RLX1dJTkRPV19YSUQoZ2RrV2luZG93KSk7Ci0jZW5kaWYKLQogICAgIGlmICghd2ViVmlld0Jh
c2UtPnByaXYtPm5lZWRzUmVzaXplT25NYXApCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaAppbmRleCAwYzlmMDRm
OGUwMmRhOGYwY2RiYzBhMzAxMGY1ZjA0MWZhMzM5OTg4Li45MDBjZTBlZGM5NmY0ZDhjM2U0Y2Jm
MGI4ZTQwNTNmNGIzMGU4ZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
RHJhd2luZ0FyZWFQcm94eUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eUltcGwuaApAQCAtNDgsNiArNDgsMTQgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBwYWludChCYWNraW5nU3RvcmU6OlBsYXRmb3JtR3JhcGhpY3NDb250ZXh0LCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6UmVnaW9uJiB1bnBhaW50ZWRSZWdpb24pOwogCisjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIGJvb2wgaXNJbkFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gIW1fbGF5ZXJUcmVlQ29udGV4dC5pc0VtcHR5
KCk7IH0KKyNlbmRpZgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBQTEFU
Rk9STShHVEspCisgICAgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCgp
IHsgcmV0dXJuIG1fbGF5ZXJUcmVlQ29udGV4dDsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgRHJhd2luZ0FyZWFQcm94eUltcGwoV2ViUGFnZVByb3h5Kik7CiAKQEAgLTc5LDgg
Kzg3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZSgpOwogICAgIHZvaWQgdXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5
ZXJUcmVlQ29udGV4dCYpOwogCi0gICAgYm9vbCBpc0luQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoKSBjb25zdCB7IHJldHVybiAhbV9sYXllclRyZWVDb250ZXh0LmlzRW1wdHkoKTsgfQotCiAj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxl
Q29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdmlzaWJsZUNvbnRlbnRzUmVj
dCwgZmxvYXQgc2NhbGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnkpOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZUxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHlNZXNzYWdlKENvcmVJ
UEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDlhMTlh
NTY2YmI5MmMzNWVmNTA4ODIxYzgyM2M3YjI0MjI4MDc4YzIuLmIwMWQ2NWYzNjc4ZTMxY2ZiN2U4
YTA0MjA3ZmFlOGU4YjkyOWI3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKQEAgLTcwOSw3ICs3MDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBOYXRpdmVXZWJN
b3VzZUV2ZW50KiBjdXJyZW50bHlQcm9jZXNzZWRNb3VzZURvd25FdmVudCgpOwogCiAjaWYgUExB
VEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCi0gICAgdm9pZCB3aWRnZXRNYXBw
ZWQodWludDY0X3QgbmF0aXZlV2luZG93SWQpOworICAgIHZvaWQgaW52YWxpZGF0ZVdpZGdldCgp
OwogI2VuZGlmCiAKICAgICB2b2lkIHNldFN1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMoYm9vbCBm
bGFnKSB7IG1fc3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcyA9IGZsYWc7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDdmYTgx
YmU1YTVlZWQ3ZTA4OGM5ZDc4MjgzYmQxNTMyZjYzZmNiZmIuLmZiNDc1OTBjODEyOTRhMzQ3NTAw
NmMzZTU0NmMxZmU3OGUwNmZhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTc2LDYgKzE3NiwxMCBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlUHJveHkgewogICAgICMgU3VwcG9ydCBmb3IgY29ubmVjdGluZyB0aGUgQWNjZXNz
aWJpbGl0eSB3b3JsZHMgb2YgdGhlIFVJIGFuZCB0aGUgV2ViIHByb2Nlc3NlcwogICAgIEJpbmRB
Y2Nlc3NpYmlsaXR5VHJlZShXVEY6OlN0cmluZyBwbHVnSUQpCiAjZW5kaWYKKyMKKyNpZiBQTEFU
Rk9STShHVEspICYmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICBJbnZhbGlkYXRlV2lkZ2V0
KCkKKyNlbmRpZgogCiAgICAgIyBCYWNrRm9yd2FyZCBtZXNzYWdlcwogICAgIEJhY2tGb3J3YXJk
QWRkSXRlbSh1aW50NjRfdCBpdGVtSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKaW5kZXggYWMyNmMwY2I4ZmRiYjhjOWU3MjVmOTMzYjg0
NzhhMmE0ZGNjMGY3Yy4uNDVmZDljOWUxMTFmYTJiMjZhZTZiOWM2ODFjNTE4NzBiZDlmYjlmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNw
cApAQCAtMTEwLDkgKzExMCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dlZFBsdWdpbkdl
b21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lCiB9CiAKICNpZiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpCi12b2lkIFdlYlBhZ2VQcm94eTo6d2lkZ2V0TWFwcGVkKHVp
bnQ2NF90IG5hdGl2ZVdpbmRvd0lkKQordm9pZCBXZWJQYWdlUHJveHk6OmludmFsaWRhdGVXaWRn
ZXQoKQogewotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6V2lkZ2V0TWFw
cGVkKG5hdGl2ZVdpbmRvd0lkKSwgbV9wYWdlSUQpOworICAgIGd0a193aWRnZXRfcXVldWVfZHJh
dyhzdGF0aWNfY2FzdDxQYWdlQ2xpZW50SW1wbCo+KG1fcGFnZUNsaWVudCktPnZpZXdXaWRnZXQo
KSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKaW5kZXggNzg5NzI3YWQzYWFlMjRiYzMzNDU0MjI5MGI1OGJhMDRmZGU4OWI2Mi4uMjky
ZDM2NDM5YzEwNmYzZDEyMjg0OWQyMzRhOWQ4ZjU2YTg3ZWUwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00NTYsNyArNDU2LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgdXBkYXRlQWNjZXNzaWJpbGl0eVRyZWUoKTsKICAgICBib29sIGhhbmRsZU1v
dXNlUHJlc3NlZEV2ZW50KGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCYpOwogI2lm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICB2b2lkIHdpZGdldE1hcHBlZChpbnQ2NF90IG5h
dGl2ZVdpbmRvd0hhbmRsZSk7CisgICAgdm9pZCBpbnZhbGlkYXRlV2lkZ2V0KCk7CiAjZW5kaWYK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGUzZmYyM2NhZGNhYTgyZmY4MzhlYzNhMDQwNmY5YTli
NDFjM2IwY2EuLjEwNjE3YWZiZWJmMzMzM2FkZjFlNWQxMGY5NzMwZjMwZmFlNzQyMmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCkBAIC0yOTUsOCArMjk1LDQgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAjaWYgRU5B
QkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCiAgICAgU2V0VmlzaWJpbGl0eVN0YXRlKGludCB2aXNp
YmlsaXR5U3RhdGUsIGJvb2wgaXNJbml0aWFsU3RhdGUpOwogI2VuZGlmCi0KLSNpZiBQTEFURk9S
TShHVEspICYmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICBXaWRnZXRNYXBwZWQoaW50NjRf
dCBpZCkKLSNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKaW5kZXggZWU0ODNhZWQzMWVkMWJh
Y2JjYmNlMzNkZWJjMzcxYzlhMGNmZjNiNy4uNjg3ZDVhODM5YjgxZDU1NTM2NzEyOWNiNmFkYzBk
ZGVkZmFiZmZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCkBAIC02NCwyNCArNjQsMTIgQEAgTGF5
ZXJUcmVlSG9zdEd0azo6TGF5ZXJUcmVlSG9zdEd0ayhXZWJQYWdlKiB3ZWJQYWdlKQogICAgIDog
TGF5ZXJUcmVlSG9zdCh3ZWJQYWdlKQogICAgICwgbV9pc1ZhbGlkKHRydWUpCiAgICAgLCBtX25v
dGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaChmYWxzZSkKKyAgICAsIG1fcmVkaXJlY3RlZFdp
bmRvdyhSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6Y3JlYXRlKEludFNpemUoMSwgMSkpKQog
ICAgICwgbV9sYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQodHJ1ZSkKICAgICAsIG1fbGF5ZXJG
bHVzaFRpbWVyQ2FsbGJhY2tJZCgwKQogewogfQogCi1HTENvbnRleHQqIExheWVyVHJlZUhvc3RH
dGs6OmdsQ29udGV4dCgpCi17Ci0gICAgaWYgKG1fY29udGV4dCkKLSAgICAgICAgcmV0dXJuIG1f
Y29udGV4dC5nZXQoKTsKLQotICAgIHVpbnQ2NF90IHdpbmRvd0hhbmRsZSA9IG1fd2ViUGFnZS0+
bmF0aXZlV2luZG93SGFuZGxlKCk7Ci0gICAgaWYgKCF3aW5kb3dIYW5kbGUpCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgbV9jb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2lu
ZG93KHdpbmRvd0hhbmRsZSwgR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpKTsKLSAgICByZXR1
cm4gbV9jb250ZXh0LmdldCgpOwotfQotCiB2b2lkIExheWVyVHJlZUhvc3RHdGs6OmluaXRpYWxp
emUoKQogewogICAgIG1fcm9vdExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKHRoaXMpOwpA
QCAtMTA0LDEzICs5MiwxMyBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OmluaXRpYWxpemUoKQog
ICAgIG1fcm9vdExheWVyLT5hZGRDaGlsZChtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIuZ2V0
KCkpOwogICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7
CiAKLSAgICBtX2xheWVyVHJlZUNvbnRleHQud2luZG93SGFuZGxlID0gbV93ZWJQYWdlLT5uYXRp
dmVXaW5kb3dIYW5kbGUoKTsKLQotICAgIEdMQ29udGV4dCogY29udGV4dCA9IGdsQ29udGV4dCgp
OworICAgIG1fcmVkaXJlY3RlZFdpbmRvdy0+cmVzaXplKG1fd2ViUGFnZS0+c2l6ZSgpKTsKKyAg
ICBHTENvbnRleHQqIGNvbnRleHQgPSBtX3JlZGlyZWN0ZWRXaW5kb3ctPmNvbnRleHQoKTsKICAg
ICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CisgICAgbV9sYXllclRyZWVDb250ZXh0LndpbmRvd0hhbmRsZSA9IG1fcmVk
aXJlY3RlZFdpbmRvdy0+d2luZG93SGFuZGxlKCk7CiAKICAgICAvLyBUaGUgY3JlYXRpb24gb2Yg
dGhlIFRleHR1cmVNYXBwZXIgbmVlZHMgYW4gYWN0aXZlIE9wZW5HTCBjb250ZXh0LgogICAgIGNv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwpAQCAtMTYzLDcgKzE1MSw2IEBAIHZvaWQgTGF5
ZXJUcmVlSG9zdEd0azo6aW52YWxpZGF0ZSgpCiAgICAgbV9wYWdlT3ZlcmxheUxheWVyID0gbnVs
bHB0cjsKICAgICBtX3RleHR1cmVNYXBwZXIgPSBudWxscHRyOwogCi0gICAgbV9jb250ZXh0ID0g
bnVsbHB0cjsKICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKIH0KIApAQCAtMTg1LDYgKzE3Miw4IEBA
IHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6c2l6ZURpZENoYW5nZShjb25zdCBJbnRTaXplJiBuZXdT
aXplKQogewogICAgIGlmIChtX3Jvb3RMYXllci0+c2l6ZSgpID09IG5ld1NpemUpCiAgICAgICAg
IHJldHVybjsKKworICAgIG1fcmVkaXJlY3RlZFdpbmRvdy0+cmVzaXplKG5ld1NpemUpOwogICAg
IG1fcm9vdExheWVyLT5zZXRTaXplKG5ld1NpemUpOwogCiAgICAgLy8gSWYgdGhlIG5ld1NpemUg
ZXhwb3NlcyBuZXcgYXJlYXMgb2YgdGhlIG5vbi1jb21wb3NpdGVkIGNvbnRlbnQgYSBzZXROZWVk
c0Rpc3BsYXkgaXMgbmVlZGVkCkBAIC0yOTUsMTQgKzI4NCwxNCBAQCBib29sIExheWVyVHJlZUhv
c3RHdGs6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpCiAKIHZvaWQgTGF5ZXJUcmVlSG9zdEd0
azo6Y29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0KCkKIHsKLSAgICBHTENvbnRleHQqIGNvbnRleHQg
PSBnbENvbnRleHQoKTsKKyAgICBHTENvbnRleHQqIGNvbnRleHQgPSBtX3JlZGlyZWN0ZWRXaW5k
b3ctPmNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQgfHwgIWNvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGUgd2luZG93IHNpemUgbWF5
IGJlIG91dCBvZiBzeW5jIHdpdGggdGhlIHBhZ2Ugc2l6ZSBhdCB0aGlzIHBvaW50LCBhbmQgZ2V0
dGluZwogICAgIC8vIHRoZSB2aWV3cG9ydCBwYXJhbWV0ZXJzIGluY29ycmVjdCwgbWVhbnMgdGhh
dCB0aGUgY29udGVudCB3aWxsIGJlIG1pc3BsYWNlZC4gVGh1cwogICAgIC8vIHdlIHNldCB0aGUg
dmlld3BvcnQgcGFyYW1ldGVycyBkaXJlY3RseSBmcm9tIHRoZSB3aW5kb3cgc2l6ZS4KLSAgICBJ
bnRTaXplIGNvbnRleHRTaXplID0gbV9jb250ZXh0LT5kZWZhdWx0RnJhbWVCdWZmZXJTaXplKCk7
CisgICAgSW50U2l6ZSBjb250ZXh0U2l6ZSA9IGNvbnRleHQtPmRlZmF1bHRGcmFtZUJ1ZmZlclNp
emUoKTsKICAgICBnbFZpZXdwb3J0KDAsIDAsIGNvbnRleHRTaXplLndpZHRoKCksIGNvbnRleHRT
aXplLmhlaWdodCgpKTsKIAogICAgIG1fdGV4dHVyZU1hcHBlci0+YmVnaW5QYWludGluZygpOwpA
QCAtMzEwLDYgKzI5OSwxNiBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OmNvbXBvc2l0ZUxheWVy
c1RvQ29udGV4dCgpCiAgICAgbV90ZXh0dXJlTWFwcGVyLT5lbmRQYWludGluZygpOwogCiAgICAg
Y29udGV4dC0+c3dhcEJ1ZmZlcnMoKTsKKworICAgIC8vIEZJWE1FOiBJdCBzZWVtcyB0aGF0IHdo
ZW4gdXNpbmcgZG91YmxlLWJ1ZmZlcmluZyAoYW5kIG9uIHNvbWUgZHJpdmVycyBzaW5nbGUtYnVm
ZmVyaW5nKQorICAgIC8vIGFuZCBYQ29tcG9zaXRlIHdpbmRvdyByZWRpcmVjdGlvbiwgdHdvIHN3
YXAgYnVmZmVycyBhcmUgcmVxdWlyZWQgdG8gZm9yY2UgdGhlIHBpeG1hcAorICAgIC8vIHRvIHVw
ZGF0ZS4gVGhpcyBpc24ndCBhIHByb2JsZW0gZHVyaW5nIGFuaW1hdGlvbnMsIGJlY2F1c2Ugc3dh
cEJ1ZmZlciBpcyBjb250aW51b3VzbHkgCisgICAgLy8gY2FsbGVkLiBGb3Igbm9uLWFuaW1hdGlv
biBzaXR1YXRpb25zIHdlIHVzZSB0aGlzIHRlcnJpYmxlIGhhY2sgdW50aWwgd2UgY2FuIGdldCB0
byB0aGUKKyAgICAvLyBib3R0b20gb2YgdGhlIGlzc3VlLgorICAgIGlmICghdG9UZXh0dXJlTWFw
cGVyTGF5ZXIobV9yb290TGF5ZXIuZ2V0KCkpLT5kZXNjZW5kYW50c09yU2VsZkhhdmVSdW5uaW5n
QW5pbWF0aW9ucygpKSB7CisgICAgICAgIGNvbnRleHQtPnN3YXBCdWZmZXJzKCk7CisgICAgICAg
IGNvbnRleHQtPnN3YXBCdWZmZXJzKCk7CisgICAgfQogfQogCiB2b2lkIExheWVyVHJlZUhvc3RH
dGs6OmZsdXNoQW5kUmVuZGVyTGF5ZXJzKCkKQEAgLTMyMiw3ICszMjEsNyBAQCB2b2lkIExheWVy
VHJlZUhvc3RHdGs6OmZsdXNoQW5kUmVuZGVyTGF5ZXJzKCkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBHTENvbnRleHQqIGNvbnRleHQgPSBnbENvbnRleHQoKTsKKyAgICBHTENv
bnRleHQqIGNvbnRleHQgPSBtX3JlZGlyZWN0ZWRXaW5kb3ctPmNvbnRleHQoKTsKICAgICBpZiAo
IWNvbnRleHQgfHwgIWNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1
cm47CiAKQEAgLTMzMSw2ICszMzAsNyBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OmZsdXNoQW5k
UmVuZGVyTGF5ZXJzKCkKIAogICAgIC8vIE91ciBtb2RlbCBpcyB2ZXJ5IHNpbXBsZS4gV2UgYWx3
YXlzIGNvbXBvc2l0ZSBhbmQgcmVuZGVyIHRoZSB0cmVlIGltbWVkaWF0ZWx5IGFmdGVyIHVwZGF0
aW5nIGl0LgogICAgIGNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dCgpOworICAgIG1fd2ViUGFnZS0+
aW52YWxpZGF0ZVdpZGdldCgpOwogCiAgICAgaWYgKG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXll
ckZsdXNoKSB7CiAgICAgICAgIC8vIExldCB0aGUgZHJhd2luZyBhcmVhIGtub3cgdGhhdCB3ZSd2
ZSBkb25lIGEgZmx1c2ggb2YgdGhlIGxheWVyIGNoYW5nZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCmluZGV4
IDA2MDU3MGI2NDkxNDhkZjU1M2M4MDNiNDc1ZmY0ZjQ5NDAyNDI1YjYuLjZhNThkNTk1NGIzMjcw
YmQwNmFjZmFjNWJkMzU4N2ZjMmY2ZDhiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9HTENvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDbGllbnQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Lmg+CiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTk5LDcgKzEwMCw3IEBA
IHByaXZhdGU6CiAgICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fbm9uQ29tcG9z
aXRlZENvbnRlbnRMYXllcjsKICAgICBPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9w
YWdlT3ZlcmxheUxheWVyOwogICAgIE93blB0cjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyPiBtX3Rl
eHR1cmVNYXBwZXI7Ci0gICAgT3duUHRyPFdlYkNvcmU6OkdMQ29udGV4dD4gbV9jb250ZXh0Owor
ICAgIE93blB0cjxXZWJDb3JlOjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gbV9yZWRpcmVj
dGVkV2luZG93OwogICAgIGJvb2wgbV9sYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQ7CiAgICAg
dW5zaWduZWQgbV9sYXllckZsdXNoVGltZXJDYWxsYmFja0lkOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCmluZGV4IDMw
YWFhNDAzN2Y3YzQ3ZDE0ZDU2YTQ3YzcxZWFhYzY3M2JjYTgyNDIuLjY5YzgzNGRlMjAyMTg3ZjZh
ODBiYmZkNzA3OTJiNWZjNmU0OWMzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcApAQCAtMTU1LDEzICsxNTUsNiBAQCBQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VEYXRhRm9yVVJM
KGNvbnN0IEtVUkwmKQogICAgIHJldHVybiAwOwogfQogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKQotdm9pZCBXZWJQYWdlOjp3aWRnZXRNYXBwZWQoaW50NjRfdCBuYXRpdmVXaW5kb3dIYW5k
bGUpCi17Ci0gICAgbV9uYXRpdmVXaW5kb3dIYW5kbGUgPSBuYXRpdmVXaW5kb3dIYW5kbGU7Ci19
Ci0jZW5kaWYKLQogYm9vbCBXZWJQYWdlOjpoYW5kbGVNb3VzZVByZXNzZWRFdmVudChjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91c2VFdmVudCkKIHsKICAgICBib29sIHJldHVy
blZhbHVlID0gZmFsc2U7CkBAIC0xODcsNCArMTgwLDExIEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxl
TW91c2VQcmVzc2VkRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9ybU1vdXNl
RXZlCiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQogCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKQordm9pZCBXZWJQYWdlOjppbnZhbGlkYXRlV2lkZ2V0KCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkludmFsaWRhdGVXaWRnZXQoKSk7Cit9CisjZW5kaWYKKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164442</attachid>
            <date>2012-09-17 12:39:20 -0700</date>
            <delta_ts>2012-09-17 15:47:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94417-20120917123838.patch</filename>
            <type>text/plain</type>
            <size>23998</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FlMWI0ZjE2ODViM2Mx
M2Y4ZTI4ZGFlYzc2ZTcwYWQ3ZDcyODZjYS4uYzVjMzQ2ZTY3NjY4OTU2ZWYwNjJkM2UyOGI1Y2Q0
NjVlZmE0N2U0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA5LTE3ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBbV2Vi
S2l0Ml0gVXNlIFhDb21wb3NpdGUgd2luZG93IGZvciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ0MTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9m
IHJlbmRlcmluZyBkaXJlY3RseSB0byB0aGUgd2lkZ2V0J3MgbmF0aXZlIHdpbmRvdywgcmVuZGVy
IHRvIGFuCisgICAgICAgIG9mZnNjcmVlbiB3aW5kb3cgcmVkaXJlY3RlZCB0byBhIFBpeG1hcCB3
aXRoIFhDb21wb3NpdGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHdpbGwgYmUgY292
ZXJlZCBieSB0aGUgZXhpc3RpbmcgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgdGVzdHMsCisgICAg
ICAgIHdoaWNoIHNob3VsZCBub3cgZ2l2ZSBjb3JyZWN0IHBpeGVsIHJlc3VsdHMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnJlc2l6ZSk6IEFkZCBhIGNh
bGwgdG8gWEZsdXNoIHdoaWNoIGVuc3VyZXMKKyAgICAgICAgdGhhdCBwZW5kaW5nIFgxMSBvcGVy
YXRpb25zIGNvbXBsZXRlLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5k
b3c6OndpbmRvd0lkKTogQWRkZWQgdGhpcyBhY2Nlc3Nvci4KKwogMjAxMi0wOS0xNCAgU2hlcmlm
ZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjEyODY3My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmZTU2NTBhMjczYTU4NWViMjE4
YmZlNTA1NWE3ZThmMGM4ZjM3MzMxLi40ZWEzMzY3NWY5OTRhM2ZjYzdmM2FkNmNiNTU4ZTNlNzU5
MTVhYjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTItMDktMTcgIE1hcnRpbiBS
b2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFtXZWJLaXQy
XSBVc2UgWENvbXBvc2l0ZSB3aW5kb3cgZm9yIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDQxNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3RlYWQgb2YgcmVu
ZGVyaW5nIGRpcmVjdGx5IHRvIHRoZSB3aWRnZXQncyBuYXRpdmUgd2luZG93LCByZW5kZXIgdG8g
YW4KKyAgICAgICAgb2Zmc2NyZWVuIHdpbmRvdyByZWRpcmVjdGVkIHRvIGEgUGl4bWFwIHdpdGgg
WENvbXBvc2l0ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcDoKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUpOiBBZGRlZCBhIGZl
dyBtZW1iZXJzIG5lY2Vzc2FyeSB0byB0cmFjayB0aGUgCisgICAgICAgIG9mZnNjcmVlbiB3aW5k
b3cuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9pbml0KToKKyAgICAgICAgKHJlbmRl
ckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKTogQWRkZWQgdGhpcyBoZWxwZXIgZnVuY3Rp
b25zIHdoaWNoIHJlbmRlcnMKKyAgICAgICAgdGhlIHJlc3VsdHMgb2YgdGhlIGFjY2VsZXJhdGVk
IGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgZHVyaW5nIHRoZSBHVEsrIGRyYXcgbG9vcC4KKyAgICAg
ICAgKHdlYmtpdFdlYlZpZXdCYXNlRHJhdyk6IENhbGwgcmVuZGVyQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ1Jlc3VsdHMgd2hlbiBhcHByb3ByaWF0ZS4KKyAgICAgICAgKHJlc2l6ZVdlYktpdFdlYlZp
ZXdCYXNlRnJvbUFsbG9jYXRpb24pOiBSZXNpemUgdGhlIG9mZnNjcmVlbiB3aW5kb3cgd2hlbiBh
cHByb3ByaWF0ZS4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlU2l6ZUFsbG9jYXRlKTogRG8g
bm90IGNhbGwgcmVzaXplV2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxsb2NhdGlvbiB3aGVuCisgICAg
ICAgIHRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgd2lkZ2V0IGRvZXMgbm90IGNoYW5nZS4gVGhpcyBw
cmV2ZW50cyBkZXN0cm95aW5nIGFuZCByZWNyZWF0aW5nCisgICAgICAgIHRoZSBvZmZzY3JlZW4g
d2luZG93IHBpeG1hcCB3aGVuIGl0IGlzbid0IG5lY2Vzc2FyeS4KKyAgICAgICAgKHdlYmtpdFdl
YlZpZXdCYXNlTWFwKTogV2Ugbm8gbG9uZ2VyIHNlbmQgdGhlIHdpbmRvdyBpZCBkdXJpbmcgbWFw
LCBpbnN0ZWFkIGl0J3Mgc2VudAorICAgICAgICBhcyBzb29uIGFzIHRoZXJlIGlzIFdlYlBhZ2VQ
cm94eS4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSk6IFNlbmQgdGhl
IHdpbmRvdyBpZCBvZiB0aGUgcmVkaXJlY3RlZCB3aW5kb3cgdG8KKyAgICAgICAgdGhlIFdlYlBy
b2Nlc3MuCisgICAgICAgIChxdWV1ZUFub3RoZXJEcmF3T2ZBY2NlbGVyYXRlZENvbXBvc2l0aW5n
UmVzdWx0cyk6IEFkZGVkIHRoaXMgaGVscGVyIHdoaWNoIHdvcmtzCisgICAgICAgIGFyb3VuZCB0
aGUgaXNzdWUgb2Ygc2xvdyB1cGRhdGVzIG9mIHRoZSBwaXhtYXAgYmFja2luZyB0aGUgcmVkaXJl
Y3RlZCBYQ29tcG9zaXRlIHdpbmRvdy4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlUXVldWVE
cmF3T2ZBY2NlbGVyYXRlZENvbXBvc2l0aW5nUmVzdWx0cyk6IEFkZGVkIHRoaXMgbWV0aG9kIHdo
aWNoCisgICAgICAgIGlzIHdoYXQgdGhlIFdlYlByb2Nlc3MgdXNlcyB0byBmb3JjZSBhIHJlZHJh
dyBvbiB0aGUgVUlQcm9jZXNzIHNpZGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2VQcml2YXRlLmg6IEFkZGVkIG5ldyBtZXRob2QgdG8gdGhlIGxpc3Qgb2Yg
cHJpdmF0ZSBtZXRob2RzLgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1w
bC5oOgorICAgICAgICAoRHJhd2luZ0FyZWFQcm94eUltcGwpOgorICAgICAgICAoV2ViS2l0OjpE
cmF3aW5nQXJlYVByb3h5SW1wbDo6aXNJbkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTogRXhw
b3NlZCB0aGlzIG1ldGhvZCBwdWJsaWNhbGx5CisgICAgICAgIHNvIHRoYXQgaXQgY2FuIGJlIHVz
ZWQgZnJvbSBXZWJLaXRXZWJWaWV3QmFzZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgIChXZWJQYWdlUHJveHkpOiBSZW5hbWVkIHdpZGdldE1hcHBlZCB0byBz
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nV2luZG93SWQuCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbjogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9X
ZWJQYWdlUHJveHlHdGsuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nV2luZG93SWQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJQYWdlKTogRGl0dG8uCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IERpdHRvLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OnNpemVEaWRDaGFuZ2UpOiBGb3JjZSBhIGNvbXBv
c2l0ZSB0byB0aGUgcmVzaXplZCB3aW5kb3cgcmlnaHQKKyAgICAgICAgYXdheSBzbyB0aGF0IHRo
ZSBuZXcgd2luZG93IHBpeG1hcCBpcyB1cGRhdGVkIGJlZm9yZSB0aGUgZmlyc3QgZHJhdy4KKyAg
ICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6Y29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0
KTogSWYgdGhlIGNvbXBvc2l0aW9uIGlzIGZvciBhIHJlc2l6ZSwKKyAgICAgICAgZmlyc3QgY2xl
YXIgdGhlIGVudGlyZSBHTCBjb250ZXh0IHNvIHRoYXQgd2UgZG9uJ3Qgc2VlIGJsYWNrIGFydGlm
YWN0cyBkdXJpbmcgcmVzaXplLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5
ZXJUcmVlSG9zdEd0ay5oOgorICAgICAgICAoTGF5ZXJUcmVlSG9zdEd0ayk6IFVwZGF0ZSB0aGUg
c2lnbmF0dXJlIG9mICBjb21wb3NpdGVMYXllcnNUb0NvbnRleHQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1dpbmRvd0lkKTogQWRkZWQuCisKIDIwMTItMDkt
MTQgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Njg0NgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAKaW5k
ZXggMTU3MmE1OWI0MTY3NmQzYjU5ZTg1NDUxMzY2NzNiZDdlMzg2YzEzZi4uNDgwYjUzZmRkOWFj
MjliODhiYWZkNzljNzBlZjExZTQ3MDcyMjVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCkBAIC0x
MzcsNiArMTM3LDggQEAgdm9pZCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6cmVzaXplKGNv
bnN0IEludFNpemUmIHNpemUpCiAKICAgICBEaXNwbGF5KiBkaXNwbGF5ID0gR0xDb250ZXh0R0xY
OjpzaGFyZWREaXNwbGF5KCk7CiAgICAgWFJlc2l6ZVdpbmRvdyhkaXNwbGF5LCBtX3dpbmRvdywg
c2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKworICAgIFhGbHVzaChkaXNwbGF5KTsKICAg
ICBnbFhXYWl0WCgpOwogCiAgICAgLy8gVGhpcyBzd2FwIGlzIGJhc2VkIG9uIGNvZGUgaW4gQ2hy
b21pdW0uIEl0IHRyaWVzIHRvIHdvcmstYXJvdW5kIGEgYnVnIGluIHRoZSBJbnRlbCBkcml2ZXJz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdy5oCmluZGV4IGQ2Y2Q3NDcyM2I3OWQxOTU3MGU3ZWQyOWRjMDJlY2EyNjI1
OWNlYmEuLmU1ZGIwZmE3ZThhZDlhODI1ZTFiNjlmOWU2MmFlMzcwN2UyOWVmYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdy5oCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2l6ZShjb25z
dCBJbnRTaXplJiBuZXdTaXplKTsKICAgICBHTENvbnRleHQqIGNvbnRleHQoKTsKICAgICBjYWly
b19zdXJmYWNlX3QqIGNhaXJvU3VyZmFjZUZvcldpZGdldChHdGtXaWRnZXQqKTsKKyAgICBXaW5k
b3cgd2luZG93SWQoKSB7IHJldHVybiBtX3dpbmRvdzsgfQogCiBwcml2YXRlOgogICAgIFJlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93KGNvbnN0IEludFNpemUmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCBm
NWJkMmRkY2M5NmE5OGJmMTMyYWQyMTY1MjU4MmZlNGNhOWU5ODJjLi5mMWYzNzYyN2ZhMThmZWI5
MTNhYzA1MmJlZGQ1MjNkNDg2MTgwZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC02Nyw3ICs2Nyw3IEBA
CiAjZW5kaWYKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgZGVmaW5lZChHREtfV0lO
RE9XSU5HX1gxMSkKLSNpbmNsdWRlIDxnZGsvZ2RreC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaD4KICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwpAQCAtODksMTQgKzg5LDIwIEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRl
IHsKICAgICBJbnRTaXplIHJlc2l6ZXJTaXplOwogICAgIEdSZWZQdHI8QXRrT2JqZWN0PiBhY2Nl
c3NpYmxlOwogICAgIGJvb2wgbmVlZHNSZXNpemVPbk1hcDsKLSNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCi0gICAgYm9vbCBmdWxsU2NyZWVuTW9kZUFjdGl2ZTsKLSAgICBXZWJGdWxsU2NyZWVu
Q2xpZW50R3RrIGZ1bGxTY3JlZW5DbGllbnQ7Ci0jZW5kaWYKICAgICBHdGtXaWRnZXQqIGluc3Bl
Y3RvclZpZXc7CiAgICAgdW5zaWduZWQgaW5zcGVjdG9yVmlld0hlaWdodDsKICAgICBHT3duUHRy
PEdka0V2ZW50PiBjb250ZXh0TWVudUV2ZW50OwogICAgIFdlYkNvbnRleHRNZW51UHJveHlHdGsq
IGFjdGl2ZUNvbnRleHRNZW51UHJveHk7CisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisg
ICAgYm9vbCBmdWxsU2NyZWVuTW9kZUFjdGl2ZTsKKyAgICBXZWJGdWxsU2NyZWVuQ2xpZW50R3Rr
IGZ1bGxTY3JlZW5DbGllbnQ7CisjZW5kaWYKKworI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkK
KyAgICBPd25QdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IHJlZGlyZWN0ZWRXaW5kb3c7
CisgICAgYm9vbCByZWFkeVRvUmVuZGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHM7Cisj
ZW5kaWYKIH07CiAKIEdfREVGSU5FX1RZUEUoV2ViS2l0V2ViVmlld0Jhc2UsIHdlYmtpdF93ZWJf
dmlld19iYXNlLCBHVEtfVFlQRV9DT05UQUlORVIpCkBAIC0xNjEsOSArMTY3LDYgQEAgc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VSZWFsaXplKEd0a1dpZGdldCogd2lkZ2V0KQogICAgIGdp
bnQgYXR0cmlidXRlc01hc2sgPSBHREtfV0FfWCB8IEdES19XQV9ZIHwgR0RLX1dBX1ZJU1VBTDsK
IAogICAgIEdka1dpbmRvdyogd2luZG93ID0gZ2RrX3dpbmRvd19uZXcoZ3RrX3dpZGdldF9nZXRf
cGFyZW50X3dpbmRvdyh3aWRnZXQpLCAmYXR0cmlidXRlcywgYXR0cmlidXRlc01hc2spOwotI2lm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICBnZGtfd2luZG93X2Vuc3VyZV9uYXRpdmUod2lu
ZG93KTsKLSNlbmRpZgogICAgIGd0a193aWRnZXRfc2V0X3dpbmRvdyh3aWRnZXQsIHdpbmRvdyk7
CiAgICAgZ2RrX3dpbmRvd19zZXRfdXNlcl9kYXRhKHdpbmRvdywgd2lkZ2V0KTsKIApAQCAtMjYz
LDcgKzI2Niw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2luaXQoV2ViS2l0
V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogICAgIHByaXYtPnNob3VsZEZvcndhcmRO
ZXh0S2V5RXZlbnQgPSBGQUxTRTsKIAogICAgIEd0a1dpZGdldCogdmlld1dpZGdldCA9IEdUS19X
SURHRVQod2Via2l0V2ViVmlld0Jhc2UpOwotICAgIGd0a193aWRnZXRfc2V0X2RvdWJsZV9idWZm
ZXJlZCh2aWV3V2lkZ2V0LCBGQUxTRSk7CiAgICAgZ3RrX3dpZGdldF9zZXRfY2FuX2ZvY3VzKHZp
ZXdXaWRnZXQsIFRSVUUpOwogICAgIHByaXYtPmltQ29udGV4dCA9IGFkb3B0R1JlZihndGtfaW1f
bXVsdGljb250ZXh0X25ldygpKTsKIApAQCAtMjc0LDIwICsyNzYsNDkgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X2Jhc2VfaW5pdChXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmll
d0Jhc2UpCiAgICAgZ3RrX2RyYWdfZGVzdF9zZXQodmlld1dpZGdldCwgc3RhdGljX2Nhc3Q8R3Rr
RGVzdERlZmF1bHRzPigwKSwgMCwgMCwKICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxHZGtEcmFnQWN0aW9uPihHREtfQUNUSU9OX0NPUFkgfCBHREtfQUNUSU9OX01PVkUgfCBHREtf
QUNUSU9OX0xJTksgfCBHREtfQUNUSU9OX1BSSVZBVEUpKTsKICAgICBndGtfZHJhZ19kZXN0X3Nl
dF90YXJnZXRfbGlzdCh2aWV3V2lkZ2V0LCBQYXN0ZWJvYXJkSGVscGVyOjpkZWZhdWx0UGFzdGVi
b2FyZEhlbHBlcigpLT50YXJnZXRMaXN0KCkpOworCisgICAgd2Via2l0V2ViVmlld0Jhc2UtPnBy
aXYtPnJlZGlyZWN0ZWRXaW5kb3cgPSBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6Y3JlYXRl
KEludFNpemUoMSwgMSkpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5yZWFkeVRvUmVu
ZGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMgPSBmYWxzZTsKIH0KIAorI2lmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkKK3N0YXRpYyBib29sIHJlbmRlckFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdSZXN1bHRzKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgY2Fpcm9fdCogY3IsIERy
YXdpbmdBcmVhUHJveHlJbXBsKiBkcmF3aW5nQXJlYSkKK3sKKyAgICBpZiAoIWRyYXdpbmdBcmVh
LT5pc0luQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgLy8gVG8gYXZvaWQgZmxhc2hlcyB3aGVuIGluaXRpYWxpemluZyBhY2NlbGVyYXRl
ZCBjb21wb3NpdGluZyBmb3IgdGhlIGZpcnN0CisgICAgLy8gdGltZSwgd2Ugd2FpdCB1bnRpbCB3
ZSBrbm93IHRoZXJlJ3MgYSBmcmFtZSByZWFkeSBiZWZvcmUgcmVuZGVyaW5nLgorICAgIFdlYktp
dFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OworICAgIGlmICgh
cHJpdi0+cmVhZHlUb1JlbmRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBBU1NFUlQocHJpdi0+cmVkaXJlY3RlZFdpbmRvdyk7Cisg
ICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gcHJpdi0+cmVkaXJlY3RlZFdpbmRvdy0+Y2Fp
cm9TdXJmYWNlRm9yV2lkZ2V0KEdUS19XSURHRVQod2ViVmlld0Jhc2UpKTsKKyAgICBjYWlyb19z
ZXRfc291cmNlX3N1cmZhY2UoY3IsIHN1cmZhY2UsIDAsIDApOworICAgIGNhaXJvX3BhaW50KGNy
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0
V2ViVmlld0Jhc2VEcmF3KEd0a1dpZGdldCogd2lkZ2V0LCBjYWlyb190KiBjcikKIHsKLSAgICBE
cmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJlYSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdl
dCktPnByaXYtPnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKTsKKyAgICBXZWJLaXRXZWJWaWV3QmFz
ZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOworICAgIERyYXdp
bmdBcmVhUHJveHlJbXBsKiBkcmF3aW5nQXJlYSA9IHN0YXRpY19jYXN0PERyYXdpbmdBcmVhUHJv
eHlJbXBsKj4od2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKSk7CiAg
ICAgaWYgKCFkcmF3aW5nQXJlYSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCisjaWYgVVNFKFRF
WFRVUkVfTUFQUEVSX0dMKQorICAgIGlmIChyZW5kZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nUmVz
dWx0cyh3ZWJWaWV3QmFzZSwgY3IsIGRyYXdpbmdBcmVhKSkKKyAgICAgICAgcmV0dXJuIEZBTFNF
OworI2VuZGlmCisKICAgICBHZGtSZWN0YW5nbGUgY2xpcFJlY3Q7CiAgICAgaWYgKCFnZGtfY2Fp
cm9fZ2V0X2NsaXBfcmVjdGFuZ2xlKGNyLCAmY2xpcFJlY3QpKQogICAgICAgICByZXR1cm4gRkFM
U0U7CiAKICAgICBXZWJDb3JlOjpSZWdpb24gdW5wYWludGVkUmVnaW9uOyAvLyBUaGlzIGlzIHNp
bXBseSB1bnVzZWQuCi0gICAgc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUltcGwqPihkcmF3
aW5nQXJlYSktPnBhaW50KGNyLCBjbGlwUmVjdCwgdW5wYWludGVkUmVnaW9uKTsKKyAgICBkcmF3
aW5nQXJlYS0+cGFpbnQoY3IsIGNsaXBSZWN0LCB1bnBhaW50ZWRSZWdpb24pOwogCiAgICAgcmV0
dXJuIEZBTFNFOwogfQpAQCAtMzIzLDggKzM1NCwxMSBAQCBzdGF0aWMgdm9pZCByZXNpemVXZWJL
aXRXZWJWaWV3QmFzZUZyb21BbGxvY2F0aW9uKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFz
ZQogICAgICAgICB2aWV3UmVjdC5zZXRIZWlnaHQoYWxsb2NhdGlvbi0+aGVpZ2h0IC0gcHJpdi0+
aW5zcGVjdG9yVmlld0hlaWdodCk7CiAgICAgfQogCi0gICAgaWYgKHByaXYtPnBhZ2VQcm94eS0+
ZHJhd2luZ0FyZWEoKSkKLSAgICAgICAgcHJpdi0+cGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpLT5z
ZXRTaXplKHZpZXdSZWN0LnNpemUoKSwgSW50U2l6ZSgpKTsKKyAgICBpZiAod2ViVmlld0Jhc2Ut
PnByaXYtPnJlZGlyZWN0ZWRXaW5kb3cpCisgICAgICAgIHdlYlZpZXdCYXNlLT5wcml2LT5yZWRp
cmVjdGVkV2luZG93LT5yZXNpemUoSW50U2l6ZShhbGxvY2F0aW9uLT53aWR0aCwgYWxsb2NhdGlv
bi0+aGVpZ2h0KSk7CisKKyAgICBpZiAoRHJhd2luZ0FyZWFQcm94eUltcGwqIGRyYXdpbmdBcmVh
ID0gc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUltcGwqPih3ZWJWaWV3QmFzZS0+cHJpdi0+
cGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpKSkKKyAgICAgICAgZHJhd2luZ0FyZWEtPnNldFNpemUo
dmlld1JlY3Quc2l6ZSgpLCBJbnRTaXplKCkpOwogCiAgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9
IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQod2ViVmlld0Jhc2UpKTsKICAgICBp
ZiAod2lkZ2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93KHRvcGxldmVsKSkKQEAgLTMzMywxNCAr
MzY3LDIwIEBAIHN0YXRpYyB2b2lkIHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFsbG9jYXRp
b24oV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlCiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdl
YlZpZXdCYXNlU2l6ZUFsbG9jYXRlKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtBbGxvY2F0aW9uKiBh
bGxvY2F0aW9uKQogewotICAgIEdUS19XSURHRVRfQ0xBU1Mod2Via2l0X3dlYl92aWV3X2Jhc2Vf
cGFyZW50X2NsYXNzKS0+c2l6ZV9hbGxvY2F0ZSh3aWRnZXQsIGFsbG9jYXRpb24pOworICAgIEd0
a0FsbG9jYXRpb24gb2xkQWxsb2NhdGlvbjsKKyAgICBndGtfd2lkZ2V0X2dldF9hbGxvY2F0aW9u
KHdpZGdldCwgJm9sZEFsbG9jYXRpb24pOwogCi0gICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZp
ZXdCYXNlID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KTsKLSAgICBpZiAoIWd0a193aWRn
ZXRfZ2V0X21hcHBlZChHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSkgJiYgIXdlYlZpZXdCYXNlLT5w
cml2LT5wYWdlUHJveHktPmRyYXdpbmdBcmVhKCktPnNpemUoKS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgd2ViVmlld0Jhc2UtPnByaXYtPm5lZWRzUmVzaXplT25NYXAgPSB0cnVlOwotICAgICAgICBy
ZXR1cm47CisgICAgaWYgKG9sZEFsbG9jYXRpb24ud2lkdGggIT0gYWxsb2NhdGlvbi0+d2lkdGgg
fHwgb2xkQWxsb2NhdGlvbi5oZWlnaHQgIT0gYWxsb2NhdGlvbi0+aGVpZ2h0KSB7CisgICAgICAg
IFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdp
ZGdldCk7CisgICAgICAgIGlmICghZ3RrX3dpZGdldF9nZXRfbWFwcGVkKEdUS19XSURHRVQod2Vi
Vmlld0Jhc2UpKSAmJiAhd2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEo
KS0+c2l6ZSgpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgd2ViVmlld0Jhc2UtPnByaXYtPm5l
ZWRzUmVzaXplT25NYXAgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgcmVzaXplV2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxsb2NhdGlvbih3ZWJWaWV3QmFz
ZSwgYWxsb2NhdGlvbik7CiAgICAgfQotICAgIHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFs
bG9jYXRpb24od2ViVmlld0Jhc2UsIGFsbG9jYXRpb24pOworCisgICAgR1RLX1dJREdFVF9DTEFT
Uyh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9wYXJlbnRfY2xhc3MpLT5zaXplX2FsbG9jYXRlKHdpZGdl
dCwgYWxsb2NhdGlvbik7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlTWFwKEd0
a1dpZGdldCogd2lkZ2V0KQpAQCAtMzQ4LDEzICszODgsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZU1hcChHdGtXaWRnZXQqIHdpZGdldCkKICAgICBHVEtfV0lER0VUX0NMQVNTKHdl
YmtpdF93ZWJfdmlld19iYXNlX3BhcmVudF9jbGFzcyktPm1hcCh3aWRnZXQpOwogCiAgICAgV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0
KTsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19Y
MTEpCi0gICAgR2RrV2luZG93KiBnZGtXaW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3cod2lk
Z2V0KTsKLSAgICBBU1NFUlQoZ2RrV2luZG93KTsKLSAgICBpZiAoZ2RrX3dpbmRvd19oYXNfbmF0
aXZlKGdka1dpbmRvdykpCi0gICAgICAgIHdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJveHktPndp
ZGdldE1hcHBlZChHREtfV0lORE9XX1hJRChnZGtXaW5kb3cpKTsKLSNlbmRpZgotCiAgICAgaWYg
KCF3ZWJWaWV3QmFzZS0+cHJpdi0+bmVlZHNSZXNpemVPbk1hcCkKICAgICAgICAgcmV0dXJuOwog
CkBAIC02NzUsNiArNzA4LDEwIEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdl
KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgV0tDb250CiAjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQogICAgIHByaXYtPnBhZ2VQcm94eS0+ZnVsbFNjcmVlbk1hbmFnZXIo
KS0+c2V0V2ViVmlldyh3ZWJraXRXZWJWaWV3QmFzZSk7CiAjZW5kaWYKKworI2lmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkKKyAgICBwcml2LT5wYWdlUHJveHktPnNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdXaW5kb3dJZChwcml2LT5yZWRpcmVjdGVkV2luZG93LT53aW5kb3dJZCgpKTsKKyNlbmRp
ZgogfQogCiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9vbHRpcFRleHQoV2ViS2l0V2ViVmll
d0Jhc2UqIHdlYlZpZXdCYXNlLCBjb25zdCBjaGFyKiB0b29sdGlwKQpAQCAtNzkzLDMgKzgzMCwz
OCBAQCBHZGtFdmVudCogd2Via2l0V2ViVmlld0Jhc2VUYWtlQ29udGV4dE1lbnVFdmVudChXZWJL
aXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlldwogewogICAgIHJldHVybiB3ZWJraXRXZWJWaWV3
QmFzZS0+cHJpdi0+Y29udGV4dE1lbnVFdmVudC5yZWxlYXNlKCk7CiB9CisKKyNpZiBVU0UoVEVY
VFVSRV9NQVBQRVJfR0wpCitzdGF0aWMgZ2Jvb2xlYW4gcXVldWVBbm90aGVyRHJhd09mQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMoZ3BvaW50ZXIqIHdlYlZpZXdCYXNlUG9pbnRlcikKK3sK
KyAgICAvLyBUaGUgV2ViVmlld0Jhc2UgbWF5IGhhdmUgYmVlbiBkZXN0cm95ZWQgaW4gdGhlIHRp
bWUgc2luY2Ugd2UgcXVldWVkIHRoaXMKKyAgICAvLyBkcmF3IGFuZCB0aGUgdGltZSB3ZSBhcmUg
YWN0dWFsbHkgZXhlY3V0aW5nLgorICAgIGlmICghKndlYlZpZXdCYXNlUG9pbnRlcikgeworICAg
ICAgICBmYXN0RnJlZSh3ZWJWaWV3QmFzZVBvaW50ZXIpOworICAgICAgICByZXR1cm4gRkFMU0U7
CisgICAgfQorCisgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VCS0lUX1dF
Ql9WSUVXX0JBU0UoKndlYlZpZXdCYXNlUG9pbnRlcik7CisgICAgZ3RrX3dpZGdldF9xdWV1ZV9k
cmF3KEdUS19XSURHRVQod2ViVmlld0Jhc2UpKTsKKyAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cmVh
ZHlUb1JlbmRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzID0gdHJ1ZTsKKworICAgIGdf
b2JqZWN0X3JlbW92ZV93ZWFrX3BvaW50ZXIoR19PQkpFQ1Qod2ViVmlld0Jhc2UpLCB3ZWJWaWV3
QmFzZVBvaW50ZXIpOworICAgIGZhc3RGcmVlKHdlYlZpZXdCYXNlUG9pbnRlcik7CisKKyAgICBy
ZXR1cm4gRkFMU0U7Cit9CisKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VRdWV1ZURyYXdPZkFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkK
K3sKKyAgICBndGtfd2lkZ2V0X3F1ZXVlX2RyYXcoR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSkpOwor
CisgICAgLy8gUmVkcmF3IGFnYWluLCBvbmUgZnJhbWUgbGF0ZXIsIGFzIGl0IG1pZ2h0IHRha2Ug
c29tZSB0aW1lIGZvciB0aGUgbmV3IEdMIGZyYW1lIHRvIGJlIGF2YWlsYWJsZS4KKyAgICAvLyBU
aGlzIHByZXZlbnRzIHRoZSBkaXNwbGF5IGZyb20gYWx3YXlzIGJlaW5nIG9uZSBmcmFtZSBiZWhp
bmQgaW4gdGhlIGNhc2UgR0wgaGFzbid0IHlldCBmaW5pc2hlZAorICAgIC8vIHJlbmRlcmluZyB0
byB0aGUgd2luZG93LgorICAgIC8vIFRPRE86IEFkZCBYRGFtYWdlIHN1cHBvcnQgdG8gUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3cgdG8gYWNjb21wbGlzaCB0aGlzLgorICAgIGdwb2ludGVyKiB3
ZWJWaWV3QmFzZVBvaW50ZXIgPSBzdGF0aWNfY2FzdDxncG9pbnRlcio+KGZhc3RNYWxsb2Moc2l6
ZW9mKGdwb2ludGVyKSkpOworICAgIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19PQkpFQ1Qo
d2ViVmlld0Jhc2UpLCB3ZWJWaWV3QmFzZVBvaW50ZXIpOworICAgICp3ZWJWaWV3QmFzZVBvaW50
ZXIgPSB3ZWJWaWV3QmFzZTsKKyAgICBnX3RpbWVvdXRfYWRkKDEwMDAgLyA2MCwgcmVpbnRlcnBy
ZXRfY2FzdDxHU291cmNlRnVuYz4ocXVldWVBbm90aGVyRHJhd09mQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ1Jlc3VsdHMpLCB3ZWJWaWV3QmFzZVBvaW50ZXIpOworfQorI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZS5oCmluZGV4IDcwY2M3MjU3NWNiZGNiODA0YzU2NmYzY2ZjZDQzZGVjODQwZTU2NTgu
LjU1NGUxYTZkNTIyOThkY2JjMDkzNGQ4NTkzZGUyNmY1ZTQyODQ5YmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZS5oCkBAIC01MSw0ICs1MSw4IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRBY3Rp
dmVDb250ZXh0TWVudVByb3h5KFdlYktpdFdlYlZpZXdCYXNlKiwgV2ViQ29udGV4dE1lCiBXZWJD
b250ZXh0TWVudVByb3h5R3RrKiB3ZWJraXRXZWJWaWV3QmFzZUdldEFjdGl2ZUNvbnRleHRNZW51
UHJveHkoV2ViS2l0V2ViVmlld0Jhc2UqKTsKIEdka0V2ZW50KiB3ZWJraXRXZWJWaWV3QmFzZVRh
a2VDb250ZXh0TWVudUV2ZW50KFdlYktpdFdlYlZpZXdCYXNlKik7CiAKKyNpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpCit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUXVldWVEcmF3T2ZBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nUmVzdWx0cyhXZWJLaXRXZWJWaWV3QmFzZSopOworI2VuZGlmCisKICNlbmRp
ZiAvLyBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaAppbmRleCAwYzlmMDRmOGUwMmRhOGYwY2RiYzBh
MzAxMGY1ZjA0MWZhMzM5OTg4Li5jNTIwZTg5MmNiMjM0MDE5MjgzNzExYzcwODEwODAwNGY1ZjYz
NjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94
eUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUlt
cGwuaApAQCAtNDgsNiArNDgsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBwYWludChCYWNraW5n
U3RvcmU6OlBsYXRmb3JtR3JhcGhpY3NDb250ZXh0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jiwg
V2ViQ29yZTo6UmVnaW9uJiB1bnBhaW50ZWRSZWdpb24pOwogCisjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAgIGJvb2wgaXNJ
bkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gIW1fbGF5ZXJUcmVl
Q29udGV4dC5pc0VtcHR5KCk7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERy
YXdpbmdBcmVhUHJveHlJbXBsKFdlYlBhZ2VQcm94eSopOwogCkBAIC03OCw5ICs4Miw2IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBlbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExh
eWVyVHJlZUNvbnRleHQmKTsKICAgICB2b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZSgpOwogICAgIHZvaWQgdXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5
ZXJUcmVlQ29udGV4dCYpOwotCi0gICAgYm9vbCBpc0luQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoKSBjb25zdCB7IHJldHVybiAhbV9sYXllclRyZWVDb250ZXh0LmlzRW1wdHkoKTsgfQotCiAj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxl
Q29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdmlzaWJsZUNvbnRlbnRzUmVj
dCwgZmxvYXQgc2NhbGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnkpOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZUxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHlNZXNzYWdlKENvcmVJ
UEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGM0ZDI3
NDMwODc1YTczMzY4YmU1MWIzNjc5ZDFhYWM3ZjZiZjcxMDguLjI4YzVkYTkwYWUxMDk0MjZmZjdj
OWU2ZWEzNDNkZjBiNjI5ZDcyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKQEAgLTcxNCw3ICs3MTQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBOYXRpdmVXZWJN
b3VzZUV2ZW50KiBjdXJyZW50bHlQcm9jZXNzZWRNb3VzZURvd25FdmVudCgpOwogCiAjaWYgUExB
VEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCi0gICAgdm9pZCB3aWRnZXRNYXBw
ZWQodWludDY0X3QgbmF0aXZlV2luZG93SWQpOworICAgIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ1dpbmRvd0lkKHVpbnQ2NF90IG5hdGl2ZVdpbmRvd0lkKTsKKyAgICB2b2lkIGludmFs
aWRhdGVXaWRnZXQoKTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRTdXBwcmVzc1Zpc2liaWxpdHlV
cGRhdGVzKGJvb2wgZmxhZykgeyBtX3N1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMgPSBmbGFnOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgppbmRleCBjNTQxZDJjMTQ0MDNkYmZiYjVjNDFiNGQ1NzdmODRkYTRkYzQyMzgwLi4xYjMzMmUy
OGFiYmRhZDVmODg1NmYyZWM1M2Q2Y2QwMjg0MDVkMTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE3Niw2ICsxNzYsMTAg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICAjIFN1cHBvcnQgZm9yIGNvbm5lY3Rp
bmcgdGhlIEFjY2Vzc2liaWxpdHkgd29ybGRzIG9mIHRoZSBVSSBhbmQgdGhlIFdlYiBwcm9jZXNz
ZXMKICAgICBCaW5kQWNjZXNzaWJpbGl0eVRyZWUoV1RGOjpTdHJpbmcgcGx1Z0lEKQogI2VuZGlm
CisjCisjaWYgUExBVEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisgICAgSW52
YWxpZGF0ZVdpZGdldCgpCisjZW5kaWYKIAogICAgICMgQmFja0ZvcndhcmQgbWVzc2FnZXMKICAg
ICBCYWNrRm9yd2FyZEFkZEl0ZW0odWludDY0X3QgaXRlbUlEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCmluZGV4IGFjMjZjMGNiOGZkYmI4
YzllNzI1ZjkzM2I4NDc4YTJhNGRjYzBmN2MuLjExMTdhMjUzMDU4YTIwNDllMjc0MWJlNzBlMWQ5
ODJlMzVmMzUzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2Vi
UGFnZVByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBh
Z2VQcm94eUd0ay5jcHAKQEAgLTExMCw5ICsxMTAsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6Ondp
bmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJh
bWUKIH0KIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLXZvaWQgV2ViUGFnZVByb3h5Ojp3
aWRnZXRNYXBwZWQodWludDY0X3QgbmF0aXZlV2luZG93SWQpCit2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1dpbmRvd0lkKHVpbnQ2NF90IG5hdGl2ZVdpbmRvd0lk
KQogewotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6V2lkZ2V0TWFwcGVk
KG5hdGl2ZVdpbmRvd0lkKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1dpbmRvd0lkKG5hdGl2ZVdpbmRv
d0lkKSwgbV9wYWdlSUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6aW52YWxpZGF0ZVdpZGdl
dCgpCit7CisgICAgd2Via2l0V2ViVmlld0Jhc2VRdWV1ZURyYXdPZkFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdSZXN1bHRzKFdFQktJVF9XRUJfVklFV19CQVNFKHN0YXRpY19jYXN0PFBhZ2VDbGllbnRJ
bXBsKj4obV9wYWdlQ2xpZW50KS0+dmlld1dpZGdldCgpKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggOTZjYjZlMWExNWE4
OTU4OTNkNDg2NjFiMjc1OWU3MjUxYjQ1NDE1YS4uNzc1YjgyNzBhOWMwZTA3NDlhM2UzMjcxMDM1
MmJhNmVmYThiNzdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCkBAIC00NTgsNyArNDU4LDggQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlQWNjZXNz
aWJpbGl0eVRyZWUoKTsKICAgICBib29sIGhhbmRsZU1vdXNlUHJlc3NlZEV2ZW50KGNvbnN0IFdl
YkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCYpOwogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkK
LSAgICB2b2lkIHdpZGdldE1hcHBlZChpbnQ2NF90IG5hdGl2ZVdpbmRvd0hhbmRsZSk7CisgICAg
dm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nV2luZG93SWQoaW50NjRfdCBuYXRpdmVXaW5k
b3dIYW5kbGUpOworICAgIHZvaWQgaW52YWxpZGF0ZVdpZGdldCgpOwogI2VuZGlmCiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgppbmRleCBiNmJjYWNlNTE4MThjZTRiMGJkYTI5ODY0YTMwN2ZlZGNiN2JjMTZm
Li41OTM2MmJjZjU5OTg0ZjdhMmM0YzgxZmE4ZGNhN2Y3MGNiOGZmOGFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpA
QCAtMjk5LDYgKzI5OSw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShHVEspICYmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICBXaWRnZXRNYXBwZWQo
aW50NjRfdCBpZCkKKyAgICBTZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nV2luZG93SWQoaW50NjRf
dCBpZCkKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKaW5kZXggZWU0ODNhZWQzMWVkMWJh
Y2JjYmNlMzNkZWJjMzcxYzlhMGNmZjNiNy4uMDk4YTRjNzE2MzhjOWU3NTNhNDcxNWNhYTI1MDI4
ODllMTUyZTFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCkBAIC0yMDMsNiArMjAzLDggQEAgdm9p
ZCBMYXllclRyZWVIb3N0R3RrOjpzaXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIG5ld1NpemUp
CiAKICAgICBpZiAobV9wYWdlT3ZlcmxheUxheWVyKQogICAgICAgICBtX3BhZ2VPdmVybGF5TGF5
ZXItPnNldFNpemUobmV3U2l6ZSk7CisKKyAgICBjb21wb3NpdGVMYXllcnNUb0NvbnRleHQoRm9y
UmVzaXplKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0R3RrOjpkZXZpY2VTY2FsZUZhY3RvckRp
ZENoYW5nZSgpCkBAIC0yOTMsNyArMjk1LDcgQEAgYm9vbCBMYXllclRyZWVIb3N0R3RrOjpmbHVz
aFBlbmRpbmdMYXllckNoYW5nZXMoKQogICAgIHJldHVybiBtX3dlYlBhZ2UtPmNvcmVQYWdlKCkt
Pm1haW5GcmFtZSgpLT52aWV3KCktPnN5bmNDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5nU3ViZnJh
bWVzKCk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6Y29tcG9zaXRlTGF5ZXJzVG9Db250
ZXh0KCkKK3ZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6Y29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0KENv
bXBvc2l0ZVB1cnBvc2UgcHVycG9zZSkKIHsKICAgICBHTENvbnRleHQqIGNvbnRleHQgPSBnbENv
bnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQgfHwgIWNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpKQpAQCAtMzA1LDExICszMDcsMTcgQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjpjb21wb3Np
dGVMYXllcnNUb0NvbnRleHQoKQogICAgIEludFNpemUgY29udGV4dFNpemUgPSBtX2NvbnRleHQt
PmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKTsKICAgICBnbFZpZXdwb3J0KDAsIDAsIGNvbnRleHRT
aXplLndpZHRoKCksIGNvbnRleHRTaXplLmhlaWdodCgpKTsKIAorICAgIGlmIChwdXJwb3NlID09
IEZvclJlc2l6ZSkgeworICAgICAgICBnbENsZWFyQ29sb3IoMSwgMSwgMSwgMCk7CisgICAgICAg
IGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CisgICAgfQorCiAgICAgbV90ZXh0dXJlTWFw
cGVyLT5iZWdpblBhaW50aW5nKCk7CiAgICAgdG9UZXh0dXJlTWFwcGVyTGF5ZXIobV9yb290TGF5
ZXIuZ2V0KCkpLT5wYWludCgpOwogICAgIG1fdGV4dHVyZU1hcHBlci0+ZW5kUGFpbnRpbmcoKTsK
IAogICAgIGNvbnRleHQtPnN3YXBCdWZmZXJzKCk7CisgICAgbV93ZWJQYWdlLT5pbnZhbGlkYXRl
V2lkZ2V0KCk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6Zmx1c2hBbmRSZW5kZXJMYXll
cnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9M
YXllclRyZWVIb3N0R3RrLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L0xheWVyVHJlZUhvc3RHdGsuaAppbmRleCAwNjA1NzBiNjQ5MTQ4ZGY1NTNjODAzYjQ3NWZmNGY0
OTQwMjQyNWI2Li5kOWE4MTZjMmViZGRiOTg1YzEzNzJlY2ViYzZlZjU3NmMyMDNmODAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhv
c3RHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVy
VHJlZUhvc3RHdGsuaApAQCAtODMsNyArODMsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY3Jl
YXRlUGFnZU92ZXJsYXlMYXllcigpOwogICAgIHZvaWQgZGVzdHJveVBhZ2VPdmVybGF5TGF5ZXIo
KTsKLSAgICB2b2lkIGNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dCgpOworCisgICAgZW51bSBDb21w
b3NpdGVQdXJwb3NlIHsgRm9yUmVzaXplLCBOb3RGb3JSZXNpemUgfTsKKyAgICB2b2lkIGNvbXBv
c2l0ZUxheWVyc1RvQ29udGV4dChDb21wb3NpdGVQdXJwb3NlID0gTm90Rm9yUmVzaXplKTsKKwog
ICAgIHZvaWQgZmx1c2hBbmRSZW5kZXJMYXllcnMoKTsKICAgICB2b2lkIGNhbmNlbFBlbmRpbmdM
YXllckZsdXNoKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCmluZGV4IDMwYWFhNDAzN2Y3YzQ3ZDE0ZDU2YTQ3YzcxZWFh
YzY3M2JjYTgyNDIuLmQ5ZGRlODFhMjVkYjc0NDI2NmE1ZTY3YThmYTliYTY5OWEwYWZkNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdl
R3RrLmNwcApAQCAtMTU2LDEwICsxNTYsMTUgQEAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFdl
YlBhZ2U6OmNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTChjb25zdCBLVVJMJikKIH0KIAogI2lmIFVT
RShURVhUVVJFX01BUFBFUl9HTCkKLXZvaWQgV2ViUGFnZTo6d2lkZ2V0TWFwcGVkKGludDY0X3Qg
bmF0aXZlV2luZG93SGFuZGxlKQordm9pZCBXZWJQYWdlOjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nV2luZG93SWQoaW50NjRfdCBuYXRpdmVXaW5kb3dIYW5kbGUpCiB7CiAgICAgbV9uYXRpdmVX
aW5kb3dIYW5kbGUgPSBuYXRpdmVXaW5kb3dIYW5kbGU7CiB9CisKK3ZvaWQgV2ViUGFnZTo6aW52
YWxpZGF0ZVdpZGdldCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJbnZh
bGlkYXRlV2lkZ2V0KCkpOworfQogI2VuZGlmCiAKIGJvb2wgV2ViUGFnZTo6aGFuZGxlTW91c2VQ
cmVzc2VkRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9ybU1vdXNlRXZlbnQp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164468</attachid>
            <date>2012-09-17 15:48:04 -0700</date>
            <delta_ts>2012-09-18 08:33:18 -0700</delta_ts>
            <desc>Try to fix the Qt build</desc>
            <filename>bug-94417-20120917154732.patch</filename>
            <type>text/plain</type>
            <size>23968</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FlMWI0ZjE2ODViM2Mx
M2Y4ZTI4ZGFlYzc2ZTcwYWQ3ZDcyODZjYS4uYzVjMzQ2ZTY3NjY4OTU2ZWYwNjJkM2UyOGI1Y2Q0
NjVlZmE0N2U0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA5LTE3ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBbV2Vi
S2l0Ml0gVXNlIFhDb21wb3NpdGUgd2luZG93IGZvciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ0MTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9m
IHJlbmRlcmluZyBkaXJlY3RseSB0byB0aGUgd2lkZ2V0J3MgbmF0aXZlIHdpbmRvdywgcmVuZGVy
IHRvIGFuCisgICAgICAgIG9mZnNjcmVlbiB3aW5kb3cgcmVkaXJlY3RlZCB0byBhIFBpeG1hcCB3
aXRoIFhDb21wb3NpdGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHdpbGwgYmUgY292
ZXJlZCBieSB0aGUgZXhpc3RpbmcgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgdGVzdHMsCisgICAg
ICAgIHdoaWNoIHNob3VsZCBub3cgZ2l2ZSBjb3JyZWN0IHBpeGVsIHJlc3VsdHMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnJlc2l6ZSk6IEFkZCBhIGNh
bGwgdG8gWEZsdXNoIHdoaWNoIGVuc3VyZXMKKyAgICAgICAgdGhhdCBwZW5kaW5nIFgxMSBvcGVy
YXRpb25zIGNvbXBsZXRlLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5k
b3c6OndpbmRvd0lkKTogQWRkZWQgdGhpcyBhY2Nlc3Nvci4KKwogMjAxMi0wOS0xNCAgU2hlcmlm
ZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjEyODY3My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmZTU2NTBhMjczYTU4NWViMjE4
YmZlNTA1NWE3ZThmMGM4ZjM3MzMxLi40ZWEzMzY3NWY5OTRhM2ZjYzdmM2FkNmNiNTU4ZTNlNzU5
MTVhYjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTItMDktMTcgIE1hcnRpbiBS
b2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFtXZWJLaXQy
XSBVc2UgWENvbXBvc2l0ZSB3aW5kb3cgZm9yIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDQxNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3RlYWQgb2YgcmVu
ZGVyaW5nIGRpcmVjdGx5IHRvIHRoZSB3aWRnZXQncyBuYXRpdmUgd2luZG93LCByZW5kZXIgdG8g
YW4KKyAgICAgICAgb2Zmc2NyZWVuIHdpbmRvdyByZWRpcmVjdGVkIHRvIGEgUGl4bWFwIHdpdGgg
WENvbXBvc2l0ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcDoKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUpOiBBZGRlZCBhIGZl
dyBtZW1iZXJzIG5lY2Vzc2FyeSB0byB0cmFjayB0aGUgCisgICAgICAgIG9mZnNjcmVlbiB3aW5k
b3cuCisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9pbml0KToKKyAgICAgICAgKHJlbmRl
ckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKTogQWRkZWQgdGhpcyBoZWxwZXIgZnVuY3Rp
b25zIHdoaWNoIHJlbmRlcnMKKyAgICAgICAgdGhlIHJlc3VsdHMgb2YgdGhlIGFjY2VsZXJhdGVk
IGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgZHVyaW5nIHRoZSBHVEsrIGRyYXcgbG9vcC4KKyAgICAg
ICAgKHdlYmtpdFdlYlZpZXdCYXNlRHJhdyk6IENhbGwgcmVuZGVyQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ1Jlc3VsdHMgd2hlbiBhcHByb3ByaWF0ZS4KKyAgICAgICAgKHJlc2l6ZVdlYktpdFdlYlZp
ZXdCYXNlRnJvbUFsbG9jYXRpb24pOiBSZXNpemUgdGhlIG9mZnNjcmVlbiB3aW5kb3cgd2hlbiBh
cHByb3ByaWF0ZS4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlU2l6ZUFsbG9jYXRlKTogRG8g
bm90IGNhbGwgcmVzaXplV2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxsb2NhdGlvbiB3aGVuCisgICAg
ICAgIHRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgd2lkZ2V0IGRvZXMgbm90IGNoYW5nZS4gVGhpcyBw
cmV2ZW50cyBkZXN0cm95aW5nIGFuZCByZWNyZWF0aW5nCisgICAgICAgIHRoZSBvZmZzY3JlZW4g
d2luZG93IHBpeG1hcCB3aGVuIGl0IGlzbid0IG5lY2Vzc2FyeS4KKyAgICAgICAgKHdlYmtpdFdl
YlZpZXdCYXNlTWFwKTogV2Ugbm8gbG9uZ2VyIHNlbmQgdGhlIHdpbmRvdyBpZCBkdXJpbmcgbWFw
LCBpbnN0ZWFkIGl0J3Mgc2VudAorICAgICAgICBhcyBzb29uIGFzIHRoZXJlIGlzIFdlYlBhZ2VQ
cm94eS4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSk6IFNlbmQgdGhl
IHdpbmRvdyBpZCBvZiB0aGUgcmVkaXJlY3RlZCB3aW5kb3cgdG8KKyAgICAgICAgdGhlIFdlYlBy
b2Nlc3MuCisgICAgICAgIChxdWV1ZUFub3RoZXJEcmF3T2ZBY2NlbGVyYXRlZENvbXBvc2l0aW5n
UmVzdWx0cyk6IEFkZGVkIHRoaXMgaGVscGVyIHdoaWNoIHdvcmtzCisgICAgICAgIGFyb3VuZCB0
aGUgaXNzdWUgb2Ygc2xvdyB1cGRhdGVzIG9mIHRoZSBwaXhtYXAgYmFja2luZyB0aGUgcmVkaXJl
Y3RlZCBYQ29tcG9zaXRlIHdpbmRvdy4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlUXVldWVE
cmF3T2ZBY2NlbGVyYXRlZENvbXBvc2l0aW5nUmVzdWx0cyk6IEFkZGVkIHRoaXMgbWV0aG9kIHdo
aWNoCisgICAgICAgIGlzIHdoYXQgdGhlIFdlYlByb2Nlc3MgdXNlcyB0byBmb3JjZSBhIHJlZHJh
dyBvbiB0aGUgVUlQcm9jZXNzIHNpZGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2VQcml2YXRlLmg6IEFkZGVkIG5ldyBtZXRob2QgdG8gdGhlIGxpc3Qgb2Yg
cHJpdmF0ZSBtZXRob2RzLgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1w
bC5oOgorICAgICAgICAoRHJhd2luZ0FyZWFQcm94eUltcGwpOgorICAgICAgICAoV2ViS2l0OjpE
cmF3aW5nQXJlYVByb3h5SW1wbDo6aXNJbkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTogRXhw
b3NlZCB0aGlzIG1ldGhvZCBwdWJsaWNhbGx5CisgICAgICAgIHNvIHRoYXQgaXQgY2FuIGJlIHVz
ZWQgZnJvbSBXZWJLaXRXZWJWaWV3QmFzZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgIChXZWJQYWdlUHJveHkpOiBSZW5hbWVkIHdpZGdldE1hcHBlZCB0byBz
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nV2luZG93SWQuCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbjogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9X
ZWJQYWdlUHJveHlHdGsuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nV2luZG93SWQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJQYWdlKTogRGl0dG8uCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IERpdHRvLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZUhvc3RHdGs6OnNpemVEaWRDaGFuZ2UpOiBGb3JjZSBhIGNvbXBv
c2l0ZSB0byB0aGUgcmVzaXplZCB3aW5kb3cgcmlnaHQKKyAgICAgICAgYXdheSBzbyB0aGF0IHRo
ZSBuZXcgd2luZG93IHBpeG1hcCBpcyB1cGRhdGVkIGJlZm9yZSB0aGUgZmlyc3QgZHJhdy4KKyAg
ICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6Y29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0
KTogSWYgdGhlIGNvbXBvc2l0aW9uIGlzIGZvciBhIHJlc2l6ZSwKKyAgICAgICAgZmlyc3QgY2xl
YXIgdGhlIGVudGlyZSBHTCBjb250ZXh0IHNvIHRoYXQgd2UgZG9uJ3Qgc2VlIGJsYWNrIGFydGlm
YWN0cyBkdXJpbmcgcmVzaXplLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5
ZXJUcmVlSG9zdEd0ay5oOgorICAgICAgICAoTGF5ZXJUcmVlSG9zdEd0ayk6IFVwZGF0ZSB0aGUg
c2lnbmF0dXJlIG9mICBjb21wb3NpdGVMYXllcnNUb0NvbnRleHQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1dpbmRvd0lkKTogQWRkZWQuCisKIDIwMTItMDkt
MTQgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Njg0NgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAKaW5k
ZXggMTU3MmE1OWI0MTY3NmQzYjU5ZTg1NDUxMzY2NzNiZDdlMzg2YzEzZi4uNDgwYjUzZmRkOWFj
MjliODhiYWZkNzljNzBlZjExZTQ3MDcyMjVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCkBAIC0x
MzcsNiArMTM3LDggQEAgdm9pZCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6cmVzaXplKGNv
bnN0IEludFNpemUmIHNpemUpCiAKICAgICBEaXNwbGF5KiBkaXNwbGF5ID0gR0xDb250ZXh0R0xY
OjpzaGFyZWREaXNwbGF5KCk7CiAgICAgWFJlc2l6ZVdpbmRvdyhkaXNwbGF5LCBtX3dpbmRvdywg
c2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKworICAgIFhGbHVzaChkaXNwbGF5KTsKICAg
ICBnbFhXYWl0WCgpOwogCiAgICAgLy8gVGhpcyBzd2FwIGlzIGJhc2VkIG9uIGNvZGUgaW4gQ2hy
b21pdW0uIEl0IHRyaWVzIHRvIHdvcmstYXJvdW5kIGEgYnVnIGluIHRoZSBJbnRlbCBkcml2ZXJz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdy5oCmluZGV4IGQ2Y2Q3NDcyM2I3OWQxOTU3MGU3ZWQyOWRjMDJlY2EyNjI1
OWNlYmEuLmU1ZGIwZmE3ZThhZDlhODI1ZTFiNjlmOWU2MmFlMzcwN2UyOWVmYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdy5oCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2l6ZShjb25z
dCBJbnRTaXplJiBuZXdTaXplKTsKICAgICBHTENvbnRleHQqIGNvbnRleHQoKTsKICAgICBjYWly
b19zdXJmYWNlX3QqIGNhaXJvU3VyZmFjZUZvcldpZGdldChHdGtXaWRnZXQqKTsKKyAgICBXaW5k
b3cgd2luZG93SWQoKSB7IHJldHVybiBtX3dpbmRvdzsgfQogCiBwcml2YXRlOgogICAgIFJlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93KGNvbnN0IEludFNpemUmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCBm
NWJkMmRkY2M5NmE5OGJmMTMyYWQyMTY1MjU4MmZlNGNhOWU5ODJjLi5mMWYzNzYyN2ZhMThmZWI5
MTNhYzA1MmJlZGQ1MjNkNDg2MTgwZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC02Nyw3ICs2Nyw3IEBA
CiAjZW5kaWYKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgZGVmaW5lZChHREtfV0lO
RE9XSU5HX1gxMSkKLSNpbmNsdWRlIDxnZGsvZ2RreC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaD4KICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwpAQCAtODksMTQgKzg5LDIwIEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRl
IHsKICAgICBJbnRTaXplIHJlc2l6ZXJTaXplOwogICAgIEdSZWZQdHI8QXRrT2JqZWN0PiBhY2Nl
c3NpYmxlOwogICAgIGJvb2wgbmVlZHNSZXNpemVPbk1hcDsKLSNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCi0gICAgYm9vbCBmdWxsU2NyZWVuTW9kZUFjdGl2ZTsKLSAgICBXZWJGdWxsU2NyZWVu
Q2xpZW50R3RrIGZ1bGxTY3JlZW5DbGllbnQ7Ci0jZW5kaWYKICAgICBHdGtXaWRnZXQqIGluc3Bl
Y3RvclZpZXc7CiAgICAgdW5zaWduZWQgaW5zcGVjdG9yVmlld0hlaWdodDsKICAgICBHT3duUHRy
PEdka0V2ZW50PiBjb250ZXh0TWVudUV2ZW50OwogICAgIFdlYkNvbnRleHRNZW51UHJveHlHdGsq
IGFjdGl2ZUNvbnRleHRNZW51UHJveHk7CisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisg
ICAgYm9vbCBmdWxsU2NyZWVuTW9kZUFjdGl2ZTsKKyAgICBXZWJGdWxsU2NyZWVuQ2xpZW50R3Rr
IGZ1bGxTY3JlZW5DbGllbnQ7CisjZW5kaWYKKworI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkK
KyAgICBPd25QdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IHJlZGlyZWN0ZWRXaW5kb3c7
CisgICAgYm9vbCByZWFkeVRvUmVuZGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHM7Cisj
ZW5kaWYKIH07CiAKIEdfREVGSU5FX1RZUEUoV2ViS2l0V2ViVmlld0Jhc2UsIHdlYmtpdF93ZWJf
dmlld19iYXNlLCBHVEtfVFlQRV9DT05UQUlORVIpCkBAIC0xNjEsOSArMTY3LDYgQEAgc3RhdGlj
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VSZWFsaXplKEd0a1dpZGdldCogd2lkZ2V0KQogICAgIGdp
bnQgYXR0cmlidXRlc01hc2sgPSBHREtfV0FfWCB8IEdES19XQV9ZIHwgR0RLX1dBX1ZJU1VBTDsK
IAogICAgIEdka1dpbmRvdyogd2luZG93ID0gZ2RrX3dpbmRvd19uZXcoZ3RrX3dpZGdldF9nZXRf
cGFyZW50X3dpbmRvdyh3aWRnZXQpLCAmYXR0cmlidXRlcywgYXR0cmlidXRlc01hc2spOwotI2lm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICBnZGtfd2luZG93X2Vuc3VyZV9uYXRpdmUod2lu
ZG93KTsKLSNlbmRpZgogICAgIGd0a193aWRnZXRfc2V0X3dpbmRvdyh3aWRnZXQsIHdpbmRvdyk7
CiAgICAgZ2RrX3dpbmRvd19zZXRfdXNlcl9kYXRhKHdpbmRvdywgd2lkZ2V0KTsKIApAQCAtMjYz
LDcgKzI2Niw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2luaXQoV2ViS2l0
V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogICAgIHByaXYtPnNob3VsZEZvcndhcmRO
ZXh0S2V5RXZlbnQgPSBGQUxTRTsKIAogICAgIEd0a1dpZGdldCogdmlld1dpZGdldCA9IEdUS19X
SURHRVQod2Via2l0V2ViVmlld0Jhc2UpOwotICAgIGd0a193aWRnZXRfc2V0X2RvdWJsZV9idWZm
ZXJlZCh2aWV3V2lkZ2V0LCBGQUxTRSk7CiAgICAgZ3RrX3dpZGdldF9zZXRfY2FuX2ZvY3VzKHZp
ZXdXaWRnZXQsIFRSVUUpOwogICAgIHByaXYtPmltQ29udGV4dCA9IGFkb3B0R1JlZihndGtfaW1f
bXVsdGljb250ZXh0X25ldygpKTsKIApAQCAtMjc0LDIwICsyNzYsNDkgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X2Jhc2VfaW5pdChXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmll
d0Jhc2UpCiAgICAgZ3RrX2RyYWdfZGVzdF9zZXQodmlld1dpZGdldCwgc3RhdGljX2Nhc3Q8R3Rr
RGVzdERlZmF1bHRzPigwKSwgMCwgMCwKICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxHZGtEcmFnQWN0aW9uPihHREtfQUNUSU9OX0NPUFkgfCBHREtfQUNUSU9OX01PVkUgfCBHREtf
QUNUSU9OX0xJTksgfCBHREtfQUNUSU9OX1BSSVZBVEUpKTsKICAgICBndGtfZHJhZ19kZXN0X3Nl
dF90YXJnZXRfbGlzdCh2aWV3V2lkZ2V0LCBQYXN0ZWJvYXJkSGVscGVyOjpkZWZhdWx0UGFzdGVi
b2FyZEhlbHBlcigpLT50YXJnZXRMaXN0KCkpOworCisgICAgd2Via2l0V2ViVmlld0Jhc2UtPnBy
aXYtPnJlZGlyZWN0ZWRXaW5kb3cgPSBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6Y3JlYXRl
KEludFNpemUoMSwgMSkpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5yZWFkeVRvUmVu
ZGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMgPSBmYWxzZTsKIH0KIAorI2lmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkKK3N0YXRpYyBib29sIHJlbmRlckFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdSZXN1bHRzKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgY2Fpcm9fdCogY3IsIERy
YXdpbmdBcmVhUHJveHlJbXBsKiBkcmF3aW5nQXJlYSkKK3sKKyAgICBpZiAoIWRyYXdpbmdBcmVh
LT5pc0luQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgLy8gVG8gYXZvaWQgZmxhc2hlcyB3aGVuIGluaXRpYWxpemluZyBhY2NlbGVyYXRl
ZCBjb21wb3NpdGluZyBmb3IgdGhlIGZpcnN0CisgICAgLy8gdGltZSwgd2Ugd2FpdCB1bnRpbCB3
ZSBrbm93IHRoZXJlJ3MgYSBmcmFtZSByZWFkeSBiZWZvcmUgcmVuZGVyaW5nLgorICAgIFdlYktp
dFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OworICAgIGlmICgh
cHJpdi0+cmVhZHlUb1JlbmRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBBU1NFUlQocHJpdi0+cmVkaXJlY3RlZFdpbmRvdyk7Cisg
ICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gcHJpdi0+cmVkaXJlY3RlZFdpbmRvdy0+Y2Fp
cm9TdXJmYWNlRm9yV2lkZ2V0KEdUS19XSURHRVQod2ViVmlld0Jhc2UpKTsKKyAgICBjYWlyb19z
ZXRfc291cmNlX3N1cmZhY2UoY3IsIHN1cmZhY2UsIDAsIDApOworICAgIGNhaXJvX3BhaW50KGNy
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0
V2ViVmlld0Jhc2VEcmF3KEd0a1dpZGdldCogd2lkZ2V0LCBjYWlyb190KiBjcikKIHsKLSAgICBE
cmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJlYSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdpZGdl
dCktPnByaXYtPnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKTsKKyAgICBXZWJLaXRXZWJWaWV3QmFz
ZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOworICAgIERyYXdp
bmdBcmVhUHJveHlJbXBsKiBkcmF3aW5nQXJlYSA9IHN0YXRpY19jYXN0PERyYXdpbmdBcmVhUHJv
eHlJbXBsKj4od2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKSk7CiAg
ICAgaWYgKCFkcmF3aW5nQXJlYSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCisjaWYgVVNFKFRF
WFRVUkVfTUFQUEVSX0dMKQorICAgIGlmIChyZW5kZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nUmVz
dWx0cyh3ZWJWaWV3QmFzZSwgY3IsIGRyYXdpbmdBcmVhKSkKKyAgICAgICAgcmV0dXJuIEZBTFNF
OworI2VuZGlmCisKICAgICBHZGtSZWN0YW5nbGUgY2xpcFJlY3Q7CiAgICAgaWYgKCFnZGtfY2Fp
cm9fZ2V0X2NsaXBfcmVjdGFuZ2xlKGNyLCAmY2xpcFJlY3QpKQogICAgICAgICByZXR1cm4gRkFM
U0U7CiAKICAgICBXZWJDb3JlOjpSZWdpb24gdW5wYWludGVkUmVnaW9uOyAvLyBUaGlzIGlzIHNp
bXBseSB1bnVzZWQuCi0gICAgc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUltcGwqPihkcmF3
aW5nQXJlYSktPnBhaW50KGNyLCBjbGlwUmVjdCwgdW5wYWludGVkUmVnaW9uKTsKKyAgICBkcmF3
aW5nQXJlYS0+cGFpbnQoY3IsIGNsaXBSZWN0LCB1bnBhaW50ZWRSZWdpb24pOwogCiAgICAgcmV0
dXJuIEZBTFNFOwogfQpAQCAtMzIzLDggKzM1NCwxMSBAQCBzdGF0aWMgdm9pZCByZXNpemVXZWJL
aXRXZWJWaWV3QmFzZUZyb21BbGxvY2F0aW9uKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFz
ZQogICAgICAgICB2aWV3UmVjdC5zZXRIZWlnaHQoYWxsb2NhdGlvbi0+aGVpZ2h0IC0gcHJpdi0+
aW5zcGVjdG9yVmlld0hlaWdodCk7CiAgICAgfQogCi0gICAgaWYgKHByaXYtPnBhZ2VQcm94eS0+
ZHJhd2luZ0FyZWEoKSkKLSAgICAgICAgcHJpdi0+cGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpLT5z
ZXRTaXplKHZpZXdSZWN0LnNpemUoKSwgSW50U2l6ZSgpKTsKKyAgICBpZiAod2ViVmlld0Jhc2Ut
PnByaXYtPnJlZGlyZWN0ZWRXaW5kb3cpCisgICAgICAgIHdlYlZpZXdCYXNlLT5wcml2LT5yZWRp
cmVjdGVkV2luZG93LT5yZXNpemUoSW50U2l6ZShhbGxvY2F0aW9uLT53aWR0aCwgYWxsb2NhdGlv
bi0+aGVpZ2h0KSk7CisKKyAgICBpZiAoRHJhd2luZ0FyZWFQcm94eUltcGwqIGRyYXdpbmdBcmVh
ID0gc3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUltcGwqPih3ZWJWaWV3QmFzZS0+cHJpdi0+
cGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpKSkKKyAgICAgICAgZHJhd2luZ0FyZWEtPnNldFNpemUo
dmlld1JlY3Quc2l6ZSgpLCBJbnRTaXplKCkpOwogCiAgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9
IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQod2ViVmlld0Jhc2UpKTsKICAgICBp
ZiAod2lkZ2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93KHRvcGxldmVsKSkKQEAgLTMzMywxNCAr
MzY3LDIwIEBAIHN0YXRpYyB2b2lkIHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFsbG9jYXRp
b24oV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlCiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdl
YlZpZXdCYXNlU2l6ZUFsbG9jYXRlKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtBbGxvY2F0aW9uKiBh
bGxvY2F0aW9uKQogewotICAgIEdUS19XSURHRVRfQ0xBU1Mod2Via2l0X3dlYl92aWV3X2Jhc2Vf
cGFyZW50X2NsYXNzKS0+c2l6ZV9hbGxvY2F0ZSh3aWRnZXQsIGFsbG9jYXRpb24pOworICAgIEd0
a0FsbG9jYXRpb24gb2xkQWxsb2NhdGlvbjsKKyAgICBndGtfd2lkZ2V0X2dldF9hbGxvY2F0aW9u
KHdpZGdldCwgJm9sZEFsbG9jYXRpb24pOwogCi0gICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZp
ZXdCYXNlID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KTsKLSAgICBpZiAoIWd0a193aWRn
ZXRfZ2V0X21hcHBlZChHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSkgJiYgIXdlYlZpZXdCYXNlLT5w
cml2LT5wYWdlUHJveHktPmRyYXdpbmdBcmVhKCktPnNpemUoKS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgd2ViVmlld0Jhc2UtPnByaXYtPm5lZWRzUmVzaXplT25NYXAgPSB0cnVlOwotICAgICAgICBy
ZXR1cm47CisgICAgaWYgKG9sZEFsbG9jYXRpb24ud2lkdGggIT0gYWxsb2NhdGlvbi0+d2lkdGgg
fHwgb2xkQWxsb2NhdGlvbi5oZWlnaHQgIT0gYWxsb2NhdGlvbi0+aGVpZ2h0KSB7CisgICAgICAg
IFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdp
ZGdldCk7CisgICAgICAgIGlmICghZ3RrX3dpZGdldF9nZXRfbWFwcGVkKEdUS19XSURHRVQod2Vi
Vmlld0Jhc2UpKSAmJiAhd2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEo
KS0+c2l6ZSgpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgd2ViVmlld0Jhc2UtPnByaXYtPm5l
ZWRzUmVzaXplT25NYXAgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgcmVzaXplV2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxsb2NhdGlvbih3ZWJWaWV3QmFz
ZSwgYWxsb2NhdGlvbik7CiAgICAgfQotICAgIHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFs
bG9jYXRpb24od2ViVmlld0Jhc2UsIGFsbG9jYXRpb24pOworCisgICAgR1RLX1dJREdFVF9DTEFT
Uyh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9wYXJlbnRfY2xhc3MpLT5zaXplX2FsbG9jYXRlKHdpZGdl
dCwgYWxsb2NhdGlvbik7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlTWFwKEd0
a1dpZGdldCogd2lkZ2V0KQpAQCAtMzQ4LDEzICszODgsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZU1hcChHdGtXaWRnZXQqIHdpZGdldCkKICAgICBHVEtfV0lER0VUX0NMQVNTKHdl
YmtpdF93ZWJfdmlld19iYXNlX3BhcmVudF9jbGFzcyktPm1hcCh3aWRnZXQpOwogCiAgICAgV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0
KTsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19Y
MTEpCi0gICAgR2RrV2luZG93KiBnZGtXaW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3cod2lk
Z2V0KTsKLSAgICBBU1NFUlQoZ2RrV2luZG93KTsKLSAgICBpZiAoZ2RrX3dpbmRvd19oYXNfbmF0
aXZlKGdka1dpbmRvdykpCi0gICAgICAgIHdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJveHktPndp
ZGdldE1hcHBlZChHREtfV0lORE9XX1hJRChnZGtXaW5kb3cpKTsKLSNlbmRpZgotCiAgICAgaWYg
KCF3ZWJWaWV3QmFzZS0+cHJpdi0+bmVlZHNSZXNpemVPbk1hcCkKICAgICAgICAgcmV0dXJuOwog
CkBAIC02NzUsNiArNzA4LDEwIEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdl
KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgV0tDb250CiAjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQogICAgIHByaXYtPnBhZ2VQcm94eS0+ZnVsbFNjcmVlbk1hbmFnZXIo
KS0+c2V0V2ViVmlldyh3ZWJraXRXZWJWaWV3QmFzZSk7CiAjZW5kaWYKKworI2lmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkKKyAgICBwcml2LT5wYWdlUHJveHktPnNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdXaW5kb3dJZChwcml2LT5yZWRpcmVjdGVkV2luZG93LT53aW5kb3dJZCgpKTsKKyNlbmRp
ZgogfQogCiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9vbHRpcFRleHQoV2ViS2l0V2ViVmll
d0Jhc2UqIHdlYlZpZXdCYXNlLCBjb25zdCBjaGFyKiB0b29sdGlwKQpAQCAtNzkzLDMgKzgzMCwz
OCBAQCBHZGtFdmVudCogd2Via2l0V2ViVmlld0Jhc2VUYWtlQ29udGV4dE1lbnVFdmVudChXZWJL
aXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlldwogewogICAgIHJldHVybiB3ZWJraXRXZWJWaWV3
QmFzZS0+cHJpdi0+Y29udGV4dE1lbnVFdmVudC5yZWxlYXNlKCk7CiB9CisKKyNpZiBVU0UoVEVY
VFVSRV9NQVBQRVJfR0wpCitzdGF0aWMgZ2Jvb2xlYW4gcXVldWVBbm90aGVyRHJhd09mQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMoZ3BvaW50ZXIqIHdlYlZpZXdCYXNlUG9pbnRlcikKK3sK
KyAgICAvLyBUaGUgV2ViVmlld0Jhc2UgbWF5IGhhdmUgYmVlbiBkZXN0cm95ZWQgaW4gdGhlIHRp
bWUgc2luY2Ugd2UgcXVldWVkIHRoaXMKKyAgICAvLyBkcmF3IGFuZCB0aGUgdGltZSB3ZSBhcmUg
YWN0dWFsbHkgZXhlY3V0aW5nLgorICAgIGlmICghKndlYlZpZXdCYXNlUG9pbnRlcikgeworICAg
ICAgICBmYXN0RnJlZSh3ZWJWaWV3QmFzZVBvaW50ZXIpOworICAgICAgICByZXR1cm4gRkFMU0U7
CisgICAgfQorCisgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VCS0lUX1dF
Ql9WSUVXX0JBU0UoKndlYlZpZXdCYXNlUG9pbnRlcik7CisgICAgZ3RrX3dpZGdldF9xdWV1ZV9k
cmF3KEdUS19XSURHRVQod2ViVmlld0Jhc2UpKTsKKyAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+cmVh
ZHlUb1JlbmRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzID0gdHJ1ZTsKKworICAgIGdf
b2JqZWN0X3JlbW92ZV93ZWFrX3BvaW50ZXIoR19PQkpFQ1Qod2ViVmlld0Jhc2UpLCB3ZWJWaWV3
QmFzZVBvaW50ZXIpOworICAgIGZhc3RGcmVlKHdlYlZpZXdCYXNlUG9pbnRlcik7CisKKyAgICBy
ZXR1cm4gRkFMU0U7Cit9CisKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VRdWV1ZURyYXdPZkFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkK
K3sKKyAgICBndGtfd2lkZ2V0X3F1ZXVlX2RyYXcoR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSkpOwor
CisgICAgLy8gUmVkcmF3IGFnYWluLCBvbmUgZnJhbWUgbGF0ZXIsIGFzIGl0IG1pZ2h0IHRha2Ug
c29tZSB0aW1lIGZvciB0aGUgbmV3IEdMIGZyYW1lIHRvIGJlIGF2YWlsYWJsZS4KKyAgICAvLyBU
aGlzIHByZXZlbnRzIHRoZSBkaXNwbGF5IGZyb20gYWx3YXlzIGJlaW5nIG9uZSBmcmFtZSBiZWhp
bmQgaW4gdGhlIGNhc2UgR0wgaGFzbid0IHlldCBmaW5pc2hlZAorICAgIC8vIHJlbmRlcmluZyB0
byB0aGUgd2luZG93LgorICAgIC8vIFRPRE86IEFkZCBYRGFtYWdlIHN1cHBvcnQgdG8gUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3cgdG8gYWNjb21wbGlzaCB0aGlzLgorICAgIGdwb2ludGVyKiB3
ZWJWaWV3QmFzZVBvaW50ZXIgPSBzdGF0aWNfY2FzdDxncG9pbnRlcio+KGZhc3RNYWxsb2Moc2l6
ZW9mKGdwb2ludGVyKSkpOworICAgIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19PQkpFQ1Qo
d2ViVmlld0Jhc2UpLCB3ZWJWaWV3QmFzZVBvaW50ZXIpOworICAgICp3ZWJWaWV3QmFzZVBvaW50
ZXIgPSB3ZWJWaWV3QmFzZTsKKyAgICBnX3RpbWVvdXRfYWRkKDEwMDAgLyA2MCwgcmVpbnRlcnBy
ZXRfY2FzdDxHU291cmNlRnVuYz4ocXVldWVBbm90aGVyRHJhd09mQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ1Jlc3VsdHMpLCB3ZWJWaWV3QmFzZVBvaW50ZXIpOworfQorI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZS5oCmluZGV4IDcwY2M3MjU3NWNiZGNiODA0YzU2NmYzY2ZjZDQzZGVjODQwZTU2NTgu
LjU1NGUxYTZkNTIyOThkY2JjMDkzNGQ4NTkzZGUyNmY1ZTQyODQ5YmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZS5oCkBAIC01MSw0ICs1MSw4IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRBY3Rp
dmVDb250ZXh0TWVudVByb3h5KFdlYktpdFdlYlZpZXdCYXNlKiwgV2ViQ29udGV4dE1lCiBXZWJD
b250ZXh0TWVudVByb3h5R3RrKiB3ZWJraXRXZWJWaWV3QmFzZUdldEFjdGl2ZUNvbnRleHRNZW51
UHJveHkoV2ViS2l0V2ViVmlld0Jhc2UqKTsKIEdka0V2ZW50KiB3ZWJraXRXZWJWaWV3QmFzZVRh
a2VDb250ZXh0TWVudUV2ZW50KFdlYktpdFdlYlZpZXdCYXNlKik7CiAKKyNpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpCit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUXVldWVEcmF3T2ZBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nUmVzdWx0cyhXZWJLaXRXZWJWaWV3QmFzZSopOworI2VuZGlmCisKICNlbmRp
ZiAvLyBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaAppbmRleCAwYzlmMDRmOGUwMmRhOGYwY2RiYzBh
MzAxMGY1ZjA0MWZhMzM5OTg4Li43NjJlMzVjNjk4MzdkZjQ1NzVkM2VhNmFkNTU1MmM0NWUxZTI0
MWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94
eUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUlt
cGwuaApAQCAtNDgsNiArNDgsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBwYWludChCYWNraW5n
U3RvcmU6OlBsYXRmb3JtR3JhcGhpY3NDb250ZXh0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jiwg
V2ViQ29yZTo6UmVnaW9uJiB1bnBhaW50ZWRSZWdpb24pOwogCisjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQorICAgIGJvb2wgaXNJbkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkg
Y29uc3QgeyByZXR1cm4gIW1fbGF5ZXJUcmVlQ29udGV4dC5pc0VtcHR5KCk7IH0KKyNlbmRpZgor
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERyYXdpbmdBcmVhUHJveHlJbXBsKFdlYlBhZ2VQcm94
eSopOwogCkBAIC03OCw5ICs4Miw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbnRlckFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKTsKICAgICB2b2lkIGV4
aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpOwogICAgIHZvaWQgdXBkYXRlQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpOwotCi0gICAgYm9vbCBp
c0luQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiAhbV9sYXllclRy
ZWVDb250ZXh0LmlzRW1wdHkoKTsgfQotCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQog
ICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgdmlzaWJsZUNvbnRlbnRzUmVjdCwgZmxvYXQgc2NhbGUsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UG9pbnQmIHRyYWplY3RvcnkpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUxheWVyVHJlZUNv
b3JkaW5hdG9yUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNz
YWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IGM0ZDI3NDMwODc1YTczMzY4YmU1MWIzNjc5ZDFhYWM3ZjZi
ZjcxMDguLjI4YzVkYTkwYWUxMDk0MjZmZjdjOWU2ZWEzNDNkZjBiNjI5ZDcyNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTcxNCw3ICs3MTQsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBOYXRpdmVXZWJNb3VzZUV2ZW50KiBjdXJyZW50bHlQcm9jZXNzZWRN
b3VzZURvd25FdmVudCgpOwogCiAjaWYgUExBVEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpCi0gICAgdm9pZCB3aWRnZXRNYXBwZWQodWludDY0X3QgbmF0aXZlV2luZG93SWQpOwor
ICAgIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1dpbmRvd0lkKHVpbnQ2NF90IG5hdGl2
ZVdpbmRvd0lkKTsKKyAgICB2b2lkIGludmFsaWRhdGVXaWRnZXQoKTsKICNlbmRpZgogCiAgICAg
dm9pZCBzZXRTdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzKGJvb2wgZmxhZykgeyBtX3N1cHByZXNz
VmlzaWJpbGl0eVVwZGF0ZXMgPSBmbGFnOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBjNTQxZDJjMTQ0MDNkYmZiYjVjNDFi
NGQ1NzdmODRkYTRkYzQyMzgwLi4xYjMzMmUyOGFiYmRhZDVmODg1NmYyZWM1M2Q2Y2QwMjg0MDVk
MTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KQEAgLTE3Niw2ICsxNzYsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsK
ICAgICAjIFN1cHBvcnQgZm9yIGNvbm5lY3RpbmcgdGhlIEFjY2Vzc2liaWxpdHkgd29ybGRzIG9m
IHRoZSBVSSBhbmQgdGhlIFdlYiBwcm9jZXNzZXMKICAgICBCaW5kQWNjZXNzaWJpbGl0eVRyZWUo
V1RGOjpTdHJpbmcgcGx1Z0lEKQogI2VuZGlmCisjCisjaWYgUExBVEZPUk0oR1RLKSAmJiBVU0Uo
VEVYVFVSRV9NQVBQRVJfR0wpCisgICAgSW52YWxpZGF0ZVdpZGdldCgpCisjZW5kaWYKIAogICAg
ICMgQmFja0ZvcndhcmQgbWVzc2FnZXMKICAgICBCYWNrRm9yd2FyZEFkZEl0ZW0odWludDY0X3Qg
aXRlbUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdl
UHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlH
dGsuY3BwCmluZGV4IGFjMjZjMGNiOGZkYmI4YzllNzI1ZjkzM2I4NDc4YTJhNGRjYzBmN2MuLjEx
MTdhMjUzMDU4YTIwNDllMjc0MWJlNzBlMWQ5ODJlMzVmMzUzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKQEAgLTExMCw5ICsxMTAs
MTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2Uo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJhbWUKIH0KIAogI2lmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkKLXZvaWQgV2ViUGFnZVByb3h5Ojp3aWRnZXRNYXBwZWQodWludDY0X3QgbmF0aXZlV2lu
ZG93SWQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1dpbmRv
d0lkKHVpbnQ2NF90IG5hdGl2ZVdpbmRvd0lkKQogewotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6V2lkZ2V0TWFwcGVkKG5hdGl2ZVdpbmRvd0lkKSwgbV9wYWdlSUQpOwor
ICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ1dpbmRvd0lkKG5hdGl2ZVdpbmRvd0lkKSwgbV9wYWdlSUQpOworfQorCit2b2lkIFdl
YlBhZ2VQcm94eTo6aW52YWxpZGF0ZVdpZGdldCgpCit7CisgICAgd2Via2l0V2ViVmlld0Jhc2VR
dWV1ZURyYXdPZkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKFdFQktJVF9XRUJfVklFV19C
QVNFKHN0YXRpY19jYXN0PFBhZ2VDbGllbnRJbXBsKj4obV9wYWdlQ2xpZW50KS0+dmlld1dpZGdl
dCgpKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKaW5kZXggOTZjYjZlMWExNWE4OTU4OTNkNDg2NjFiMjc1OWU3MjUxYjQ1NDE1YS4u
Nzc1YjgyNzBhOWMwZTA3NDlhM2UzMjcxMDM1MmJhNmVmYThiNzdlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00NTgsNyArNDU4LDggQEAgcHVi
bGljOgogICAgIHZvaWQgdXBkYXRlQWNjZXNzaWJpbGl0eVRyZWUoKTsKICAgICBib29sIGhhbmRs
ZU1vdXNlUHJlc3NlZEV2ZW50KGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCYpOwog
I2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICB2b2lkIHdpZGdldE1hcHBlZChpbnQ2NF90
IG5hdGl2ZVdpbmRvd0hhbmRsZSk7CisgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
V2luZG93SWQoaW50NjRfdCBuYXRpdmVXaW5kb3dIYW5kbGUpOworICAgIHZvaWQgaW52YWxpZGF0
ZVdpZGdldCgpOwogI2VuZGlmCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBiNmJjYWNlNTE4MThj
ZTRiMGJkYTI5ODY0YTMwN2ZlZGNiN2JjMTZmLi41OTM2MmJjZjU5OTg0ZjdhMmM0YzgxZmE4ZGNh
N2Y3MGNiOGZmOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjk5LDYgKzI5OSw2IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2UgewogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspICYmIFVTRShURVhUVVJFX01B
UFBFUl9HTCkKLSAgICBXaWRnZXRNYXBwZWQoaW50NjRfdCBpZCkKKyAgICBTZXRBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nV2luZG93SWQoaW50NjRfdCBpZCkKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0
ay5jcHAKaW5kZXggZWU0ODNhZWQzMWVkMWJhY2JjYmNlMzNkZWJjMzcxYzlhMGNmZjNiNy4uMDk4
YTRjNzE2MzhjOWU3NTNhNDcxNWNhYTI1MDI4ODllMTUyZTFlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsu
Y3BwCkBAIC0yMDMsNiArMjAzLDggQEAgdm9pZCBMYXllclRyZWVIb3N0R3RrOjpzaXplRGlkQ2hh
bmdlKGNvbnN0IEludFNpemUmIG5ld1NpemUpCiAKICAgICBpZiAobV9wYWdlT3ZlcmxheUxheWVy
KQogICAgICAgICBtX3BhZ2VPdmVybGF5TGF5ZXItPnNldFNpemUobmV3U2l6ZSk7CisKKyAgICBj
b21wb3NpdGVMYXllcnNUb0NvbnRleHQoRm9yUmVzaXplKTsKIH0KIAogdm9pZCBMYXllclRyZWVI
b3N0R3RrOjpkZXZpY2VTY2FsZUZhY3RvckRpZENoYW5nZSgpCkBAIC0yOTMsNyArMjk1LDcgQEAg
Ym9vbCBMYXllclRyZWVIb3N0R3RrOjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKQogICAgIHJl
dHVybiBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCktPnN5bmNDb21w
b3NpdGluZ1N0YXRlSW5jbHVkaW5nU3ViZnJhbWVzKCk7CiB9CiAKLXZvaWQgTGF5ZXJUcmVlSG9z
dEd0azo6Y29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0KCkKK3ZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6
Y29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0KENvbXBvc2l0ZVB1cnBvc2UgcHVycG9zZSkKIHsKICAg
ICBHTENvbnRleHQqIGNvbnRleHQgPSBnbENvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQgfHwg
IWNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQpAQCAtMzA1LDExICszMDcsMTcgQEAgdm9p
ZCBMYXllclRyZWVIb3N0R3RrOjpjb21wb3NpdGVMYXllcnNUb0NvbnRleHQoKQogICAgIEludFNp
emUgY29udGV4dFNpemUgPSBtX2NvbnRleHQtPmRlZmF1bHRGcmFtZUJ1ZmZlclNpemUoKTsKICAg
ICBnbFZpZXdwb3J0KDAsIDAsIGNvbnRleHRTaXplLndpZHRoKCksIGNvbnRleHRTaXplLmhlaWdo
dCgpKTsKIAorICAgIGlmIChwdXJwb3NlID09IEZvclJlc2l6ZSkgeworICAgICAgICBnbENsZWFy
Q29sb3IoMSwgMSwgMSwgMCk7CisgICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7
CisgICAgfQorCiAgICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpblBhaW50aW5nKCk7CiAgICAgdG9U
ZXh0dXJlTWFwcGVyTGF5ZXIobV9yb290TGF5ZXIuZ2V0KCkpLT5wYWludCgpOwogICAgIG1fdGV4
dHVyZU1hcHBlci0+ZW5kUGFpbnRpbmcoKTsKIAogICAgIGNvbnRleHQtPnN3YXBCdWZmZXJzKCk7
CisgICAgbV93ZWJQYWdlLT5pbnZhbGlkYXRlV2lkZ2V0KCk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVl
SG9zdEd0azo6Zmx1c2hBbmRSZW5kZXJMYXllcnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaAppbmRleCAwNjA1
NzBiNjQ5MTQ4ZGY1NTNjODAzYjQ3NWZmNGY0OTQwMjQyNWI2Li5kOWE4MTZjMmViZGRiOTg1YzEz
NzJlY2ViYzZlZjU3NmMyMDNmODAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaApAQCAtODMsNyArODMsMTAg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY3JlYXRlUGFnZU92ZXJsYXlMYXllcigpOwogICAgIHZv
aWQgZGVzdHJveVBhZ2VPdmVybGF5TGF5ZXIoKTsKLSAgICB2b2lkIGNvbXBvc2l0ZUxheWVyc1Rv
Q29udGV4dCgpOworCisgICAgZW51bSBDb21wb3NpdGVQdXJwb3NlIHsgRm9yUmVzaXplLCBOb3RG
b3JSZXNpemUgfTsKKyAgICB2b2lkIGNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dChDb21wb3NpdGVQ
dXJwb3NlID0gTm90Rm9yUmVzaXplKTsKKwogICAgIHZvaWQgZmx1c2hBbmRSZW5kZXJMYXllcnMo
KTsKICAgICB2b2lkIGNhbmNlbFBlbmRpbmdMYXllckZsdXNoKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCmluZGV4IDMw
YWFhNDAzN2Y3YzQ3ZDE0ZDU2YTQ3YzcxZWFhYzY3M2JjYTgyNDIuLmQ5ZGRlODFhMjVkYjc0NDI2
NmE1ZTY3YThmYTliYTY5OWEwYWZkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcApAQCAtMTU2LDEwICsxNTYsMTUgQEAg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlRGF0YUZvclVS
TChjb25zdCBLVVJMJikKIH0KIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLXZvaWQgV2Vi
UGFnZTo6d2lkZ2V0TWFwcGVkKGludDY0X3QgbmF0aXZlV2luZG93SGFuZGxlKQordm9pZCBXZWJQ
YWdlOjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nV2luZG93SWQoaW50NjRfdCBuYXRpdmVXaW5k
b3dIYW5kbGUpCiB7CiAgICAgbV9uYXRpdmVXaW5kb3dIYW5kbGUgPSBuYXRpdmVXaW5kb3dIYW5k
bGU7CiB9CisKK3ZvaWQgV2ViUGFnZTo6aW52YWxpZGF0ZVdpZGdldCgpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpJbnZhbGlkYXRlV2lkZ2V0KCkpOworfQogI2VuZGlmCiAK
IGJvb2wgV2ViUGFnZTo6aGFuZGxlTW91c2VQcmVzc2VkRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBwbGF0Zm9ybU1vdXNlRXZlbnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164565</attachid>
            <date>2012-09-18 08:33:21 -0700</date>
            <delta_ts>2012-09-18 10:17:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94417-20120918083248.patch</filename>
            <type>text/plain</type>
            <size>23973</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4ODMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjllZjA0ZmQ1ZjdlNGQ4
ODllYTc3NTI2NDQ5OGI3OGQ1NDM5NjMyZi4uZGFlZmNhOGVkNjI0ZjM5YWY2OGNkZGNmYTgwZWMw
ZjA1NWNlOTY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA5LTE4ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBbV2Vi
S2l0Ml0gVXNlIFhDb21wb3NpdGUgd2luZG93IGZvciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ0MTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9m
IHJlbmRlcmluZyBkaXJlY3RseSB0byB0aGUgd2lkZ2V0J3MgbmF0aXZlIHdpbmRvdywgcmVuZGVy
IHRvIGFuCisgICAgICAgIG9mZnNjcmVlbiB3aW5kb3cgcmVkaXJlY3RlZCB0byBhIFBpeG1hcCB3
aXRoIFhDb21wb3NpdGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHdpbGwgYmUgY292
ZXJlZCBieSB0aGUgZXhpc3RpbmcgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgdGVzdHMsCisgICAg
ICAgIHdoaWNoIHNob3VsZCBub3cgZ2l2ZSBjb3JyZWN0IHBpeGVsIHJlc3VsdHMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnJlc2l6ZSk6IEFkZCBhIGNh
bGwgdG8gWEZsdXNoIHdoaWNoIGVuc3VyZXMKKyAgICAgICAgdGhhdCBwZW5kaW5nIFgxMSBvcGVy
YXRpb25zIGNvbXBsZXRlLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5k
b3c6OndpbmRvd0lkKTogQWRkZWQgdGhpcyBhY2Nlc3Nvci4KKwogMjAxMi0wOS0xNyAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBidWls
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCA3MjkyNTZhYzhiYzZiYzEyM2MyMjViMWEwNTk3MThhNmZlY2VlMjNm
Li45YzFjMmViNzQ1NzBjODlmMDIyZmEwNGFjMzAwZWExMzBmMDUzNzlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTUgQEAKKzIwMTItMDktMTggIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFtXZWJLaXQyXSBVc2UgWENvbXBvc2l0ZSB3aW5k
b3cgZm9yIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDQxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEluc3RlYWQgb2YgcmVuZGVyaW5nIGRpcmVjdGx5IHRvIHRo
ZSB3aWRnZXQncyBuYXRpdmUgd2luZG93LCByZW5kZXIgdG8gYW4KKyAgICAgICAgb2Zmc2NyZWVu
IHdpbmRvdyByZWRpcmVjdGVkIHRvIGEgUGl4bWFwIHdpdGggWENvbXBvc2l0ZS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKF9X
ZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUpOiBBZGRlZCBhIGZldyBtZW1iZXJzIG5lY2Vzc2FyeSB0
byB0cmFjayB0aGUgCisgICAgICAgIG9mZnNjcmVlbiB3aW5kb3cuCisgICAgICAgICh3ZWJraXRf
d2ViX3ZpZXdfYmFzZV9pbml0KToKKyAgICAgICAgKHJlbmRlckFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdSZXN1bHRzKTogQWRkZWQgdGhpcyBoZWxwZXIgZnVuY3Rpb25zIHdoaWNoIHJlbmRlcnMKKyAg
ICAgICAgdGhlIHJlc3VsdHMgb2YgdGhlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIG9wZXJhdGlv
bnMgZHVyaW5nIHRoZSBHVEsrIGRyYXcgbG9vcC4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNl
RHJhdyk6IENhbGwgcmVuZGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMgd2hlbiBhcHBy
b3ByaWF0ZS4KKyAgICAgICAgKHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFsbG9jYXRpb24p
OiBSZXNpemUgdGhlIG9mZnNjcmVlbiB3aW5kb3cgd2hlbiBhcHByb3ByaWF0ZS4KKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdCYXNlU2l6ZUFsbG9jYXRlKTogRG8gbm90IGNhbGwgcmVzaXplV2ViS2l0
V2ViVmlld0Jhc2VGcm9tQWxsb2NhdGlvbiB3aGVuCisgICAgICAgIHRoZSBhY3R1YWwgc2l6ZSBv
ZiB0aGUgd2lkZ2V0IGRvZXMgbm90IGNoYW5nZS4gVGhpcyBwcmV2ZW50cyBkZXN0cm95aW5nIGFu
ZCByZWNyZWF0aW5nCisgICAgICAgIHRoZSBvZmZzY3JlZW4gd2luZG93IHBpeG1hcCB3aGVuIGl0
IGlzbid0IG5lY2Vzc2FyeS4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlTWFwKTogV2Ugbm8g
bG9uZ2VyIHNlbmQgdGhlIHdpbmRvdyBpZCBkdXJpbmcgbWFwLCBpbnN0ZWFkIGl0J3Mgc2VudAor
ICAgICAgICBhcyBzb29uIGFzIHRoZXJlIGlzIFdlYlBhZ2VQcm94eS4KKyAgICAgICAgKHdlYmtp
dFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSk6IFNlbmQgdGhlIHdpbmRvdyBpZCBvZiB0aGUgcmVk
aXJlY3RlZCB3aW5kb3cgdG8KKyAgICAgICAgdGhlIFdlYlByb2Nlc3MuCisgICAgICAgIChxdWV1
ZUFub3RoZXJEcmF3T2ZBY2NlbGVyYXRlZENvbXBvc2l0aW5nUmVzdWx0cyk6IEFkZGVkIHRoaXMg
aGVscGVyIHdoaWNoIHdvcmtzCisgICAgICAgIGFyb3VuZCB0aGUgaXNzdWUgb2Ygc2xvdyB1cGRh
dGVzIG9mIHRoZSBwaXhtYXAgYmFja2luZyB0aGUgcmVkaXJlY3RlZCBYQ29tcG9zaXRlIHdpbmRv
dy4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlUXVldWVEcmF3T2ZBY2NlbGVyYXRlZENvbXBv
c2l0aW5nUmVzdWx0cyk6IEFkZGVkIHRoaXMgbWV0aG9kIHdoaWNoCisgICAgICAgIGlzIHdoYXQg
dGhlIFdlYlByb2Nlc3MgdXNlcyB0byBmb3JjZSBhIHJlZHJhdyBvbiB0aGUgVUlQcm9jZXNzIHNp
ZGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRl
Lmg6IEFkZGVkIG5ldyBtZXRob2QgdG8gdGhlIGxpc3Qgb2YgcHJpdmF0ZSBtZXRob2RzLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oOgorICAgICAgICAoRHJhd2lu
Z0FyZWFQcm94eUltcGwpOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5SW1wbDo6
aXNJbkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTogRXhwb3NlZCB0aGlzIG1ldGhvZCBwdWJs
aWNhbGx5CisgICAgICAgIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgZnJvbSBXZWJLaXRXZWJWaWV3
QmFzZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJQ
YWdlUHJveHkpOiBSZW5hbWVkIHdpZGdldE1hcHBlZCB0byBzZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nV2luZG93SWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bjogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwOiBE
aXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nV2luZG93SWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6
CisgICAgICAgIChXZWJQYWdlKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW46IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhv
c3RHdGs6OnNpemVEaWRDaGFuZ2UpOiBGb3JjZSBhIGNvbXBvc2l0ZSB0byB0aGUgcmVzaXplZCB3
aW5kb3cgcmlnaHQKKyAgICAgICAgYXdheSBzbyB0aGF0IHRoZSBuZXcgd2luZG93IHBpeG1hcCBp
cyB1cGRhdGVkIGJlZm9yZSB0aGUgZmlyc3QgZHJhdy4KKyAgICAgICAgKFdlYktpdDo6TGF5ZXJU
cmVlSG9zdEd0azo6Y29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0KTogSWYgdGhlIGNvbXBvc2l0aW9u
IGlzIGZvciBhIHJlc2l6ZSwKKyAgICAgICAgZmlyc3QgY2xlYXIgdGhlIGVudGlyZSBHTCBjb250
ZXh0IHNvIHRoYXQgd2UgZG9uJ3Qgc2VlIGJsYWNrIGFydGlmYWN0cyBkdXJpbmcgcmVzaXplLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oOgorICAg
ICAgICAoTGF5ZXJUcmVlSG9zdEd0ayk6IFVwZGF0ZSB0aGUgc2lnbmF0dXJlIG9mICBjb21wb3Np
dGVMYXllcnNUb0NvbnRleHQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQ
YWdlR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0QWNjZWxlcmF0ZWRDb21w
b3NpdGluZ1dpbmRvd0lkKTogQWRkZWQuCisKIDIwMTItMDktMTcgIE1hcmsgSGFobmVuYmVyZyAg
PG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXhpbmcgdGhlIGJ1aWxkIGFmdGVy
IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEyODgxMwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5j
cHAKaW5kZXggMTU3MmE1OWI0MTY3NmQzYjU5ZTg1NDUxMzY2NzNiZDdlMzg2YzEzZi4uNDgwYjUz
ZmRkOWFjMjliODhiYWZkNzljNzBlZjExZTQ3MDcyMjVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3Bw
CkBAIC0xMzcsNiArMTM3LDggQEAgdm9pZCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6cmVz
aXplKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICBEaXNwbGF5KiBkaXNwbGF5ID0gR0xDb250
ZXh0R0xYOjpzaGFyZWREaXNwbGF5KCk7CiAgICAgWFJlc2l6ZVdpbmRvdyhkaXNwbGF5LCBtX3dp
bmRvdywgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKworICAgIFhGbHVzaChkaXNwbGF5
KTsKICAgICBnbFhXYWl0WCgpOwogCiAgICAgLy8gVGhpcyBzd2FwIGlzIGJhc2VkIG9uIGNvZGUg
aW4gQ2hyb21pdW0uIEl0IHRyaWVzIHRvIHdvcmstYXJvdW5kIGEgYnVnIGluIHRoZSBJbnRlbCBk
cml2ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3Rl
ZFhDb21wb3NpdGVXaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVj
dGVkWENvbXBvc2l0ZVdpbmRvdy5oCmluZGV4IGQ2Y2Q3NDcyM2I3OWQxOTU3MGU3ZWQyOWRjMDJl
Y2EyNjI1OWNlYmEuLmU1ZGIwZmE3ZThhZDlhODI1ZTFiNjlmOWU2MmFlMzcwN2UyOWVmYTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdy5oCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2l6
ZShjb25zdCBJbnRTaXplJiBuZXdTaXplKTsKICAgICBHTENvbnRleHQqIGNvbnRleHQoKTsKICAg
ICBjYWlyb19zdXJmYWNlX3QqIGNhaXJvU3VyZmFjZUZvcldpZGdldChHdGtXaWRnZXQqKTsKKyAg
ICBXaW5kb3cgd2luZG93SWQoKSB7IHJldHVybiBtX3dpbmRvdzsgfQogCiBwcml2YXRlOgogICAg
IFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KGNvbnN0IEludFNpemUmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApp
bmRleCBmNWJkMmRkY2M5NmE5OGJmMTMyYWQyMTY1MjU4MmZlNGNhOWU5ODJjLi4wYjBjNTVjMzIz
MjZlOGZjOWFiMzQ2NzE5NGFlMGM5NGYxNmQwZDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC02Nyw3ICs2
Nyw3IEBACiAjZW5kaWYKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgZGVmaW5lZChH
REtfV0lORE9XSU5HX1gxMSkKLSNpbmNsdWRlIDxnZGsvZ2RreC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaD4KICNlbmRpZgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwpAQCAtODksMTQgKzg5LDIwIEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQ
cml2YXRlIHsKICAgICBJbnRTaXplIHJlc2l6ZXJTaXplOwogICAgIEdSZWZQdHI8QXRrT2JqZWN0
PiBhY2Nlc3NpYmxlOwogICAgIGJvb2wgbmVlZHNSZXNpemVPbk1hcDsKLSNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCi0gICAgYm9vbCBmdWxsU2NyZWVuTW9kZUFjdGl2ZTsKLSAgICBXZWJGdWxs
U2NyZWVuQ2xpZW50R3RrIGZ1bGxTY3JlZW5DbGllbnQ7Ci0jZW5kaWYKICAgICBHdGtXaWRnZXQq
IGluc3BlY3RvclZpZXc7CiAgICAgdW5zaWduZWQgaW5zcGVjdG9yVmlld0hlaWdodDsKICAgICBH
T3duUHRyPEdka0V2ZW50PiBjb250ZXh0TWVudUV2ZW50OwogICAgIFdlYkNvbnRleHRNZW51UHJv
eHlHdGsqIGFjdGl2ZUNvbnRleHRNZW51UHJveHk7CisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCisgICAgYm9vbCBmdWxsU2NyZWVuTW9kZUFjdGl2ZTsKKyAgICBXZWJGdWxsU2NyZWVuQ2xp
ZW50R3RrIGZ1bGxTY3JlZW5DbGllbnQ7CisjZW5kaWYKKworI2lmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkKKyAgICBPd25QdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IHJlZGlyZWN0ZWRX
aW5kb3c7CisgICAgYm9vbCByZWFkeVRvUmVuZGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3Vs
dHM7CisjZW5kaWYKIH07CiAKIEdfREVGSU5FX1RZUEUoV2ViS2l0V2ViVmlld0Jhc2UsIHdlYmtp
dF93ZWJfdmlld19iYXNlLCBHVEtfVFlQRV9DT05UQUlORVIpCkBAIC0xNjEsOSArMTY3LDYgQEAg
c3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VSZWFsaXplKEd0a1dpZGdldCogd2lkZ2V0KQog
ICAgIGdpbnQgYXR0cmlidXRlc01hc2sgPSBHREtfV0FfWCB8IEdES19XQV9ZIHwgR0RLX1dBX1ZJ
U1VBTDsKIAogICAgIEdka1dpbmRvdyogd2luZG93ID0gZ2RrX3dpbmRvd19uZXcoZ3RrX3dpZGdl
dF9nZXRfcGFyZW50X3dpbmRvdyh3aWRnZXQpLCAmYXR0cmlidXRlcywgYXR0cmlidXRlc01hc2sp
OwotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICBnZGtfd2luZG93X2Vuc3VyZV9uYXRp
dmUod2luZG93KTsKLSNlbmRpZgogICAgIGd0a193aWRnZXRfc2V0X3dpbmRvdyh3aWRnZXQsIHdp
bmRvdyk7CiAgICAgZ2RrX3dpbmRvd19zZXRfdXNlcl9kYXRhKHdpbmRvdywgd2lkZ2V0KTsKIApA
QCAtMjYzLDcgKzI2Niw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2luaXQo
V2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogICAgIHByaXYtPnNob3VsZEZv
cndhcmROZXh0S2V5RXZlbnQgPSBGQUxTRTsKIAogICAgIEd0a1dpZGdldCogdmlld1dpZGdldCA9
IEdUS19XSURHRVQod2Via2l0V2ViVmlld0Jhc2UpOwotICAgIGd0a193aWRnZXRfc2V0X2RvdWJs
ZV9idWZmZXJlZCh2aWV3V2lkZ2V0LCBGQUxTRSk7CiAgICAgZ3RrX3dpZGdldF9zZXRfY2FuX2Zv
Y3VzKHZpZXdXaWRnZXQsIFRSVUUpOwogICAgIHByaXYtPmltQ29udGV4dCA9IGFkb3B0R1JlZihn
dGtfaW1fbXVsdGljb250ZXh0X25ldygpKTsKIApAQCAtMjc0LDExICsyNzYsMzYgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl92aWV3X2Jhc2VfaW5pdChXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0
V2ViVmlld0Jhc2UpCiAgICAgZ3RrX2RyYWdfZGVzdF9zZXQodmlld1dpZGdldCwgc3RhdGljX2Nh
c3Q8R3RrRGVzdERlZmF1bHRzPigwKSwgMCwgMCwKICAgICAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihHREtfQUNUSU9OX0NPUFkgfCBHREtfQUNUSU9OX01PVkUg
fCBHREtfQUNUSU9OX0xJTksgfCBHREtfQUNUSU9OX1BSSVZBVEUpKTsKICAgICBndGtfZHJhZ19k
ZXN0X3NldF90YXJnZXRfbGlzdCh2aWV3V2lkZ2V0LCBQYXN0ZWJvYXJkSGVscGVyOjpkZWZhdWx0
UGFzdGVib2FyZEhlbHBlcigpLT50YXJnZXRMaXN0KCkpOworCisgICAgcHJpdi0+cmVkaXJlY3Rl
ZFdpbmRvdyA9IFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpjcmVhdGUoSW50U2l6ZSgxLCAx
KSk7CisgICAgcHJpdi0+cmVhZHlUb1JlbmRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRz
ID0gZmFsc2U7Cit9CisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCitzdGF0aWMgYm9vbCB3
ZWJraXRXZWJWaWV3UmVuZGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMoV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBEcmF3aW5nQXJlYVByb3h5SW1wbCogZHJhd2luZ0FyZWEs
IGNhaXJvX3QqIGNyLCBHZGtSZWN0YW5nbGUqIGNsaXBSZWN0KQoreworICAgIGlmICghZHJhd2lu
Z0FyZWEtPmlzSW5BY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAvLyBUbyBhdm9pZCBmbGFzaGVzIHdoZW4gaW5pdGlhbGl6aW5nIGFjY2Vs
ZXJhdGVkIGNvbXBvc2l0aW5nIGZvciB0aGUgZmlyc3QKKyAgICAvLyB0aW1lLCB3ZSB3YWl0IHVu
dGlsIHdlIGtub3cgdGhlcmUncyBhIGZyYW1lIHJlYWR5IGJlZm9yZSByZW5kZXJpbmcuCisgICAg
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CisgICAg
aWYgKCFwcml2LT5yZWFkeVRvUmVuZGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEFTU0VSVChwcml2LT5yZWRpcmVjdGVkV2luZG93
KTsKKyAgICBjYWlyb19yZWN0YW5nbGUoY3IsIGNsaXBSZWN0LT54LCBjbGlwUmVjdC0+eSwgY2xp
cFJlY3QtPndpZHRoLCBjbGlwUmVjdC0+aGVpZ2h0KTsKKyAgICBjYWlyb19zdXJmYWNlX3QqIHN1
cmZhY2UgPSBwcml2LT5yZWRpcmVjdGVkV2luZG93LT5jYWlyb1N1cmZhY2VGb3JXaWRnZXQoR1RL
X1dJREdFVCh3ZWJWaWV3QmFzZSkpOworICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjciwg
c3VyZmFjZSwgMCwgMCk7CisgICAgY2Fpcm9fZmlsbChjcik7CisgICAgcmV0dXJuIHRydWU7CiB9
CisjZW5kaWYKIAogc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlRHJhdyhHdGtXaWRn
ZXQqIHdpZGdldCwgY2Fpcm9fdCogY3IpCiB7Ci0gICAgRHJhd2luZ0FyZWFQcm94eSogZHJhd2lu
Z0FyZWEgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpLT5wcml2LT5wYWdlUHJveHktPmRy
YXdpbmdBcmVhKCk7CisgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VCS0lU
X1dFQl9WSUVXX0JBU0Uod2lkZ2V0KTsKKyAgICBEcmF3aW5nQXJlYVByb3h5SW1wbCogZHJhd2lu
Z0FyZWEgPSBzdGF0aWNfY2FzdDxEcmF3aW5nQXJlYVByb3h5SW1wbCo+KHdlYlZpZXdCYXNlLT5w
cml2LT5wYWdlUHJveHktPmRyYXdpbmdBcmVhKCkpOwogICAgIGlmICghZHJhd2luZ0FyZWEpCiAg
ICAgICAgIHJldHVybiBGQUxTRTsKIApAQCAtMjg2LDggKzMxMywxMyBAQCBzdGF0aWMgZ2Jvb2xl
YW4gd2Via2l0V2ViVmlld0Jhc2VEcmF3KEd0a1dpZGdldCogd2lkZ2V0LCBjYWlyb190KiBjcikK
ICAgICBpZiAoIWdka19jYWlyb19nZXRfY2xpcF9yZWN0YW5nbGUoY3IsICZjbGlwUmVjdCkpCiAg
ICAgICAgIHJldHVybiBGQUxTRTsKIAorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICBp
ZiAod2Via2l0V2ViVmlld1JlbmRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKHdlYlZp
ZXdCYXNlLCBkcmF3aW5nQXJlYSwgY3IsICZjbGlwUmVjdCkpCisgICAgICAgIHJldHVybiBGQUxT
RTsKKyNlbmRpZgorCiAgICAgV2ViQ29yZTo6UmVnaW9uIHVucGFpbnRlZFJlZ2lvbjsgLy8gVGhp
cyBpcyBzaW1wbHkgdW51c2VkLgotICAgIHN0YXRpY19jYXN0PERyYXdpbmdBcmVhUHJveHlJbXBs
Kj4oZHJhd2luZ0FyZWEpLT5wYWludChjciwgY2xpcFJlY3QsIHVucGFpbnRlZFJlZ2lvbik7Cisg
ICAgZHJhd2luZ0FyZWEtPnBhaW50KGNyLCBjbGlwUmVjdCwgdW5wYWludGVkUmVnaW9uKTsKIAog
ICAgIHJldHVybiBGQUxTRTsKIH0KQEAgLTMyMyw4ICszNTUsMTAgQEAgc3RhdGljIHZvaWQgcmVz
aXplV2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxsb2NhdGlvbihXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UKICAgICAgICAgdmlld1JlY3Quc2V0SGVpZ2h0KGFsbG9jYXRpb24tPmhlaWdodCAt
IHByaXYtPmluc3BlY3RvclZpZXdIZWlnaHQpOwogICAgIH0KIAotICAgIGlmIChwcml2LT5wYWdl
UHJveHktPmRyYXdpbmdBcmVhKCkpCi0gICAgICAgIHByaXYtPnBhZ2VQcm94eS0+ZHJhd2luZ0Fy
ZWEoKS0+c2V0U2l6ZSh2aWV3UmVjdC5zaXplKCksIEludFNpemUoKSk7CisgICAgd2ViVmlld0Jh
c2UtPnByaXYtPnJlZGlyZWN0ZWRXaW5kb3ctPnJlc2l6ZShJbnRTaXplKGFsbG9jYXRpb24tPndp
ZHRoLCBhbGxvY2F0aW9uLT5oZWlnaHQpKTsKKworICAgIGlmIChEcmF3aW5nQXJlYVByb3h5SW1w
bCogZHJhd2luZ0FyZWEgPSBzdGF0aWNfY2FzdDxEcmF3aW5nQXJlYVByb3h5SW1wbCo+KHByaXYt
PnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKSkpCisgICAgICAgIGRyYXdpbmdBcmVhLT5zZXRTaXpl
KHZpZXdSZWN0LnNpemUoKSwgSW50U2l6ZSgpKTsKIAogICAgIEd0a1dpZGdldCogdG9wbGV2ZWwg
PSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSk7CiAgICAg
aWYgKHdpZGdldElzT25zY3JlZW5Ub3BsZXZlbFdpbmRvdyh0b3BsZXZlbCkpCkBAIC0zMzMsMTQg
KzM2NywyMCBAQCBzdGF0aWMgdm9pZCByZXNpemVXZWJLaXRXZWJWaWV3QmFzZUZyb21BbGxvY2F0
aW9uKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZQogCiBzdGF0aWMgdm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZVNpemVBbGxvY2F0ZShHdGtXaWRnZXQqIHdpZGdldCwgR3RrQWxsb2NhdGlvbiog
YWxsb2NhdGlvbikKIHsKKyAgICBHdGtBbGxvY2F0aW9uIG9sZEFsbG9jYXRpb247CisgICAgZ3Rr
X3dpZGdldF9nZXRfYWxsb2NhdGlvbih3aWRnZXQsICZvbGRBbGxvY2F0aW9uKTsKKwogICAgIEdU
S19XSURHRVRfQ0xBU1Mod2Via2l0X3dlYl92aWV3X2Jhc2VfcGFyZW50X2NsYXNzKS0+c2l6ZV9h
bGxvY2F0ZSh3aWRnZXQsIGFsbG9jYXRpb24pOwogCi0gICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YlZpZXdCYXNlID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KTsKLSAgICBpZiAoIWd0a193
aWRnZXRfZ2V0X21hcHBlZChHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSkgJiYgIXdlYlZpZXdCYXNl
LT5wcml2LT5wYWdlUHJveHktPmRyYXdpbmdBcmVhKCktPnNpemUoKS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgd2ViVmlld0Jhc2UtPnByaXYtPm5lZWRzUmVzaXplT25NYXAgPSB0cnVlOwotICAgICAg
ICByZXR1cm47CisgICAgaWYgKG9sZEFsbG9jYXRpb24ud2lkdGggIT0gYWxsb2NhdGlvbi0+d2lk
dGggfHwgb2xkQWxsb2NhdGlvbi5oZWlnaHQgIT0gYWxsb2NhdGlvbi0+aGVpZ2h0KSB7CisgICAg
ICAgIFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNF
KHdpZGdldCk7CisgICAgICAgIGlmICghZ3RrX3dpZGdldF9nZXRfbWFwcGVkKHdpZGdldCkgJiYg
IXdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJveHktPmRyYXdpbmdBcmVhKCktPnNpemUoKS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgICAgIHdlYlZpZXdCYXNlLT5wcml2LT5uZWVkc1Jlc2l6ZU9uTWFw
ID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHJlc2l6
ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFsbG9jYXRpb24od2ViVmlld0Jhc2UsIGFsbG9jYXRpb24p
OwogICAgIH0KLSAgICByZXNpemVXZWJLaXRXZWJWaWV3QmFzZUZyb21BbGxvY2F0aW9uKHdlYlZp
ZXdCYXNlLCBhbGxvY2F0aW9uKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VN
YXAoR3RrV2lkZ2V0KiB3aWRnZXQpCkBAIC0zNDgsMTMgKzM4OCw2IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdCYXNlTWFwKEd0a1dpZGdldCogd2lkZ2V0KQogICAgIEdUS19XSURHRVRfQ0xB
U1Mod2Via2l0X3dlYl92aWV3X2Jhc2VfcGFyZW50X2NsYXNzKS0+bWFwKHdpZGdldCk7CiAKICAg
ICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3
aWRnZXQpOwotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgZGVmaW5lZChHREtfV0lORE9X
SU5HX1gxMSkKLSAgICBHZGtXaW5kb3cqIGdka1dpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRv
dyh3aWRnZXQpOwotICAgIEFTU0VSVChnZGtXaW5kb3cpOwotICAgIGlmIChnZGtfd2luZG93X2hh
c19uYXRpdmUoZ2RrV2luZG93KSkKLSAgICAgICAgd2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94
eS0+d2lkZ2V0TWFwcGVkKEdES19XSU5ET1dfWElEKGdka1dpbmRvdykpOwotI2VuZGlmCi0KICAg
ICBpZiAoIXdlYlZpZXdCYXNlLT5wcml2LT5uZWVkc1Jlc2l6ZU9uTWFwKQogICAgICAgICByZXR1
cm47CiAKQEAgLTY3NSw2ICs3MDgsMTAgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdl
YlBhZ2UoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlLCBXS0NvbnQKICNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgcHJpdi0+cGFnZVByb3h5LT5mdWxsU2NyZWVuTWFu
YWdlcigpLT5zZXRXZWJWaWV3KHdlYmtpdFdlYlZpZXdCYXNlKTsKICNlbmRpZgorCisjaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKQorICAgIHByaXYtPnBhZ2VQcm94eS0+c2V0QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ1dpbmRvd0lkKHByaXYtPnJlZGlyZWN0ZWRXaW5kb3ctPndpbmRvd0lkKCkpOwor
I2VuZGlmCiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRUb29sdGlwVGV4dChXZWJLaXRX
ZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIGNvbnN0IGNoYXIqIHRvb2x0aXApCkBAIC03OTMsMyAr
ODMwLDM4IEBAIEdka0V2ZW50KiB3ZWJraXRXZWJWaWV3QmFzZVRha2VDb250ZXh0TWVudUV2ZW50
KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3CiB7CiAgICAgcmV0dXJuIHdlYmtpdFdl
YlZpZXdCYXNlLT5wcml2LT5jb250ZXh0TWVudUV2ZW50LnJlbGVhc2UoKTsKIH0KKworI2lmIFVT
RShURVhUVVJFX01BUFBFUl9HTCkKK3N0YXRpYyBnYm9vbGVhbiBxdWV1ZUFub3RoZXJEcmF3T2ZB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nUmVzdWx0cyhncG9pbnRlciogd2ViVmlld0Jhc2VQb2ludGVy
KQoreworICAgIC8vIFRoZSBXZWJWaWV3QmFzZSBtYXkgaGF2ZSBiZWVuIGRlc3Ryb3llZCBpbiB0
aGUgdGltZSBzaW5jZSB3ZSBxdWV1ZWQgdGhpcworICAgIC8vIGRyYXcgYW5kIHRoZSB0aW1lIHdl
IGFyZSBhY3R1YWxseSBleGVjdXRpbmcuCisgICAgaWYgKCEqd2ViVmlld0Jhc2VQb2ludGVyKSB7
CisgICAgICAgIGZhc3RGcmVlKHdlYlZpZXdCYXNlUG9pbnRlcik7CisgICAgICAgIHJldHVybiBG
QUxTRTsKKyAgICB9CisKKyAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJL
SVRfV0VCX1ZJRVdfQkFTRSgqd2ViVmlld0Jhc2VQb2ludGVyKTsKKyAgICBndGtfd2lkZ2V0X3F1
ZXVlX2RyYXcoR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSkpOworICAgIHdlYlZpZXdCYXNlLT5wcml2
LT5yZWFkeVRvUmVuZGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMgPSB0cnVlOworCisg
ICAgZ19vYmplY3RfcmVtb3ZlX3dlYWtfcG9pbnRlcihHX09CSkVDVCh3ZWJWaWV3QmFzZSksIHdl
YlZpZXdCYXNlUG9pbnRlcik7CisgICAgZmFzdEZyZWUod2ViVmlld0Jhc2VQb2ludGVyKTsKKwor
ICAgIHJldHVybiBGQUxTRTsKK30KKwordm9pZCB3ZWJraXRXZWJWaWV3QmFzZVF1ZXVlRHJhd09m
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdC
YXNlKQoreworICAgIGd0a193aWRnZXRfcXVldWVfZHJhdyhHVEtfV0lER0VUKHdlYlZpZXdCYXNl
KSk7CisKKyAgICAvLyBSZWRyYXcgYWdhaW4sIG9uZSBmcmFtZSBsYXRlciwgYXMgaXQgbWlnaHQg
dGFrZSBzb21lIHRpbWUgZm9yIHRoZSBuZXcgR0wgZnJhbWUgdG8gYmUgYXZhaWxhYmxlLgorICAg
IC8vIFRoaXMgcHJldmVudHMgdGhlIGRpc3BsYXkgZnJvbSBhbHdheXMgYmVpbmcgb25lIGZyYW1l
IGJlaGluZCBpbiB0aGUgY2FzZSBHTCBoYXNuJ3QgeWV0IGZpbmlzaGVkCisgICAgLy8gcmVuZGVy
aW5nIHRvIHRoZSB3aW5kb3cuCisgICAgLy8gVE9ETzogQWRkIFhEYW1hZ2Ugc3VwcG9ydCB0byBS
ZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyB0byBhY2NvbXBsaXNoIHRoaXMuCisgICAgZ3BvaW50
ZXIqIHdlYlZpZXdCYXNlUG9pbnRlciA9IHN0YXRpY19jYXN0PGdwb2ludGVyKj4oZmFzdE1hbGxv
YyhzaXplb2YoZ3BvaW50ZXIpKSk7CisgICAgZ19vYmplY3RfYWRkX3dlYWtfcG9pbnRlcihHX09C
SkVDVCh3ZWJWaWV3QmFzZSksIHdlYlZpZXdCYXNlUG9pbnRlcik7CisgICAgKndlYlZpZXdCYXNl
UG9pbnRlciA9IHdlYlZpZXdCYXNlOworICAgIGdfdGltZW91dF9hZGQoMTAwMCAvIDYwLCByZWlu
dGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPihxdWV1ZUFub3RoZXJEcmF3T2ZBY2NlbGVyYXRlZENv
bXBvc2l0aW5nUmVzdWx0cyksIHdlYlZpZXdCYXNlUG9pbnRlcik7Cit9CisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2VQcml2YXRlLmgKaW5kZXggNzBjYzcyNTc1Y2JkY2I4MDRjNTY2ZjNjZmNkNDNkZWM4NDBl
NTY1OC4uNTU0ZTFhNmQ1MjI5OGRjYmMwOTM0ZDg1OTNkZTI2ZjVlNDI4NDliYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2VQcml2YXRlLmgKQEAgLTUxLDQgKzUxLDggQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNl
dEFjdGl2ZUNvbnRleHRNZW51UHJveHkoV2ViS2l0V2ViVmlld0Jhc2UqLCBXZWJDb250ZXh0TWUK
IFdlYkNvbnRleHRNZW51UHJveHlHdGsqIHdlYmtpdFdlYlZpZXdCYXNlR2V0QWN0aXZlQ29udGV4
dE1lbnVQcm94eShXZWJLaXRXZWJWaWV3QmFzZSopOwogR2RrRXZlbnQqIHdlYmtpdFdlYlZpZXdC
YXNlVGFrZUNvbnRleHRNZW51RXZlbnQoV2ViS2l0V2ViVmlld0Jhc2UqKTsKIAorI2lmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VRdWV1ZURyYXdPZkFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKFdlYktpdFdlYlZpZXdCYXNlKik7CisjZW5kaWYKKwog
I2VuZGlmIC8vIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oCmluZGV4IDBjOWYwNGY4ZTAyZGE4ZjBj
ZGJjMGEzMDEwZjVmMDQxZmEzMzk5ODguLjc2MmUzNWM2OTgzN2RmNDU3NWQzZWE2YWQ1NTUyYzQ1
ZTFlMjQxZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJl
YVByb3h5SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVBy
b3h5SW1wbC5oCkBAIC00OCw2ICs0OCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBhaW50KEJh
Y2tpbmdTdG9yZTo6UGxhdGZvcm1HcmFwaGljc0NvbnRleHQsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmLCBXZWJDb3JlOjpSZWdpb24mIHVucGFpbnRlZFJlZ2lvbik7CiAKKyNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCisgICAgYm9vbCBpc0luQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoKSBjb25zdCB7IHJldHVybiAhbV9sYXllclRyZWVDb250ZXh0LmlzRW1wdHkoKTsgfQorI2Vu
ZGlmCisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRHJhd2luZ0FyZWFQcm94eUltcGwoV2ViUGFn
ZVByb3h5Kik7CiAKQEAgLTc4LDkgKzgyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVudGVyQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpOwogICAgIHZv
aWQgZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCk7CiAgICAgdm9pZCB1cGRhdGVBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jik7Ci0KLSAgICBi
b29sIGlzSW5BY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuICFtX2xh
eWVyVHJlZUNvbnRleHQuaXNFbXB0eSgpOyB9Ci0KICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiB2aXNpYmxlQ29udGVudHNSZWN0LCBmbG9hdCBzY2FsZSwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeSk7CiAgICAgdm9pZCBkaWRSZWNlaXZlTGF5ZXJU
cmVlQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6
Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYzRkMjc0MzA4NzVhNzMzNjhiZTUxYjM2NzlkMWFh
YzdmNmJmNzEwOC4uMjhjNWRhOTBhZTEwOTQyNmZmN2M5ZTZlYTM0M2RmMGI2MjlkNzI1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNzE0LDcgKzcxNCw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIE5hdGl2ZVdlYk1vdXNlRXZlbnQqIGN1cnJlbnRseVByb2Nl
c3NlZE1vdXNlRG93bkV2ZW50KCk7CiAKICNpZiBQTEFURk9STShHVEspICYmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkKLSAgICB2b2lkIHdpZGdldE1hcHBlZCh1aW50NjRfdCBuYXRpdmVXaW5kb3dJ
ZCk7CisgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nV2luZG93SWQodWludDY0X3Qg
bmF0aXZlV2luZG93SWQpOworICAgIHZvaWQgaW52YWxpZGF0ZVdpZGdldCgpOwogI2VuZGlmCiAK
ICAgICB2b2lkIHNldFN1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXMoYm9vbCBmbGFnKSB7IG1fc3Vw
cHJlc3NWaXNpYmlsaXR5VXBkYXRlcyA9IGZsYWc7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGM1NDFkMmMxNDQwM2RiZmJi
NWM0MWI0ZDU3N2Y4NGRhNGRjNDIzODAuLjFiMzMyZTI4YWJiZGFkNWY4ODU2ZjJlYzUzZDZjZDAy
ODQwNWQxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgpAQCAtMTc2LDYgKzE3NiwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJv
eHkgewogICAgICMgU3VwcG9ydCBmb3IgY29ubmVjdGluZyB0aGUgQWNjZXNzaWJpbGl0eSB3b3Js
ZHMgb2YgdGhlIFVJIGFuZCB0aGUgV2ViIHByb2Nlc3NlcwogICAgIEJpbmRBY2Nlc3NpYmlsaXR5
VHJlZShXVEY6OlN0cmluZyBwbHVnSUQpCiAjZW5kaWYKKyMKKyNpZiBQTEFURk9STShHVEspICYm
IFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICBJbnZhbGlkYXRlV2lkZ2V0KCkKKyNlbmRpZgog
CiAgICAgIyBCYWNrRm9yd2FyZCBtZXNzYWdlcwogICAgIEJhY2tGb3J3YXJkQWRkSXRlbSh1aW50
NjRfdCBpdGVtSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dl
YlBhZ2VQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQ
cm94eUd0ay5jcHAKaW5kZXggYWMyNmMwY2I4ZmRiYjhjOWU3MjVmOTMzYjg0NzhhMmE0ZGNjMGY3
Yy4uMTExN2EyNTMwNThhMjA0OWUyNzQxYmU3MGUxZDk4MmUzNWYzNTMzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcApAQCAtMTEwLDkg
KzExMCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENo
YW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZQogfQogCiAjaWYgVVNFKFRFWFRVUkVf
TUFQUEVSX0dMKQotdm9pZCBXZWJQYWdlUHJveHk6OndpZGdldE1hcHBlZCh1aW50NjRfdCBuYXRp
dmVXaW5kb3dJZCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
V2luZG93SWQodWludDY0X3QgbmF0aXZlV2luZG93SWQpCiB7Ci0gICAgcHJvY2VzcygpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpXaWRnZXRNYXBwZWQobmF0aXZlV2luZG93SWQpLCBtX3BhZ2VJ
RCk7CisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nV2luZG93SWQobmF0aXZlV2luZG93SWQpLCBtX3BhZ2VJRCk7Cit9CisKK3Zv
aWQgV2ViUGFnZVByb3h5OjppbnZhbGlkYXRlV2lkZ2V0KCkKK3sKKyAgICB3ZWJraXRXZWJWaWV3
QmFzZVF1ZXVlRHJhd09mQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMoV0VCS0lUX1dFQl9W
SUVXX0JBU0Uoc3RhdGljX2Nhc3Q8UGFnZUNsaWVudEltcGwqPihtX3BhZ2VDbGllbnQpLT52aWV3
V2lkZ2V0KCkpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAppbmRleCA5NmNiNmUxYTE1YTg5NTg5M2Q0ODY2MWIyNzU5ZTcyNTFiNDU0
MTVhLi43NzViODI3MGE5YzBlMDc0OWEzZTMyNzEwMzUyYmE2ZWZhOGI3N2ViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ1OCw3ICs0NTgsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVBY2Nlc3NpYmlsaXR5VHJlZSgpOwogICAgIGJvb2wg
aGFuZGxlTW91c2VQcmVzc2VkRXZlbnQoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50
Jik7CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotICAgIHZvaWQgd2lkZ2V0TWFwcGVkKGlu
dDY0X3QgbmF0aXZlV2luZG93SGFuZGxlKTsKKyAgICB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdXaW5kb3dJZChpbnQ2NF90IG5hdGl2ZVdpbmRvd0hhbmRsZSk7CisgICAgdm9pZCBpbnZh
bGlkYXRlV2lkZ2V0KCk7CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGI2YmNhY2U1
MTgxOGNlNGIwYmRhMjk4NjRhMzA3ZmVkY2I3YmMxNmYuLjU5MzYyYmNmNTk5ODRmN2EyYzRjODFm
YThkY2E3ZjcwY2I4ZmY4YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yOTksNiArMjk5LDYgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZSB7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykgJiYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKQotICAgIFdpZGdldE1hcHBlZChpbnQ2NF90IGlkKQorICAgIFNldEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdXaW5kb3dJZChpbnQ2NF90IGlkKQogI2VuZGlmCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RH
dGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVI
b3N0R3RrLmNwcAppbmRleCBlZTQ4M2FlZDMxZWQxYmFjYmNiY2UzM2RlYmMzNzFjOWEwY2ZmM2I3
Li4wOThhNGM3MTYzOGM5ZTc1M2E0NzE1Y2FhMjUwMjg4OWUxNTJlMWUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9z
dEd0ay5jcHAKQEAgLTIwMyw2ICsyMDMsOCBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OnNpemVE
aWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKIAogICAgIGlmIChtX3BhZ2VPdmVybGF5
TGF5ZXIpCiAgICAgICAgIG1fcGFnZU92ZXJsYXlMYXllci0+c2V0U2l6ZShuZXdTaXplKTsKKwor
ICAgIGNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dChGb3JSZXNpemUpOwogfQogCiB2b2lkIExheWVy
VHJlZUhvc3RHdGs6OmRldmljZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCkKQEAgLTI5Myw3ICsyOTUs
NyBAQCBib29sIExheWVyVHJlZUhvc3RHdGs6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpCiAg
ICAgcmV0dXJuIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c3lu
Y0NvbXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJmcmFtZXMoKTsKIH0KIAotdm9pZCBMYXllclRy
ZWVIb3N0R3RrOjpjb21wb3NpdGVMYXllcnNUb0NvbnRleHQoKQordm9pZCBMYXllclRyZWVIb3N0
R3RrOjpjb21wb3NpdGVMYXllcnNUb0NvbnRleHQoQ29tcG9zaXRlUHVycG9zZSBwdXJwb3NlKQog
ewogICAgIEdMQ29udGV4dCogY29udGV4dCA9IGdsQ29udGV4dCgpOwogICAgIGlmICghY29udGV4
dCB8fCAhY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCkBAIC0zMDUsMTEgKzMwNywxNyBA
QCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OmNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dCgpCiAgICAg
SW50U2l6ZSBjb250ZXh0U2l6ZSA9IG1fY29udGV4dC0+ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgp
OwogICAgIGdsVmlld3BvcnQoMCwgMCwgY29udGV4dFNpemUud2lkdGgoKSwgY29udGV4dFNpemUu
aGVpZ2h0KCkpOwogCisgICAgaWYgKHB1cnBvc2UgPT0gRm9yUmVzaXplKSB7CisgICAgICAgIGds
Q2xlYXJDb2xvcigxLCAxLCAxLCAwKTsKKyAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJf
QklUKTsKKyAgICB9CisKICAgICBtX3RleHR1cmVNYXBwZXItPmJlZ2luUGFpbnRpbmcoKTsKICAg
ICB0b1RleHR1cmVNYXBwZXJMYXllcihtX3Jvb3RMYXllci5nZXQoKSktPnBhaW50KCk7CiAgICAg
bV90ZXh0dXJlTWFwcGVyLT5lbmRQYWludGluZygpOwogCiAgICAgY29udGV4dC0+c3dhcEJ1ZmZl
cnMoKTsKKyAgICBtX3dlYlBhZ2UtPmludmFsaWRhdGVXaWRnZXQoKTsKIH0KIAogdm9pZCBMYXll
clRyZWVIb3N0R3RrOjpmbHVzaEFuZFJlbmRlckxheWVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCmluZGV4
IDA2MDU3MGI2NDkxNDhkZjU1M2M4MDNiNDc1ZmY0ZjQ5NDAyNDI1YjYuLmQ5YTgxNmMyZWJkZGI5
ODVjMTM3MmVjZWJjNmVmNTc2YzIwM2Y4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oCkBAIC04Myw3ICs4
MywxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjcmVhdGVQYWdlT3ZlcmxheUxheWVyKCk7CiAg
ICAgdm9pZCBkZXN0cm95UGFnZU92ZXJsYXlMYXllcigpOwotICAgIHZvaWQgY29tcG9zaXRlTGF5
ZXJzVG9Db250ZXh0KCk7CisKKyAgICBlbnVtIENvbXBvc2l0ZVB1cnBvc2UgeyBGb3JSZXNpemUs
IE5vdEZvclJlc2l6ZSB9OworICAgIHZvaWQgY29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0KENvbXBv
c2l0ZVB1cnBvc2UgPSBOb3RGb3JSZXNpemUpOworCiAgICAgdm9pZCBmbHVzaEFuZFJlbmRlckxh
eWVycygpOwogICAgIHZvaWQgY2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKaW5k
ZXggMzBhYWE0MDM3ZjdjNDdkMTRkNTZhNDdjNzFlYWFjNjczYmNhODI0Mi4uZDlkZGU4MWEyNWRi
NzQ0MjY2YTVlNjdhOGZhOWJhNjk5YTBhZmQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCkBAIC0xNTYsMTAgKzE1Niwx
NSBAQCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VEYXRh
Rm9yVVJMKGNvbnN0IEtVUkwmKQogfQogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotdm9p
ZCBXZWJQYWdlOjp3aWRnZXRNYXBwZWQoaW50NjRfdCBuYXRpdmVXaW5kb3dIYW5kbGUpCit2b2lk
IFdlYlBhZ2U6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdXaW5kb3dJZChpbnQ2NF90IG5hdGl2
ZVdpbmRvd0hhbmRsZSkKIHsKICAgICBtX25hdGl2ZVdpbmRvd0hhbmRsZSA9IG5hdGl2ZVdpbmRv
d0hhbmRsZTsKIH0KKwordm9pZCBXZWJQYWdlOjppbnZhbGlkYXRlV2lkZ2V0KCkKK3sKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkludmFsaWRhdGVXaWRnZXQoKSk7Cit9CiAjZW5k
aWYKIAogYm9vbCBXZWJQYWdlOjpoYW5kbGVNb3VzZVByZXNzZWRFdmVudChjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91c2VFdmVudCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164582</attachid>
            <date>2012-09-18 10:18:06 -0700</date>
            <delta_ts>2012-09-18 10:44:46 -0700</delta_ts>
            <desc>Fix embedded inspector and build errors for non TM builds</desc>
            <filename>bug-94417-20120918101733.patch</filename>
            <type>text/plain</type>
            <size>24741</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4ODk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk0ZmMyZGExNGRiMTJl
MGRiOTZhYTcyNDUyM2UwY2QyMmI4MjAxYS4uMzEyNDNhMGE4NTM0NjZmYjc0NDliMTBkMTQwMDJm
NjEzN2Y1MzcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA5LTE4ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBbV2Vi
S2l0Ml0gVXNlIFhDb21wb3NpdGUgd2luZG93IGZvciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ0MTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9m
IHJlbmRlcmluZyBkaXJlY3RseSB0byB0aGUgd2lkZ2V0J3MgbmF0aXZlIHdpbmRvdywgcmVuZGVy
IHRvIGFuCisgICAgICAgIG9mZnNjcmVlbiB3aW5kb3cgcmVkaXJlY3RlZCB0byBhIFBpeG1hcCB3
aXRoIFhDb21wb3NpdGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHdpbGwgYmUgY292
ZXJlZCBieSB0aGUgZXhpc3RpbmcgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgdGVzdHMsCisgICAg
ICAgIHdoaWNoIHNob3VsZCBub3cgZ2l2ZSBjb3JyZWN0IHBpeGVsIHJlc3VsdHMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnJlc2l6ZSk6IEFkZCBhIGNh
bGwgdG8gWEZsdXNoIHdoaWNoIGVuc3VyZXMKKyAgICAgICAgdGhhdCBwZW5kaW5nIFgxMSBvcGVy
YXRpb25zIGNvbXBsZXRlLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5k
b3c6OndpbmRvd0lkKTogQWRkZWQgdGhpcyBhY2Nlc3Nvci4KKwogMjAxMi0wOS0xOCAgQW5kcmV5
IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFtFeHRlbnNpb25zIEFQSV0gcG9zdHBvbmUgcmVxdWVzdHMgdG8gYWRkIGV4dGVuc2lvbnMgdW50
aWwgZXh0ZW5zaW9uIHNlcnZlciBpcyBpbml0aWFsaXplZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDFhNzAxMzE2
ZDkyYjdjY2ZlNThiZTE2OTNhNTJhYWU4NmY5MmEzNTIuLmU1NTg1NTM2MTlmYjgxNWU5NjI2ZjA3
ZjRlMmJkMGJkOWNkOGE2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxMi0wOS0x
OCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dU
S10gW1dlYktpdDJdIFVzZSBYQ29tcG9zaXRlIHdpbmRvdyBmb3IgYWNjZWxlcmF0ZWQgY29tcG9z
aXRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0
NDE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5z
dGVhZCBvZiByZW5kZXJpbmcgZGlyZWN0bHkgdG8gdGhlIHdpZGdldCdzIG5hdGl2ZSB3aW5kb3cs
IHJlbmRlciB0byBhbgorICAgICAgICBvZmZzY3JlZW4gd2luZG93IHJlZGlyZWN0ZWQgdG8gYSBQ
aXhtYXAgd2l0aCBYQ29tcG9zaXRlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAoX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSk6
IEFkZGVkIGEgZmV3IG1lbWJlcnMgbmVjZXNzYXJ5IHRvIHRyYWNrIHRoZSAKKyAgICAgICAgb2Zm
c2NyZWVuIHdpbmRvdy4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19iYXNlX2luaXQpOgorICAg
ICAgICAocmVuZGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMpOiBBZGRlZCB0aGlzIGhl
bHBlciBmdW5jdGlvbnMgd2hpY2ggcmVuZGVycworICAgICAgICB0aGUgcmVzdWx0cyBvZiB0aGUg
YWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgb3BlcmF0aW9ucyBkdXJpbmcgdGhlIEdUSysgZHJhdyBs
b29wLgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VEcmF3KTogQ2FsbCByZW5kZXJBY2NlbGVy
YXRlZENvbXBvc2l0aW5nUmVzdWx0cyB3aGVuIGFwcHJvcHJpYXRlLgorICAgICAgICAocmVzaXpl
V2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxsb2NhdGlvbik6IFJlc2l6ZSB0aGUgb2Zmc2NyZWVuIHdp
bmRvdyB3aGVuIGFwcHJvcHJpYXRlLgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VTaXplQWxs
b2NhdGUpOiBEbyBub3QgY2FsbCByZXNpemVXZWJLaXRXZWJWaWV3QmFzZUZyb21BbGxvY2F0aW9u
IHdoZW4KKyAgICAgICAgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSB3aWRnZXQgZG9lcyBub3QgY2hh
bmdlLiBUaGlzIHByZXZlbnRzIGRlc3Ryb3lpbmcgYW5kIHJlY3JlYXRpbmcKKyAgICAgICAgdGhl
IG9mZnNjcmVlbiB3aW5kb3cgcGl4bWFwIHdoZW4gaXQgaXNuJ3QgbmVjZXNzYXJ5LgorICAgICAg
ICAod2Via2l0V2ViVmlld0Jhc2VNYXApOiBXZSBubyBsb25nZXIgc2VuZCB0aGUgd2luZG93IGlk
IGR1cmluZyBtYXAsIGluc3RlYWQgaXQncyBzZW50CisgICAgICAgIGFzIHNvb24gYXMgdGhlcmUg
aXMgV2ViUGFnZVByb3h5LgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdl
KTogU2VuZCB0aGUgd2luZG93IGlkIG9mIHRoZSByZWRpcmVjdGVkIHdpbmRvdyB0bworICAgICAg
ICB0aGUgV2ViUHJvY2Vzcy4KKyAgICAgICAgKHF1ZXVlQW5vdGhlckRyYXdPZkFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdSZXN1bHRzKTogQWRkZWQgdGhpcyBoZWxwZXIgd2hpY2ggd29ya3MKKyAgICAg
ICAgYXJvdW5kIHRoZSBpc3N1ZSBvZiBzbG93IHVwZGF0ZXMgb2YgdGhlIHBpeG1hcCBiYWNraW5n
IHRoZSByZWRpcmVjdGVkIFhDb21wb3NpdGUgd2luZG93LgorICAgICAgICAod2Via2l0V2ViVmll
d0Jhc2VRdWV1ZURyYXdPZkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKTogQWRkZWQgdGhp
cyBtZXRob2Qgd2hpY2gKKyAgICAgICAgaXMgd2hhdCB0aGUgV2ViUHJvY2VzcyB1c2VzIHRvIGZv
cmNlIGEgcmVkcmF3IG9uIHRoZSBVSVByb2Nlc3Mgc2lkZS4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaDogQWRkZWQgbmV3IG1ldGhvZCB0byB0
aGUgbGlzdCBvZiBwcml2YXRlIG1ldGhvZHMuCisgICAgICAgICogVUlQcm9jZXNzL0RyYXdpbmdB
cmVhUHJveHlJbXBsLmg6CisgICAgICAgIChEcmF3aW5nQXJlYVByb3h5SW1wbCk6CisgICAgICAg
IChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlJbXBsOjppc0luQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUpOiBFeHBvc2VkIHRoaXMgbWV0aG9kIHB1YmxpY2FsbHkKKyAgICAgICAgc28gdGhhdCBp
dCBjYW4gYmUgdXNlZCBmcm9tIFdlYktpdFdlYlZpZXdCYXNlLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYlBhZ2VQcm94eSk6IFJlbmFtZWQgd2lkZ2V0
TWFwcGVkIHRvIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdXaW5kb3dJZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOiBEaXR0by4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHA6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdXaW5kb3dJZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYlBhZ2UpOiBEaXR0
by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjogRGl0
dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0azo6c2l6ZURpZENoYW5nZSk6IEZv
cmNlIGEgY29tcG9zaXRlIHRvIHRoZSByZXNpemVkIHdpbmRvdyByaWdodAorICAgICAgICBhd2F5
IHNvIHRoYXQgdGhlIG5ldyB3aW5kb3cgcGl4bWFwIGlzIHVwZGF0ZWQgYmVmb3JlIHRoZSBmaXJz
dCBkcmF3LgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0R3RrOjpjb21wb3NpdGVMYXll
cnNUb0NvbnRleHQpOiBJZiB0aGUgY29tcG9zaXRpb24gaXMgZm9yIGEgcmVzaXplLAorICAgICAg
ICBmaXJzdCBjbGVhciB0aGUgZW50aXJlIEdMIGNvbnRleHQgc28gdGhhdCB3ZSBkb24ndCBzZWUg
YmxhY2sgYXJ0aWZhY3RzIGR1cmluZyByZXNpemUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmg6CisgICAgICAgIChMYXllclRyZWVIb3N0R3RrKTog
VXBkYXRlIHRoZSBzaWduYXR1cmUgb2YgIGNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nV2luZG93SWQpOiBBZGRlZC4K
KwogMjAxMi0wOS0xOCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyODg0OS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5k
b3cuY3BwCmluZGV4IDE1NzJhNTliNDE2NzZkM2I1OWU4NTQ1MTM2NjczYmQ3ZTM4NmMxM2YuLjQ4
MGI1M2ZkZDlhYzI5Yjg4YmFmZDc5YzcwZWYxMWU0NzA3MjI1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
LmNwcApAQCAtMTM3LDYgKzEzNyw4IEBAIHZvaWQgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6
OnJlc2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogCiAgICAgRGlzcGxheSogZGlzcGxheSA9IEdM
Q29udGV4dEdMWDo6c2hhcmVkRGlzcGxheSgpOwogICAgIFhSZXNpemVXaW5kb3coZGlzcGxheSwg
bV93aW5kb3csIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisKKyAgICBYRmx1c2goZGlz
cGxheSk7CiAgICAgZ2xYV2FpdFgoKTsKIAogICAgIC8vIFRoaXMgc3dhcCBpcyBiYXNlZCBvbiBj
b2RlIGluIENocm9taXVtLiBJdCB0cmllcyB0byB3b3JrLWFyb3VuZCBhIGJ1ZyBpbiB0aGUgSW50
ZWwgZHJpdmVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaAppbmRleCBkNmNkNzQ3MjNiNzlkMTk1NzBlN2VkMjlk
YzAyZWNhMjYyNTljZWJhLi5lNWRiMGZhN2U4YWQ5YTgyNWUxYjY5ZjllNjJhZTM3MDdlMjllZmE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3Rl
ZFhDb21wb3NpdGVXaW5kb3cuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZXNpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSk7CiAgICAgR0xDb250ZXh0KiBjb250ZXh0KCk7
CiAgICAgY2Fpcm9fc3VyZmFjZV90KiBjYWlyb1N1cmZhY2VGb3JXaWRnZXQoR3RrV2lkZ2V0Kik7
CisgICAgV2luZG93IHdpbmRvd0lkKCkgeyByZXR1cm4gbV93aW5kb3c7IH0KIAogcHJpdmF0ZToK
ICAgICBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyhjb25zdCBJbnRTaXplJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHAKaW5kZXggMDQ4MmIzNDdlYjUxNjg3MmFiOTEyZTFiZWNmNzM0NWU1YTY0Mzg0OS4uYzhkNzRm
YmJlOGEyZDI3YTcwNjQ0NWI1N2Q2NTViZDU0MjdiY2U1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtNjcs
NyArNjcsNyBAQAogI2VuZGlmCiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIGRlZmlu
ZWQoR0RLX1dJTkRPV0lOR19YMTEpCi0jaW5jbHVkZSA8Z2RrL2dka3guaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Lmg+CiAjZW5kaWYKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKQEAgLTkwLDE0ICs5MCwyMCBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdC
YXNlUHJpdmF0ZSB7CiAgICAgSW50U2l6ZSByZXNpemVyU2l6ZTsKICAgICBHUmVmUHRyPEF0a09i
amVjdD4gYWNjZXNzaWJsZTsKICAgICBib29sIG5lZWRzUmVzaXplT25NYXA7Ci0jaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQotICAgIGJvb2wgZnVsbFNjcmVlbk1vZGVBY3RpdmU7Ci0gICAgV2Vi
RnVsbFNjcmVlbkNsaWVudEd0ayBmdWxsU2NyZWVuQ2xpZW50OwotI2VuZGlmCiAgICAgR3RrV2lk
Z2V0KiBpbnNwZWN0b3JWaWV3OwogICAgIHVuc2lnbmVkIGluc3BlY3RvclZpZXdIZWlnaHQ7CiAg
ICAgR093blB0cjxHZGtFdmVudD4gY29udGV4dE1lbnVFdmVudDsKICAgICBXZWJDb250ZXh0TWVu
dVByb3h5R3RrKiBhY3RpdmVDb250ZXh0TWVudVByb3h5OworCisjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQorICAgIGJvb2wgZnVsbFNjcmVlbk1vZGVBY3RpdmU7CisgICAgV2ViRnVsbFNjcmVl
bkNsaWVudEd0ayBmdWxsU2NyZWVuQ2xpZW50OworI2VuZGlmCisKKyNpZiBVU0UoVEVYVFVSRV9N
QVBQRVJfR0wpCisgICAgT3duUHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiByZWRpcmVj
dGVkV2luZG93OworICAgIGJvb2wgcmVhZHlUb1JlbmRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdS
ZXN1bHRzOworI2VuZGlmCiB9OwogCiBHX0RFRklORV9UWVBFKFdlYktpdFdlYlZpZXdCYXNlLCB3
ZWJraXRfd2ViX3ZpZXdfYmFzZSwgR1RLX1RZUEVfQ09OVEFJTkVSKQpAQCAtMTYyLDkgKzE2OCw2
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUmVhbGl6ZShHdGtXaWRnZXQqIHdpZGdl
dCkKICAgICBnaW50IGF0dHJpYnV0ZXNNYXNrID0gR0RLX1dBX1ggfCBHREtfV0FfWSB8IEdES19X
QV9WSVNVQUw7CiAKICAgICBHZGtXaW5kb3cqIHdpbmRvdyA9IGdka193aW5kb3dfbmV3KGd0a193
aWRnZXRfZ2V0X3BhcmVudF93aW5kb3cod2lkZ2V0KSwgJmF0dHJpYnV0ZXMsIGF0dHJpYnV0ZXNN
YXNrKTsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCi0gICAgZ2RrX3dpbmRvd19lbnN1cmVf
bmF0aXZlKHdpbmRvdyk7Ci0jZW5kaWYKICAgICBndGtfd2lkZ2V0X3NldF93aW5kb3cod2lkZ2V0
LCB3aW5kb3cpOwogICAgIGdka193aW5kb3dfc2V0X3VzZXJfZGF0YSh3aW5kb3csIHdpZGdldCk7
CiAKQEAgLTI2NCw3ICsyNjcsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYmFzZV9p
bml0KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKICAgICBwcml2LT5zaG91
bGRGb3J3YXJkTmV4dEtleUV2ZW50ID0gRkFMU0U7CiAKICAgICBHdGtXaWRnZXQqIHZpZXdXaWRn
ZXQgPSBHVEtfV0lER0VUKHdlYmtpdFdlYlZpZXdCYXNlKTsKLSAgICBndGtfd2lkZ2V0X3NldF9k
b3VibGVfYnVmZmVyZWQodmlld1dpZGdldCwgRkFMU0UpOwogICAgIGd0a193aWRnZXRfc2V0X2Nh
bl9mb2N1cyh2aWV3V2lkZ2V0LCBUUlVFKTsKICAgICBwcml2LT5pbUNvbnRleHQgPSBhZG9wdEdS
ZWYoZ3RrX2ltX211bHRpY29udGV4dF9uZXcoKSk7CiAKQEAgLTI3NSwxMSArMjc3LDM4IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19iYXNlX2luaXQoV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YmtpdFdlYlZpZXdCYXNlKQogICAgIGd0a19kcmFnX2Rlc3Rfc2V0KHZpZXdXaWRnZXQsIHN0YXRp
Y19jYXN0PEd0a0Rlc3REZWZhdWx0cz4oMCksIDAsIDAsCiAgICAgICAgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oR0RLX0FDVElPTl9DT1BZIHwgR0RLX0FDVElPTl9N
T1ZFIHwgR0RLX0FDVElPTl9MSU5LIHwgR0RLX0FDVElPTl9QUklWQVRFKSk7CiAgICAgZ3RrX2Ry
YWdfZGVzdF9zZXRfdGFyZ2V0X2xpc3Qodmlld1dpZGdldCwgUGFzdGVib2FyZEhlbHBlcjo6ZGVm
YXVsdFBhc3RlYm9hcmRIZWxwZXIoKS0+dGFyZ2V0TGlzdCgpKTsKKworI2lmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkKKyAgICBwcml2LT5yZWRpcmVjdGVkV2luZG93ID0gUmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3c6OmNyZWF0ZShJbnRTaXplKDEsIDEpKTsKKyAgICBwcml2LT5yZWFkeVRvUmVu
ZGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMgPSBmYWxzZTsKKyNlbmRpZgorfQorCisj
aWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorc3RhdGljIGJvb2wgd2Via2l0V2ViVmlld1JlbmRl
ckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3
QmFzZSwgRHJhd2luZ0FyZWFQcm94eUltcGwqIGRyYXdpbmdBcmVhLCBjYWlyb190KiBjciwgR2Rr
UmVjdGFuZ2xlKiBjbGlwUmVjdCkKK3sKKyAgICBpZiAoIWRyYXdpbmdBcmVhLT5pc0luQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8g
VG8gYXZvaWQgZmxhc2hlcyB3aGVuIGluaXRpYWxpemluZyBhY2NlbGVyYXRlZCBjb21wb3NpdGlu
ZyBmb3IgdGhlIGZpcnN0CisgICAgLy8gdGltZSwgd2Ugd2FpdCB1bnRpbCB3ZSBrbm93IHRoZXJl
J3MgYSBmcmFtZSByZWFkeSBiZWZvcmUgcmVuZGVyaW5nLgorICAgIFdlYktpdFdlYlZpZXdCYXNl
UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OworICAgIGlmICghcHJpdi0+cmVhZHlU
b1JlbmRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBBU1NFUlQocHJpdi0+cmVkaXJlY3RlZFdpbmRvdyk7CisgICAgY2Fpcm9fcmVj
dGFuZ2xlKGNyLCBjbGlwUmVjdC0+eCwgY2xpcFJlY3QtPnksIGNsaXBSZWN0LT53aWR0aCwgY2xp
cFJlY3QtPmhlaWdodCk7CisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gcHJpdi0+cmVk
aXJlY3RlZFdpbmRvdy0+Y2Fpcm9TdXJmYWNlRm9yV2lkZ2V0KEdUS19XSURHRVQod2ViVmlld0Jh
c2UpKTsKKyAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IsIHN1cmZhY2UsIDAsIDApOwor
ICAgIGNhaXJvX2ZpbGwoY3IpOworICAgIHJldHVybiB0cnVlOwogfQorI2VuZGlmCiAKIHN0YXRp
YyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3QmFzZURyYXcoR3RrV2lkZ2V0KiB3aWRnZXQsIGNhaXJv
X3QqIGNyKQogewotICAgIERyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhID0gV0VCS0lUX1dF
Ql9WSUVXX0JBU0Uod2lkZ2V0KS0+cHJpdi0+cGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpOworICAg
IFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSA9IFdFQktJVF9XRUJfVklFV19CQVNFKHdp
ZGdldCk7CisgICAgRHJhd2luZ0FyZWFQcm94eUltcGwqIGRyYXdpbmdBcmVhID0gc3RhdGljX2Nh
c3Q8RHJhd2luZ0FyZWFQcm94eUltcGwqPih3ZWJWaWV3QmFzZS0+cHJpdi0+cGFnZVByb3h5LT5k
cmF3aW5nQXJlYSgpKTsKICAgICBpZiAoIWRyYXdpbmdBcmVhKQogICAgICAgICByZXR1cm4gRkFM
U0U7CiAKQEAgLTI4Nyw4ICszMTYsMTMgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdC
YXNlRHJhdyhHdGtXaWRnZXQqIHdpZGdldCwgY2Fpcm9fdCogY3IpCiAgICAgaWYgKCFnZGtfY2Fp
cm9fZ2V0X2NsaXBfcmVjdGFuZ2xlKGNyLCAmY2xpcFJlY3QpKQogICAgICAgICByZXR1cm4gRkFM
U0U7CiAKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisgICAgaWYgKHdlYmtpdFdlYlZpZXdS
ZW5kZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nUmVzdWx0cyh3ZWJWaWV3QmFzZSwgZHJhd2luZ0Fy
ZWEsIGNyLCAmY2xpcFJlY3QpKQorICAgICAgICByZXR1cm4gRkFMU0U7CisjZW5kaWYKKwogICAg
IFdlYkNvcmU6OlJlZ2lvbiB1bnBhaW50ZWRSZWdpb247IC8vIFRoaXMgaXMgc2ltcGx5IHVudXNl
ZC4KLSAgICBzdGF0aWNfY2FzdDxEcmF3aW5nQXJlYVByb3h5SW1wbCo+KGRyYXdpbmdBcmVhKS0+
cGFpbnQoY3IsIGNsaXBSZWN0LCB1bnBhaW50ZWRSZWdpb24pOworICAgIGRyYXdpbmdBcmVhLT5w
YWludChjciwgY2xpcFJlY3QsIHVucGFpbnRlZFJlZ2lvbik7CiAKICAgICByZXR1cm4gRkFMU0U7
CiB9CkBAIC0zMDksNyArMzQzLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VDaGls
ZEFsbG9jYXRlKEd0a1dpZGdldCogY2hpbGQsIGdwb2ludGVyIHVzZXJEYXRhKQogICAgIHByaXYt
PmNoaWxkcmVuLnNldChjaGlsZCwgSW50UmVjdCgpKTsKIH0KIAotc3RhdGljIHZvaWQgcmVzaXpl
V2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxsb2NhdGlvbihXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmll
d0Jhc2UsIEd0a0FsbG9jYXRpb24qIGFsbG9jYXRpb24pCitzdGF0aWMgdm9pZCByZXNpemVXZWJL
aXRXZWJWaWV3QmFzZUZyb21BbGxvY2F0aW9uKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFz
ZSwgR3RrQWxsb2NhdGlvbiogYWxsb2NhdGlvbiwgYm9vbCBzaXplQ2hhbmdlZCkKIHsKICAgICBn
dGtfY29udGFpbmVyX2ZvcmVhY2goR1RLX0NPTlRBSU5FUih3ZWJWaWV3QmFzZSksIHdlYmtpdFdl
YlZpZXdCYXNlQ2hpbGRBbGxvY2F0ZSwgd2ViVmlld0Jhc2UpOwogCkBAIC0zMjQsOCArMzU4LDEz
IEBAIHN0YXRpYyB2b2lkIHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFsbG9jYXRpb24oV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlCiAgICAgICAgIHZpZXdSZWN0LnNldEhlaWdodChh
bGxvY2F0aW9uLT5oZWlnaHQgLSBwcml2LT5pbnNwZWN0b3JWaWV3SGVpZ2h0KTsKICAgICB9CiAK
LSAgICBpZiAocHJpdi0+cGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpKQotICAgICAgICBwcml2LT5w
YWdlUHJveHktPmRyYXdpbmdBcmVhKCktPnNldFNpemUodmlld1JlY3Quc2l6ZSgpLCBJbnRTaXpl
KCkpOworI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICBpZiAoc2l6ZUNoYW5nZWQpCisg
ICAgICAgIHdlYlZpZXdCYXNlLT5wcml2LT5yZWRpcmVjdGVkV2luZG93LT5yZXNpemUodmlld1Jl
Y3Quc2l6ZSgpKTsKKyNlbmRpZgorCisgICAgaWYgKERyYXdpbmdBcmVhUHJveHlJbXBsKiBkcmF3
aW5nQXJlYSA9IHN0YXRpY19jYXN0PERyYXdpbmdBcmVhUHJveHlJbXBsKj4ocHJpdi0+cGFnZVBy
b3h5LT5kcmF3aW5nQXJlYSgpKSkKKyAgICAgICAgZHJhd2luZ0FyZWEtPnNldFNpemUodmlld1Jl
Y3Quc2l6ZSgpLCBJbnRTaXplKCkpOwogCiAgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0a193
aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQod2ViVmlld0Jhc2UpKTsKICAgICBpZiAod2lk
Z2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93KHRvcGxldmVsKSkKQEAgLTMzNCwxNCArMzczLDE4
IEBAIHN0YXRpYyB2b2lkIHJlc2l6ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFsbG9jYXRpb24oV2Vi
S2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlCiAKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdC
YXNlU2l6ZUFsbG9jYXRlKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtBbGxvY2F0aW9uKiBhbGxvY2F0
aW9uKQogeworICAgIGJvb2wgc2l6ZUNoYW5nZWQgPSBndGtfd2lkZ2V0X2dldF9hbGxvY2F0ZWRf
d2lkdGgod2lkZ2V0KSAhPSBhbGxvY2F0aW9uLT53aWR0aAorICAgICAgICAgICAgICAgICAgICAg
ICB8fCBndGtfd2lkZ2V0X2dldF9hbGxvY2F0ZWRfaGVpZ2h0KHdpZGdldCkgIT0gYWxsb2NhdGlv
bi0+aGVpZ2h0OworCiAgICAgR1RLX1dJREdFVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfYmFzZV9w
YXJlbnRfY2xhc3MpLT5zaXplX2FsbG9jYXRlKHdpZGdldCwgYWxsb2NhdGlvbik7CiAKICAgICBX
ZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRn
ZXQpOwotICAgIGlmICghZ3RrX3dpZGdldF9nZXRfbWFwcGVkKEdUS19XSURHRVQod2ViVmlld0Jh
c2UpKSAmJiAhd2ViVmlld0Jhc2UtPnByaXYtPnBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKS0+c2l6
ZSgpLmlzRW1wdHkoKSkgeworICAgIGlmIChzaXplQ2hhbmdlZCAmJiAhZ3RrX3dpZGdldF9nZXRf
bWFwcGVkKHdpZGdldCkgJiYgIXdlYlZpZXdCYXNlLT5wcml2LT5wYWdlUHJveHktPmRyYXdpbmdB
cmVhKCktPnNpemUoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgd2ViVmlld0Jhc2UtPnByaXYtPm5l
ZWRzUmVzaXplT25NYXAgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHJlc2l6
ZVdlYktpdFdlYlZpZXdCYXNlRnJvbUFsbG9jYXRpb24od2ViVmlld0Jhc2UsIGFsbG9jYXRpb24p
OworCisgICAgcmVzaXplV2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxsb2NhdGlvbih3ZWJWaWV3QmFz
ZSwgYWxsb2NhdGlvbiwgc2l6ZUNoYW5nZWQpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRXZWJW
aWV3QmFzZU1hcChHdGtXaWRnZXQqIHdpZGdldCkKQEAgLTM0OSwxOSArMzkyLDEyIEBAIHN0YXRp
YyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlTWFwKEd0a1dpZGdldCogd2lkZ2V0KQogICAgIEdUS19X
SURHRVRfQ0xBU1Mod2Via2l0X3dlYl92aWV3X2Jhc2VfcGFyZW50X2NsYXNzKS0+bWFwKHdpZGdl
dCk7CiAKICAgICBXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJ
RVdfQkFTRSh3aWRnZXQpOwotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgZGVmaW5lZChH
REtfV0lORE9XSU5HX1gxMSkKLSAgICBHZGtXaW5kb3cqIGdka1dpbmRvdyA9IGd0a193aWRnZXRf
Z2V0X3dpbmRvdyh3aWRnZXQpOwotICAgIEFTU0VSVChnZGtXaW5kb3cpOwotICAgIGlmIChnZGtf
d2luZG93X2hhc19uYXRpdmUoZ2RrV2luZG93KSkKLSAgICAgICAgd2ViVmlld0Jhc2UtPnByaXYt
PnBhZ2VQcm94eS0+d2lkZ2V0TWFwcGVkKEdES19XSU5ET1dfWElEKGdka1dpbmRvdykpOwotI2Vu
ZGlmCi0KICAgICBpZiAoIXdlYlZpZXdCYXNlLT5wcml2LT5uZWVkc1Jlc2l6ZU9uTWFwKQogICAg
ICAgICByZXR1cm47CiAKICAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRpb247CiAgICAgZ3RrX3dp
ZGdldF9nZXRfYWxsb2NhdGlvbih3aWRnZXQsICZhbGxvY2F0aW9uKTsKLSAgICByZXNpemVXZWJL
aXRXZWJWaWV3QmFzZUZyb21BbGxvY2F0aW9uKHdlYlZpZXdCYXNlLCAmYWxsb2NhdGlvbik7Cisg
ICAgcmVzaXplV2ViS2l0V2ViVmlld0Jhc2VGcm9tQWxsb2NhdGlvbih3ZWJWaWV3QmFzZSwgJmFs
bG9jYXRpb24sIHRydWUgLyogc2l6ZUNoYW5nZWQgKi8pOwogICAgIHdlYlZpZXdCYXNlLT5wcml2
LT5uZWVkc1Jlc2l6ZU9uTWFwID0gZmFsc2U7CiB9CiAKQEAgLTY4MCw2ICs3MTYsMTAgQEAgdm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2UoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtp
dFdlYlZpZXdCYXNlLCBXS0NvbnQKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgcHJp
di0+cGFnZVByb3h5LT5mdWxsU2NyZWVuTWFuYWdlcigpLT5zZXRXZWJWaWV3KHdlYmtpdFdlYlZp
ZXdCYXNlKTsKICNlbmRpZgorCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorICAgIHByaXYt
PnBhZ2VQcm94eS0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1dpbmRvd0lkKHByaXYtPnJlZGly
ZWN0ZWRXaW5kb3ctPndpbmRvd0lkKCkpOworI2VuZGlmCiB9CiAKIHZvaWQgd2Via2l0V2ViVmll
d0Jhc2VTZXRUb29sdGlwVGV4dChXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIGNvbnN0
IGNoYXIqIHRvb2x0aXApCkBAIC04MDMsMyArODQzLDM4IEBAIEdka0V2ZW50KiB3ZWJraXRXZWJW
aWV3QmFzZVRha2VDb250ZXh0TWVudUV2ZW50KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJW
aWV3CiB7CiAgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5jb250ZXh0TWVudUV2
ZW50LnJlbGVhc2UoKTsKIH0KKworI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKK3N0YXRpYyBn
Ym9vbGVhbiBxdWV1ZUFub3RoZXJEcmF3T2ZBY2NlbGVyYXRlZENvbXBvc2l0aW5nUmVzdWx0cyhn
cG9pbnRlciogd2ViVmlld0Jhc2VQb2ludGVyKQoreworICAgIC8vIFRoZSBXZWJWaWV3QmFzZSBt
YXkgaGF2ZSBiZWVuIGRlc3Ryb3llZCBpbiB0aGUgdGltZSBzaW5jZSB3ZSBxdWV1ZWQgdGhpcwor
ICAgIC8vIGRyYXcgYW5kIHRoZSB0aW1lIHdlIGFyZSBhY3R1YWxseSBleGVjdXRpbmcuCisgICAg
aWYgKCEqd2ViVmlld0Jhc2VQb2ludGVyKSB7CisgICAgICAgIGZhc3RGcmVlKHdlYlZpZXdCYXNl
UG9pbnRlcik7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBXZWJLaXRXZWJW
aWV3QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSgqd2ViVmlld0Jhc2VQ
b2ludGVyKTsKKyAgICBndGtfd2lkZ2V0X3F1ZXVlX2RyYXcoR1RLX1dJREdFVCh3ZWJWaWV3QmFz
ZSkpOworICAgIHdlYlZpZXdCYXNlLT5wcml2LT5yZWFkeVRvUmVuZGVyQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ1Jlc3VsdHMgPSB0cnVlOworCisgICAgZ19vYmplY3RfcmVtb3ZlX3dlYWtfcG9pbnRl
cihHX09CSkVDVCh3ZWJWaWV3QmFzZSksIHdlYlZpZXdCYXNlUG9pbnRlcik7CisgICAgZmFzdEZy
ZWUod2ViVmlld0Jhc2VQb2ludGVyKTsKKworICAgIHJldHVybiBGQUxTRTsKK30KKwordm9pZCB3
ZWJraXRXZWJWaWV3QmFzZVF1ZXVlRHJhd09mQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jlc3VsdHMo
V2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQoreworICAgIGd0a193aWRnZXRfcXVldWVf
ZHJhdyhHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSk7CisKKyAgICAvLyBSZWRyYXcgYWdhaW4sIG9u
ZSBmcmFtZSBsYXRlciwgYXMgaXQgbWlnaHQgdGFrZSBzb21lIHRpbWUgZm9yIHRoZSBuZXcgR0wg
ZnJhbWUgdG8gYmUgYXZhaWxhYmxlLgorICAgIC8vIFRoaXMgcHJldmVudHMgdGhlIGRpc3BsYXkg
ZnJvbSBhbHdheXMgYmVpbmcgb25lIGZyYW1lIGJlaGluZCBpbiB0aGUgY2FzZSBHTCBoYXNuJ3Qg
eWV0IGZpbmlzaGVkCisgICAgLy8gcmVuZGVyaW5nIHRvIHRoZSB3aW5kb3cuCisgICAgLy8gVE9E
TzogQWRkIFhEYW1hZ2Ugc3VwcG9ydCB0byBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyB0byBh
Y2NvbXBsaXNoIHRoaXMuCisgICAgZ3BvaW50ZXIqIHdlYlZpZXdCYXNlUG9pbnRlciA9IHN0YXRp
Y19jYXN0PGdwb2ludGVyKj4oZmFzdE1hbGxvYyhzaXplb2YoZ3BvaW50ZXIpKSk7CisgICAgZ19v
YmplY3RfYWRkX3dlYWtfcG9pbnRlcihHX09CSkVDVCh3ZWJWaWV3QmFzZSksIHdlYlZpZXdCYXNl
UG9pbnRlcik7CisgICAgKndlYlZpZXdCYXNlUG9pbnRlciA9IHdlYlZpZXdCYXNlOworICAgIGdf
dGltZW91dF9hZGQoMTAwMCAvIDYwLCByZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPihxdWV1
ZUFub3RoZXJEcmF3T2ZBY2NlbGVyYXRlZENvbXBvc2l0aW5nUmVzdWx0cyksIHdlYlZpZXdCYXNl
UG9pbnRlcik7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKaW5kZXggMTI5NWYzZDUz
MjM4ODQ0MGNiMjg3NDYzNmZlNzEzZDY0NjdhNGJmYS4uMDMxZTVkNTliNmVlYTg1OGY4NzNhOGZk
M2E3NWFjNDFjOTFkZjE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKQEAgLTUyLDQgKzUyLDgg
QEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldEFjdGl2ZUNvbnRleHRNZW51UHJveHkoV2ViS2l0
V2ViVmlld0Jhc2UqLCBXZWJDb250ZXh0TWUKIFdlYkNvbnRleHRNZW51UHJveHlHdGsqIHdlYmtp
dFdlYlZpZXdCYXNlR2V0QWN0aXZlQ29udGV4dE1lbnVQcm94eShXZWJLaXRXZWJWaWV3QmFzZSop
OwogR2RrRXZlbnQqIHdlYmtpdFdlYlZpZXdCYXNlVGFrZUNvbnRleHRNZW51RXZlbnQoV2ViS2l0
V2ViVmlld0Jhc2UqKTsKIAorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKK3ZvaWQgd2Via2l0
V2ViVmlld0Jhc2VRdWV1ZURyYXdPZkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSZXN1bHRzKFdlYktp
dFdlYlZpZXdCYXNlKik7CisjZW5kaWYKKwogI2VuZGlmIC8vIFdlYktpdFdlYlZpZXdCYXNlUHJp
dmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQ
cm94eUltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1w
bC5oCmluZGV4IDBjOWYwNGY4ZTAyZGE4ZjBjZGJjMGEzMDEwZjVmMDQxZmEzMzk5ODguLjc2MmUz
NWM2OTgzN2RmNDU3NWQzZWE2YWQ1NTUyYzQ1ZTFlMjQxZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oCkBAIC00OCw2ICs0OCwxMCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHBhaW50KEJhY2tpbmdTdG9yZTo6UGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpSZWdpb24mIHVucGFpbnRl
ZFJlZ2lvbik7CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgYm9vbCBp
c0luQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSBjb25zdCB7IHJldHVybiAhbV9sYXllclRy
ZWVDb250ZXh0LmlzRW1wdHkoKTsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
RHJhd2luZ0FyZWFQcm94eUltcGwoV2ViUGFnZVByb3h5Kik7CiAKQEAgLTc4LDkgKzgyLDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3Qg
TGF5ZXJUcmVlQ29udGV4dCYpOwogICAgIHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKCk7CiAgICAgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBM
YXllclRyZWVDb250ZXh0Jik7Ci0KLSAgICBib29sIGlzSW5BY2NlbGVyYXRlZENvbXBvc2l0aW5n
TW9kZSgpIGNvbnN0IHsgcmV0dXJuICFtX2xheWVyVHJlZUNvbnRleHQuaXNFbXB0eSgpOyB9Ci0K
ICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2li
bGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB2aXNpYmxlQ29udGVudHNS
ZWN0LCBmbG9hdCBzY2FsZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgdHJhamVjdG9yeSk7
CiAgICAgdm9pZCBkaWRSZWNlaXZlTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYzRk
Mjc0MzA4NzVhNzMzNjhiZTUxYjM2NzlkMWFhYzdmNmJmNzEwOC4uMjhjNWRhOTBhZTEwOTQyNmZm
N2M5ZTZlYTM0M2RmMGI2MjlkNzI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtNzE0LDcgKzcxNCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE5hdGl2ZVdl
Yk1vdXNlRXZlbnQqIGN1cnJlbnRseVByb2Nlc3NlZE1vdXNlRG93bkV2ZW50KCk7CiAKICNpZiBQ
TEFURk9STShHVEspICYmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICB2b2lkIHdpZGdldE1h
cHBlZCh1aW50NjRfdCBuYXRpdmVXaW5kb3dJZCk7CisgICAgdm9pZCBzZXRBY2NlbGVyYXRlZENv
bXBvc2l0aW5nV2luZG93SWQodWludDY0X3QgbmF0aXZlV2luZG93SWQpOworICAgIHZvaWQgaW52
YWxpZGF0ZVdpZGdldCgpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldFN1cHByZXNzVmlzaWJpbGl0
eVVwZGF0ZXMoYm9vbCBmbGFnKSB7IG1fc3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlcyA9IGZsYWc7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IGM1NDFkMmMxNDQwM2RiZmJiNWM0MWI0ZDU3N2Y4NGRhNGRjNDIzODAuLjFiMzMy
ZTI4YWJiZGFkNWY4ODU2ZjJlYzUzZDZjZDAyODQwNWQxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTc2LDYgKzE3Niwx
MCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgICMgU3VwcG9ydCBmb3IgY29ubmVj
dGluZyB0aGUgQWNjZXNzaWJpbGl0eSB3b3JsZHMgb2YgdGhlIFVJIGFuZCB0aGUgV2ViIHByb2Nl
c3NlcwogICAgIEJpbmRBY2Nlc3NpYmlsaXR5VHJlZShXVEY6OlN0cmluZyBwbHVnSUQpCiAjZW5k
aWYKKyMKKyNpZiBQTEFURk9STShHVEspICYmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICBJ
bnZhbGlkYXRlV2lkZ2V0KCkKKyNlbmRpZgogCiAgICAgIyBCYWNrRm9yd2FyZCBtZXNzYWdlcwog
ICAgIEJhY2tGb3J3YXJkQWRkSXRlbSh1aW50NjRfdCBpdGVtSUQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKaW5kZXggYWMyNmMwY2I4ZmRi
YjhjOWU3MjVmOTMzYjg0NzhhMmE0ZGNjMGY3Yy4uMTExN2EyNTMwNThhMjA0OWUyNzQxYmU3MGUx
ZDk4MmUzNWYzNTMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9X
ZWJQYWdlUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2Vi
UGFnZVByb3h5R3RrLmNwcApAQCAtMTEwLDkgKzExMCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBm
cmFtZQogfQogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotdm9pZCBXZWJQYWdlUHJveHk6
OndpZGdldE1hcHBlZCh1aW50NjRfdCBuYXRpdmVXaW5kb3dJZCkKK3ZvaWQgV2ViUGFnZVByb3h5
OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nV2luZG93SWQodWludDY0X3QgbmF0aXZlV2luZG93
SWQpCiB7Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaWRnZXRNYXBw
ZWQobmF0aXZlV2luZG93SWQpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nV2luZG93SWQobmF0aXZlV2lu
ZG93SWQpLCBtX3BhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjppbnZhbGlkYXRlV2lk
Z2V0KCkKK3sKKyAgICB3ZWJraXRXZWJWaWV3QmFzZVF1ZXVlRHJhd09mQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ1Jlc3VsdHMoV0VCS0lUX1dFQl9WSUVXX0JBU0Uoc3RhdGljX2Nhc3Q8UGFnZUNsaWVu
dEltcGwqPihtX3BhZ2VDbGllbnQpLT52aWV3V2lkZ2V0KCkpKTsKIH0KICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA5NmNiNmUxYTE1
YTg5NTg5M2Q0ODY2MWIyNzU5ZTcyNTFiNDU0MTVhLi43NzViODI3MGE5YzBlMDc0OWEzZTMyNzEw
MzUyYmE2ZWZhOGI3N2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKQEAgLTQ1OCw3ICs0NTgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVBY2Nl
c3NpYmlsaXR5VHJlZSgpOwogICAgIGJvb2wgaGFuZGxlTW91c2VQcmVzc2VkRXZlbnQoY29uc3Qg
V2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KQotICAgIHZvaWQgd2lkZ2V0TWFwcGVkKGludDY0X3QgbmF0aXZlV2luZG93SGFuZGxlKTsKKyAg
ICB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdXaW5kb3dJZChpbnQ2NF90IG5hdGl2ZVdp
bmRvd0hhbmRsZSk7CisgICAgdm9pZCBpbnZhbGlkYXRlV2lkZ2V0KCk7CiAjZW5kaWYKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCmluZGV4IGI2YmNhY2U1MTgxOGNlNGIwYmRhMjk4NjRhMzA3ZmVkY2I3YmMx
NmYuLjU5MzYyYmNmNTk5ODRmN2EyYzRjODFmYThkY2E3ZjcwY2I4ZmY4YWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CkBAIC0yOTksNiArMjk5LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAjZW5kaWYKIAogI2lm
IFBMQVRGT1JNKEdUSykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotICAgIFdpZGdldE1hcHBl
ZChpbnQ2NF90IGlkKQorICAgIFNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdXaW5kb3dJZChpbnQ2
NF90IGlkKQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcAppbmRleCBlZTQ4M2FlZDMxZWQx
YmFjYmNiY2UzM2RlYmMzNzFjOWEwY2ZmM2I3Li4wOThhNGM3MTYzOGM5ZTc1M2E0NzE1Y2FhMjUw
Mjg4OWUxNTJlMWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKQEAgLTIwMyw2ICsyMDMsOCBAQCB2
b2lkIExheWVyVHJlZUhvc3RHdGs6OnNpemVEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgbmV3U2l6
ZSkKIAogICAgIGlmIChtX3BhZ2VPdmVybGF5TGF5ZXIpCiAgICAgICAgIG1fcGFnZU92ZXJsYXlM
YXllci0+c2V0U2l6ZShuZXdTaXplKTsKKworICAgIGNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dChG
b3JSZXNpemUpOwogfQogCiB2b2lkIExheWVyVHJlZUhvc3RHdGs6OmRldmljZVNjYWxlRmFjdG9y
RGlkQ2hhbmdlKCkKQEAgLTI5Myw3ICsyOTUsNyBAQCBib29sIExheWVyVHJlZUhvc3RHdGs6OmZs
dXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpCiAgICAgcmV0dXJuIG1fd2ViUGFnZS0+Y29yZVBhZ2Uo
KS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c3luY0NvbXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJm
cmFtZXMoKTsKIH0KIAotdm9pZCBMYXllclRyZWVIb3N0R3RrOjpjb21wb3NpdGVMYXllcnNUb0Nv
bnRleHQoKQordm9pZCBMYXllclRyZWVIb3N0R3RrOjpjb21wb3NpdGVMYXllcnNUb0NvbnRleHQo
Q29tcG9zaXRlUHVycG9zZSBwdXJwb3NlKQogewogICAgIEdMQ29udGV4dCogY29udGV4dCA9IGds
Q29udGV4dCgpOwogICAgIGlmICghY29udGV4dCB8fCAhY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCkpCkBAIC0zMDUsMTEgKzMwNywxNyBAQCB2b2lkIExheWVyVHJlZUhvc3RHdGs6OmNvbXBv
c2l0ZUxheWVyc1RvQ29udGV4dCgpCiAgICAgSW50U2l6ZSBjb250ZXh0U2l6ZSA9IG1fY29udGV4
dC0+ZGVmYXVsdEZyYW1lQnVmZmVyU2l6ZSgpOwogICAgIGdsVmlld3BvcnQoMCwgMCwgY29udGV4
dFNpemUud2lkdGgoKSwgY29udGV4dFNpemUuaGVpZ2h0KCkpOwogCisgICAgaWYgKHB1cnBvc2Ug
PT0gRm9yUmVzaXplKSB7CisgICAgICAgIGdsQ2xlYXJDb2xvcigxLCAxLCAxLCAwKTsKKyAgICAg
ICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKyAgICB9CisKICAgICBtX3RleHR1cmVN
YXBwZXItPmJlZ2luUGFpbnRpbmcoKTsKICAgICB0b1RleHR1cmVNYXBwZXJMYXllcihtX3Jvb3RM
YXllci5nZXQoKSktPnBhaW50KCk7CiAgICAgbV90ZXh0dXJlTWFwcGVyLT5lbmRQYWludGluZygp
OwogCiAgICAgY29udGV4dC0+c3dhcEJ1ZmZlcnMoKTsKKyAgICBtX3dlYlBhZ2UtPmludmFsaWRh
dGVXaWRnZXQoKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0R3RrOjpmbHVzaEFuZFJlbmRlckxh
eWVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3Rr
L0xheWVyVHJlZUhvc3RHdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvTGF5ZXJUcmVlSG9zdEd0ay5oCmluZGV4IDA2MDU3MGI2NDkxNDhkZjU1M2M4MDNiNDc1ZmY0
ZjQ5NDAyNDI1YjYuLmQ5YTgxNmMyZWJkZGI5ODVjMTM3MmVjZWJjNmVmNTc2YzIwM2Y4MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVl
SG9zdEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5
ZXJUcmVlSG9zdEd0ay5oCkBAIC04Myw3ICs4MywxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBj
cmVhdGVQYWdlT3ZlcmxheUxheWVyKCk7CiAgICAgdm9pZCBkZXN0cm95UGFnZU92ZXJsYXlMYXll
cigpOwotICAgIHZvaWQgY29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0KCk7CisKKyAgICBlbnVtIENv
bXBvc2l0ZVB1cnBvc2UgeyBGb3JSZXNpemUsIE5vdEZvclJlc2l6ZSB9OworICAgIHZvaWQgY29t
cG9zaXRlTGF5ZXJzVG9Db250ZXh0KENvbXBvc2l0ZVB1cnBvc2UgPSBOb3RGb3JSZXNpemUpOwor
CiAgICAgdm9pZCBmbHVzaEFuZFJlbmRlckxheWVycygpOwogICAgIHZvaWQgY2FuY2VsUGVuZGlu
Z0xheWVyRmx1c2goKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKaW5kZXggMzBhYWE0MDM3ZjdjNDdkMTRkNTZhNDdjNzFl
YWFjNjczYmNhODI0Mi4uZDlkZGU4MWEyNWRiNzQ0MjY2YTVlNjdhOGZhOWJhNjk5YTBhZmQ1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdl
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBh
Z2VHdGsuY3BwCkBAIC0xNTYsMTAgKzE1NiwxNSBAQCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
V2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VEYXRhRm9yVVJMKGNvbnN0IEtVUkwmKQogfQogCiAjaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotdm9pZCBXZWJQYWdlOjp3aWRnZXRNYXBwZWQoaW50NjRf
dCBuYXRpdmVXaW5kb3dIYW5kbGUpCit2b2lkIFdlYlBhZ2U6OnNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdXaW5kb3dJZChpbnQ2NF90IG5hdGl2ZVdpbmRvd0hhbmRsZSkKIHsKICAgICBtX25hdGl2
ZVdpbmRvd0hhbmRsZSA9IG5hdGl2ZVdpbmRvd0hhbmRsZTsKIH0KKwordm9pZCBXZWJQYWdlOjpp
bnZhbGlkYXRlV2lkZ2V0KCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Oklu
dmFsaWRhdGVXaWRnZXQoKSk7Cit9CiAjZW5kaWYKIAogYm9vbCBXZWJQYWdlOjpoYW5kbGVNb3Vz
ZVByZXNzZWRFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91c2VFdmVu
dCkK
</data>
<flag name="review"
          id="176389"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>