<?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>75308</bug_id>
          
          <creation_ts>2011-12-28 06:01:57 -0800</creation_ts>
          <short_desc>[GTK] Add TextureMapperGL implementation</short_desc>
          <delta_ts>2012-02-07 03:36:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>75309</dependson>
          <blocked>74087</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="ChangSeok Oh">kevin.cs.oh</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>alex</cc>
    
    <cc>joone.hur</cc>
    
    <cc>mrobinson</cc>
    
    <cc>noam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>527642</commentid>
    <comment_count>0</comment_count>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2011-12-28 06:01:57 -0800</bug_when>
    <thetext>This  bug is for adding initial TextureMapperGL implementation for WebKitGtk+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527927</commentid>
    <comment_count>1</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-12-29 07:54:02 -0800</bug_when>
    <thetext>Nayan and I are working on this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528348</commentid>
    <comment_count>2</comment_count>
    <who name="ChangSeok Oh">kevin.cs.oh</who>
    <bug_when>2012-01-01 07:34:50 -0800</bug_when>
    <thetext>Oh. Really? I&apos;ve been doing something on this, too.
So, I just hope to contribute it, if you and Nayan don&apos;t mind. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528400</commentid>
    <comment_count>3</comment_count>
    <who name="Joone Hur">joone.hur</who>
    <bug_when>2012-01-01 20:04:31 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Oh. Really? I&apos;ve been doing something on this, too.
&gt; So, I just hope to contribute it, if you and Nayan don&apos;t mind. :)

Hi ChangSeok,

Please take a look at:
http://blog.abandonedwig.info/2011/12/webkitgtk-hackfest-wrapup-accelerated.html

:-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544855</commentid>
    <comment_count>4</comment_count>
      <attachid>124489</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-29 20:49:08 -0800</bug_when>
    <thetext>Created attachment 124489
Preliminary patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544857</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-29 20:50:32 -0800</bug_when>
    <thetext>Alex and No&apos;am, would you mind taking a look at my first stab at this? It seems to work. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544867</commentid>
    <comment_count>6</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-01-29 21:05:25 -0800</bug_when>
    <thetext>I&apos;m ok with the TextureMapperGL changes!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544893</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-29 22:56:05 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I&apos;m ok with the TextureMapperGL changes!

One thing I&apos;m not certain about is the contract with TextureMapperGL about when the appropriate GL context should be active. I found that I needed to make it active when constructing the TextureMapper now, as that&apos;s when it creates the shaders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545074</commentid>
    <comment_count>8</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-01-30 06:52:14 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; I&apos;m ok with the TextureMapperGL changes!
&gt; 
&gt; One thing I&apos;m not certain about is the contract with TextureMapperGL about when the appropriate GL context should be active. I found that I needed to make it active when constructing the TextureMapper now, as that&apos;s when it creates the shaders.

Yes, that should be changed, and is part of a patch ostap is working on. The GL context should be valid when running beginPainting(), but that would be true after it&apos;s fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546307</commentid>
    <comment_count>9</comment_count>
      <attachid>124489</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2012-01-31 11:45:21 -0800</bug_when>
    <thetext>Comment on attachment 124489
Preliminary patch

Great patch! I tested it and it works well, we can do more extensive testing with
the patch in the repository. I&apos;ve added some small proposals for your consideration, also
I found compilation does not work if WK2 is activated, I guess we can create a different
patch to fix this compilation issues with texmap now.

I hope this helps.

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

&gt; Source/WebCore/platform/graphics/cairo/TextureMapperGLCairo.cpp:40
&gt; +    RefPtr&lt;cairo_t&gt; cr = adoptRef(cairo_create(m_surface.get()));

Small proposal :), considering we are going to store the cr in the m_context what do you think about using cr directly or storing it initially like:

m_context = adoptPtr(new PlatformContextCairo(cairo_create(m_surface.get())));

Later we could use m_context-&gt;cr().

&gt; Source/WebCore/platform/graphics/cairo/TextureMapperGLCairo.cpp:43
&gt; +    cairo_set_operator(cr.get(), CAIRO_OPERATOR_CLEAR);
&gt; +    cairo_paint(cr.get());

Initially the surface create function adds all 0s, is this changing that?

&gt; Source/WebCore/platform/graphics/cairo/TextureMapperGLCairo.cpp:-54
&gt; -    notImplemented();

Would it make sense to call cairo_surface_flush to make sure all the operations are done?

&gt; Source/WebCore/platform/graphics/gtk/WindowGLContextGLX.cpp:33
&gt; +        return nullptr;

Does the style propose to use 0 to represent null pointer?

&gt; Source/WebKit/gtk/WebCoreSupport/AcceleratedCompositingContext.h:55
&gt; +    // GraphicsLayerClient

We have to add a dot at the end of the comment.

&gt; Source/WebKit/gtk/WebCoreSupport/AcceleratedCompositingContext.h:56
&gt; +    virtual void notifyAnimationStarted(const WebCore::GraphicsLayer*, double time);

Shoulswe remove the name of the variable &apos;time&apos;?

&gt; Source/WebKit/gtk/WebCoreSupport/AcceleratedCompositingContext.h:58
&gt; +    virtual void paintContents(const WebCore::GraphicsLayer*, WebCore::GraphicsContext&amp;, WebCore::GraphicsLayerPaintingPhase, const WebCore::IntRect&amp; rectToPaint);

Ditto.

&gt; Source/WebKit/gtk/WebCoreSupport/AcceleratedCompositingContextGL.cpp:121
&gt; +    if (rect == IntRect())

Could we just do rect.isEmpty()?

&gt; Source/WebKit/gtk/WebCoreSupport/AcceleratedCompositingContextGL.cpp:186
&gt; +#endif // USE(ACCELERATED_COMPOSITING)

Nitpick, we have to add &amp;&amp; USE(TEXTURE_MAPPER_GL).

&gt; Source/WebKit/gtk/webkit/webkitwebsettings.cpp:909
&gt; +    * compositing uses the GPU to render animations on pages smoothly and also allows
&gt; +    * propre rendering of 3D CSS transforms.

propre -&gt; proper

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:661
&gt; +        copyRectFromCairoSurfaceToContext(priv-&gt;backingStore-&gt;cairoSurface(), cr, IntSize(), 

Nitpick :), there is a space at the end of the line.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:984
&gt; +    gdk_window_ensure_native(window);

Could we disable AC if the function returns FALSE?

&gt; configure.ac:404
&gt; +if test &quot;$enable_webgl&quot; = &quot;yes&quot; ||  test &quot;$with_accelerated_compositing&quot; != &quot;opengl&quot; ; then

Did you add a ! in the opengl condition?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549671</commentid>
    <comment_count>10</comment_count>
      <attachid>125550</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-05 18:56:05 -0800</bug_when>
    <thetext>Created attachment 125550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549672</commentid>
    <comment_count>11</comment_count>
      <attachid>125550</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-05 19:03:10 -0800</bug_when>
    <thetext>Comment on attachment 125550
Patch

Another LGTM for the TextureMapper/LayerTreeHost changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549674</commentid>
    <comment_count>12</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-05 19:06:45 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 124489 [details])
&gt; Great patch! I tested it and it works well, we can do more extensive testing with
&gt; the patch in the repository. I&apos;ve added some small proposals for your consideration, also
&gt; I found compilation does not work if WK2 is activated, I guess we can create a different
&gt; patch to fix this compilation issues with texmap now.

Thanks for the review. I&apos;ve fixed the WebKit2 compilation. I also updated the patch to reflect the new TextureMapper design. We&apos;ll need a little work in the future to implement TextureMapperImageBuffer and to fall back when necessary.

&gt; &gt; Source/WebCore/platform/graphics/gtk/WindowGLContextGLX.cpp:33
&gt; &gt; +        return nullptr;
&gt; 
&gt; Does the style propose to use 0 to represent null pointer?

nullptr is the new thing from C++0x. I believe that WebKit is switching to it gradually.

&gt; 
&gt; &gt; Source/WebKit/gtk/WebCoreSupport/AcceleratedCompositingContext.h:55
&gt; &gt; +    // GraphicsLayerClient
&gt; 
&gt; We have to add a dot at the end of the comment.

I think we can avoid it here, since this isn&apos;t a complete sentence. There are a few places where you can use one word. For instance, in this case it&apos;s just the name of the abstract class I&apos;m implementing.


&gt; &gt; Source/WebKit/gtk/WebCoreSupport/AcceleratedCompositingContext.h:56
&gt; &gt; +    virtual void notifyAnimationStarted(const WebCore::GraphicsLayer*, double time);
&gt; 
&gt; Shoulswe remove the name of the variable &apos;time&apos;?

I think it&apos;s important to leave it here since double is such a generic type.

&gt; &gt; Source/WebKit/gtk/WebCoreSupport/AcceleratedCompositingContext.h:58
&gt; &gt; +    virtual void paintContents(const WebCore::GraphicsLayer*, WebCore::GraphicsContext&amp;, WebCore::GraphicsLayerPaintingPhase, const WebCore::IntRect&amp; rectToPaint);
&gt; 
&gt; Ditto.

I think it&apos;s useful here too. :)

&gt; &gt; Source/WebKit/gtk/WebCoreSupport/AcceleratedCompositingContextGL.cpp:121
&gt; &gt; +    if (rect == IntRect())
&gt; 
&gt; Could we just do rect.isEmpty()?

Yep! Fixed.

&gt; &gt; Source/WebKit/gtk/WebCoreSupport/AcceleratedCompositingContextGL.cpp:186
&gt; &gt; +#endif // USE(ACCELERATED_COMPOSITING)
&gt; 
&gt; Nitpick, we have to add &amp;&amp; USE(TEXTURE_MAPPER_GL).

Fixed.

&gt; &gt; Source/WebKit/gtk/webkit/webkitwebsettings.cpp:909
&gt; &gt; +    * compositing uses the GPU to render animations on pages smoothly and also allows
&gt; &gt; +    * propre rendering of 3D CSS transforms.
&gt; 
&gt; propre -&gt; proper&apos;

Fixed.

&gt; &gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:661
&gt; &gt; +        copyRectFromCairoSurfaceToContext(priv-&gt;backingStore-&gt;cairoSurface(), cr, IntSize(), 
&gt; 
&gt; Nitpick :), there is a space at the end of the line.

Fixed.

&gt; &gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:984
&gt; &gt; +    gdk_window_ensure_native(window);
&gt; 
&gt; Could we disable AC if the function returns FALSE?

Fixed.

&gt; &gt; configure.ac:404
&gt; &gt; +if test &quot;$enable_webgl&quot; = &quot;yes&quot; ||  test &quot;$with_accelerated_compositing&quot; != &quot;opengl&quot; ; then
&gt; 
&gt; Did you add a ! in the opengl condition?

Yeah. :/ Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549677</commentid>
    <comment_count>13</comment_count>
      <attachid>125551</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-05 19:12:12 -0800</bug_when>
    <thetext>Created attachment 125551
Patch with WebKit2 ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549810</commentid>
    <comment_count>14</comment_count>
      <attachid>125591</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-06 01:06:23 -0800</bug_when>
    <thetext>Created attachment 125591
Properly handle little endian systems with OpenGL ES</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549925</commentid>
    <comment_count>15</comment_count>
      <attachid>125591</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2012-02-06 05:30:33 -0800</bug_when>
    <thetext>Comment on attachment 125591
Properly handle little endian systems with OpenGL ES

LGTM, works great :). I just had to add this code to make it compile. Noam are this ifdefs in DrawingAreaProxyImpl.cpp correct? I did not check much that code.

diff --git a/Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp b/Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp
index 4c3447b..ba886a0 100644
--- a/Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp
+++ b/Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp
@@ -1139,6 +1139,24 @@ InterpolationQuality GraphicsContext::imageInterpolationQuality() const
     return platformContext()-&gt;imageInterpolationQuality();
 }
 
+#if ENABLE(3D_RENDERING) &amp;&amp; USE(TEXTURE_MAPPER)
+TransformationMatrix GraphicsContext::get3DTransform() const
+{
+    notImplemented();
+    return TransformationMatrix();
+}
+
+void GraphicsContext::concat3DTransform(const TransformationMatrix&amp; transform)
+{
+    notImplemented();
+}
+
+void GraphicsContext::set3DTransform(const TransformationMatrix&amp; transform)
+{
+    notImplemented();
+}
+#endif
+
 } // namespace WebCore
 
 #endif // USE(CAIRO)
diff --git a/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp b/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp
index 24a5aed..ffc60cf 100644
--- a/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp
+++ b/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp
@@ -36,7 +36,7 @@
 #include &quot;WebProcessProxy.h&quot;
 #include &lt;WebCore/Region.h&gt;
 
-#if USE(ACCELERATED_COMPOSITING) &amp;&amp; USE(TEXTURE_MAPPER)
+#if USE(ACCELERATED_COMPOSITING) &amp;&amp; USE(TEXTURE_MAPPER) &amp;&amp; USE(TILED_BACKING_STORE)
 #include &quot;LayerTreeHostProxy.h&quot;
 #endif
 
@@ -58,7 +58,7 @@ DrawingAreaProxyImpl::DrawingAreaProxyImpl(WebPageProxy* webPageProxy)
     , m_isBackingStoreDiscardable(true)
     , m_discardBackingStoreTimer(RunLoop::current(), this, &amp;DrawingAreaProxyImpl::discardBackingStore)
 {
-#if USE(TEXTURE_MAPPER)
+#if USE(TEXTURE_MAPPER) &amp;&amp; USE(TILED_BACKING_STORE)
     // Construct the proxy early to allow messages to be sent to the web process while AC is entered there.
     if (webPageProxy-&gt;pageGroup()-&gt;preferences()-&gt;forceCompositingMode())
         m_layerTreeHostProxy = adoptPtr(new LayerTreeHostProxy(this));
@@ -335,7 +335,7 @@ void DrawingAreaProxyImpl::enterAcceleratedCompositingMode(const LayerTreeContex
     m_backingStore = nullptr;
     m_layerTreeContext = layerTreeContext;
     m_webPageProxy-&gt;enterAcceleratedCompositingMode(layerTreeContext);
-#if USE(TEXTURE_MAPPER)
+#if USE(TEXTURE_MAPPER) &amp;&amp; USE(TILED_BACKING_STORE)
     if (!m_layerTreeHostProxy)
         m_layerTreeHostProxy = adoptPtr(new LayerTreeHostProxy(this));
 #endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550160</commentid>
    <comment_count>16</comment_count>
      <attachid>125591</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-02-06 11:51:51 -0800</bug_when>
    <thetext>Comment on attachment 125591
Properly handle little endian systems with OpenGL ES

Re API: simple and effective, looks great to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550583</commentid>
    <comment_count>17</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-06 20:35:30 -0800</bug_when>
    <thetext>(In reply to comment #15)

&gt; diff --git a/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp b/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp
&gt; index 24a5aed..ffc60cf 100644
&gt; --- a/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp
&gt; +++ b/Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp
&gt; @@ -36,7 +36,7 @@
&gt;  #include &quot;WebProcessProxy.h&quot;
&gt;  #include &lt;WebCore/Region.h&gt;
&gt; 
&gt; -#if USE(ACCELERATED_COMPOSITING) &amp;&amp; USE(TEXTURE_MAPPER)
&gt; +#if USE(ACCELERATED_COMPOSITING) &amp;&amp; USE(TEXTURE_MAPPER) &amp;&amp; USE(TILED_BACKING_STORE)
&gt;  #include &quot;LayerTreeHostProxy.h&quot;
&gt;  #endif
&gt; 
&gt; @@ -58,7 +58,7 @@ DrawingAreaProxyImpl::DrawingAreaProxyImpl(WebPageProxy* webPageProxy)
&gt;      , m_isBackingStoreDiscardable(true)
&gt;      , m_discardBackingStoreTimer(RunLoop::current(), this, &amp;DrawingAreaProxyImpl::discardBackingStore)
&gt;  {
&gt; -#if USE(TEXTURE_MAPPER)
&gt; +#if USE(TEXTURE_MAPPER) &amp;&amp; USE(TILED_BACKING_STORE)
&gt;      // Construct the proxy early to allow messages to be sent to the web process while AC is entered there.
&gt;      if (webPageProxy-&gt;pageGroup()-&gt;preferences()-&gt;forceCompositingMode())
&gt;          m_layerTreeHostProxy = adoptPtr(new LayerTreeHostProxy(this));
&gt; @@ -335,7 +335,7 @@ void DrawingAreaProxyImpl::enterAcceleratedCompositingMode(const LayerTreeContex
&gt;      m_backingStore = nullptr;
&gt;      m_layerTreeContext = layerTreeContext;
&gt;      m_webPageProxy-&gt;enterAcceleratedCompositingMode(layerTreeContext);
&gt; -#if USE(TEXTURE_MAPPER)
&gt; +#if USE(TEXTURE_MAPPER) &amp;&amp; USE(TILED_BACKING_STORE)
&gt;      if (!m_layerTreeHostProxy)
&gt;          m_layerTreeHostProxy = adoptPtr(new LayerTreeHostProxy(this));
&gt;  #endif

I don&apos;t seem to need this bit to build. What options are you passing to build-webkit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550585</commentid>
    <comment_count>18</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-06 20:41:58 -0800</bug_when>
    <thetext>Committed r106901: &lt;http://trac.webkit.org/changeset/106901&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550660</commentid>
    <comment_count>19</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2012-02-06 23:47:52 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #15)
&gt; 
&gt; [...]
&gt;
&gt; &gt; +#if USE(TEXTURE_MAPPER) &amp;&amp; USE(TILED_BACKING_STORE)
&gt; &gt;      if (!m_layerTreeHostProxy)
&gt; &gt;          m_layerTreeHostProxy = adoptPtr(new LayerTreeHostProxy(this));
&gt; &gt;  #endif
&gt; 
&gt; I don&apos;t seem to need this bit to build. What options are you passing to build-webkit?

Hrm, basically no options: build-webkit --gtk --debug --prefix=/blah. I&apos;ll update the repository to check if it works for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550788</commentid>
    <comment_count>20</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2012-02-07 03:36:13 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #17)
&gt; &gt; (In reply to comment #15)
&gt; &gt; 
&gt; &gt; [...]
&gt; &gt;
&gt; &gt; &gt; +#if USE(TEXTURE_MAPPER) &amp;&amp; USE(TILED_BACKING_STORE)
&gt; &gt; &gt;      if (!m_layerTreeHostProxy)
&gt; &gt; &gt;          m_layerTreeHostProxy = adoptPtr(new LayerTreeHostProxy(this));
&gt; &gt; &gt;  #endif
&gt; &gt; 
&gt; &gt; I don&apos;t seem to need this bit to build. What options are you passing to build-webkit?
&gt; 
&gt; Hrm, basically no options: build-webkit --gtk --debug --prefix=/blah. I&apos;ll update the repository to check if it works for me.

I&apos;ve just tested it and it still fails for me in linking stage:

./.libs/libwebkit2gtk-3.0.so: undefined reference to `WebKit::LayerTreeHostProxy::LayerTreeHostProxy(WebKit::DrawingAreaProxy*)&apos;
collect2: ld returned 1 exit status

The compilation line is:

build-webkit --gtk --debug --prefix=/home/alex/install --with-accelerated-compositing=opengl

I guess it makes sense because we are compiling DrawingAreaProxyImpl.cpp and it uses LayerTreeHostProxy that it is not compiled.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124489</attachid>
            <date>2012-01-29 20:49:08 -0800</date>
            <delta_ts>2012-02-05 18:55:55 -0800</delta_ts>
            <desc>Preliminary patch</desc>
            <filename>bug-75308-20120129204907.patch</filename>
            <type>text/plain</type>
            <size>33309</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1OTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzUzMDJhMzQ4OWFjOWIx
Nzg2NDNjOGU3ODlhNDY3MjZkYzFiZGVhOS4uMDdmNTA2Y2I1YmYzMTc3MTE0ZjZjNjFiYzRjN2Yz
ODI4ZWZlZTMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAxLTI5ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4gYW5kIE5heWFuIEt1bWFyIEsgIDxu
YXlhbmtrQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgVGV4dHVyZU1hcHBlckdM
IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NTMwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyB3aWxsIGJlIGNvdmVyZWQgYnkgYWNjZWxlcmF0ZWQg
Y29tcG9zaXRpbmcgYW5kCisgICAgICAgIDNEIENTUyB0cmFuc2Zvcm0gdGVzdHMgZXZlbnR1YWxs
eS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZGVkIHNvbWUgZmlsZXMgbmVj
ZXNzYXJ5IHRvIGJ1aWxkIFRleHR1cmVNYXBwZXJHTC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9UZXh0dXJlTWFwcGVyR0xDYWlyby5jcHA6IEFkZGVkIGltcGxlbWVudGF0aW9u
cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9UZXh0dXJlTWFwcGVyR0xDYWly
by5oOiBVcGRhdGVkIG1lbWJlciBsaXN0LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0
ay9XaW5kb3dHTENvbnRleHQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3RrL1dpbmRvd0dMQ29udGV4dEdMWC5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwOiBVc2UgdGhlIEdMIHNoaW1zIG9uIEdU
Sy4KKwogMjAxMi0wMS0yNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwNTgyOC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwppbmRleCBkNDQ5NDY0ZmY3MTRjNWY3ZTJhNjVkOGVhZjExMjgyNzBjZjA3NGY4Li4xMTI0
MTZjZTk3NmM2YWI4ZTNkYWQ4MTdjZmE1YzNlMWYzNDgyOWVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTItMDEtMjkgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBp
Z2FsaWEuY29tPiBhbmQgTmF5YW4gS3VtYXIgSyAgPG5heWFua2tAbW90b3JvbGEuY29tPgorCisg
ICAgICAgIFtHVEtdIEFkZCBUZXh0dXJlTWFwcGVyR0wgaW1wbGVtZW50YXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1MzA4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTog
QWRkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wgdG8gdGhlIGxpc3QuCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaDoKKyAgICAg
ICAgKEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KTogQWRkZWQgc29tZSBtZW1iZXJzIGZv
ciBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEdMLgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Q2x1dHRlci5jcHA6IEFkZGVkIGVtcHR5
IGltcGxlbWVudGF0aW9ucworICAgICAgICBmb3IgR3JhcGhpY3NMYXllckNsaWVudC4gVGhpcyBp
cyBvbmx5IHVzZWQgZm9yIHRoZSBHTCB2YXJpYW50LgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJv
bWVDbGllbnQ6OnBlcmZvcm1BbGxQZW5kaW5nU2Nyb2xscyk6IFVwZGF0ZSB0aGUgcm9vdCBsYXll
ciB3aGlsZSBzY3JvbGxpbmcuCisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6cGFpbnQp
OiBVcGRhdGUgdGhlIHJvb3QgbGF5ZXIgYWZ0ZXIgcGFpbnRpbmcuCisgICAgICAgICogd2Via2l0
L3dlYmtpdHdlYnNldHRpbmdzLmNwcDogQWRkZWQgYW4gZW5hYmxlLWFjY2VsZXJhdGVkLWNvbXBv
c2l0aW5nIHNldHRpbmcuCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzcHJpdmF0
ZS5oOiBEaXR0by4KKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAg
ICh3ZWJraXRfd2ViX3ZpZXdfZHJhdyk6IENhbGwgaW50byBUZXh0dXJlTWFwcGVyIG5vdy4KKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19yZWFsaXplKTogVXNlIGdka193aW5kb3dfZW5zdXJlX25h
dGl2ZSBoZXJlLgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6IFN1
cHBvcnQgdGhlIG5ldyBlbmFibGUtYWNjZWxlcmF0ZWQtY29tcG9zaXRpbmcgc2V0dGluZy4KKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3RpZnkpOiBEaXR0by4KKwogMjAxMi0w
MS0yMyAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS10gUmVmYWN0b3IgR1RLJ3MgYWNjZXNzaWJpbGl0aXR5IGNvZGUgdG8gYmUgbW9yZSBt
b2R1bGFyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBjODQyNjI3N2FhNzQzNWIw
YTNiYWMxNmViOWVjZjc0NWY0OWI0ZmRlLi5iYjdmOGM0ZjZiMTVkYzE4MTNmNjgwYzI0MWM0ZjNh
YjJiZGVhMmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTU3NDMsNiArNTc0
Myw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKIHdlYmNvcmVndGtfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVGV4dHVy
ZU1hcHBlckdMQ2Fpcm8uY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9UZXh0dXJlTWFwcGVyR0xDYWlyby5oCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vVGV4dHVyZU1hcHBlckdMQ2Fpcm8uaCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3RrL1dpbmRvd0dMQ29udGV4dEdMWC5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9XaW5kb3dHTENvbnRleHQuaAogZW5kaWYgICMgRU5E
IFVTRV9URVhUVVJFX01BUFBFUl9HTAogZW5kaWYgICMgVVNFX0FDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9U
ZXh0dXJlTWFwcGVyR0xDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9UZXh0dXJlTWFwcGVyR0xDYWlyby5jcHAKaW5kZXggMTM3MWI2NjE0Y2EyMGE5NmRh
MWRjMjFlNmNmNzYyN2EwYjE5NTE4Mi4uZWUxNTgyNjY0NzVjYjRhZTMzZWFlYTU0MDlkYzM1OGI2
NzQ4Nzk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vVGV4dHVyZU1hcHBlckdMQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL1RleHR1cmVNYXBwZXJHTENhaXJvLmNwcApAQCAtMjAsMzggKzIwLDQz
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMQ2Fpcm8u
aCIKIAorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKKyNpbmNsdWRlIDxjYWlyby5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IEJHUkEzMlByZW11bHRpbXBsaWVkQnVmZmVyQ2Fpcm86OkJHUkEzMlByZW11bHRpbXBsaWVkQnVm
ZmVyQ2Fpcm8oKQotICAgIDogbV9jb250ZXh0KDApCi0gICAgLCBtX2NhaXJvQ29udGV4dCgwKQot
ICAgICwgbV9jYWlyb1N1cmZhY2UoMCkgCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAog
QkdSQTMyUHJlbXVsdGltcGxpZWRCdWZmZXJDYWlybzo6fkJHUkEzMlByZW11bHRpbXBsaWVkQnVm
ZmVyQ2Fpcm8oKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKIFBsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0KiBCR1JBMzJQcmVtdWx0aW1wbGllZEJ1ZmZlckNhaXJvOjpiZWdpblBhaW50KGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCwgYm9vbCBvcGFxdWUpCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBtX3N1cmZhY2UgPSBhZG9wdFJlZihjYWlyb19pbWFn
ZV9zdXJmYWNlX2NyZWF0ZShDQUlST19GT1JNQVRfQVJHQjMyLCBkaXJ0eVJlY3Qud2lkdGgoKSwg
ZGlydHlSZWN0LmhlaWdodCgpKSk7CisgICAgUmVmUHRyPGNhaXJvX3Q+IGNyID0gYWRvcHRSZWYo
Y2Fpcm9fY3JlYXRlKG1fc3VyZmFjZS5nZXQoKSkpOworCisgICAgY2Fpcm9fc2V0X29wZXJhdG9y
KGNyLmdldCgpLCBDQUlST19PUEVSQVRPUl9DTEVBUik7CisgICAgY2Fpcm9fcGFpbnQoY3IuZ2V0
KCkpOworCisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLmdldCgpLCBDQUlST19PUEVSQVRPUl9P
VkVSKTsKKyAgICBjYWlyb190cmFuc2xhdGUoY3IuZ2V0KCksIC1kaXJ0eVJlY3QueCgpLCAtZGly
dHlSZWN0LnkoKSk7CisKKyAgICBtX2NvbnRleHQgPSBhZG9wdFB0cihuZXcgUGxhdGZvcm1Db250
ZXh0Q2Fpcm8oY3IuZ2V0KCkpKTsKKyAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOwogfQogCiB2
b2lkKiBCR1JBMzJQcmVtdWx0aW1wbGllZEJ1ZmZlckNhaXJvOjpkYXRhKCkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIEFTU0VSVChtX3N1cmZhY2UpOworICAg
IHJldHVybiBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKG1fc3VyZmFjZS5nZXQoKSk7CiB9
CiAKIHZvaWQgQkdSQTMyUHJlbXVsdGltcGxpZWRCdWZmZXJDYWlybzo6ZW5kUGFpbnQoKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKIHVpbnQ2NF90IHVpZEZvckltYWdlKEltYWdlKiBp
bWFnZSkKQEAgLTYyLDcgKzY3LDYgQEAgdWludDY0X3QgdWlkRm9ySW1hZ2UoSW1hZ2UqIGltYWdl
KQogCiBQYXNzT3duUHRyPEJHUkEzMlByZW11bHRpbXBsaWVkQnVmZmVyPiBCR1JBMzJQcmVtdWx0
aW1wbGllZEJ1ZmZlcjo6Y3JlYXRlKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgQkdSQTMyUHJlbXVsdGltcGxpZWRCdWZmZXJDYWlybygpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVGV4
dHVyZU1hcHBlckdMQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL1RleHR1cmVNYXBwZXJHTENhaXJvLmgKaW5kZXggNjE4ODA2ZDc1M2U1YzVlM2I4ZTkyYTg5
NmQwYWQ2NTUyNzNmOTkwZS4uNWJmNjZlYjhiMGEyZGM3NWUxOTk5M2QwNWVkMDhkMTkxMDM2NDUz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVGV4
dHVyZU1hcHBlckdMQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9UZXh0dXJlTWFwcGVyR0xDYWlyby5oCkBAIC0yMCwxMSArMjAsMTIgQEAKICNpZm5k
ZWYgVGV4dHVyZU1hcHBlckdMQ2Fpcm9faAogI2RlZmluZSBUZXh0dXJlTWFwcGVyR0xDYWlyb19o
CiAKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEJHUkEzMlByZW11bHRpbXBsaWVkQnVm
ZmVyQ2Fpcm86IHB1YmxpYyBCR1JBMzJQcmVtdWx0aW1wbGllZEJ1ZmZlciB7CitjbGFzcyBCR1JB
MzJQcmVtdWx0aW1wbGllZEJ1ZmZlckNhaXJvIDogcHVibGljIEJHUkEzMlByZW11bHRpbXBsaWVk
QnVmZmVyIHsKIHB1YmxpYzoKICAgICBCR1JBMzJQcmVtdWx0aW1wbGllZEJ1ZmZlckNhaXJvKCk7
CiAgICAgdmlydHVhbCB+QkdSQTMyUHJlbXVsdGltcGxpZWRCdWZmZXJDYWlybygpOwpAQCAtMzMs
OSArMzQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkKiBkYXRhKCk7IAogCiBwcml2YXRl
OgotICAgIFBsYXRmb3JtQ29udGV4dENhaXJvKiBtX2NvbnRleHQ7Ci0gICAgY2Fpcm9fdCogbV9j
YWlyb0NvbnRleHQ7Ci0gICAgY2Fpcm9fc3VyZmFjZV90KiBtX2NhaXJvU3VyZmFjZTsKKyAgICBP
d25QdHI8UGxhdGZvcm1Db250ZXh0Q2Fpcm8+IG1fY29udGV4dDsKKyAgICBSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PiBtX3N1cmZhY2U7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2luZG93R0xDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2luZG93R0xDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTYy
MzU2ODM1NjQ3Nzk0NjRhY2NkODQ3YmRlNWIxMDlkNjFlMDI0NwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9XaW5kb3dHTENvbnRleHQuaApA
QCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKyAqICBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaWZuZGVmIFdpbmRvd0dMQ29udGV4
dF9oCisjZGVmaW5lIFdpbmRvd0dMQ29udGV4dF9oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCisjaWYgZGVmaW5lZChYUF9VTklY
KQordHlwZWRlZiBzdHJ1Y3QgX19HTFhjb250ZXh0UmVjKiBHTFhDb250ZXh0OwordHlwZWRlZiBz
dHJ1Y3QgX1hEaXNwbGF5IERpc3BsYXk7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBXaW5kb3dHTENvbnRleHQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdpbmRv
d0dMQ29udGV4dCk7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2luZG93R0xDb250
ZXh0PiBjcmVhdGVDb250ZXh0V2l0aEdka1dpbmRvdyhHZGtXaW5kb3cqKTsKKyAgICB2aXJ0dWFs
IH5XaW5kb3dHTENvbnRleHQoKTsKKyAgICB2b2lkIHN0YXJ0RHJhd2luZygpOworICAgIHZvaWQg
ZmluaXNoRHJhd2luZygpOworCitwcml2YXRlOgorICAgIFdpbmRvd0dMQ29udGV4dChHZGtXaW5k
b3cqKTsKKyAgICBHZGtXaW5kb3cqIG1fd2luZG93OworCisjaWYgZGVmaW5lZChYUF9VTklYKQor
ICAgIEdMWENvbnRleHQgbV9jb250ZXh0OworICAgIERpc3BsYXkqIG1fZGlzcGxheTsKKyAgICBi
b29sIG1fbmVlZFRvQ2xvc2VEaXNwbGF5OworI2VuZGlmCit9OworCit9CisKKyNlbmRpZiAvLyBX
aW5kb3dHTENvbnRleHRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL1dpbmRvd0dMQ29udGV4dEdMWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ndGsvV2luZG93R0xDb250ZXh0R0xYLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTZhNGY0
MWI0ZTIzNjlmYjg2ZTYzODU5ZmY5MWUzOWMwMWU4ZjA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1dpbmRvd0dMQ29udGV4dEdMWC5jcHAK
QEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEsIFMuTC4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor
ICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXaW5kb3dHTENvbnRleHQuaCIKKworI2luY2x1ZGUgPEdML2dseC5oPgorI2luY2x1
ZGUgPGdkay9nZGsuaD4KKyNpbmNsdWRlIDxnZGsvZ2RreC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPFdpbmRvd0dMQ29udGV4
dD4gV2luZG93R0xDb250ZXh0OjpjcmVhdGVDb250ZXh0V2l0aEdka1dpbmRvdyhHZGtXaW5kb3cq
IHdpbmRvdykKK3sKKyAgICBPd25QdHI8V2luZG93R0xDb250ZXh0PiBjb250ZXh0ID0gYWRvcHRQ
dHIobmV3IFdpbmRvd0dMQ29udGV4dCh3aW5kb3cpKTsKKyAgICBpZiAoIWNvbnRleHQtPm1fY29u
dGV4dCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNvbnRleHQucmVsZWFz
ZSgpOworfQorCitXaW5kb3dHTENvbnRleHQ6OldpbmRvd0dMQ29udGV4dChHZGtXaW5kb3cqIHdp
bmRvdykKKyAgICA6IG1fd2luZG93KHdpbmRvdykKKyAgICAsIG1fY29udGV4dCgwKQorICAgICwg
bV9kaXNwbGF5KDApCisgICAgLCBtX25lZWRUb0Nsb3NlRGlzcGxheSgwKQoreworICAgIEdka0Rp
c3BsYXkqIGdka0Rpc3BsYXkgPSBnZGtfd2luZG93X2dldF9kaXNwbGF5KG1fd2luZG93KTsKKyAg
ICBpZiAoZ2RrRGlzcGxheSkKKyAgICAgICAgbV9kaXNwbGF5ID0gR0RLX0RJU1BMQVlfWERJU1BM
QVkoZ2RrRGlzcGxheSk7CisgICAgZWxzZSB7CisgICAgICAgIG1fZGlzcGxheSA9IFhPcGVuRGlz
cGxheSgwKTsKKyAgICAgICAgbV9uZWVkVG9DbG9zZURpc3BsYXkgPSB0cnVlOworICAgIH0KKwor
ICAgIFhXaW5kb3dBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CisgICAgaWYgKCFYR2V0V2luZG93QXR0
cmlidXRlcyhtX2Rpc3BsYXksIEdES19XSU5ET1dfWElEKG1fd2luZG93KSwgJmF0dHJpYnV0ZXMp
KQorICAgICAgICByZXR1cm47CisKKyAgICBYVmlzdWFsSW5mbyB2aXN1YWxJbmZvOworICAgIHZp
c3VhbEluZm8udmlzdWFsaWQgPSBYVmlzdWFsSURGcm9tVmlzdWFsKGF0dHJpYnV0ZXMudmlzdWFs
KTsKKworICAgIGludCBudW1SZXR1cm5lZCA9IDA7CisgICAgWFZpc3VhbEluZm8qIHZpc3VhbElu
Zm9MaXN0ID0gWEdldFZpc3VhbEluZm8obV9kaXNwbGF5LCBWaXN1YWxJRE1hc2ssICZ2aXN1YWxJ
bmZvLCAmbnVtUmV0dXJuZWQpOworICAgIG1fY29udGV4dCA9IGdsWENyZWF0ZUNvbnRleHQobV9k
aXNwbGF5LCB2aXN1YWxJbmZvTGlzdCwgMCwgVHJ1ZSk7CisgICAgWEZyZWUodmlzdWFsSW5mb0xp
c3QpOworfQorCitXaW5kb3dHTENvbnRleHQ6On5XaW5kb3dHTENvbnRleHQoKQoreworICAgIGlm
ICghbV9jb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgZ2xYTWFrZUN1cnJlbnQobV9kaXNw
bGF5LCBOb25lLCBOb25lKTsKKyAgICBnbFhEZXN0cm95Q29udGV4dChtX2Rpc3BsYXksIG1fY29u
dGV4dCk7CisKKyAgICBpZiAobV9uZWVkVG9DbG9zZURpc3BsYXkpCisgICAgICAgIFhDbG9zZURp
c3BsYXkobV9kaXNwbGF5KTsKK30KKwordm9pZCBXaW5kb3dHTENvbnRleHQ6OnN0YXJ0RHJhd2lu
ZygpCit7CisgICAgZ2xYTWFrZUN1cnJlbnQobV9kaXNwbGF5LCBHREtfV0lORE9XX1hJRChtX3dp
bmRvdyksIG1fY29udGV4dCk7Cit9CisKK3ZvaWQgV2luZG93R0xDb250ZXh0OjpmaW5pc2hEcmF3
aW5nKCkKK3sKKyAgICBnbFhTd2FwQnVmZmVycyhtX2Rpc3BsYXksIEdES19XSU5ET1dfWElEKG1f
d2luZG93KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5j
cHAKaW5kZXggZGUwNDFiZjliMThkMWRiNGFmNDNlMWY5Zjk3MTgwZTEyZDk5OTY0Yi4uYjUxNmYy
NzliY2I3ZGE5NDY4ODM2ZTIyOGQzYjFjY2E4MWZkNTgzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5j
cHAKQEAgLTMwLDggKzMwLDExIEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCi0jaWYgUExBVEZPUk0oUVQpCisjaWYgUExBVEZPUk0o
UVQpIHx8IFBMQVRGT1JNKEdUSykKICNpbmNsdWRlIDxjYWlyby9PcGVuR0xTaGltcy5oPgorI2Vu
ZGlmCisKKyNpZiBQTEFURk9STShRVCkKICNlbGlmIGRlZmluZWQoVEVYTUFQX09QRU5HTF9FU18y
KQogI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgogI2luY2x1ZGUgPEdMRVMyL2dsMmV4dC5oPgpAQCAt
NTEsNyArNTQsNyBAQAogI2luY2x1ZGUgPEdML2dseC5oPgogI2VuZGlmCiAKLSNpZiAhZGVmaW5l
ZChURVhNQVBfT1BFTkdMX0VTXzIpICYmICFQTEFURk9STShRVCkKKyNpZiAhZGVmaW5lZChURVhN
QVBfT1BFTkdMX0VTXzIpICYmICFQTEFURk9STShRVCkgJiYgIVBMQVRGT1JNKEdUSykKIGV4dGVy
biAiQyIgewogICAgIHZvaWQgZ2xVbmlmb3JtMWYoR0xpbnQsIEdMZmxvYXQpOwogICAgIHZvaWQg
Z2xVbmlmb3JtMWkoR0xpbnQsIEdMaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KaW5kZXgg
NTc2OGRiN2QxOGM1NGRhYTE5NzVlZmIzZjAxYzI2N2UwMDE5YzM0MC4uZmZkZmY1YjM1MTBlYzdi
MDdiM2ZkZGNlN2NiNDY2MTkzMDY2OTRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
R05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KQEAg
LTE4Niw2ICsxODYsNyBAQCB3ZWJraXRndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvZ29iamVjdC9XZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmggXAogCVNv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0LmggXAogCVNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0Q2x1dHRlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcCBcCiAJU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBcCiAJU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmggXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0LmgKaW5kZXggNjFjMjNiNzBjZDFlZTg2OGJiZDM4ZGJiOTA3ODZm
ODk1MmUwNTBiNS4uZWMyNDRkZjc1Njc2MmU3ZGI5Zjg1YWJhNmQxYTE0MDVlNWEwMDE2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9B
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCkBAIC0xOSw2ICsxOSw3IEBACiAjaWZuZGVm
IEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0X2gKICNkZWZpbmUgQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHRfaAogCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAi
SW50U2l6ZS5oIgpAQCAtMjYsMTUgKzI3LDE2IEBACiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5o
IgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2luY2x1ZGUgIlRleHR1cmVN
YXBwZXJOb2RlLmgiCisjaW5jbHVkZSAiV2luZG93R0xDb250ZXh0LmgiCisjZW5kaWYKIAotbmFt
ZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgR3JhcGhpY3NMYXllcjsKLX0KKyNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dCB7CitjbGFzcyBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50IHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCk7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+IGNyZWF0
ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQpAQCAtNDgsNiArNTAsMTQgQEAgcHVibGljOgogICAg
IHZvaWQgbWFya0ZvclN5bmMoKTsKICAgICB2b2lkIHN5bmNMYXllcnNUaW1lb3V0KFdlYkNvcmU6
OlRpbWVyPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0PiopOwogICAgIHZvaWQgcmVzaXpl
Um9vdExheWVyKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKyAgICBib29sIHJlbmRlckxheWVy
c1RvV2luZG93KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0KTsKKworICAgIC8vIEdy
YXBoaWNzTGF5ZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QW5pbWF0aW9uU3RhcnRl
ZChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgZG91YmxlIHRpbWUpOworICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlTeW5jUmVxdWlyZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciop
OworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXIqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
UGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdFRvUGFpbnQpOworICAg
IHZpcnR1YWwgYm9vbCBzaG93RGVidWdCb3JkZXJzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXIqKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBXZWJLaXRXZWJW
aWV3KiBtX3dlYlZpZXc7CkBAIC01Niw2ICs2NiwxMyBAQCBwcml2YXRlOgogCiAjaWYgVVNFKENM
VVRURVIpCiAgICAgR3RrV2lkZ2V0KiBtX3Jvb3RMYXllckVtYmVkZGVyOworI2VsaWYgVVNFKFRF
WFRVUkVfTUFQUEVSX0dMKQorICAgIHZvaWQgaW5pdGlhbGl6ZUlmTmVjZXNzYXJ5KCk7CisKKyAg
ICBib29sIG1faW5pdGlhbGl6ZWQ7CisgICAgV2ViQ29yZTo6VGV4dHVyZU1hcHBlck5vZGUqIG1f
cm9vdFRleHR1cmVNYXBwZXJOb2RlOworICAgIE93blB0cjxXZWJDb3JlOjpXaW5kb3dHTENvbnRl
eHQ+IG1fY29udGV4dDsKKyAgICBPd25QdHI8V2ViQ29yZTo6VGV4dHVyZU1hcHBlcj4gbV90ZXh0
dXJlTWFwcGVyOwogI2VuZGlmCiAKICAgICBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dChX
ZWJLaXRXZWJWaWV3Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dENsdXR0ZXIuY3BwIGIvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRDbHV0
dGVyLmNwcAppbmRleCA0NjU3ZWM0M2YwMTc0ODJiMzc2YTgwNzE4YTEyYWVlN2RhZTBkY2UyLi41
ZGYwNjhiODIyZmJiNGNiNjM0NGI4OTYzOTdkOThkM2Q1N2Y2OWU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dENsdXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Q2x1dHRlci5jcHAKQEAgLTExNiw2ICsxMTYsMzIgQEAg
dm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c3luY0xheWVyc1RpbWVvdXQoVGlt
ZXI8QWNjZWxlcmF0ZWRDb21wb3NpdGkKICAgICBjb3JlKG1fd2ViVmlldyktPm1haW5GcmFtZSgp
LT52aWV3KCktPnN5bmNDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5nU3ViZnJhbWVzKCk7CiB9CiAK
K3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6Om5vdGlmeUFuaW1hdGlvblN0YXJ0
ZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIGRvdWJsZSB0aW1lKQoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dDo6bm90aWZ5U3luY1JlcXVpcmVkKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKQorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0OjpwYWludENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyUGFpbnRpbmdQ
aGFzZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKK2Jvb2wgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNob3dEZWJ1Z0Jv
cmRlcnMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0OjpzaG93UmVwYWludENvdW50ZXIoY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NMYXllciopIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKENMVVRURVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0R0wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzNjFkMjM3MTZjMDUxYTY4YzkxMDhm
NmYyYWQ3OTE1ZGNjMGIzNDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEdMLmNwcApAQCAtMCww
ICsxLDE4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEsIFMuTC4KKyAqCisg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg
TUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisKKyNpbmNsdWRlICJDYWly
b1V0aWxpdGllcy5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFw
cGVyR0wuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTm9kZS5oIgorI2luY2x1ZGUgIndlYmtp
dHdlYnZpZXdwcml2YXRlLmgiCisjaW5jbHVkZSA8R0wvZ2wuaD4KKyNpbmNsdWRlIDxjYWlyby5o
PgorI2luY2x1ZGUgPGdkay9nZGsuaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQ6OkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcpCisgICAgOiBtX3dlYlZpZXcod2ViVmlldykKKyAgICAsIG1fc3luY1RpbWVy
KHRoaXMsICZBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c3luY0xheWVyc1RpbWVvdXQp
CisgICAgLCBtX2luaXRpYWxpemVkKGZhbHNlKQorICAgICwgbV9yb290VGV4dHVyZU1hcHBlck5v
ZGUoMCkKK3sKK30KKworQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6On5BY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dCgpCit7CisKK30KKwordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dDo6aW5pdGlhbGl6ZUlmTmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAobV9pbml0aWFs
aXplZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29udGV4dCA9IFdlYkNvcmU6OldpbmRvd0dM
Q29udGV4dDo6Y3JlYXRlQ29udGV4dFdpdGhHZGtXaW5kb3coZ3RrX3dpZGdldF9nZXRfd2luZG93
KEdUS19XSURHRVQobV93ZWJWaWV3KSkpOworICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlOworfQor
Citib29sIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpyZW5kZXJMYXllcnNUb1dpbmRv
dyhjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBpZiAoIW1fcm9vdFRleHR1cmVNYXBw
ZXJOb2RlIHx8ICFtX3RleHR1cmVNYXBwZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vIFdlIGluaXRpYWxpemUgdGhlIGNvbnRleHQgbGF6aWx5IGhlcmUgc28gdGhhdCB3ZSBrbm93
IHRoYXQgdGhlIEdka1dpbmRvdyByZWFsaXplZC4KKyAgICBpbml0aWFsaXplSWZOZWNlc3Nhcnko
KTsKKyAgICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9j
b250ZXh0LT5zdGFydERyYXdpbmcoKTsKKworICAgIEludFNpemUgc2l6ZSA9IG1fd2ViVmlldy0+
cHJpdi0+YmFja2luZ1N0b3JlLT5zaXplKCk7CisgICAgZ2xWaWV3cG9ydCgwLCAwLCBzaXplLndp
ZHRoKCksIHNpemUuaGVpZ2h0KCkpOworCisgICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpblBhaW50
aW5nKCk7CisgICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpbkNsaXAoVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgY2xpcFJlY3QpOworICAgIG1fcm9vdFRleHR1cmVNYXBwZXJOb2RlLT5wYWludCgpOwor
ICAgIG1fdGV4dHVyZU1hcHBlci0+ZW5kQ2xpcCgpOworICAgIG1fdGV4dHVyZU1hcHBlci0+ZW5k
UGFpbnRpbmcoKTsKKworICAgIG1fY29udGV4dC0+ZmluaXNoRHJhd2luZygpOworICAgIHJldHVy
biB0cnVlOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjphdHRhY2hS
b290R3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQoreworICAgIGlm
ICghZ3JhcGhpY3NMYXllcikgeworICAgICAgICBtX3Jvb3RHcmFwaGljc0xheWVyLmNsZWFyKCk7
CisgICAgICAgIG1fcm9vdFRleHR1cmVNYXBwZXJOb2RlID0gMDsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUo
dGhpcyk7CisgICAgbV9yb290VGV4dHVyZU1hcHBlck5vZGUgPSB0b1RleHR1cmVNYXBwZXJOb2Rl
KG1fcm9vdEdyYXBoaWNzTGF5ZXIuZ2V0KCkpOworICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXItPmFk
ZENoaWxkKGdyYXBoaWNzTGF5ZXIpOworICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXItPnNldERyYXdz
Q29udGVudCh0cnVlKTsKKyAgICBtX3Jvb3RHcmFwaGljc0xheWVyLT5zZXRNYXNrc1RvQm91bmRz
KGZhbHNlKTsKKyAgICBtX3Jvb3RHcmFwaGljc0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAg
ICBtX3Jvb3RHcmFwaGljc0xheWVyLT5zZXRTaXplKGNvcmUobV93ZWJWaWV3KS0+bWFpbkZyYW1l
KCktPnZpZXcoKS0+ZnJhbWVSZWN0KCkuc2l6ZSgpKTsKKworICAgIC8vIFdlIGluaXRpYWxpemUg
dGhlIGNvbnRleHQgbGF6aWx5IGhlcmUgc28gdGhhdCB3ZSBrbm93IHRoYXQgdGhlIEdka1dpbmRv
dyByZWFsaXplZC4KKyAgICBpbml0aWFsaXplSWZOZWNlc3NhcnkoKTsKKyAgICBpZiAoIW1fY29u
dGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhlIGNvbnRleHQgbmVlZHMgdG8gYmUg
YWN0aXZlIHdoZW4gY3JlYXRpbmcgdGhlIHRleHR1cmUgbWFwcGVyLiBJdCdzIGZpbmUgdG8KKyAg
ICAvLyBhdm9pZCBjYWxsaW5nIGVuZERyYXdpbmcgaGVyZSwgYmVjYXVzZSBpdCB3aWxsIGp1c3Qg
aW5pdGlhbGl6ZSBzaGFkZXJzLgorICAgIG1fY29udGV4dC0+c3RhcnREcmF3aW5nKCk7CisKKyAg
ICBtX3RleHR1cmVNYXBwZXIgPSBUZXh0dXJlTWFwcGVyR0w6OmNyZWF0ZSgpOworICAgIG1fdGV4
dHVyZU1hcHBlci0+c2V0Vmlld3BvcnRTaXplKGNvcmUobV93ZWJWaWV3KS0+bWFpbkZyYW1lKCkt
PnZpZXcoKS0+ZnJhbWVSZWN0KCkuc2l6ZSgpKTsKKyAgICBtX3Jvb3RUZXh0dXJlTWFwcGVyTm9k
ZS0+c2V0VGV4dHVyZU1hcHBlcihtX3RleHR1cmVNYXBwZXIuZ2V0KCkpOworICAgIG1fcm9vdEdy
YXBoaWNzTGF5ZXItPnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOworfQor
Cit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzY2hlZHVsZVJvb3RMYXllclJl
cGFpbnQoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoIW1fcm9vdEdyYXBoaWNzTGF5
ZXIpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAocmVjdCA9PSBJbnRSZWN0KCkpCisgICAgICAg
IG1fcm9vdEdyYXBoaWNzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOworICAgIG1fcm9vdEdyYXBo
aWNzTGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsKK30KKwordm9pZCBBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dDo6cmVzaXplUm9vdExheWVyKGNvbnN0IEludFNpemUmIHNp
emUpCit7CisgICAgaWYgKCFtX3Jvb3RHcmFwaGljc0xheWVyKQorICAgICAgICByZXR1cm47Cisg
ICAgbV9yb290R3JhcGhpY3NMYXllci0+c2V0U2l6ZShzaXplKTsKKyAgICBtX3Jvb3RHcmFwaGlj
c0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICBtX3RleHR1cmVNYXBwZXItPnNldFZpZXdw
b3J0U2l6ZShzaXplKTsKK30KKwordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6
bWFya0ZvclN5bmMoKQoreworICAgIGlmIChtX3N5bmNUaW1lci5pc0FjdGl2ZSgpKQorICAgICAg
ICByZXR1cm47CisgICAgbV9zeW5jVGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzeW5jTGF5ZXJzVGltZW91dChUaW1lcjxBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dD4qKQoreworICAgIGlmIChtX3Jvb3RHcmFwaGljc0xh
eWVyKQorICAgICAgICBtX3Jvb3RHcmFwaGljc0xheWVyLT5zeW5jQ29tcG9zaXRpbmdTdGF0ZUZv
clRoaXNMYXllck9ubHkoKTsKKworICAgIGNvcmUobV93ZWJWaWV3KS0+bWFpbkZyYW1lKCktPnZp
ZXcoKS0+c3luY0NvbXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJmcmFtZXMoKTsKKworICAgIGlm
ICghbV9yb290R3JhcGhpY3NMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgZ3RrX3dpZGdl
dF9xdWV1ZV9kcmF3KEdUS19XSURHRVQobV93ZWJWaWV3KSk7CisKKyAgICBpZiAodG9UZXh0dXJl
TWFwcGVyTm9kZShtX3Jvb3RHcmFwaGljc0xheWVyLmdldCgpKS0+ZGVzY2VuZGFudHNPclNlbGZI
YXZlUnVubmluZ0FuaW1hdGlvbnMoKSkKKyAgICAgICAgbV9zeW5jVGltZXIuc3RhcnRPbmVTaG90
KDEuMCAvIDYwLjApOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpu
b3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBkb3Vi
bGUgdGltZSkKK3sKKworfQordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6bm90
aWZ5U3luY1JlcXVpcmVkKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKQoreworCit9CisK
K3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnBhaW50Q29udGVudHMoY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgV2ViQ29yZTo6R3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHJlY3RUb1BhaW50KQoreworICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKS0+Y3IoKTsKKyAgICBjb3B5UmVjdEZyb21DYWlyb1N1cmZhY2VUb0NvbnRleHQo
bV93ZWJWaWV3LT5wcml2LT5iYWNraW5nU3RvcmUtPmNhaXJvU3VyZmFjZSgpLCBjciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50U2l6ZSgpLCByZWN0VG9QYWludCk7
Cit9CisKK2Jvb2wgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNob3dEZWJ1Z0JvcmRl
cnMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIGNvbnN0Cit7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzaG93UmVwYWlu
dENvdW50ZXIoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIGNvbnN0Cit7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCmluZGV4IGI0NTRhZjQ3ZGJlMDA1OTM4Mzhi
YTM0YWEyNDM0Y2JkYjQ4ZDA4NjkuLmI0MmQ4NmVkMzMxYWZlNmEyYTExNGFiZWY3YjcyYjcxNDZm
NGRkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmNwcApAQCAtNTMzLDkgKzUzMywxMyBAQCB2b2lkIENocm9tZUNsaWVudDo6
cGVyZm9ybUFsbFBlbmRpbmdTY3JvbGxzKCkKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
cmVjdHNUb1Njcm9sbC5zaXplKCk7IGkrKykgewogICAgICAgICBJbnRSZWN0JiBzY3JvbGxSZWN0
ID0gbV9yZWN0c1RvU2Nyb2xsW2ldOwogICAgICAgICBtX3dlYlZpZXctPnByaXYtPmJhY2tpbmdT
dG9yZS0+c2Nyb2xsKHNjcm9sbFJlY3QsIG1fc2Nyb2xsT2Zmc2V0c1tpXSk7CisKICAgICAgICAg
Z3RrX3dpZGdldF9xdWV1ZV9kcmF3X2FyZWEoR1RLX1dJREdFVChtX3dlYlZpZXcpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxSZWN0LngoKSwgc2Nyb2xsUmVjdC55
KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFJlY3Qud2lkdGgo
KSwgc2Nyb2xsUmVjdC5oZWlnaHQoKSk7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQorICAgICAgICBtX3dlYlZpZXctPnByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
LT5zY2hlZHVsZVJvb3RMYXllclJlcGFpbnQoc2Nyb2xsUmVjdCk7CisjZW5kaWYKICAgICB9CiAK
ICAgICBtX3JlY3RzVG9TY3JvbGwuY2xlYXIoKTsKQEAgLTU2NSw2ICs1NjksMTAgQEAgdm9pZCBD
aHJvbWVDbGllbnQ6OnBhaW50KFdlYkNvcmU6OlRpbWVyPENocm9tZUNsaWVudD4qKQogICAgIGNv
bnN0IEludFJlY3QmIHJlY3QgPSBtX2RpcnR5UmVnaW9uLmJvdW5kcygpOwogICAgIGd0a193aWRn
ZXRfcXVldWVfZHJhd19hcmVhKEdUS19XSURHRVQobV93ZWJWaWV3KSwgcmVjdC54KCksIHJlY3Qu
eSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwogCisjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQorICAgIG1fd2ViVmlldy0+cHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQtPnNjaGVkdWxlUm9vdExheWVyUmVwYWludChyZWN0KTsKKyNlbmRpZgorCiAgICAg
SGFzaFNldDxHdGtXaWRnZXQqPiBjaGlsZHJlbiA9IG1fd2ViVmlldy0+cHJpdi0+Y2hpbGRyZW47
CiAgICAgSGFzaFNldDxHdGtXaWRnZXQqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY2hpbGRyZW4u
ZW5kKCk7CiAgICAgZm9yIChIYXNoU2V0PEd0a1dpZGdldCo+Ojpjb25zdF9pdGVyYXRvciBjdXJy
ZW50ID0gY2hpbGRyZW4uYmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKaW5kZXggNmIy
NjBjMjlhMmU1ZDIzMDlhNDg0ODdkOWZmY2UwYWZkZTE3ZWIwNS4uMWFmZmU1MzAxMDM5NzFlM2Zj
NDM2MTczYzlhNGQyYmMyYWJjNWJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vic2V0dGluZ3MuY3BwCkBAIC0xMTksNyArMTE5LDggQEAgZW51bSB7CiAgICAgUFJP
UF9FTkFCTEVfRlVMTFNDUkVFTiwKICAgICBQUk9QX0VOQUJMRV9ETlNfUFJFRkVUQ0hJTkcsCiAg
ICAgUFJPUF9FTkFCTEVfV0VCR0wsCi0gICAgUFJPUF9FTkFCTEVfV0VCX0FVRElPCisgICAgUFJP
UF9FTkFCTEVfV0VCX0FVRElPLAorICAgIFBST1BfRU5BQkxFX0FDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HCiB9OwogCiAvLyBDcmVhdGUgYSBkZWZhdWx0IHVzZXIgYWdlbnQgc3RyaW5nCkBAIC04OTks
NiArOTAwLDIzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdChX
ZWJLaXRXZWJTZXR0aW5nc0NsYXNzKiBrbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgV2ViR0wgY29udGVudCBz
aG91bGQgYmUgcmVuZGVyZWQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICog
V2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nOgorICAgICoK
KyAgICAqIEVuYWJsZSBvciBkaXNhYmxlIHN1cHBvcnQgZm9yIGFjY2VsZXJhdGVkIGNvbXBvc2l0
aW5nIG9uIHBhZ2VzLiBBY2NlbGVyYXRlZAorICAgICogY29tcG9zaXRpbmcgdXNlcyB0aGUgR1BV
IHRvIHJlbmRlciBhbmltYXRpb25zIG9uIHBhZ2VzIHNtb290aGx5IGFuZCBhbHNvIGFsbG93cwor
ICAgICogcHJvcHJlIHJlbmRlcmluZyBvZiAzRCBDU1MgdHJhbnNmb3Jtcy4KKyAgICAqCisgICAg
KiBTaW5jZTogMS43LjUKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBS
T1BfRU5BQkxFX0FDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1hY2NlbGVyYXRlZC1j
b21wb3NpdGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfKCJFbmFibGUgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmciKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldo
ZXRoZXIgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgc2hvdWxkIGJlIGVuYWJsZWQiKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbGFncykpOwogICAgIC8qKgogICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLXdlYmF1
ZGlvOgogICAgICoKQEAgLTExMDcsNiArMTEyNSw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
c2V0dGluZ3Nfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgY29u
CiAgICAgY2FzZSBQUk9QX0VOQUJMRV9XRUJfQVVESU86CiAgICAgICAgIHByaXYtPmVuYWJsZVdl
YkF1ZGlvID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CiAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9FTkFCTEVfQUNDRUxFUkFURURfQ09NUE9TSVRJTkc6CisgICAgICAgIHByaXYt
PmVuYWJsZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmcgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVl
KTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9J
TlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgICBicmVh
azsKQEAgLTEyNjksNiArMTI5MCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
Z2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhCiAgICAgY2Fz
ZSBQUk9QX0VOQUJMRV9XRUJfQVVESU86CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFs
dWUsIHByaXYtPmVuYWJsZVdlYkF1ZGlvKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9Q
X0VOQUJMRV9BQ0NFTEVSQVRFRF9DT01QT1NJVElORzoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9v
bGVhbih2YWx1ZSwgcHJpdi0+ZW5hYmxlQWNjZWxlcmF0ZWRDb21wb3NpdGluZyk7CisgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9Q
RVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmgKaW5k
ZXggODIzYzM2ZWM5Yjg5ZWQ3ZjFkZWQxMDQ2Y2M0Yjg2MGU4MmJkZGIyNC4uZDdkMDgyZTViYjNm
ZmFiYmVmNGRlYmM2YThlMTI1YWZjN2M3MjYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5nc3ByaXZhdGUuaApAQCAtNzksNiArNzksNyBAQCBz
dHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSB7CiAgICAgZ2Jvb2xlYW4gZW5hYmxlRE5T
UHJlZmV0Y2hpbmc7CiAgICAgZ2Jvb2xlYW4gZW5hYmxlV2ViZ2w7CiAgICAgZ2Jvb2xlYW4gZW5h
YmxlV2ViQXVkaW87CisgICAgZ2Jvb2xlYW4gZW5hYmxlQWNjZWxlcmF0ZWRDb21wb3NpdGluZzsK
IH07CiAKIFdFQktJVF9BUEkgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2FkZF9leHRyYV9wbHVn
aW5fZGlyZWN0b3J5KFdlYktpdFdlYlZpZXcqLCBjb25zdCBnY2hhciogZGlyZWN0b3J5KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCBhYTQzMmM1ZDQz
MGYwNTQwZWI0MTU2ZjIzNjFjN2Q1MDQ1NmQwN2ZhLi44ZGYwNzE0ODdmZDhiY2EwN2ViYWVmN2Ri
Y2Y2OTRlM2ZkMDk2N2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZp
ZXcuY3BwCkBAIC02NDQsNiArNjQ0LDEyIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3Zp
ZXdfZHJhdyhHdGtXaWRnZXQqIHdpZGdldCwgY2Fpcm9fdCogY3IpCiAgICAgaWYgKCFnZGtfY2Fp
cm9fZ2V0X2NsaXBfcmVjdGFuZ2xlKGNyLCAmY2xpcFJlY3QpKQogICAgICAgICByZXR1cm4gRkFM
U0U7CiAKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfVklFVyh3
aWRnZXQpLT5wcml2OworI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICBpZiAocHJpdi0+
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQtPnJlbmRlckxheWVyc1RvV2luZG93KGNsaXBS
ZWN0KSkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworI2VuZGlmCisKICAgICBjYWlyb19yZWN0YW5n
bGVfbGlzdF90KiByZWN0TGlzdCA9IGNhaXJvX2NvcHlfY2xpcF9yZWN0YW5nbGVfbGlzdChjcik7
CiAgICAgaWYgKHJlY3RMaXN0LT5zdGF0dXMgfHwgIXJlY3RMaXN0LT5udW1fcmVjdGFuZ2xlcykg
ewogICAgICAgICBjYWlyb19yZWN0YW5nbGVfbGlzdF9kZXN0cm95KHJlY3RMaXN0KTsKQEAgLTY1
Miw4ICs2NTgsOCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2RyYXcoR3RrV2lk
Z2V0KiB3aWRnZXQsIGNhaXJvX3QqIGNyKQogCiAgICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzOwog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVjdExpc3QtPm51bV9yZWN0YW5nbGVzOyBpKyspIHsK
LSAgICAgICAgY29weVJlY3RGcm9tQ2Fpcm9TdXJmYWNlVG9Db250ZXh0KFdFQktJVF9XRUJfVklF
Vyh3aWRnZXQpLT5wcml2LT5iYWNraW5nU3RvcmUtPmNhaXJvU3VyZmFjZSgpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3IsIEludFNpemUoKSwgZW5jbG9zaW5n
SW50UmVjdChGbG9hdFJlY3QocmVjdExpc3QtPnJlY3RhbmdsZXNbaV0pKSk7CisgICAgICAgIGNv
cHlSZWN0RnJvbUNhaXJvU3VyZmFjZVRvQ29udGV4dChwcml2LT5iYWNraW5nU3RvcmUtPmNhaXJv
U3VyZmFjZSgpLCBjciwgSW50U2l6ZSgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KHJlY3RMaXN0LT5yZWN0YW5n
bGVzW2ldKSkpOwogICAgIH0KICAgICBjYWlyb19yZWN0YW5nbGVfbGlzdF9kZXN0cm95KHJlY3RM
aXN0KTsKIApAQCAtOTc1LDYgKzk4MSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19y
ZWFsaXplKEd0a1dpZGdldCogd2lkZ2V0KQogICAgIGF0dHJpYnV0ZXNfbWFzayB8PSBHREtfV0Ff
Q09MT1JNQVA7CiAjZW5kaWYKICAgICBHZGtXaW5kb3cqIHdpbmRvdyA9IGdka193aW5kb3dfbmV3
KGd0a193aWRnZXRfZ2V0X3BhcmVudF93aW5kb3cod2lkZ2V0KSwgJmF0dHJpYnV0ZXMsIGF0dHJp
YnV0ZXNfbWFzayk7CisgICAgZ2RrX3dpbmRvd19lbnN1cmVfbmF0aXZlKHdpbmRvdyk7CiAgICAg
Z3RrX3dpZGdldF9zZXRfd2luZG93KHdpZGdldCwgd2luZG93KTsKICAgICBnZGtfd2luZG93X3Nl
dF91c2VyX2RhdGEod2luZG93LCB3aWRnZXQpOwogCkBAIC0zMTE1LDYgKzMxMjIsMTAgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3KQogICAgIGNvcmVTZXR0aW5ncy0+c2V0V2ViR0xFbmFibGVkKHNldHRpbmdzUHJpdmF0
ZS0+ZW5hYmxlV2ViZ2wpOwogI2VuZGlmCiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCisgICAgY29yZVNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChz
ZXR0aW5nc1ByaXZhdGUtPmVuYWJsZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmcpOworI2VuZGlmCisK
ICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIGNvcmVTZXR0aW5ncy0+c2V0V2ViQXVkaW9FbmFi
bGVkKHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlV2ViQXVkaW8pOwogI2VuZGlmCkBAIC0zMjQ3LDYg
KzMyNTgsMTEgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldHRpbmdzX25vdGlmeShX
ZWJLaXRXZWJTZXR0aW5ncyogd2ViU2V0dGluZ3MsIEdQYXIKICAgICAgICAgc2V0dGluZ3MtPnNl
dFdlYkdMRW5hYmxlZChnX3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOwogI2VuZGlmCiAKKyNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgZWxzZSBpZiAobmFtZSA9PSBnX2lu
dGVybl9zdHJpbmcoImVuYWJsZS1hY2NlbGVyYXRlZC1jb21wb3NpdGluZyIpKQorICAgICAgICBz
ZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoZ192YWx1ZV9nZXRfYm9v
bGVhbigmdmFsdWUpKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICBlbHNl
IGlmIChuYW1lID09IGdfaW50ZXJuX3N0cmluZygiZW5hYmxlLXdlYmF1ZGlvIikpCiAgICAgICAg
IHNldHRpbmdzLT5zZXRXZWJBdWRpb0VuYWJsZWQoZ192YWx1ZV9nZXRfYm9vbGVhbigmdmFsdWUp
KTsKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxNTkyNDY2NzgyMzQ3
NDM4NzYxZDJmNWNlYjBiOTQzOTEyYWQ2NGQ4Li44NjM2ZGVhZjUxYmNlYzlkYjQyMGVlMGY4NDk3
YjBjYTZmZTllMTY5IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTItMDEtMjkgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2Fs
aWEuY29tPiBhbmQgTmF5YW4gS3VtYXIgSyAgPG5heWFua2tAbW90b3JvbGEuY29tPgorCisgICAg
ICAgIFtHVEtdIEFkZCBUZXh0dXJlTWFwcGVyR0wgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1MzA4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogVGV4
dHVyZU1hcHBlckdMIGltcGxpZXMgVVNFKFRFWFRVUkVfTUFQUEVSKQorICAgICAgICAqIGNvbmZp
Z3VyZS5hYzogT25seSBhbGxvdyBlbmFibGluZyB0aGUgR0wgdmVyc2lvbiBvZiBUZXh0dXJlTWFw
cGVyIG9uIFgxMS4KKwogMjAxMi0wMS0yNSAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxr
ZW5uZXRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBJbXBsZW1lbnQgdGFwIGZlZWRiYWNr
IHJlc3BlY3RpbmcgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yCmRpZmYgLS1naXQgYS9HTlVt
YWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4IGM5N2VmMzJlN2U5OTQ0Zjc3OTRhNGE5
ZWMwY2Y5ZDdkYWVjNGIyMzcuLjg4Y2I1NzgyOGVmZTc4MGFlYjMyNzVhYzE2NzdiYjY3YThiMzFm
ZDMgMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1ha2VmaWxlLmFtCkBAIC0x
NzgsMTEgKzE3OCwxMyBAQCBlbmRpZgogCiBpZiBVU0VfVEVYVFVSRV9NQVBQRVJfQ0FJUk8KIGds
b2JhbF9jcHBmbGFncyArPSBcCisJLURXVEZfVVNFX1RFWFRVUkVfTUFQUEVSPTEgXAogCS1EV1RG
X1VTRV9URVhUVVJFX01BUFBFUl9DQUlSTz0xCiBlbmRpZgogCiBpZiBVU0VfVEVYVFVSRV9NQVBQ
RVJfR0wKIGdsb2JhbF9jcHBmbGFncyArPSBcCisJLURXVEZfVVNFX1RFWFRVUkVfTUFQUEVSPTEg
XAogCS1EV1RGX1VTRV9URVhUVVJFX01BUFBFUl9HTD0xCiBlbmRpZgogCmRpZmYgLS1naXQgYS9j
b25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggYjAyNTZmMzgwMmQ1Yzk3ODJiNDNkOTEw
MmJmMWE1MGNmZTU3ZDkyZS4uYjk5NmViNTBmYjM2MGQ2OGZjNDBjMDE2ZThhMDkwNWRiZWU1NTVl
ZCAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMzk3LDcg
KzM5NywxMSBAQCBBQ19BUkdfV0lUSChhY2NlbGVyYXRlZF9jb21wb3NpdGluZywKICAgICAgICAg
ICAgIFtdLCBbd2l0aF9hY2NlbGVyYXRlZF9jb21wb3NpdGluZz0ibm8iXSkKIEFDX01TR19SRVNV
TFQoWyR3aXRoX2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nXSkKIAotaWYgdGVzdCAiJGVuYWJsZV93
ZWJnbCIgPSAieWVzIiB8fCAgdGVzdCAiJHdpdGhfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmciID0g
Im9wZW5nbCIgOyB0aGVuCitpZiB0ZXN0ICIkd2l0aF9hY2NlbGVyYXRlZF9jb21wb3NpdGluZyIg
PSAib3BlbmdsIiAmJiB0ZXN0ICIkd2l0aF90YXJnZXQiICE9ICJ4MTEiIDsgdGhlbgorICAgIEFD
X01TR19FUlJPUihbT3BlbkdMIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGlzIG9ubHkgYXZhaWxh
YmxlIG9uIFgxMSBjdXJyZW50bHkuXSkKK2ZpCisKK2lmIHRlc3QgIiRlbmFibGVfd2ViZ2wiID0g
InllcyIgfHwgIHRlc3QgIiR3aXRoX2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nIiAhPSAib3Blbmds
IiA7IHRoZW4KICAgICBBQ19DSEVDS19IRUFERVJTKFtHTC9nbC5oXSwgW10sIEFDX01TR19FUlJP
UihbT3BlbkdMIGhlYWRlciBub3QgZm91bmRdKSkKICAgICBBQ19DSEVDS19IRUFERVJTKFtHTC9n
bHguaF0sIFtdLCBBQ19NU0dfRVJST1IoW0dMWCBoZWFkZXIgbm90IGZvdW5kXSkpCiAgICAgT1BF
TkdMX0xJQlM9Ii1sR0wgLWxkbCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125550</attachid>
            <date>2012-02-05 18:56:05 -0800</date>
            <delta_ts>2012-02-05 19:12:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75308-20120205185604.patch</filename>
            <type>text/plain</type>
            <size>45337</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y3YTUzY2FjNzNkNjgy
ZDU5Y2JjZWUyNGJhOWVmNGM0MzM5ZTQ5Ny4uYzM3NDlkM2Y0Y2Y2YTBmNWNmYTEyMDExMDcxYmI5
ZGU5N2FiNzM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAyLTA0ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4gYW5kIE5heWFuIEt1bWFyIEsgIDxu
YXlhbmtrQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgVGV4dHVyZU1hcHBlckdM
IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NTMwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyB3aWxsIGJlIGNvdmVyZWQgYnkgYWNjZWxlcmF0ZWQg
Y29tcG9zaXRpbmcgYW5kCisgICAgICAgIDNEIENTUyB0cmFuc2Zvcm0gdGVzdHMgZXZlbnR1YWxs
eS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZGVkIHNvbWUgZmlsZXMgbmVj
ZXNzYXJ5IHRvIGJ1aWxkIFRleHR1cmVNYXBwZXJHTC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9UZXh0dXJlTWFwcGVyR0xDYWlyby5jcHA6IEFkZGVkIGltcGxlbWVudGF0aW9u
cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9UZXh0dXJlTWFwcGVyR0xDYWly
by5oOiBVcGRhdGVkIG1lbWJlciBsaXN0LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0
ay9XaW5kb3dHTENvbnRleHQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3RrL1dpbmRvd0dMQ29udGV4dEdMWC5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwOiBVc2UgdGhlIEdMIHNoaW1zIG9uIEdU
Sy4KKwogMjAxMi0wMi0wMyAgQW5kcmVhcyBLbGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgS2lsbCBwZXItQXR0cmlidXRlIHN0eWxlIGRlY2xhcmF0aW9ucy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0No
YW5nZUxvZwppbmRleCAyZGJjZGQzM2ZiMzBiODlkMmQwNjY3MWRhZTZhYTNmMjkwOTUwMzZiLi43
MmE3MTYxMmIxNzI2YzMzNGIzMjcxM2UwZDJlMzIyZTg4YjYzNTkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMDItMDQgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNv
bkBpZ2FsaWEuY29tPiBhbmQgTmF5YW4gS3VtYXIgSyAgPG5heWFua2tAbW90b3JvbGEuY29tPgor
CisgICAgICAgIFtHVEtdIEFkZCBUZXh0dXJlTWFwcGVyR0wgaW1wbGVtZW50YXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1MzA4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5h
bTogQWRkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wgdG8gdGhlIGxpc3QuCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaDoKKyAg
ICAgICAgKEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KTogQWRkZWQgc29tZSBtZW1iZXJz
IGZvciBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEdMLgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Q2x1dHRlci5jcHA6IEFkZGVkIGVt
cHR5IGltcGxlbWVudGF0aW9ucworICAgICAgICBmb3IgR3JhcGhpY3NMYXllckNsaWVudC4gVGhp
cyBpcyBvbmx5IHVzZWQgZm9yIHRoZSBHTCB2YXJpYW50LgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
aHJvbWVDbGllbnQ6OnBlcmZvcm1BbGxQZW5kaW5nU2Nyb2xscyk6IFVwZGF0ZSB0aGUgcm9vdCBs
YXllciB3aGlsZSBzY3JvbGxpbmcuCisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6cGFp
bnQpOiBVcGRhdGUgdGhlIHJvb3QgbGF5ZXIgYWZ0ZXIgcGFpbnRpbmcuCisgICAgICAgICogd2Vi
a2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcDogQWRkZWQgYW4gZW5hYmxlLWFjY2VsZXJhdGVkLWNv
bXBvc2l0aW5nIHNldHRpbmcuCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzcHJp
dmF0ZS5oOiBEaXR0by4KKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAg
ICAgICh3ZWJraXRfd2ViX3ZpZXdfZHJhdyk6IENhbGwgaW50byBUZXh0dXJlTWFwcGVyIG5vdy4K
KyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19yZWFsaXplKTogVXNlIGdka193aW5kb3dfZW5zdXJl
X25hdGl2ZSBoZXJlLgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6
IFN1cHBvcnQgdGhlIG5ldyBlbmFibGUtYWNjZWxlcmF0ZWQtY29tcG9zaXRpbmcgc2V0dGluZy4K
KyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3RpZnkpOiBEaXR0by4KKwogMjAx
Mi0wMi0wMiAgS2FsZXYgTGVtYmVyICA8a2FsZXZsZW1iZXJAZ21haWwuY29tPgogCiAgICAgICAg
IFtHVEtdIERvbid0IHVzZSB1aW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA5
NGUwNWUxMzAzNTgyZDcyNDNjOGY2NDc0NWNiYTFiMDBiZDk1YWYwLi4xMjU1MjYzZjQxYTE2Mzcw
YzhlZjFlM2NhYjljMWYyMGUxMzNmNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTU3NTUsMTMgKzU3NTUsMTMgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyQW5pbWF0aW9uLmggXAotICAgICAgICBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcCBcCi0gICAgICAgIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIu
aCBcCi0gICAgICAgIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTm9kZS5jcHAgXAotICAgICAgICBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZm
ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJOb2RlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJOb2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCiB3ZWJjb3JlZ3RrX3NvdXJjZXMg
Kz0gXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RleHR1cmVNYXBw
ZXJHTENhaXJvLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
VGV4dHVyZU1hcHBlckdMQ2Fpcm8uaAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9XaW5kb3dHTENvbnRleHRHTFguY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ndGsvV2luZG93R0xDb250ZXh0LmgKIGVuZGlmICAjIEVORCBVU0VfVEVYVFVSRV9N
QVBQRVJfR0wKIGVuZGlmICAjIFVTRV9BQ0NFTEVSQVRFRF9DT01QT1NJVElORwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVGV4dHVyZU1hcHBlckdM
Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVGV4dHVy
ZU1hcHBlckdMQ2Fpcm8uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzcxYjY2
MTRjYTIwYTk2ZGExZGMyMWU2Y2Y3NjI3YTBiMTk1MTgyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL1RleHR1cmVNYXBwZXJHTENhaXJvLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQ2hhbmdTZW9rIE9oIDxzaGl2YW1pZG93
QGdtYWlsLmNvbT4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgot
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJH
TENhaXJvLmgiCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLUJHUkEzMlByZW11bHRpbXBsaWVkQnVmZmVyQ2Fpcm86OkJHUkEzMlByZW11bHRp
bXBsaWVkQnVmZmVyQ2Fpcm8oKQotICAgIDogbV9jb250ZXh0KDApCi0gICAgLCBtX2NhaXJvQ29u
dGV4dCgwKQotICAgICwgbV9jYWlyb1N1cmZhY2UoMCkgCi17Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLX0KLQotQkdSQTMyUHJlbXVsdGltcGxpZWRCdWZmZXJDYWlybzo6fkJHUkEzMlByZW11bHRp
bXBsaWVkQnVmZmVyQ2Fpcm8oKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLVBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0KiBCR1JBMzJQcmVtdWx0aW1wbGllZEJ1ZmZlckNhaXJvOjpiZWdp
blBhaW50KGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgYm9vbCBvcGFxdWUpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCogQkdSQTMyUHJlbXVsdGlt
cGxpZWRCdWZmZXJDYWlybzo6ZGF0YSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gMDsKLX0KLQotdm9pZCBCR1JBMzJQcmVtdWx0aW1wbGllZEJ1ZmZlckNhaXJvOjplbmRQ
YWludCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdWludDY0X3QgdWlkRm9ySW1h
Z2UoSW1hZ2UqIGltYWdlKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7
Ci19Ci0KLVBhc3NPd25QdHI8QkdSQTMyUHJlbXVsdGltcGxpZWRCdWZmZXI+IEJHUkEzMlByZW11
bHRpbXBsaWVkQnVmZmVyOjpjcmVhdGUoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBCR1JBMzJQcmVtdWx0aW1wbGllZEJ1ZmZlckNhaXJvKCkpOwot
fQotCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vVGV4dHVyZU1hcHBlckdMQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL1RleHR1cmVNYXBwZXJHTENhaXJvLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDYxODgwNmQ3NTNlNWM1ZTNiOGU5MmE4OTZkMGFkNjU1MjczZjk5MGUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVGV4dHVyZU1hcHBlckdMQ2Fpcm8uaAorKysgL2Rldi9udWxs
CkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQ2hhbmdTZW9rIE9o
IDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBUZXh0dXJlTWFwcGVyR0xDYWlyb19oCi0j
ZGVmaW5lIFRleHR1cmVNYXBwZXJHTENhaXJvX2gKLQotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJH
TC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEJHUkEzMlByZW11bHRpbXBsaWVk
QnVmZmVyQ2Fpcm86IHB1YmxpYyBCR1JBMzJQcmVtdWx0aW1wbGllZEJ1ZmZlciB7Ci1wdWJsaWM6
Ci0gICAgQkdSQTMyUHJlbXVsdGltcGxpZWRCdWZmZXJDYWlybygpOwotICAgIHZpcnR1YWwgfkJH
UkEzMlByZW11bHRpbXBsaWVkQnVmZmVyQ2Fpcm8oKTsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0KiBiZWdpblBhaW50KGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgYm9vbCBv
cGFxdWUpOwotICAgIHZpcnR1YWwgdm9pZCBlbmRQYWludCgpOyAKLSAgICB2aXJ0dWFsIHZvaWQq
IGRhdGEoKTsgCi0KLXByaXZhdGU6Ci0gICAgUGxhdGZvcm1Db250ZXh0Q2Fpcm8qIG1fY29udGV4
dDsKLSAgICBjYWlyb190KiBtX2NhaXJvQ29udGV4dDsKLSAgICBjYWlyb19zdXJmYWNlX3QqIG1f
Y2Fpcm9TdXJmYWNlOwotfTsKLQotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2luZG93R0xDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2luZG93R0xDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTYy
MzU2ODM1NjQ3Nzk0NjRhY2NkODQ3YmRlNWIxMDlkNjFlMDI0NwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9XaW5kb3dHTENvbnRleHQuaApA
QCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKyAqICBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaWZuZGVmIFdpbmRvd0dMQ29udGV4
dF9oCisjZGVmaW5lIFdpbmRvd0dMQ29udGV4dF9oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCisjaWYgZGVmaW5lZChYUF9VTklY
KQordHlwZWRlZiBzdHJ1Y3QgX19HTFhjb250ZXh0UmVjKiBHTFhDb250ZXh0OwordHlwZWRlZiBz
dHJ1Y3QgX1hEaXNwbGF5IERpc3BsYXk7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBXaW5kb3dHTENvbnRleHQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdpbmRv
d0dMQ29udGV4dCk7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2luZG93R0xDb250
ZXh0PiBjcmVhdGVDb250ZXh0V2l0aEdka1dpbmRvdyhHZGtXaW5kb3cqKTsKKyAgICB2aXJ0dWFs
IH5XaW5kb3dHTENvbnRleHQoKTsKKyAgICB2b2lkIHN0YXJ0RHJhd2luZygpOworICAgIHZvaWQg
ZmluaXNoRHJhd2luZygpOworCitwcml2YXRlOgorICAgIFdpbmRvd0dMQ29udGV4dChHZGtXaW5k
b3cqKTsKKyAgICBHZGtXaW5kb3cqIG1fd2luZG93OworCisjaWYgZGVmaW5lZChYUF9VTklYKQor
ICAgIEdMWENvbnRleHQgbV9jb250ZXh0OworICAgIERpc3BsYXkqIG1fZGlzcGxheTsKKyAgICBi
b29sIG1fbmVlZFRvQ2xvc2VEaXNwbGF5OworI2VuZGlmCit9OworCit9CisKKyNlbmRpZiAvLyBX
aW5kb3dHTENvbnRleHRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL1dpbmRvd0dMQ29udGV4dEdMWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ndGsvV2luZG93R0xDb250ZXh0R0xYLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTZhNGY0
MWI0ZTIzNjlmYjg2ZTYzODU5ZmY5MWUzOWMwMWU4ZjA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1dpbmRvd0dMQ29udGV4dEdMWC5jcHAK
QEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEsIFMuTC4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor
ICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXaW5kb3dHTENvbnRleHQuaCIKKworI2luY2x1ZGUgPEdML2dseC5oPgorI2luY2x1
ZGUgPGdkay9nZGsuaD4KKyNpbmNsdWRlIDxnZGsvZ2RreC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPFdpbmRvd0dMQ29udGV4
dD4gV2luZG93R0xDb250ZXh0OjpjcmVhdGVDb250ZXh0V2l0aEdka1dpbmRvdyhHZGtXaW5kb3cq
IHdpbmRvdykKK3sKKyAgICBPd25QdHI8V2luZG93R0xDb250ZXh0PiBjb250ZXh0ID0gYWRvcHRQ
dHIobmV3IFdpbmRvd0dMQ29udGV4dCh3aW5kb3cpKTsKKyAgICBpZiAoIWNvbnRleHQtPm1fY29u
dGV4dCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNvbnRleHQucmVsZWFz
ZSgpOworfQorCitXaW5kb3dHTENvbnRleHQ6OldpbmRvd0dMQ29udGV4dChHZGtXaW5kb3cqIHdp
bmRvdykKKyAgICA6IG1fd2luZG93KHdpbmRvdykKKyAgICAsIG1fY29udGV4dCgwKQorICAgICwg
bV9kaXNwbGF5KDApCisgICAgLCBtX25lZWRUb0Nsb3NlRGlzcGxheSgwKQoreworICAgIEdka0Rp
c3BsYXkqIGdka0Rpc3BsYXkgPSBnZGtfd2luZG93X2dldF9kaXNwbGF5KG1fd2luZG93KTsKKyAg
ICBpZiAoZ2RrRGlzcGxheSkKKyAgICAgICAgbV9kaXNwbGF5ID0gR0RLX0RJU1BMQVlfWERJU1BM
QVkoZ2RrRGlzcGxheSk7CisgICAgZWxzZSB7CisgICAgICAgIG1fZGlzcGxheSA9IFhPcGVuRGlz
cGxheSgwKTsKKyAgICAgICAgbV9uZWVkVG9DbG9zZURpc3BsYXkgPSB0cnVlOworICAgIH0KKwor
ICAgIFhXaW5kb3dBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CisgICAgaWYgKCFYR2V0V2luZG93QXR0
cmlidXRlcyhtX2Rpc3BsYXksIEdES19XSU5ET1dfWElEKG1fd2luZG93KSwgJmF0dHJpYnV0ZXMp
KQorICAgICAgICByZXR1cm47CisKKyAgICBYVmlzdWFsSW5mbyB2aXN1YWxJbmZvOworICAgIHZp
c3VhbEluZm8udmlzdWFsaWQgPSBYVmlzdWFsSURGcm9tVmlzdWFsKGF0dHJpYnV0ZXMudmlzdWFs
KTsKKworICAgIGludCBudW1SZXR1cm5lZCA9IDA7CisgICAgWFZpc3VhbEluZm8qIHZpc3VhbElu
Zm9MaXN0ID0gWEdldFZpc3VhbEluZm8obV9kaXNwbGF5LCBWaXN1YWxJRE1hc2ssICZ2aXN1YWxJ
bmZvLCAmbnVtUmV0dXJuZWQpOworICAgIG1fY29udGV4dCA9IGdsWENyZWF0ZUNvbnRleHQobV9k
aXNwbGF5LCB2aXN1YWxJbmZvTGlzdCwgMCwgVHJ1ZSk7CisgICAgWEZyZWUodmlzdWFsSW5mb0xp
c3QpOworfQorCitXaW5kb3dHTENvbnRleHQ6On5XaW5kb3dHTENvbnRleHQoKQoreworICAgIGlm
ICghbV9jb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgZ2xYTWFrZUN1cnJlbnQobV9kaXNw
bGF5LCBOb25lLCBOb25lKTsKKyAgICBnbFhEZXN0cm95Q29udGV4dChtX2Rpc3BsYXksIG1fY29u
dGV4dCk7CisKKyAgICBpZiAobV9uZWVkVG9DbG9zZURpc3BsYXkpCisgICAgICAgIFhDbG9zZURp
c3BsYXkobV9kaXNwbGF5KTsKK30KKwordm9pZCBXaW5kb3dHTENvbnRleHQ6OnN0YXJ0RHJhd2lu
ZygpCit7CisgICAgZ2xYTWFrZUN1cnJlbnQobV9kaXNwbGF5LCBHREtfV0lORE9XX1hJRChtX3dp
bmRvdyksIG1fY29udGV4dCk7Cit9CisKK3ZvaWQgV2luZG93R0xDb250ZXh0OjpmaW5pc2hEcmF3
aW5nKCkKK3sKKyAgICBnbFhTd2FwQnVmZmVycyhtX2Rpc3BsYXksIEdES19XSU5ET1dfWElEKG1f
d2luZG93KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5j
cHAKaW5kZXggNTg3MjkzNjNmYTI0NGVlMWM5NGI5NmM1YjNiNmFiNWVlYjM4ZGU1Ni4uNTM3YTAx
YTdmNzE4MjZkZjZiODRjMDk4NGZmMzFmYzYzODM2MTdiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5j
cHAKQEAgLTE4LDcgKzE4LDYgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNs
dWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpA
QCAtMzAsOCArMjksMTEgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAKLSNpZiBQTEFURk9STShRVCkKKyNpZiBQTEFURk9STShRVCkg
fHwgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgPGNhaXJvL09wZW5HTFNoaW1zLmg+CisjZW5kaWYK
KworI2lmIFBMQVRGT1JNKFFUKQogI2VsaWYgZGVmaW5lZChURVhNQVBfT1BFTkdMX0VTXzIpCiAj
aW5jbHVkZSA8R0xFUzIvZ2wyLmg+CiAjaW5jbHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CkBAIC01MSw3
ICs1MywxNCBAQAogI2luY2x1ZGUgPEdML2dseC5oPgogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChU
RVhNQVBfT1BFTkdMX0VTXzIpICYmICFQTEFURk9STShRVCkKKyNpZiBVU0UoQ0FJUk8pCisjaW5j
bHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2luY2x1
ZGUgPGNhaXJvLmg+CisjaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgorI2VuZGlmCisKKyNpZiAh
ZGVmaW5lZChURVhNQVBfT1BFTkdMX0VTXzIpICYmICFQTEFURk9STShRVCkgJiYgIVBMQVRGT1JN
KEdUSykKIGV4dGVybiAiQyIgewogICAgIHZvaWQgZ2xVbmlmb3JtMWYoR0xpbnQsIEdMZmxvYXQp
OwogICAgIHZvaWQgZ2xVbmlmb3JtMWkoR0xpbnQsIEdMaW50KTsKQEAgLTYwNCw3ICs2MTMsNyBA
QCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6cmVzZXQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSwgYm9v
bCBvcGFxdWUpCiAgICAgbV9zdXJmYWNlTmVlZHNSZXNldCA9IHRydWU7CiB9CiAKLQorI2lmIFBM
QVRGT1JNKFFUKQogc3RhdGljIHZvaWQgc3dpenpsZUJHUkFUb1JHQkEodWludDMyX3QqIGRhdGEs
IGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgaW50IHdpZHRoID0gc2l6ZS53aWR0aCgpOwpA
QCAtNjE1LDYgKzYyNCw3IEBAIHN0YXRpYyB2b2lkIHN3aXp6bGVCR1JBVG9SR0JBKHVpbnQzMl90
KiBkYXRhLCBjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICAgICAgcFt4XSA9ICgocFt4XSA8
PCAxNikgJiAweGZmMDAwMCkgfCAoKHBbeF0gPj4gMTYpICYgMHhmZikgfCAocFt4XSAmIDB4ZmYw
MGZmMDApOwogICAgIH0KIH0KKyNlbmRpZgogCiB2b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRl
Q29udGVudHMoY29uc3Qgdm9pZCogZGF0YSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCkKIHsK
QEAgLTYzOSw2ICs2NDksMjMgQEAgdm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRz
KEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY28KICAgICBpZiAoZm9y
bWF0ID09IEJHUkFGb3JtYXQgfHwgZm9ybWF0ID09IEJHUkZvcm1hdCkKICAgICAgICAgc3dpenps
ZUJHUkFUb1JHQkEocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHF0SW1hZ2UuYml0cygpKSwg
cXRJbWFnZS5zaXplKCkpOwogICAgIEdMX0NNRChnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8y
RCwgMCwgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3QueSgpLCB0YXJnZXRSZWN0LndpZHRoKCks
IHRhcmdldFJlY3QuaGVpZ2h0KCksIGdsRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCBxdEltYWdl
LmNvbnN0Qml0cygpKSkKKyNlbGlmIFVTRShDQUlSTykKKworI2lmICFDUFUoQklHX0VORElBTikK
KyAgICBnbEZvcm1hdCA9IGlzT3BhcXVlKCkgPyBHTF9CR1IgOiBHTF9CR1JBOworI2VuZGlmCisK
KyAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19ST1dfTEVOR1RILCBjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF9zdHJpZGUoZnJhbWVJbWFnZSkgLyA0KTsKKyAgICBnbFBpeGVsU3RvcmVpKEdMX1VO
UEFDS19TS0lQX1JPV1MsIHNvdXJjZVJlY3QueSgpKTsKKyAgICBnbFBpeGVsU3RvcmVpKEdMX1VO
UEFDS19TS0lQX1BJWEVMUywgc291cmNlUmVjdC54KCkpOworICAgIEdMX0NNRChnbFRleFN1Yklt
YWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdl
dFJlY3QueCgpLCB0YXJnZXRSZWN0LnkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRh
cmdldFJlY3Qud2lkdGgoKSwgdGFyZ2V0UmVjdC5oZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdsRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShmcmFtZUltYWdlKSkpOworICAg
IGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1JPV19MRU5HVEgsIDApOworICAgIGdsUGl4ZWxTdG9y
ZWkoR0xfVU5QQUNLX1NLSVBfUk9XUywgMCk7CisgICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tf
U0tJUF9QSVhFTFMsIDApOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Z3RrL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KaW5k
ZXggMjQ3MjIxMmU5YTUxYjZmMTRhNjk3ZjkyYzk5MTU1NjRjMGMxNWVmMS4uMWY0ZmRmMWJiMzJh
YTM1YTY1NTBkYzIzMzhhMWMxNGRlYjk3NmUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0K
QEAgLTE4NCw2ICsxODQsNyBAQCB3ZWJraXRndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmggXAog
CVNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0LmggXAogCVNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0Q2x1dHRlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wuY3BwIFwKIAlTb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcCBcCiAJU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBcCiAJU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0LmgKaW5kZXggNjFjMjNiNzBjZDFlZTg2OGJiZDM4ZGJiOTA3
ODZmODk1MmUwNTBiNS4uNDJhNWYyNGI2MWI3MTkyMTc3MzFlMTc2NTU4Mjc2ZGZiZTIwNGY1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCkBAIC0xOSw2ICsxOSw3IEBACiAjaWZu
ZGVmIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0X2gKICNkZWZpbmUgQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHRfaAogCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVk
ZSAiSW50U2l6ZS5oIgpAQCAtMjYsMTUgKzI3LDE2IEBACiAjaW5jbHVkZSAid2Via2l0d2Vidmll
dy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKLSNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2luY2x1ZGUgIlRleHR1
cmVNYXBwZXJOb2RlLmgiCisjaW5jbHVkZSAiV2luZG93R0xDb250ZXh0LmgiCisjZW5kaWYKIAot
bmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgR3JhcGhpY3NMYXllcjsKLX0KKyNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCB7CitjbGFzcyBBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dCA6IHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50IHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCk7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+IGNy
ZWF0ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQpAQCAtNDcsNyArNDksMTcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2NoZWR1bGVSb290TGF5ZXJSZXBhaW50KGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KTsKICAgICB2b2lkIG1hcmtGb3JTeW5jKCk7CiAgICAgdm9pZCBzeW5jTGF5ZXJzVGltZW91dChX
ZWJDb3JlOjpUaW1lcjxBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dD4qKTsKKyAgICB2b2lk
IHN5bmNMYXllcnNOb3coKTsKICAgICB2b2lkIHJlc2l6ZVJvb3RMYXllcihjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJik7CisgICAgYm9vbCByZW5kZXJMYXllcnNUb1dpbmRvdyhjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBjbGlwUmVjdCk7CisgICAgYm9vbCBlbmFibGVkKCk7CisKKyAgICAvLyBHcmFw
aGljc0xheWVyQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQo
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIGRvdWJsZSB0aW1lKTsKKyAgICB2aXJ0dWFs
IHZvaWQgbm90aWZ5U3luY1JlcXVpcmVkKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyKiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllclBh
aW50aW5nUGhhc2UsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3RUb1BhaW50KTsKKyAgICB2
aXJ0dWFsIGJvb2wgc2hvd0RlYnVnQm9yZGVycyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
KikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNob3dSZXBhaW50Q291bnRlcihjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0xheWVyKikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgV2ViS2l0V2ViVmll
dyogbV93ZWJWaWV3OwpAQCAtNTYsNiArNjgsMTMgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShDTFVU
VEVSKQogICAgIEd0a1dpZGdldCogbV9yb290TGF5ZXJFbWJlZGRlcjsKKyNlbGlmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkKKyAgICB2b2lkIGluaXRpYWxpemVJZk5lY2Vzc2FyeSgpOworCisgICAg
Ym9vbCBtX2luaXRpYWxpemVkOworICAgIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJOb2RlKiBtX3Jv
b3RUZXh0dXJlTWFwcGVyTm9kZTsKKyAgICBPd25QdHI8V2ViQ29yZTo6V2luZG93R0xDb250ZXh0
PiBtX2NvbnRleHQ7CisgICAgT3duUHRyPFdlYkNvcmU6OlRleHR1cmVNYXBwZXI+IG1fdGV4dHVy
ZU1hcHBlcjsKICNlbmRpZgogCiAgICAgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQoV2Vi
S2l0V2ViVmlldyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRDbHV0dGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Q2x1dHRl
ci5jcHAKaW5kZXggNDY1N2VjNDNmMDE3NDgyYjM3NmE4MDcxOGExMmFlZTdkYWUwZGNlMi4uYjUy
YjQwOWU1YWU5NThjZDIwNzE4NGM1N2RhYjMwOTlmMjg4ZTBlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRD
bHV0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dENsdXR0ZXIuY3BwCkBAIC00NSw2ICs0NSwxMSBAQCBBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6fkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
KCkKIHsKIH0KIAorYm9vbCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6ZW5hYmxlZCgp
Cit7CisgICAgcmV0dXJuIG1fcm9vdEdyYXBoaWNzTGF5ZXI7Cit9CisKIGJvb2wgQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnJlbmRlckxheWVyc1RvV2luZG93KGNhaXJvX3QqIHdpZGdl
dENyLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpA
QCAtMTE2LDYgKzEyMSwzMiBAQCB2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpz
eW5jTGF5ZXJzVGltZW91dChUaW1lcjxBY2NlbGVyYXRlZENvbXBvc2l0aQogICAgIGNvcmUobV93
ZWJWaWV3KS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c3luY0NvbXBvc2l0aW5nU3RhdGVJbmNsdWRp
bmdTdWJmcmFtZXMoKTsKIH0KIAordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6
bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgZG91
YmxlIHRpbWUpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9Cit2b2lkIEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpub3RpZnlTeW5jUmVxdWlyZWQoY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NMYXllciopCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQg
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnBhaW50Q29udGVudHMoY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllciosIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKK3sKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dDo6c2hvd0RlYnVnQm9yZGVycyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikg
Y29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNob3dSZXBhaW50Q291bnRl
cihjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBVU0UoQ0xVVFRF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRHTC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJm
YTNkMGZlZGE1ZjNkODg4OTQyOGMzZmZjNTE3MjI5YmM5NjdlNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0R0wuY3BwCkBAIC0wLDAgKzEsMjA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IElnYWxpYSwgUy5MLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq
ICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgiCisK
KyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBFUl9H
TCkKKworI2luY2x1ZGUgIkNhaXJvVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiQ2hyb21lLmgiCisj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50R3RrLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRl
ICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgorI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJOb2RlLmgiCisj
aW5jbHVkZSAid2Via2l0d2Vidmlld3ByaXZhdGUuaCIKKyNpbmNsdWRlIDxHTC9nbC5oPgorI2lu
Y2x1ZGUgPGNhaXJvLmg+CisjaW5jbHVkZSA8Z2RrL2dkay5oPgorI2luY2x1ZGUgPGd0ay9ndGsu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKKyAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQorICAg
ICwgbV9zeW5jVGltZXIodGhpcywgJkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzeW5j
TGF5ZXJzVGltZW91dCkKKyAgICAsIG1faW5pdGlhbGl6ZWQoZmFsc2UpCisgICAgLCBtX3Jvb3RU
ZXh0dXJlTWFwcGVyTm9kZSgwKQoreworfQorCitBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dDo6fkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KCkKK3sKKworfQorCit2b2lkIEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojppbml0aWFsaXplSWZOZWNlc3NhcnkoKQoreworICAg
IGlmIChtX2luaXRpYWxpemVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2luaXRpYWxpemVk
ID0gdHJ1ZTsKKworICAgIC8vIFRoZSBHVEsrIGRvY3Mgc2F5IHRoYXQgd2UgY2FuIGZhaWwgdG8g
Y3JlYXRlIGEgbmF0aXZlIHdpbmRvdy4KKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGZhbGwgYmFj
ayB0byB0aGUgSW1hZ2VCdWZmZXIgVGV4dHVyZU1hcHBlciB3aGVuIGl0IGV4aXN0cy4KKyAgICBp
ZiAoIW1fd2ViVmlldy0+cHJpdi0+aGFzTmF0aXZlV2luZG93KQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2NvbnRleHQgPSBXZWJDb3JlOjpXaW5kb3dHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRX
aXRoR2RrV2luZG93KGd0a193aWRnZXRfZ2V0X3dpbmRvdyhHVEtfV0lER0VUKG1fd2ViVmlldykp
KTsKK30KKworYm9vbCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6ZW5hYmxlZCgpCit7
CisgICAgcmV0dXJuIG1fcm9vdFRleHR1cmVNYXBwZXJOb2RlICYmIG1fdGV4dHVyZU1hcHBlcjsK
K30KKworCitib29sIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpyZW5kZXJMYXllcnNU
b1dpbmRvdyhjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKK3sKKyAgICBpZiAoIWVuYWJsZWQoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gV2UgaW5pdGlhbGl6ZSB0aGUgY29udGV4
dCBsYXppbHkgaGVyZSBzbyB0aGF0IHdlIGtub3cgdGhhdCB0aGUgR2RrV2luZG93IHJlYWxpemVk
LgorICAgIGluaXRpYWxpemVJZk5lY2Vzc2FyeSgpOworICAgIGlmICghbV9jb250ZXh0KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2NvbnRleHQtPnN0YXJ0RHJhd2luZygpOworCisg
ICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uOworICAgIGd0a193aWRnZXRfZ2V0X2FsbG9jYXRp
b24oR1RLX1dJREdFVChtX3dlYlZpZXcpLCAmYWxsb2NhdGlvbik7CisgICAgZ2xWaWV3cG9ydCgw
LCAwLCBhbGxvY2F0aW9uLndpZHRoLCBhbGxvY2F0aW9uLmhlaWdodCk7CisKKyAgICBtX3RleHR1
cmVNYXBwZXItPmJlZ2luUGFpbnRpbmcoKTsKKyAgICBtX3Jvb3RUZXh0dXJlTWFwcGVyTm9kZS0+
cGFpbnQoKTsKKyAgICBtX3RleHR1cmVNYXBwZXItPmVuZFBhaW50aW5nKCk7CisKKyAgICBtX2Nv
bnRleHQtPmZpbmlzaERyYXdpbmcoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoR3JhcGhp
Y3NMYXllciogZ3JhcGhpY3NMYXllcikKK3sKKyAgICBpZiAoIWdyYXBoaWNzTGF5ZXIpIHsKKyAg
ICAgICAgbV9yb290R3JhcGhpY3NMYXllci5jbGVhcigpOworICAgICAgICBtX3Jvb3RUZXh0dXJl
TWFwcGVyTm9kZSA9IDA7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3Jvb3RHcmFw
aGljc0xheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKHRoaXMpOworICAgIG1fcm9vdFRleHR1
cmVNYXBwZXJOb2RlID0gdG9UZXh0dXJlTWFwcGVyTm9kZShtX3Jvb3RHcmFwaGljc0xheWVyLmdl
dCgpKTsKKyAgICBtX3Jvb3RHcmFwaGljc0xheWVyLT5hZGRDaGlsZChncmFwaGljc0xheWVyKTsK
KyAgICBtX3Jvb3RHcmFwaGljc0xheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CisgICAgbV9y
b290R3JhcGhpY3NMYXllci0+c2V0TWFza3NUb0JvdW5kcyhmYWxzZSk7CisgICAgbV9yb290R3Jh
cGhpY3NMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7CisgICAgbV9yb290R3JhcGhpY3NMYXllci0+
c2V0U2l6ZShjb3JlKG1fd2ViVmlldyktPm1haW5GcmFtZSgpLT52aWV3KCktPmZyYW1lUmVjdCgp
LnNpemUoKSk7CisKKyAgICAvLyBXZSBpbml0aWFsaXplIHRoZSBjb250ZXh0IGxhemlseSBoZXJl
IHNvIHRoYXQgd2Uga25vdyB0aGF0IHRoZSBHZGtXaW5kb3cgcmVhbGl6ZWQuCisgICAgaW5pdGlh
bGl6ZUlmTmVjZXNzYXJ5KCk7CisgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIFRoZSBjb250ZXh0IG5lZWRzIHRvIGJlIGFjdGl2ZSB3aGVuIGNyZWF0aW5nIHRo
ZSB0ZXh0dXJlIG1hcHBlci4gSXQncyBmaW5lIHRvCisgICAgLy8gYXZvaWQgY2FsbGluZyBlbmRE
cmF3aW5nIGhlcmUsIGJlY2F1c2UgaXQgd2lsbCBqdXN0IGluaXRpYWxpemUgc2hhZGVycy4KKyAg
ICBtX2NvbnRleHQtPnN0YXJ0RHJhd2luZygpOworCisgICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0
aW9uOworICAgIGd0a193aWRnZXRfZ2V0X2FsbG9jYXRpb24oR1RLX1dJREdFVChtX3dlYlZpZXcp
LCAmYWxsb2NhdGlvbik7CisgICAgZ2xWaWV3cG9ydCgwLCAwLCBhbGxvY2F0aW9uLndpZHRoLCBh
bGxvY2F0aW9uLmhlaWdodCk7CisKKyAgICBtX3RleHR1cmVNYXBwZXIgPSBUZXh0dXJlTWFwcGVy
R0w6OmNyZWF0ZSgpOworICAgIG1fcm9vdFRleHR1cmVNYXBwZXJOb2RlLT5zZXRUZXh0dXJlTWFw
cGVyKG1fdGV4dHVyZU1hcHBlci5nZXQoKSk7CisgICAgbV9yb290R3JhcGhpY3NMYXllci0+c3lu
Y0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNjaGVkdWxlUm9vdExheWVyUmVwYWludChjb25zdCBJbnRS
ZWN0JiByZWN0KQoreworICAgIGlmICghbV9yb290R3JhcGhpY3NMYXllcikKKyAgICAgICAgcmV0
dXJuOworICAgIGlmIChyZWN0LmlzRW1wdHkoKSkgeworICAgICAgICBtX3Jvb3RHcmFwaGljc0xh
eWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3Jv
b3RHcmFwaGljc0xheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7Cit9CisKK3ZvaWQg
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnJlc2l6ZVJvb3RMYXllcihjb25zdCBJbnRT
aXplJiBzaXplKQoreworICAgIGlmICghbV9yb290R3JhcGhpY3NMYXllcikKKyAgICAgICAgcmV0
dXJuOworICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXItPnNldFNpemUoc2l6ZSk7CisgICAgbV9yb290
R3JhcGhpY3NMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQ6Om1hcmtGb3JTeW5jKCkKK3sKKyAgICBpZiAobV9zeW5jVGltZXIu
aXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fc3luY1RpbWVyLnN0YXJ0T25lU2hv
dCgwKTsKK30KKwordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c3luY0xheWVy
c05vdygpCit7CisgICAgaWYgKG1fcm9vdEdyYXBoaWNzTGF5ZXIpCisgICAgICAgIG1fcm9vdEdy
YXBoaWNzTGF5ZXItPnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOworCisg
ICAgY29yZShtX3dlYlZpZXcpLT5tYWluRnJhbWUoKS0+dmlldygpLT5zeW5jQ29tcG9zaXRpbmdT
dGF0ZUluY2x1ZGluZ1N1YmZyYW1lcygpOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0OjpzeW5jTGF5ZXJzVGltZW91dChUaW1lcjxBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dD4qKQoreworICAgIHN5bmNMYXllcnNOb3coKTsKKyAgICBpZiAoIW1fcm9vdEdyYXBo
aWNzTGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHJlbmRlckxheWVyc1RvV2luZG93KElu
dFJlY3QoKSk7CisKKyAgICBpZiAodG9UZXh0dXJlTWFwcGVyTm9kZShtX3Jvb3RHcmFwaGljc0xh
eWVyLmdldCgpKS0+ZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSkKKyAg
ICAgICAgbV9zeW5jVGltZXIuc3RhcnRPbmVTaG90KDEuMCAvIDYwLjApOworfQorCit2b2lkIEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBkb3VibGUgdGltZSkKK3sKKworfQordm9pZCBBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6bm90aWZ5U3luY1JlcXVpcmVkKGNvbnN0IFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXIqKQoreworCit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQ6OnBhaW50Q29udGVudHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgV2ViQ29yZTo6R3JhcGhpY3NMYXllclBh
aW50aW5nUGhhc2UsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3RUb1BhaW50KQoreworICAg
IGNhaXJvX3QqIGNyID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICBjb3B5
UmVjdEZyb21DYWlyb1N1cmZhY2VUb0NvbnRleHQobV93ZWJWaWV3LT5wcml2LT5iYWNraW5nU3Rv
cmUtPmNhaXJvU3VyZmFjZSgpLCBjciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSW50U2l6ZSgpLCByZWN0VG9QYWludCk7Cit9CisKK2Jvb2wgQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQ6OnNob3dEZWJ1Z0JvcmRlcnMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NM
YXllciopIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0OjpzaG93UmVwYWludENvdW50ZXIoY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NMYXllciopIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKaW5kZXggMTM3YjkxOGFkMWI0NDA5ZDdlNDcx
YWRmZDIyYTIyZmRmN2VlMDZhZi4uNjI5ZDRjNzU3NWU0ZTM2YzVkNjc1ZGNhNmRhNzMyZjgwOWFl
OWMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuY3BwCkBAIC01MjUsNiArNTI1LDIwIEBAIHN0YXRpYyB2b2lkIHBhaW50V2Vi
VmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBGcmFtZSogZnJhbWUsIFJlZ2lvbiBkaXJ0eVJl
Z2lvCiAgICAgZ2MucmVzdG9yZSgpOwogfQogCit2b2lkIENocm9tZUNsaWVudDo6aW52YWxpZGF0
ZVdpZGdldFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCisgICAgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQqIGFjQ29udGV4
dCA9IG1fd2ViVmlldy0+cHJpdi0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuZ2V0KCk7
CisgICAgaWYgKGFjQ29udGV4dC0+ZW5hYmxlZCgpKSB7CisgICAgICAgIGFjQ29udGV4dC0+c2No
ZWR1bGVSb290TGF5ZXJSZXBhaW50KHJlY3QpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vu
ZGlmCisgICAgZ3RrX3dpZGdldF9xdWV1ZV9kcmF3X2FyZWEoR1RLX1dJREdFVChtX3dlYlZpZXcp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QueCgpLCByZWN0LnkoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkp
OworfQorCiB2b2lkIENocm9tZUNsaWVudDo6cGVyZm9ybUFsbFBlbmRpbmdTY3JvbGxzKCkKIHsK
ICAgICBpZiAoIW1fd2ViVmlldy0+cHJpdi0+YmFja2luZ1N0b3JlKQpAQCAtNTM0LDE2ICs1NDgs
MTMgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OnBlcmZvcm1BbGxQZW5kaW5nU2Nyb2xscygpCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3JlY3RzVG9TY3JvbGwuc2l6ZSgpOyBpKyspIHsKICAg
ICAgICAgSW50UmVjdCYgc2Nyb2xsUmVjdCA9IG1fcmVjdHNUb1Njcm9sbFtpXTsKICAgICAgICAg
bV93ZWJWaWV3LT5wcml2LT5iYWNraW5nU3RvcmUtPnNjcm9sbChzY3JvbGxSZWN0LCBtX3Njcm9s
bE9mZnNldHNbaV0pOwotICAgICAgICBndGtfd2lkZ2V0X3F1ZXVlX2RyYXdfYXJlYShHVEtfV0lE
R0VUKG1fd2ViVmlldyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9s
bFJlY3QueCgpLCBzY3JvbGxSZWN0LnkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2Nyb2xsUmVjdC53aWR0aCgpLCBzY3JvbGxSZWN0LmhlaWdodCgpKTsKKyAgICAgICAg
aW52YWxpZGF0ZVdpZGdldFJlY3Qoc2Nyb2xsUmVjdCk7CiAgICAgfQogCiAgICAgbV9yZWN0c1Rv
U2Nyb2xsLmNsZWFyKCk7CiAgICAgbV9zY3JvbGxPZmZzZXRzLmNsZWFyKCk7CiB9CiAKLQogdm9p
ZCBDaHJvbWVDbGllbnQ6OnBhaW50KFdlYkNvcmU6OlRpbWVyPENocm9tZUNsaWVudD4qKQogewog
ICAgIHN0YXRpYyBjb25zdCBkb3VibGUgbWluaW11bUZyYW1lSW50ZXJ2YWwgPSAxLjAgLyA2MC4w
OyAvLyBObyBtb3JlIHRoYW4gNjAgZnJhbWVzIGEgc2Vjb25kLgpAQCAtNTU5LDEzICs1NzAsMTAg
QEAgdm9pZCBDaHJvbWVDbGllbnQ6OnBhaW50KFdlYkNvcmU6OlRpbWVyPENocm9tZUNsaWVudD4q
KQogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSB8fCAhZnJhbWUt
PnZpZXcoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGVyZm9ybUFsbFBlbmRpbmdTY3JvbGxz
KCk7CiAgICAgZnJhbWUtPnZpZXcoKS0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vy
c2l2ZSgpOworICAgIHBlcmZvcm1BbGxQZW5kaW5nU2Nyb2xscygpOwogICAgIHBhaW50V2ViVmll
dyhtX3dlYlZpZXcsIGZyYW1lLCBtX2RpcnR5UmVnaW9uKTsKIAotICAgIGNvbnN0IEludFJlY3Qm
IHJlY3QgPSBtX2RpcnR5UmVnaW9uLmJvdW5kcygpOwotICAgIGd0a193aWRnZXRfcXVldWVfZHJh
d19hcmVhKEdUS19XSURHRVQobV93ZWJWaWV3KSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0Lndp
ZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwotCiAgICAgSGFzaFNldDxHdGtXaWRnZXQqPiBjaGlsZHJl
biA9IG1fd2ViVmlldy0+cHJpdi0+Y2hpbGRyZW47CiAgICAgSGFzaFNldDxHdGtXaWRnZXQqPjo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gY2hpbGRyZW4uZW5kKCk7CiAgICAgZm9yIChIYXNoU2V0PEd0
a1dpZGdldCo+Ojpjb25zdF9pdGVyYXRvciBjdXJyZW50ID0gY2hpbGRyZW4uYmVnaW4oKTsgY3Vy
cmVudCAhPSBlbmQ7ICsrY3VycmVudCkgewpAQCAtNTc1LDYgKzU4MywxNCBAQCB2b2lkIENocm9t
ZUNsaWVudDo6cGFpbnQoV2ViQ29yZTo6VGltZXI8Q2hyb21lQ2xpZW50PiopCiAgICAgICAgIH0K
ICAgICB9CiAKKyAgICBjb25zdCBJbnRSZWN0JiByZWN0ID0gbV9kaXJ0eVJlZ2lvbi5ib3VuZHMo
KTsKKyAgICBpbnZhbGlkYXRlV2lkZ2V0UmVjdChyZWN0KTsKKworI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKKyAgICBtX3dlYlZpZXctPnByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0LT5zeW5jTGF5ZXJzTm93KCk7CisgICAgbV93ZWJWaWV3LT5wcml2LT5hY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dC0+cmVuZGVyTGF5ZXJzVG9XaW5kb3cocmVjdCk7CisjZW5k
aWYKKwogICAgIG1fZGlydHlSZWdpb24gPSBSZWdpb24oKTsKICAgICBtX2xhc3REaXNwbGF5VGlt
ZSA9IGN1cnJlbnRUaW1lKCk7CiAgICAgbV9yZXBhaW50U29vblNvdXJjZUlkID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5o
IGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKaW5k
ZXggODI5YjIwYjg1YmExY2Y3ODcxZGE3MDVlNzRmZGU5MDAwM2E5Yzc1MC4uOGM3Yzg5MjMzOGJk
NjQzMzg4NTlkNTY3YWZlY2Q1ZDZiZjgzYTBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKQEAgLTE4Myw2ICsxODMsOCBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgVmVjdG9yPEludFNpemU+IG1fc2Nyb2xsT2Zmc2V0
czsKICAgICAgICAgZG91YmxlIG1fbGFzdERpc3BsYXlUaW1lOwogICAgICAgICB1bnNpZ25lZCBp
bnQgbV9yZXBhaW50U29vblNvdXJjZUlkOworCisgICAgICAgIHZvaWQgaW52YWxpZGF0ZVdpZGdl
dFJlY3QoY29uc3QgSW50UmVjdCYpOwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCmluZGV4IDZiMjYwYzI5YTJlNWQyMzA5YTQ4
NDg3ZDlmZmNlMGFmZGUxN2ViMDUuLmQ5MWMzYmJmMzUyMWMyNTZjNDlkMjg2ZTI0MWVkOWU3NTAw
NThjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0
aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdz
LmNwcApAQCAtMTE5LDcgKzExOSw4IEBAIGVudW0gewogICAgIFBST1BfRU5BQkxFX0ZVTExTQ1JF
RU4sCiAgICAgUFJPUF9FTkFCTEVfRE5TX1BSRUZFVENISU5HLAogICAgIFBST1BfRU5BQkxFX1dF
QkdMLAotICAgIFBST1BfRU5BQkxFX1dFQl9BVURJTworICAgIFBST1BfRU5BQkxFX1dFQl9BVURJ
TywKKyAgICBQUk9QX0VOQUJMRV9BQ0NFTEVSQVRFRF9DT01QT1NJVElORwogfTsKIAogLy8gQ3Jl
YXRlIGEgZGVmYXVsdCB1c2VyIGFnZW50IHN0cmluZwpAQCAtODk5LDYgKzkwMCwyMyBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2NsYXNzX2luaXQoV2ViS2l0V2ViU2V0dGluZ3ND
bGFzcyoga2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfKCJXaGV0aGVyIFdlYkdMIGNvbnRlbnQgc2hvdWxkIGJlIHJlbmRlcmVk
IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdz
OmVuYWJsZS1hY2NlbGVyYXRlZC1jb21wb3NpdGluZzoKKyAgICAqCisgICAgKiBFbmFibGUgb3Ig
ZGlzYWJsZSBzdXBwb3J0IGZvciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBvbiBwYWdlcy4gQWNj
ZWxlcmF0ZWQKKyAgICAqIGNvbXBvc2l0aW5nIHVzZXMgdGhlIEdQVSB0byByZW5kZXIgYW5pbWF0
aW9ucyBvbiBwYWdlcyBzbW9vdGhseSBhbmQgYWxzbyBhbGxvd3MKKyAgICAqIHByb3BlciByZW5k
ZXJpbmcgb2YgM0QgQ1NTIHRyYW5zZm9ybXMuCisgICAgKgorICAgICogU2luY2U6IDEuNy41Cisg
ICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9BQ0NFTEVS
QVRFRF9DT01QT1NJVElORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdf
cGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtYWNjZWxlcmF0ZWQtY29tcG9zaXRpbmciLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygi
RW5hYmxlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIGFjY2VsZXJhdGVk
IGNvbXBvc2l0aW5nIHNob3VsZCBiZSBlbmFibGVkIiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CiAgICAg
LyoqCiAgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtd2ViYXVkaW86CiAgICAgKgpAQCAt
MTEwNyw2ICsxMTI1LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfcHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb24KICAgICBjYXNlIFBST1Bf
RU5BQkxFX1dFQl9BVURJTzoKICAgICAgICAgcHJpdi0+ZW5hYmxlV2ViQXVkaW8gPSBnX3ZhbHVl
X2dldF9ib29sZWFuKHZhbHVlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJM
RV9BQ0NFTEVSQVRFRF9DT01QT1NJVElORzoKKyAgICAgICAgcHJpdi0+ZW5hYmxlQWNjZWxlcmF0
ZWRDb21wb3NpdGluZyA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlf
SUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTI2OSw2ICsx
MjkwLDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfcHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmEKICAgICBjYXNlIFBST1BfRU5BQkxFX1dF
Ql9BVURJTzoKICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+ZW5hYmxl
V2ViQXVkaW8pOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0FDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2
LT5lbmFibGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVm
YXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwg
cHJvcF9pZCwgcHNwZWMpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5nc3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5nc3ByaXZhdGUuaAppbmRleCA4MjNjMzZlYzliODll
ZDdmMWRlZDEwNDZjYzRiODYwZTgyYmRkYjI0Li5kN2QwODJlNWJiM2ZmYWJiZWY0ZGViYzZhOGUx
MjVhZmM3YzcyNjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vic2V0dGluZ3Nwcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnNldHRpbmdzcHJpdmF0ZS5oCkBAIC03OSw2ICs3OSw3IEBAIHN0cnVjdCBfV2ViS2l0V2Vi
U2V0dGluZ3NQcml2YXRlIHsKICAgICBnYm9vbGVhbiBlbmFibGVETlNQcmVmZXRjaGluZzsKICAg
ICBnYm9vbGVhbiBlbmFibGVXZWJnbDsKICAgICBnYm9vbGVhbiBlbmFibGVXZWJBdWRpbzsKKyAg
ICBnYm9vbGVhbiBlbmFibGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nOwogfTsKIAogV0VCS0lUX0FQ
SSB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfYWRkX2V4dHJhX3BsdWdpbl9kaXJlY3RvcnkoV2Vi
S2l0V2ViVmlldyosIGNvbnN0IGdjaGFyKiBkaXJlY3RvcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IGFjNjE1OGI0NGExNzEzNjc4N2NlNmYzNTFm
YzAyOWMzYjgzNzU5MzkuLjMwZThmMGM0ZmFmNGZlMDI5MGU1OTM3YzFkN2JmZWIyNmQxNjRmNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTY0OCw2
ICs2NDgsMTIgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19kcmF3KEd0a1dpZGdl
dCogd2lkZ2V0LCBjYWlyb190KiBjcikKICAgICBpZiAoIWdka19jYWlyb19nZXRfY2xpcF9yZWN0
YW5nbGUoY3IsICZjbGlwUmVjdCkpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAorICAgIFdlYktp
dFdlYlZpZXdQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXKHdpZGdldCktPnByaXY7Cisj
aWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorICAgIGlmIChwcml2LT5hY2NlbGVyYXRlZENvbXBv
c2l0aW5nQ29udGV4dC0+cmVuZGVyTGF5ZXJzVG9XaW5kb3coY2xpcFJlY3QpKQorICAgICAgICBy
ZXR1cm4gRkFMU0U7CisjZW5kaWYKKwogICAgIGNhaXJvX3JlY3RhbmdsZV9saXN0X3QqIHJlY3RM
aXN0ID0gY2Fpcm9fY29weV9jbGlwX3JlY3RhbmdsZV9saXN0KGNyKTsKICAgICBpZiAocmVjdExp
c3QtPnN0YXR1cyB8fCAhcmVjdExpc3QtPm51bV9yZWN0YW5nbGVzKSB7CiAgICAgICAgIGNhaXJv
X3JlY3RhbmdsZV9saXN0X2Rlc3Ryb3kocmVjdExpc3QpOwpAQCAtNjU2LDggKzY2Miw4IEBAIHN0
YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZHJhdyhHdGtXaWRnZXQqIHdpZGdldCwgY2Fp
cm9fdCogY3IpCiAKICAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHM7CiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCByZWN0TGlzdC0+bnVtX3JlY3RhbmdsZXM7IGkrKykgewotICAgICAgICBjb3B5UmVj
dEZyb21DYWlyb1N1cmZhY2VUb0NvbnRleHQoV0VCS0lUX1dFQl9WSUVXKHdpZGdldCktPnByaXYt
PmJhY2tpbmdTdG9yZS0+Y2Fpcm9TdXJmYWNlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjciwgSW50U2l6ZSgpLCBlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVj
dChyZWN0TGlzdC0+cmVjdGFuZ2xlc1tpXSkpKTsKKyAgICAgICAgY29weVJlY3RGcm9tQ2Fpcm9T
dXJmYWNlVG9Db250ZXh0KHByaXYtPmJhY2tpbmdTdG9yZS0+Y2Fpcm9TdXJmYWNlKCksIGNyLCBJ
bnRTaXplKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNs
b3NpbmdJbnRSZWN0KEZsb2F0UmVjdChyZWN0TGlzdC0+cmVjdGFuZ2xlc1tpXSkpKTsKICAgICB9
CiAgICAgY2Fpcm9fcmVjdGFuZ2xlX2xpc3RfZGVzdHJveShyZWN0TGlzdCk7CiAKQEAgLTk0MSw2
ICs5NDcsOCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2ZvY3VzX291dF9ldmVu
dChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRGb2N1cwogCiBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3ZpZXdfcmVhbGl6ZShHdGtXaWRnZXQqIHdpZGdldCkKIHsKKyAgICBXZWJLaXRXZWJWaWV3
UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9XRUJfVklFVyh3aWRnZXQpLT5wcml2OworCiAgICAgZ3Rr
X3dpZGdldF9zZXRfcmVhbGl6ZWQod2lkZ2V0LCBUUlVFKTsKIAogICAgIEd0a0FsbG9jYXRpb24g
YWxsb2NhdGlvbjsKQEAgLTk3OSw2ICs5ODcsMTAgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92
aWV3X3JlYWxpemUoR3RrV2lkZ2V0KiB3aWRnZXQpCiAgICAgYXR0cmlidXRlc19tYXNrIHw9IEdE
S19XQV9DT0xPUk1BUDsKICNlbmRpZgogICAgIEdka1dpbmRvdyogd2luZG93ID0gZ2RrX3dpbmRv
d19uZXcoZ3RrX3dpZGdldF9nZXRfcGFyZW50X3dpbmRvdyh3aWRnZXQpLCAmYXR0cmlidXRlcywg
YXR0cmlidXRlc19tYXNrKTsKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorICAgIHByaXYtPmhhc05hdGl2ZVdpbmRvdyA9IGdka193
aW5kb3dfZW5zdXJlX25hdGl2ZSh3aW5kb3cpOworI2VuZGlmCiAgICAgZ3RrX3dpZGdldF9zZXRf
d2luZG93KHdpZGdldCwgd2luZG93KTsKICAgICBnZGtfd2luZG93X3NldF91c2VyX2RhdGEod2lu
ZG93LCB3aWRnZXQpOwogCkBAIC05OTMsOCArMTAwNSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfdmlld19yZWFsaXplKEd0a1dpZGdldCogd2lkZ2V0KQogICAgIGd0a19zdHlsZV9jb250ZXh0
X3NldF9iYWNrZ3JvdW5kKGd0a193aWRnZXRfZ2V0X3N0eWxlX2NvbnRleHQod2lkZ2V0KSwgd2lu
ZG93KTsKICNlbmRpZgogCi0gICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJf
VklFVyh3aWRnZXQpOwotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+
cHJpdjsKICAgICBndGtfaW1fY29udGV4dF9zZXRfY2xpZW50X3dpbmRvdyhwcml2LT5pbUNvbnRl
eHQuZ2V0KCksIHdpbmRvdyk7CiB9CiAKQEAgLTMyMTEsNiArMzIyMSwxMCBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
CiAgICAgY29yZVNldHRpbmdzLT5zZXRXZWJHTEVuYWJsZWQoc2V0dGluZ3NQcml2YXRlLT5lbmFi
bGVXZWJnbCk7CiAjZW5kaWYKIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAg
ICBjb3JlU2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKHNldHRpbmdz
UHJpdmF0ZS0+ZW5hYmxlQWNjZWxlcmF0ZWRDb21wb3NpdGluZyk7CisjZW5kaWYKKwogI2lmIEVO
QUJMRShXRUJfQVVESU8pCiAgICAgY29yZVNldHRpbmdzLT5zZXRXZWJBdWRpb0VuYWJsZWQoc2V0
dGluZ3NQcml2YXRlLT5lbmFibGVXZWJBdWRpbyk7CiAjZW5kaWYKQEAgLTMzNDMsNiArMzM1Nywx
MSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KFdlYktpdFdl
YlNldHRpbmdzKiB3ZWJTZXR0aW5ncywgR1BhcgogICAgICAgICBzZXR0aW5ncy0+c2V0V2ViR0xF
bmFibGVkKGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnZhbHVlKSk7CiAjZW5kaWYKIAorI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBlbHNlIGlmIChuYW1lID09IGdfaW50ZXJuX3N0
cmluZygiZW5hYmxlLWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nIikpCisgICAgICAgIHNldHRpbmdz
LT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChnX3ZhbHVlX2dldF9ib29sZWFuKCZ2
YWx1ZSkpOworI2VuZGlmCisKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIGVsc2UgaWYgKG5h
bWUgPT0gZ19pbnRlcm5fc3RyaW5nKCJlbmFibGUtd2ViYXVkaW8iKSkKICAgICAgICAgc2V0dGlu
Z3MtPnNldFdlYkF1ZGlvRW5hYmxlZChnX3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaAppbmRleCA4
ZDJiN2IwNGJhOTJlYzRkZWY2ZWY2YTNjNDMzZDBkMGQ3YThkNjQzLi44MWQ3YjYyYThhY2RlMjkw
YzhiNTUzOTAzZTBjODZiNTEzMjEyZWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaApAQCAtNDQsNiArNDQsNyBAQCBleHRlcm4gIkMiIHsK
IHR5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSBXZWJLaXRXZWJWaWV3UHJpdmF0
ZTsKIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgIFdlYkNvcmU6OlBhZ2UqIGNv
cmVQYWdlOworICAgIGJvb2wgaGFzTmF0aXZlV2luZG93OwogICAgIE93blB0cjxXZWJDb3JlOjpX
aWRnZXRCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZTsKICAgICBHUmVmUHRyPFdlYktpdFdlYlNl
dHRpbmdzPiB3ZWJTZXR0aW5nczsKICAgICBHUmVmUHRyPFdlYktpdFdlYkluc3BlY3Rvcj4gd2Vi
SW5zcGVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9T
b3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCAxY2YxYTJkOTBlOWI2NWRkZTQ3NGE0
ZjM2ZmVjZGU3MWZmYTYxOWZmLi5lZGYwNDQ5N2FmZDZmMWI2Y2FmMWE3M2ViM2U4OTk5MWI3ZmFl
ZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtMTA3LDYgKzEwNyw4IEBAIHdlYmtpdDJfYnVp
bHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9EcmF3aW5nQXJlYVByb3h5
TWVzc2FnZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9FdmVudERpc3BhdGNoZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQyL0V2ZW50RGlzcGF0Y2hl
ck1lc3NhZ2VzLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvTGF5ZXJUcmVlSG9zdFByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9MYXllclRyZWVI
b3N0UHJveHlNZXNzYWdlcy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQyL05QT2JqZWN0TWVz
c2FnZVJlY2VpdmVyTWVzc2FnZVJlY2VpdmVyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VzLmggXAogCURlcml2ZWRTb3VyY2VzL1dl
YktpdDIvUGx1Z2luQ29udHJvbGxlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKaW5kZXggYWEyNWRkMWZk
Mzg4M2ZjZDVjM2Q5ZjFkNDAwMzE4YmE4YWUxOTcxMi4uOWJiOTc4M2NhMDYwMzFiNTFkNzhhZDlj
MDZmMDRjYzc1M2JhMTNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5n
QXJlYVByb3h5LmNwcApAQCAtNjksOSArNjksMTIgQEAgV2ViQ29yZTo6SW50UmVjdCBEcmF3aW5n
QXJlYVByb3h5Ojpjb250ZW50c1JlY3QoKSBjb25zdAogICAgIHJldHVybiBJbnRSZWN0KEludFBv
aW50Ojp6ZXJvKCksIG1fd2ViUGFnZVByb3h5LT52aWV3U2l6ZSgpKTsKIH0KIAorI2lmIFVTRShU
SUxFRF9CQUNLSU5HX1NUT1JFKQogdm9pZCBEcmF3aW5nQXJlYVByb3h5OjpkaWRSZWNlaXZlTGF5
ZXJUcmVlSG9zdFByb3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVz
c2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCiB7
CiB9CiAjZW5kaWYKIAorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiOTQ1ZWYwYjUzZDM0MDkwYmU5
MGU3MzljMDA3ZDcyMmVkNWE1ZTM5Li5lZmNhYWNmNmNkMzVjZTE1N2U5MzRjNGRjYjdiNTU2YTlm
ZjU5NWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
MTUzMyw3ICsxNTMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKENv
cmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok0KICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRV
UkVfTUFQUEVSKQorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRV
UkVfTUFQUEVSKSAmJiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICBpZiAobWVzc2FnZUlE
LmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc0xheWVyVHJlZUhvc3RQcm94eT4oKSkgewogICAgICAg
ICBtX2RyYXdpbmdBcmVhLT5kaWRSZWNlaXZlTGF5ZXJUcmVlSG9zdFByb3h5TWVzc2FnZShjb25u
ZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cyk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggZmZiYmRi
YjU3OGYwYTk0NTQyOWM4YjhmMzgwMzhlNGMwNzlmNTFkOS4uNzFiNjNkMzQ5YTJlNjUwMDJiN2Y2
MTBhN2Q3Y2ZkNjNhZTZmNjAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICB2aXJ0dWFsIHZvaWQgc2V0Um9vdENvbXBvc2l0
aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyU3luYygpID0gMDsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQ
RVIpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUxheWVyVHJlZUhvc3RNZXNzYWdlKENvcmVJUEM6
OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciopID0gMDsKICNlbmRpZgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCmluZGV4IDNhZDI3ZTdhZjIwYjcwZDNl
ZDk2YTk3MjE5MWNjZWU2NmU2MGUxZjYuLjRjYzFmZTI3MjNmOGQzYjI1OWQ3M2M3YzJmOTc0ZGU4
NDYzYzc3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9EcmF3aW5nQXJlYUltcGwuY3BwCkBAIC02NjcsNyArNjY3LDcgQEAgdm9pZCBEcmF3aW5nQXJl
YUltcGw6OmRpc3BsYXkoVXBkYXRlSW5mbyYgdXBkYXRlSW5mbykKICAgICBtX2Rpc3BsYXlUaW1l
ci5zdG9wKCk7CiB9CiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShU
RVhUVVJFX01BUFBFUikKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShU
RVhUVVJFX01BUFBFUikgJiYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiB2b2lkIERyYXdpbmdB
cmVhSW1wbDo6ZGlkUmVjZWl2ZUxheWVyVHJlZUhvc3RNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rp
b24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFy
Z3VtZW50RGVjb2RlciogYXJndW1lbnRzKQogewogICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBs
LmgKaW5kZXggMjhjOGNlNjhjZDBlNDczNjBjZGU2ZjNhNjUyNmVlNzZkMTQxOTU5ZS4uYmY4NmZj
ZjE5NWQ1OWJjOWNkMzYzMWJiZmY5ZDAwZWRhYmI5MjE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuaApAQCAtNzAsNyArNzAs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNoaWxkV2luZG93R2VvbWV0
cnlVcGRhdGUoY29uc3QgV2luZG93R2VvbWV0cnkmKTsKICNlbmRpZgogCi0jaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpCisjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpICYmIFVTRShUSUxFRF9C
QUNLSU5HX1NUT1JFKQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTGF5ZXJUcmVlSG9zdE1l
c3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6
QXJndW1lbnREZWNvZGVyKik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hh
bmdlTG9nCmluZGV4IGVlZTg2ODYwNTA4NTMzYjU5YTRmM2RiODk3YjFmODVhOGJiZWRjZTkuLjFl
ZDI2ZTY5NmY0NGQ5Y2E5NjRhZTkwMTI5Y2IyNGM0N2RkZmJlMDkgMTAwNjQ0Ci0tLSBhL0NoYW5n
ZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wMi0wNCAgTWFydGlu
IFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+IGFuZCBOYXlhbiBLdW1hciBLICA8bmF5
YW5ra0Btb3Rvcm9sYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIFRleHR1cmVNYXBwZXJHTCBp
bXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzUzMDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIEdOVW1ha2VmaWxlLmFtOiBUZXh0dXJlTWFwcGVyR0wgaW1wbGllcyBVU0UoVEVYVFVS
RV9NQVBQRVIpCisgICAgICAgICogY29uZmlndXJlLmFjOiBPbmx5IGFsbG93IGVuYWJsaW5nIHRo
ZSBHTCB2ZXJzaW9uIG9mIFRleHR1cmVNYXBwZXIgb24gWDExLgorCiAyMDEyLTAyLTAzICBLYWxl
diBMZW1iZXIgIDxrYWxldmxlbWJlckBnbWFpbC5jb20+CiAKICAgICAgICAgW0dUS10gY29uZmln
dXJlOiBQcmludCBvdXQgdGhlIC1Xbm8tYysrMHgtY29tcGF0IHRlc3QgcmVzdWx0CmRpZmYgLS1n
aXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4IDMzZWY0NjJlMDQwNTk0
NmEyZmRjNGUyNWUwODkxYzc5NDVkNGI0OGUuLjBiMTQwZTk5ZDY1ZmYxYWJkMWNiZThjYjFjNjg0
YmViYTQ4ZDgwYzEgMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1ha2VmaWxl
LmFtCkBAIC0xNzgsMTEgKzE3OCwxMyBAQCBlbmRpZgogCiBpZiBVU0VfVEVYVFVSRV9NQVBQRVJf
Q0FJUk8KIGdsb2JhbF9jcHBmbGFncyArPSBcCisJLURXVEZfVVNFX1RFWFRVUkVfTUFQUEVSPTEg
XAogCS1EV1RGX1VTRV9URVhUVVJFX01BUFBFUl9DQUlSTz0xCiBlbmRpZgogCiBpZiBVU0VfVEVY
VFVSRV9NQVBQRVJfR0wKIGdsb2JhbF9jcHBmbGFncyArPSBcCisJLURXVEZfVVNFX1RFWFRVUkVf
TUFQUEVSPTEgXAogCS1EV1RGX1VTRV9URVhUVVJFX01BUFBFUl9HTD0xCiBlbmRpZgogCmRpZmYg
LS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggOGMxZTNkNTIyNjQxMDM0
ZTMzYWU4Y2U4ZDBmNWFhNWRlNzZiNDdjZC4uOTczODcxODQwZTY5NzVmOTMxYzQ0MDBkNDRhNGQy
MWIyYTIxZjQ0YSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpA
QCAtNDM0LDYgKzQzNCwxMCBAQCBBQ19BUkdfV0lUSChhY2NlbGVyYXRlZF9jb21wb3NpdGluZywK
ICAgICAgICAgICAgIFtdLCBbd2l0aF9hY2NlbGVyYXRlZF9jb21wb3NpdGluZz0ibm8iXSkKIEFD
X01TR19SRVNVTFQoWyR3aXRoX2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nXSkKIAoraWYgdGVzdCAi
JHdpdGhfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmciID0gIm9wZW5nbCIgJiYgdGVzdCAiJHdpdGhf
dGFyZ2V0IiAhPSAieDExIiA7IHRoZW4KKyAgICBBQ19NU0dfRVJST1IoW09wZW5HTCBhY2NlbGVy
YXRlZCBjb21wb3NpdGluZyBpcyBvbmx5IGF2YWlsYWJsZSBvbiBYMTEgY3VycmVudGx5Ll0pCitm
aQorCiBpZiB0ZXN0ICIkZW5hYmxlX3dlYmdsIiA9ICJ5ZXMiIHx8ICB0ZXN0ICIkd2l0aF9hY2Nl
bGVyYXRlZF9jb21wb3NpdGluZyIgPSAib3BlbmdsIiA7IHRoZW4KICAgICBBQ19DSEVDS19IRUFE
RVJTKFtHTC9nbC5oXSwgW10sIEFDX01TR19FUlJPUihbT3BlbkdMIGhlYWRlciBub3QgZm91bmRd
KSkKICAgICBBQ19DSEVDS19IRUFERVJTKFtHTC9nbHguaF0sIFtdLCBBQ19NU0dfRVJST1IoW0dM
WCBoZWFkZXIgbm90IGZvdW5kXSkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125551</attachid>
            <date>2012-02-05 19:12:12 -0800</date>
            <delta_ts>2012-02-06 01:06:20 -0800</delta_ts>
            <desc>Patch with WebKit2 ChangeLog</desc>
            <filename>bug-75308-20120205191211.patch</filename>
            <type>text/plain</type>
            <size>46456</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y3YTUzY2FjNzNkNjgy
ZDU5Y2JjZWUyNGJhOWVmNGM0MzM5ZTQ5Ny4uYzM3NDlkM2Y0Y2Y2YTBmNWNmYTEyMDExMDcxYmI5
ZGU5N2FiNzM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAyLTA0ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4gYW5kIE5heWFuIEt1bWFyIEsgIDxu
YXlhbmtrQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgVGV4dHVyZU1hcHBlckdM
IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NTMwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyB3aWxsIGJlIGNvdmVyZWQgYnkgYWNjZWxlcmF0ZWQg
Y29tcG9zaXRpbmcgYW5kCisgICAgICAgIDNEIENTUyB0cmFuc2Zvcm0gdGVzdHMgZXZlbnR1YWxs
eS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZGVkIHNvbWUgZmlsZXMgbmVj
ZXNzYXJ5IHRvIGJ1aWxkIFRleHR1cmVNYXBwZXJHTC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9UZXh0dXJlTWFwcGVyR0xDYWlyby5jcHA6IEFkZGVkIGltcGxlbWVudGF0aW9u
cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9UZXh0dXJlTWFwcGVyR0xDYWly
by5oOiBVcGRhdGVkIG1lbWJlciBsaXN0LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0
ay9XaW5kb3dHTENvbnRleHQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3RrL1dpbmRvd0dMQ29udGV4dEdMWC5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwOiBVc2UgdGhlIEdMIHNoaW1zIG9uIEdU
Sy4KKwogMjAxMi0wMi0wMyAgQW5kcmVhcyBLbGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgS2lsbCBwZXItQXR0cmlidXRlIHN0eWxlIGRlY2xhcmF0aW9ucy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0No
YW5nZUxvZwppbmRleCAyZGJjZGQzM2ZiMzBiODlkMmQwNjY3MWRhZTZhYTNmMjkwOTUwMzZiLi43
MmE3MTYxMmIxNzI2YzMzNGIzMjcxM2UwZDJlMzIyZTg4YjYzNTkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMDItMDQgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNv
bkBpZ2FsaWEuY29tPiBhbmQgTmF5YW4gS3VtYXIgSyAgPG5heWFua2tAbW90b3JvbGEuY29tPgor
CisgICAgICAgIFtHVEtdIEFkZCBUZXh0dXJlTWFwcGVyR0wgaW1wbGVtZW50YXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1MzA4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5h
bTogQWRkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wgdG8gdGhlIGxpc3QuCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaDoKKyAg
ICAgICAgKEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KTogQWRkZWQgc29tZSBtZW1iZXJz
IGZvciBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEdMLgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Q2x1dHRlci5jcHA6IEFkZGVkIGVt
cHR5IGltcGxlbWVudGF0aW9ucworICAgICAgICBmb3IgR3JhcGhpY3NMYXllckNsaWVudC4gVGhp
cyBpcyBvbmx5IHVzZWQgZm9yIHRoZSBHTCB2YXJpYW50LgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
aHJvbWVDbGllbnQ6OnBlcmZvcm1BbGxQZW5kaW5nU2Nyb2xscyk6IFVwZGF0ZSB0aGUgcm9vdCBs
YXllciB3aGlsZSBzY3JvbGxpbmcuCisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6cGFp
bnQpOiBVcGRhdGUgdGhlIHJvb3QgbGF5ZXIgYWZ0ZXIgcGFpbnRpbmcuCisgICAgICAgICogd2Vi
a2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcDogQWRkZWQgYW4gZW5hYmxlLWFjY2VsZXJhdGVkLWNv
bXBvc2l0aW5nIHNldHRpbmcuCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzcHJp
dmF0ZS5oOiBEaXR0by4KKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAg
ICAgICh3ZWJraXRfd2ViX3ZpZXdfZHJhdyk6IENhbGwgaW50byBUZXh0dXJlTWFwcGVyIG5vdy4K
KyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19yZWFsaXplKTogVXNlIGdka193aW5kb3dfZW5zdXJl
X25hdGl2ZSBoZXJlLgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6
IFN1cHBvcnQgdGhlIG5ldyBlbmFibGUtYWNjZWxlcmF0ZWQtY29tcG9zaXRpbmcgc2V0dGluZy4K
KyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3RpZnkpOiBEaXR0by4KKwogMjAx
Mi0wMi0wMiAgS2FsZXYgTGVtYmVyICA8a2FsZXZsZW1iZXJAZ21haWwuY29tPgogCiAgICAgICAg
IFtHVEtdIERvbid0IHVzZSB1aW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDgzNDY2MTkxNjdjYWMwYTNkYmQx
MjEzY2Y5ZWQ1M2UwYmYyNzBiZS4uNGZjZGI4ZWY3NTg0Y2YzZGMyYjhhYjE2MjkwOTNkOTU4NTQ1
ZDk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTAyLTA1ICBNYXJ0aW4gUm9i
aW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgVGV4dHVy
ZU1hcHBlckdMIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NTMwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZpeCB0aGUgV2ViS2l0MiArIEFDIGJ1aWxkIGZvciBHVEsrLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCBzb21lIG1pc3Npbmcgc291cmNlIGZpbGVzLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dCk6IEFkZCBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkgdG8gdGhlIGd1YXJkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZFJlY2VpdmVNZXNzYWdlKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChEcmF3aW5nQXJlYSk6IERpdHRvLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0KTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1w
bC5oOgorICAgICAgICAoRHJhd2luZ0FyZWFJbXBsKTogRGl0dG8uCisKIDIwMTItMDItMDMgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQyIHNo
b3VsZCBkaXNwYXRjaCB3aGVlbCBldmVudHMgdG8gdGhlIG5ldyBTY3JvbGxpbmdUcmVlIGNsYXNz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA5NGUwNWUxMzAzNTgyZDcyNDNjOGY2
NDc0NWNiYTFiMDBiZDk1YWYwLi4xMjU1MjYzZjQxYTE2MzcwYzhlZjFlM2NhYjljMWYyMGUxMzNm
NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTU3NTUsMTMgKzU3NTUsMTMg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmggXAotICAg
ICAgICBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckltYWdlQnVmZmVyLmNwcCBcCi0gICAgICAgIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCBcCi0gICAgICAgIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5jcHAgXAot
ICAgICAgICBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlck5vZGUuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllci5oCiB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAotCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RleHR1cmVNYXBwZXJHTENhaXJvLmNwcCBcCi0JU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVGV4dHVyZU1hcHBlckdMQ2Fpcm8u
aAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9XaW5kb3dHTENvbnRleHRH
TFguY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2luZG93R0xD
b250ZXh0LmgKIGVuZGlmICAjIEVORCBVU0VfVEVYVFVSRV9NQVBQRVJfR0wKIGVuZGlmICAjIFVT
RV9BQ0NFTEVSQVRFRF9DT01QT1NJVElORwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVGV4dHVyZU1hcHBlckdMQ2Fpcm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVGV4dHVyZU1hcHBlckdMQ2Fpcm8uY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzcxYjY2MTRjYTIwYTk2ZGExZGMyMWU2Y2Y3
NjI3YTBiMTk1MTgyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RleHR1cmVNYXBwZXJH
TENhaXJvLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgQ2hhbmdTZW9rIE9oIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KLSAqCi0gKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTENhaXJvLmgiCi0KLSNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUJHUkEzMlByZW11
bHRpbXBsaWVkQnVmZmVyQ2Fpcm86OkJHUkEzMlByZW11bHRpbXBsaWVkQnVmZmVyQ2Fpcm8oKQot
ICAgIDogbV9jb250ZXh0KDApCi0gICAgLCBtX2NhaXJvQ29udGV4dCgwKQotICAgICwgbV9jYWly
b1N1cmZhY2UoMCkgCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotQkdSQTMyUHJlbXVs
dGltcGxpZWRCdWZmZXJDYWlybzo6fkJHUkEzMlByZW11bHRpbXBsaWVkQnVmZmVyQ2Fpcm8oKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLVBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBC
R1JBMzJQcmVtdWx0aW1wbGllZEJ1ZmZlckNhaXJvOjpiZWdpblBhaW50KGNvbnN0IEludFJlY3Qm
IGRpcnR5UmVjdCwgYm9vbCBvcGFxdWUpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gMDsKLX0KLQotdm9pZCogQkdSQTMyUHJlbXVsdGltcGxpZWRCdWZmZXJDYWlybzo6ZGF0
YSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBC
R1JBMzJQcmVtdWx0aW1wbGllZEJ1ZmZlckNhaXJvOjplbmRQYWludCgpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdWludDY0X3QgdWlkRm9ySW1hZ2UoSW1hZ2UqIGltYWdlKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLVBhc3NPd25QdHI8QkdS
QTMyUHJlbXVsdGltcGxpZWRCdWZmZXI+IEJHUkEzMlByZW11bHRpbXBsaWVkQnVmZmVyOjpjcmVh
dGUoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBC
R1JBMzJQcmVtdWx0aW1wbGllZEJ1ZmZlckNhaXJvKCkpOwotfQotCi19OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVGV4dHVyZU1hcHBlckdMQ2Fp
cm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RleHR1cmVNYXBw
ZXJHTENhaXJvLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxODgwNmQ3NTNlNWM1
ZTNiOGU5MmE4OTZkMGFkNjU1MjczZjk5MGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
VGV4dHVyZU1hcHBlckdMQ2Fpcm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQ2hhbmdTZW9rIE9oIDxzaGl2YW1pZG93QGdtYWlsLmNv
bT4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8K
LQotI2lmbmRlZiBUZXh0dXJlTWFwcGVyR0xDYWlyb19oCi0jZGVmaW5lIFRleHR1cmVNYXBwZXJH
TENhaXJvX2gKLQotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIEJHUkEzMlByZW11bHRpbXBsaWVkQnVmZmVyQ2Fpcm86IHB1YmxpYyBC
R1JBMzJQcmVtdWx0aW1wbGllZEJ1ZmZlciB7Ci1wdWJsaWM6Ci0gICAgQkdSQTMyUHJlbXVsdGlt
cGxpZWRCdWZmZXJDYWlybygpOwotICAgIHZpcnR1YWwgfkJHUkEzMlByZW11bHRpbXBsaWVkQnVm
ZmVyQ2Fpcm8oKTsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBiZWdpblBh
aW50KGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgYm9vbCBvcGFxdWUpOwotICAgIHZpcnR1YWwg
dm9pZCBlbmRQYWludCgpOyAKLSAgICB2aXJ0dWFsIHZvaWQqIGRhdGEoKTsgCi0KLXByaXZhdGU6
Ci0gICAgUGxhdGZvcm1Db250ZXh0Q2Fpcm8qIG1fY29udGV4dDsKLSAgICBjYWlyb190KiBtX2Nh
aXJvQ29udGV4dDsKLSAgICBjYWlyb19zdXJmYWNlX3QqIG1fY2Fpcm9TdXJmYWNlOwotfTsKLQot
fQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
dGsvV2luZG93R0xDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
dGsvV2luZG93R0xDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTYyMzU2ODM1NjQ3Nzk0NjRhY2NkODQ3
YmRlNWIxMDlkNjFlMDI0NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2d0ay9XaW5kb3dHTENvbnRleHQuaApAQCAtMCwwICsxLDU0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKyAqICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSBVU0EKKyAqLworCisjaWZuZGVmIFdpbmRvd0dMQ29udGV4dF9oCisjZGVmaW5lIFdpbmRvd0dM
Q29udGV4dF9oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgorCisjaWYgZGVmaW5lZChYUF9VTklYKQordHlwZWRlZiBzdHJ1Y3QgX19H
TFhjb250ZXh0UmVjKiBHTFhDb250ZXh0OwordHlwZWRlZiBzdHJ1Y3QgX1hEaXNwbGF5IERpc3Bs
YXk7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXaW5kb3dHTENvbnRl
eHQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdpbmRvd0dMQ29udGV4dCk7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2luZG93R0xDb250ZXh0PiBjcmVhdGVDb250ZXh0V2l0
aEdka1dpbmRvdyhHZGtXaW5kb3cqKTsKKyAgICB2aXJ0dWFsIH5XaW5kb3dHTENvbnRleHQoKTsK
KyAgICB2b2lkIHN0YXJ0RHJhd2luZygpOworICAgIHZvaWQgZmluaXNoRHJhd2luZygpOworCitw
cml2YXRlOgorICAgIFdpbmRvd0dMQ29udGV4dChHZGtXaW5kb3cqKTsKKyAgICBHZGtXaW5kb3cq
IG1fd2luZG93OworCisjaWYgZGVmaW5lZChYUF9VTklYKQorICAgIEdMWENvbnRleHQgbV9jb250
ZXh0OworICAgIERpc3BsYXkqIG1fZGlzcGxheTsKKyAgICBib29sIG1fbmVlZFRvQ2xvc2VEaXNw
bGF5OworI2VuZGlmCit9OworCit9CisKKyNlbmRpZiAvLyBXaW5kb3dHTENvbnRleHRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1dpbmRvd0dMQ29u
dGV4dEdMWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2luZG93
R0xDb250ZXh0R0xYLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTZhNGY0MWI0ZTIzNjlmYjg2ZTYzODU5ZmY5
MWUzOWMwMWU4ZjA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL1dpbmRvd0dMQ29udGV4dEdMWC5jcHAKQEAgLTAsMCArMSw4NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEsIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEg
IFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXaW5kb3dHTENvbnRl
eHQuaCIKKworI2luY2x1ZGUgPEdML2dseC5oPgorI2luY2x1ZGUgPGdkay9nZGsuaD4KKyNpbmNs
dWRlIDxnZGsvZ2RreC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitQYXNzT3duUHRyPFdpbmRvd0dMQ29udGV4dD4gV2luZG93R0xDb250ZXh0Ojpj
cmVhdGVDb250ZXh0V2l0aEdka1dpbmRvdyhHZGtXaW5kb3cqIHdpbmRvdykKK3sKKyAgICBPd25Q
dHI8V2luZG93R0xDb250ZXh0PiBjb250ZXh0ID0gYWRvcHRQdHIobmV3IFdpbmRvd0dMQ29udGV4
dCh3aW5kb3cpKTsKKyAgICBpZiAoIWNvbnRleHQtPm1fY29udGV4dCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgpOworfQorCitXaW5kb3dHTENv
bnRleHQ6OldpbmRvd0dMQ29udGV4dChHZGtXaW5kb3cqIHdpbmRvdykKKyAgICA6IG1fd2luZG93
KHdpbmRvdykKKyAgICAsIG1fY29udGV4dCgwKQorICAgICwgbV9kaXNwbGF5KDApCisgICAgLCBt
X25lZWRUb0Nsb3NlRGlzcGxheSgwKQoreworICAgIEdka0Rpc3BsYXkqIGdka0Rpc3BsYXkgPSBn
ZGtfd2luZG93X2dldF9kaXNwbGF5KG1fd2luZG93KTsKKyAgICBpZiAoZ2RrRGlzcGxheSkKKyAg
ICAgICAgbV9kaXNwbGF5ID0gR0RLX0RJU1BMQVlfWERJU1BMQVkoZ2RrRGlzcGxheSk7CisgICAg
ZWxzZSB7CisgICAgICAgIG1fZGlzcGxheSA9IFhPcGVuRGlzcGxheSgwKTsKKyAgICAgICAgbV9u
ZWVkVG9DbG9zZURpc3BsYXkgPSB0cnVlOworICAgIH0KKworICAgIFhXaW5kb3dBdHRyaWJ1dGVz
IGF0dHJpYnV0ZXM7CisgICAgaWYgKCFYR2V0V2luZG93QXR0cmlidXRlcyhtX2Rpc3BsYXksIEdE
S19XSU5ET1dfWElEKG1fd2luZG93KSwgJmF0dHJpYnV0ZXMpKQorICAgICAgICByZXR1cm47CisK
KyAgICBYVmlzdWFsSW5mbyB2aXN1YWxJbmZvOworICAgIHZpc3VhbEluZm8udmlzdWFsaWQgPSBY
VmlzdWFsSURGcm9tVmlzdWFsKGF0dHJpYnV0ZXMudmlzdWFsKTsKKworICAgIGludCBudW1SZXR1
cm5lZCA9IDA7CisgICAgWFZpc3VhbEluZm8qIHZpc3VhbEluZm9MaXN0ID0gWEdldFZpc3VhbElu
Zm8obV9kaXNwbGF5LCBWaXN1YWxJRE1hc2ssICZ2aXN1YWxJbmZvLCAmbnVtUmV0dXJuZWQpOwor
ICAgIG1fY29udGV4dCA9IGdsWENyZWF0ZUNvbnRleHQobV9kaXNwbGF5LCB2aXN1YWxJbmZvTGlz
dCwgMCwgVHJ1ZSk7CisgICAgWEZyZWUodmlzdWFsSW5mb0xpc3QpOworfQorCitXaW5kb3dHTENv
bnRleHQ6On5XaW5kb3dHTENvbnRleHQoKQoreworICAgIGlmICghbV9jb250ZXh0KQorICAgICAg
ICByZXR1cm47CisgICAgZ2xYTWFrZUN1cnJlbnQobV9kaXNwbGF5LCBOb25lLCBOb25lKTsKKyAg
ICBnbFhEZXN0cm95Q29udGV4dChtX2Rpc3BsYXksIG1fY29udGV4dCk7CisKKyAgICBpZiAobV9u
ZWVkVG9DbG9zZURpc3BsYXkpCisgICAgICAgIFhDbG9zZURpc3BsYXkobV9kaXNwbGF5KTsKK30K
Kwordm9pZCBXaW5kb3dHTENvbnRleHQ6OnN0YXJ0RHJhd2luZygpCit7CisgICAgZ2xYTWFrZUN1
cnJlbnQobV9kaXNwbGF5LCBHREtfV0lORE9XX1hJRChtX3dpbmRvdyksIG1fY29udGV4dCk7Cit9
CisKK3ZvaWQgV2luZG93R0xDb250ZXh0OjpmaW5pc2hEcmF3aW5nKCkKK3sKKyAgICBnbFhTd2Fw
QnVmZmVycyhtX2Rpc3BsYXksIEdES19XSU5ET1dfWElEKG1fd2luZG93KSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggNTg3MjkzNjNmYTI0
NGVlMWM5NGI5NmM1YjNiNmFiNWVlYjM4ZGU1Ni4uNTM3YTAxYTdmNzE4MjZkZjZiODRjMDk4NGZm
MzFmYzYzODM2MTdiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAgLTE4LDcgKzE4LDYgQEAK
ICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wu
aCIKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtMzAsOCArMjksMTEgQEAKICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAK
LSNpZiBQTEFURk9STShRVCkKKyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQogI2lu
Y2x1ZGUgPGNhaXJvL09wZW5HTFNoaW1zLmg+CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFFUKQog
I2VsaWYgZGVmaW5lZChURVhNQVBfT1BFTkdMX0VTXzIpCiAjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+
CiAjaW5jbHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CkBAIC01MSw3ICs1MywxNCBAQAogI2luY2x1ZGUg
PEdML2dseC5oPgogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChURVhNQVBfT1BFTkdMX0VTXzIpICYm
ICFQTEFURk9STShRVCkKKyNpZiBVU0UoQ0FJUk8pCisjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMu
aCIKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2luY2x1ZGUgPGNhaXJvLmg+CisjaW5jbHVk
ZSA8d3RmL0J5dGVBcnJheS5oPgorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChURVhNQVBfT1BFTkdM
X0VTXzIpICYmICFQTEFURk9STShRVCkgJiYgIVBMQVRGT1JNKEdUSykKIGV4dGVybiAiQyIgewog
ICAgIHZvaWQgZ2xVbmlmb3JtMWYoR0xpbnQsIEdMZmxvYXQpOwogICAgIHZvaWQgZ2xVbmlmb3Jt
MWkoR0xpbnQsIEdMaW50KTsKQEAgLTYwNCw3ICs2MTMsNyBAQCB2b2lkIEJpdG1hcFRleHR1cmVH
TDo6cmVzZXQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSwgYm9vbCBvcGFxdWUpCiAgICAgbV9zdXJm
YWNlTmVlZHNSZXNldCA9IHRydWU7CiB9CiAKLQorI2lmIFBMQVRGT1JNKFFUKQogc3RhdGljIHZv
aWQgc3dpenpsZUJHUkFUb1JHQkEodWludDMyX3QqIGRhdGEsIGNvbnN0IEludFNpemUmIHNpemUp
CiB7CiAgICAgaW50IHdpZHRoID0gc2l6ZS53aWR0aCgpOwpAQCAtNjE1LDYgKzYyNCw3IEBAIHN0
YXRpYyB2b2lkIHN3aXp6bGVCR1JBVG9SR0JBKHVpbnQzMl90KiBkYXRhLCBjb25zdCBJbnRTaXpl
JiBzaXplKQogICAgICAgICAgICAgcFt4XSA9ICgocFt4XSA8PCAxNikgJiAweGZmMDAwMCkgfCAo
KHBbeF0gPj4gMTYpICYgMHhmZikgfCAocFt4XSAmIDB4ZmYwMGZmMDApOwogICAgIH0KIH0KKyNl
bmRpZgogCiB2b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoY29uc3Qgdm9pZCog
ZGF0YSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCkKIHsKQEAgLTYzOSw2ICs2NDksMjMgQEAg
dm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKEltYWdlKiBpbWFnZSwgY29uc3Qg
SW50UmVjdCYgdGFyZ2V0UmVjdCwgY28KICAgICBpZiAoZm9ybWF0ID09IEJHUkFGb3JtYXQgfHwg
Zm9ybWF0ID09IEJHUkZvcm1hdCkKICAgICAgICAgc3dpenpsZUJHUkFUb1JHQkEocmVpbnRlcnBy
ZXRfY2FzdDx1aW50MzJfdCo+KHF0SW1hZ2UuYml0cygpKSwgcXRJbWFnZS5zaXplKCkpOwogICAg
IEdMX0NNRChnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgdGFyZ2V0UmVjdC54KCks
IHRhcmdldFJlY3QueSgpLCB0YXJnZXRSZWN0LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCks
IGdsRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCBxdEltYWdlLmNvbnN0Qml0cygpKSkKKyNlbGlm
IFVTRShDQUlSTykKKworI2lmICFDUFUoQklHX0VORElBTikKKyAgICBnbEZvcm1hdCA9IGlzT3Bh
cXVlKCkgPyBHTF9CR1IgOiBHTF9CR1JBOworI2VuZGlmCisKKyAgICBnbFBpeGVsU3RvcmVpKEdM
X1VOUEFDS19ST1dfTEVOR1RILCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoZnJhbWVJ
bWFnZSkgLyA0KTsKKyAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1JPV1MsIHNvdXJj
ZVJlY3QueSgpKTsKKyAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1BJWEVMUywgc291
cmNlUmVjdC54KCkpOworICAgIEdMX0NNRChnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFJlY3QueCgpLCB0YXJnZXRSZWN0
LnkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFJlY3Qud2lkdGgoKSwgdGFy
Z2V0UmVjdC5oZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsRm9ybWF0LCBH
TF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9nZXRfZGF0YShmcmFtZUltYWdlKSkpOworICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5Q
QUNLX1JPV19MRU5HVEgsIDApOworICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUk9X
UywgMCk7CisgICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9QSVhFTFMsIDApOwogI2Vu
ZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtIGIv
U291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KaW5kZXggMjQ3MjIxMmU5YTUxYjZmMTRh
Njk3ZjkyYzk5MTU1NjRjMGMxNWVmMS4uMWY0ZmRmMWJiMzJhYTM1YTY1NTBkYzIzMzhhMWMxNGRl
Yjk3NmUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KKysr
IGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KQEAgLTE4NCw2ICsxODQsNyBAQCB3
ZWJraXRndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9X
ZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmggXAogCVNvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmggXAogCVNvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Q2x1
dHRlci5jcHAgXAorCVNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdDb250ZXh0R0wuY3BwIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcCBcCiAJU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
LmgKaW5kZXggNjFjMjNiNzBjZDFlZTg2OGJiZDM4ZGJiOTA3ODZmODk1MmUwNTBiNS4uNDJhNWYy
NGI2MWI3MTkyMTc3MzFlMTc2NTU4Mjc2ZGZiZTIwNGY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dC5oCkBAIC0xOSw2ICsxOSw3IEBACiAjaWZuZGVmIEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0X2gKICNkZWZpbmUgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRfaAog
CisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGll
bnQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgpAQCAtMjYs
MTUgKzI3LDE2IEBACiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgogI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisjaWYgVVNF
KFRFWFRVUkVfTUFQUEVSX0dMKQorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJOb2RlLmgiCisjaW5j
bHVkZSAiV2luZG93R0xDb250ZXh0LmgiCisjZW5kaWYKIAotbmFtZXNwYWNlIFdlYkNvcmUgewot
Y2xhc3MgR3JhcGhpY3NMYXllcjsKLX0KKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dCB7CitjbGFzcyBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA6IHB1YmxpYyBXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25Q
dHI8QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ+IGNyZWF0ZShXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3KQpAQCAtNDcsNyArNDksMTcgQEAgcHVibGljOgogICAgIHZvaWQgc2NoZWR1bGVSb290
TGF5ZXJSZXBhaW50KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2b2lkIG1hcmtGb3JT
eW5jKCk7CiAgICAgdm9pZCBzeW5jTGF5ZXJzVGltZW91dChXZWJDb3JlOjpUaW1lcjxBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dD4qKTsKKyAgICB2b2lkIHN5bmNMYXllcnNOb3coKTsKICAg
ICB2b2lkIHJlc2l6ZVJvb3RMYXllcihjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CisgICAgYm9v
bCByZW5kZXJMYXllcnNUb1dpbmRvdyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCk7
CisgICAgYm9vbCBlbmFibGVkKCk7CisKKyAgICAvLyBHcmFwaGljc0xheWVyQ2xpZW50CisgICAg
dmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllciosIGRvdWJsZSB0aW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U3luY1JlcXVp
cmVkKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0JiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHJlY3RUb1BhaW50KTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvd0RlYnVn
Qm9yZGVycyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIHNob3dSZXBhaW50Q291bnRlcihjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikg
Y29uc3Q7CiAKIHByaXZhdGU6CiAgICAgV2ViS2l0V2ViVmlldyogbV93ZWJWaWV3OwpAQCAtNTYs
NiArNjgsMTMgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShDTFVUVEVSKQogICAgIEd0a1dpZGdldCog
bV9yb290TGF5ZXJFbWJlZGRlcjsKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAgICB2
b2lkIGluaXRpYWxpemVJZk5lY2Vzc2FyeSgpOworCisgICAgYm9vbCBtX2luaXRpYWxpemVkOwor
ICAgIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJOb2RlKiBtX3Jvb3RUZXh0dXJlTWFwcGVyTm9kZTsK
KyAgICBPd25QdHI8V2ViQ29yZTo6V2luZG93R0xDb250ZXh0PiBtX2NvbnRleHQ7CisgICAgT3du
UHRyPFdlYkNvcmU6OlRleHR1cmVNYXBwZXI+IG1fdGV4dHVyZU1hcHBlcjsKICNlbmRpZgogCiAg
ICAgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQoV2ViS2l0V2ViVmlldyopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHRDbHV0dGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Q2x1dHRlci5jcHAKaW5kZXggNDY1N2VjNDNm
MDE3NDgyYjM3NmE4MDcxOGExMmFlZTdkYWUwZGNlMi4uYjUyYjQwOWU1YWU5NThjZDIwNzE4NGM1
N2RhYjMwOTlmMjg4ZTBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRDbHV0dGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dENsdXR0ZXIuY3BwCkBAIC00NSw2ICs0NSwxMSBAQCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dDo6fkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KCkKIHsKIH0KIAorYm9vbCBBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6ZW5hYmxlZCgpCit7CisgICAgcmV0dXJuIG1fcm9v
dEdyYXBoaWNzTGF5ZXI7Cit9CisKIGJvb2wgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6
OnJlbmRlckxheWVyc1RvV2luZG93KGNhaXJvX3QqIHdpZGdldENyLCBjb25zdCBJbnRSZWN0JiBj
bGlwUmVjdCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtMTE2LDYgKzEyMSwzMiBAQCB2
b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzeW5jTGF5ZXJzVGltZW91dChUaW1l
cjxBY2NlbGVyYXRlZENvbXBvc2l0aQogICAgIGNvcmUobV93ZWJWaWV3KS0+bWFpbkZyYW1lKCkt
PnZpZXcoKS0+c3luY0NvbXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJmcmFtZXMoKTsKIH0KIAor
dm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6bm90aWZ5QW5pbWF0aW9uU3RhcnRl
ZChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgZG91YmxlIHRpbWUpCit7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9Cit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
Ojpub3RpZnlTeW5jUmVxdWlyZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopCit7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQ6OnBhaW50Q29udGVudHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludGluZ1Bo
YXNlLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKK30KKworYm9vbCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c2hvd0RlYnVnQm9y
ZGVycyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgY29uc3QKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQ6OnNob3dSZXBhaW50Q291bnRlcihjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0xheWVyKikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBVU0UoQ0xVVFRFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0
R0wuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHRHTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJmYTNkMGZlZGE1ZjNkODg4OTQyOGMz
ZmZjNTE3MjI5YmM5NjdlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wuY3BwCkBAIC0wLDAg
KzEsMjA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSwgUy5MLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN
QSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKworI2luY2x1ZGUgIkNhaXJv
VXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50
R3RrLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5o
IgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJOb2RlLmgiCisjaW5jbHVkZSAid2Via2l0d2Vidmll
d3ByaXZhdGUuaCIKKyNpbmNsdWRlIDxHTC9nbC5oPgorI2luY2x1ZGUgPGNhaXJvLmg+CisjaW5j
bHVkZSA8Z2RrL2dkay5oPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dDo6QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQoV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKKyAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQorICAgICwgbV9zeW5jVGltZXIodGhpcywg
JkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzeW5jTGF5ZXJzVGltZW91dCkKKyAgICAs
IG1faW5pdGlhbGl6ZWQoZmFsc2UpCisgICAgLCBtX3Jvb3RUZXh0dXJlTWFwcGVyTm9kZSgwKQor
eworfQorCitBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6fkFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0KCkKK3sKKworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250
ZXh0Ojppbml0aWFsaXplSWZOZWNlc3NhcnkoKQoreworICAgIGlmIChtX2luaXRpYWxpemVkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2luaXRpYWxpemVkID0gdHJ1ZTsKKworICAgIC8vIFRo
ZSBHVEsrIGRvY3Mgc2F5IHRoYXQgd2UgY2FuIGZhaWwgdG8gY3JlYXRlIGEgbmF0aXZlIHdpbmRv
dy4KKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGZhbGwgYmFjayB0byB0aGUgSW1hZ2VCdWZmZXIg
VGV4dHVyZU1hcHBlciB3aGVuIGl0IGV4aXN0cy4KKyAgICBpZiAoIW1fd2ViVmlldy0+cHJpdi0+
aGFzTmF0aXZlV2luZG93KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbnRleHQgPSBXZWJD
b3JlOjpXaW5kb3dHTENvbnRleHQ6OmNyZWF0ZUNvbnRleHRXaXRoR2RrV2luZG93KGd0a193aWRn
ZXRfZ2V0X3dpbmRvdyhHVEtfV0lER0VUKG1fd2ViVmlldykpKTsKK30KKworYm9vbCBBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dDo6ZW5hYmxlZCgpCit7CisgICAgcmV0dXJuIG1fcm9vdFRl
eHR1cmVNYXBwZXJOb2RlICYmIG1fdGV4dHVyZU1hcHBlcjsKK30KKworCitib29sIEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0OjpyZW5kZXJMYXllcnNUb1dpbmRvdyhjb25zdCBJbnRSZWN0
JiBjbGlwUmVjdCkKK3sKKyAgICBpZiAoIWVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgLy8gV2UgaW5pdGlhbGl6ZSB0aGUgY29udGV4dCBsYXppbHkgaGVyZSBzbyB0aGF0
IHdlIGtub3cgdGhhdCB0aGUgR2RrV2luZG93IHJlYWxpemVkLgorICAgIGluaXRpYWxpemVJZk5l
Y2Vzc2FyeSgpOworICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBtX2NvbnRleHQtPnN0YXJ0RHJhd2luZygpOworCisgICAgR3RrQWxsb2NhdGlvbiBhbGxv
Y2F0aW9uOworICAgIGd0a193aWRnZXRfZ2V0X2FsbG9jYXRpb24oR1RLX1dJREdFVChtX3dlYlZp
ZXcpLCAmYWxsb2NhdGlvbik7CisgICAgZ2xWaWV3cG9ydCgwLCAwLCBhbGxvY2F0aW9uLndpZHRo
LCBhbGxvY2F0aW9uLmhlaWdodCk7CisKKyAgICBtX3RleHR1cmVNYXBwZXItPmJlZ2luUGFpbnRp
bmcoKTsKKyAgICBtX3Jvb3RUZXh0dXJlTWFwcGVyTm9kZS0+cGFpbnQoKTsKKyAgICBtX3RleHR1
cmVNYXBwZXItPmVuZFBhaW50aW5nKCk7CisKKyAgICBtX2NvbnRleHQtPmZpbmlzaERyYXdpbmco
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXll
cikKK3sKKyAgICBpZiAoIWdyYXBoaWNzTGF5ZXIpIHsKKyAgICAgICAgbV9yb290R3JhcGhpY3NM
YXllci5jbGVhcigpOworICAgICAgICBtX3Jvb3RUZXh0dXJlTWFwcGVyTm9kZSA9IDA7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3Jvb3RHcmFwaGljc0xheWVyID0gR3JhcGhpY3NM
YXllcjo6Y3JlYXRlKHRoaXMpOworICAgIG1fcm9vdFRleHR1cmVNYXBwZXJOb2RlID0gdG9UZXh0
dXJlTWFwcGVyTm9kZShtX3Jvb3RHcmFwaGljc0xheWVyLmdldCgpKTsKKyAgICBtX3Jvb3RHcmFw
aGljc0xheWVyLT5hZGRDaGlsZChncmFwaGljc0xheWVyKTsKKyAgICBtX3Jvb3RHcmFwaGljc0xh
eWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CisgICAgbV9yb290R3JhcGhpY3NMYXllci0+c2V0
TWFza3NUb0JvdW5kcyhmYWxzZSk7CisgICAgbV9yb290R3JhcGhpY3NMYXllci0+c2V0TmVlZHNE
aXNwbGF5KCk7CisgICAgbV9yb290R3JhcGhpY3NMYXllci0+c2V0U2l6ZShjb3JlKG1fd2ViVmll
dyktPm1haW5GcmFtZSgpLT52aWV3KCktPmZyYW1lUmVjdCgpLnNpemUoKSk7CisKKyAgICAvLyBX
ZSBpbml0aWFsaXplIHRoZSBjb250ZXh0IGxhemlseSBoZXJlIHNvIHRoYXQgd2Uga25vdyB0aGF0
IHRoZSBHZGtXaW5kb3cgcmVhbGl6ZWQuCisgICAgaW5pdGlhbGl6ZUlmTmVjZXNzYXJ5KCk7Cisg
ICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSBjb250ZXh0
IG5lZWRzIHRvIGJlIGFjdGl2ZSB3aGVuIGNyZWF0aW5nIHRoZSB0ZXh0dXJlIG1hcHBlci4gSXQn
cyBmaW5lIHRvCisgICAgLy8gYXZvaWQgY2FsbGluZyBlbmREcmF3aW5nIGhlcmUsIGJlY2F1c2Ug
aXQgd2lsbCBqdXN0IGluaXRpYWxpemUgc2hhZGVycy4KKyAgICBtX2NvbnRleHQtPnN0YXJ0RHJh
d2luZygpOworCisgICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uOworICAgIGd0a193aWRnZXRf
Z2V0X2FsbG9jYXRpb24oR1RLX1dJREdFVChtX3dlYlZpZXcpLCAmYWxsb2NhdGlvbik7CisgICAg
Z2xWaWV3cG9ydCgwLCAwLCBhbGxvY2F0aW9uLndpZHRoLCBhbGxvY2F0aW9uLmhlaWdodCk7CisK
KyAgICBtX3RleHR1cmVNYXBwZXIgPSBUZXh0dXJlTWFwcGVyR0w6OmNyZWF0ZSgpOworICAgIG1f
cm9vdFRleHR1cmVNYXBwZXJOb2RlLT5zZXRUZXh0dXJlTWFwcGVyKG1fdGV4dHVyZU1hcHBlci5n
ZXQoKSk7CisgICAgbV9yb290R3JhcGhpY3NMYXllci0+c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JU
aGlzTGF5ZXJPbmx5KCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6
OnNjaGVkdWxlUm9vdExheWVyUmVwYWludChjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIGlm
ICghbV9yb290R3JhcGhpY3NMYXllcikKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChyZWN0Lmlz
RW1wdHkoKSkgeworICAgICAgICBtX3Jvb3RHcmFwaGljc0xheWVyLT5zZXROZWVkc0Rpc3BsYXko
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3Jvb3RHcmFwaGljc0xheWVyLT5zZXRO
ZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQ6OnJlc2l6ZVJvb3RMYXllcihjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIGlm
ICghbV9yb290R3JhcGhpY3NMYXllcikKKyAgICAgICAgcmV0dXJuOworICAgIG1fcm9vdEdyYXBo
aWNzTGF5ZXItPnNldFNpemUoc2l6ZSk7CisgICAgbV9yb290R3JhcGhpY3NMYXllci0+c2V0TmVl
ZHNEaXNwbGF5KCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6Om1h
cmtGb3JTeW5jKCkKK3sKKyAgICBpZiAobV9zeW5jVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIG1fc3luY1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c3luY0xheWVyc05vdygpCit7CisgICAgaWYgKG1f
cm9vdEdyYXBoaWNzTGF5ZXIpCisgICAgICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXItPnN5bmNDb21w
b3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOworCisgICAgY29yZShtX3dlYlZpZXcpLT5t
YWluRnJhbWUoKS0+dmlldygpLT5zeW5jQ29tcG9zaXRpbmdTdGF0ZUluY2x1ZGluZ1N1YmZyYW1l
cygpOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzeW5jTGF5ZXJz
VGltZW91dChUaW1lcjxBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dD4qKQoreworICAgIHN5
bmNMYXllcnNOb3coKTsKKyAgICBpZiAoIW1fcm9vdEdyYXBoaWNzTGF5ZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIHJlbmRlckxheWVyc1RvV2luZG93KEludFJlY3QoKSk7CisKKyAgICBpZiAo
dG9UZXh0dXJlTWFwcGVyTm9kZShtX3Jvb3RHcmFwaGljc0xheWVyLmdldCgpKS0+ZGVzY2VuZGFu
dHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSkKKyAgICAgICAgbV9zeW5jVGltZXIuc3Rh
cnRPbmVTaG90KDEuMCAvIDYwLjApOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0Ojpub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXIqLCBkb3VibGUgdGltZSkKK3sKKworfQordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dDo6bm90aWZ5U3luY1JlcXVpcmVkKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKQor
eworCit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnBhaW50Q29udGVu
dHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgV2ViQ29yZTo6R3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHJlY3RUb1BhaW50KQoreworICAgIGNhaXJvX3QqIGNyID0gY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICBjb3B5UmVjdEZyb21DYWlyb1N1cmZhY2VU
b0NvbnRleHQobV93ZWJWaWV3LT5wcml2LT5iYWNraW5nU3RvcmUtPmNhaXJvU3VyZmFjZSgpLCBj
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50U2l6ZSgpLCByZWN0
VG9QYWludCk7Cit9CisKK2Jvb2wgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNob3dE
ZWJ1Z0JvcmRlcnMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIGNvbnN0Cit7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpz
aG93UmVwYWludENvdW50ZXIoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIGNvbnN0Cit7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEd0ay5jcHAKaW5kZXggMTM3YjkxOGFkMWI0NDA5ZDdlNDcxYWRmZDIyYTIyZmRmN2VlMDZhZi4u
NjI5ZDRjNzU3NWU0ZTM2YzVkNjc1ZGNhNmRhNzMyZjgwOWFlOWMyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCkBAIC01
MjUsNiArNTI1LDIwIEBAIHN0YXRpYyB2b2lkIHBhaW50V2ViVmlldyhXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBGcmFtZSogZnJhbWUsIFJlZ2lvbiBkaXJ0eVJlZ2lvCiAgICAgZ2MucmVzdG9yZSgp
OwogfQogCit2b2lkIENocm9tZUNsaWVudDo6aW52YWxpZGF0ZVdpZGdldFJlY3QoY29uc3QgSW50
UmVjdCYgcmVjdCkKK3sKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQqIGFjQ29udGV4dCA9IG1fd2ViVmlldy0+cHJpdi0+
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuZ2V0KCk7CisgICAgaWYgKGFjQ29udGV4dC0+
ZW5hYmxlZCgpKSB7CisgICAgICAgIGFjQ29udGV4dC0+c2NoZWR1bGVSb290TGF5ZXJSZXBhaW50
KHJlY3QpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgZ3RrX3dpZGdldF9x
dWV1ZV9kcmF3X2FyZWEoR1RLX1dJREdFVChtX3dlYlZpZXcpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlY3QueCgpLCByZWN0LnkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworfQorCiB2b2lkIENocm9tZUNs
aWVudDo6cGVyZm9ybUFsbFBlbmRpbmdTY3JvbGxzKCkKIHsKICAgICBpZiAoIW1fd2ViVmlldy0+
cHJpdi0+YmFja2luZ1N0b3JlKQpAQCAtNTM0LDE2ICs1NDgsMTMgQEAgdm9pZCBDaHJvbWVDbGll
bnQ6OnBlcmZvcm1BbGxQZW5kaW5nU2Nyb2xscygpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX3JlY3RzVG9TY3JvbGwuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgSW50UmVjdCYgc2Nyb2xs
UmVjdCA9IG1fcmVjdHNUb1Njcm9sbFtpXTsKICAgICAgICAgbV93ZWJWaWV3LT5wcml2LT5iYWNr
aW5nU3RvcmUtPnNjcm9sbChzY3JvbGxSZWN0LCBtX3Njcm9sbE9mZnNldHNbaV0pOwotICAgICAg
ICBndGtfd2lkZ2V0X3F1ZXVlX2RyYXdfYXJlYShHVEtfV0lER0VUKG1fd2ViVmlldyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFJlY3QueCgpLCBzY3JvbGxSZWN0
LnkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsUmVjdC53aWR0
aCgpLCBzY3JvbGxSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgaW52YWxpZGF0ZVdpZGdldFJlY3Qo
c2Nyb2xsUmVjdCk7CiAgICAgfQogCiAgICAgbV9yZWN0c1RvU2Nyb2xsLmNsZWFyKCk7CiAgICAg
bV9zY3JvbGxPZmZzZXRzLmNsZWFyKCk7CiB9CiAKLQogdm9pZCBDaHJvbWVDbGllbnQ6OnBhaW50
KFdlYkNvcmU6OlRpbWVyPENocm9tZUNsaWVudD4qKQogewogICAgIHN0YXRpYyBjb25zdCBkb3Vi
bGUgbWluaW11bUZyYW1lSW50ZXJ2YWwgPSAxLjAgLyA2MC4wOyAvLyBObyBtb3JlIHRoYW4gNjAg
ZnJhbWVzIGEgc2Vjb25kLgpAQCAtNTU5LDEzICs1NzAsMTAgQEAgdm9pZCBDaHJvbWVDbGllbnQ6
OnBhaW50KFdlYkNvcmU6OlRpbWVyPENocm9tZUNsaWVudD4qKQogICAgIGlmICghZnJhbWUgfHwg
IWZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSB8fCAhZnJhbWUtPnZpZXcoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgcGVyZm9ybUFsbFBlbmRpbmdTY3JvbGxzKCk7CiAgICAgZnJhbWUtPnZpZXco
KS0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOworICAgIHBlcmZvcm1B
bGxQZW5kaW5nU2Nyb2xscygpOwogICAgIHBhaW50V2ViVmlldyhtX3dlYlZpZXcsIGZyYW1lLCBt
X2RpcnR5UmVnaW9uKTsKIAotICAgIGNvbnN0IEludFJlY3QmIHJlY3QgPSBtX2RpcnR5UmVnaW9u
LmJvdW5kcygpOwotICAgIGd0a193aWRnZXRfcXVldWVfZHJhd19hcmVhKEdUS19XSURHRVQobV93
ZWJWaWV3KSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkp
OwotCiAgICAgSGFzaFNldDxHdGtXaWRnZXQqPiBjaGlsZHJlbiA9IG1fd2ViVmlldy0+cHJpdi0+
Y2hpbGRyZW47CiAgICAgSGFzaFNldDxHdGtXaWRnZXQqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
Y2hpbGRyZW4uZW5kKCk7CiAgICAgZm9yIChIYXNoU2V0PEd0a1dpZGdldCo+Ojpjb25zdF9pdGVy
YXRvciBjdXJyZW50ID0gY2hpbGRyZW4uYmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVu
dCkgewpAQCAtNTc1LDYgKzU4MywxNCBAQCB2b2lkIENocm9tZUNsaWVudDo6cGFpbnQoV2ViQ29y
ZTo6VGltZXI8Q2hyb21lQ2xpZW50PiopCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBjb25zdCBJ
bnRSZWN0JiByZWN0ID0gbV9kaXJ0eVJlZ2lvbi5ib3VuZHMoKTsKKyAgICBpbnZhbGlkYXRlV2lk
Z2V0UmVjdChyZWN0KTsKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBt
X3dlYlZpZXctPnByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5zeW5jTGF5ZXJz
Tm93KCk7CisgICAgbV93ZWJWaWV3LT5wcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dC0+cmVuZGVyTGF5ZXJzVG9XaW5kb3cocmVjdCk7CisjZW5kaWYKKwogICAgIG1fZGlydHlSZWdp
b24gPSBSZWdpb24oKTsKICAgICBtX2xhc3REaXNwbGF5VGltZSA9IGN1cnJlbnRUaW1lKCk7CiAg
ICAgbV9yZXBhaW50U29vblNvdXJjZUlkID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKaW5kZXggODI5YjIwYjg1YmExY2Y3ODcx
ZGE3MDVlNzRmZGU5MDAwM2E5Yzc1MC4uOGM3Yzg5MjMzOGJkNjQzMzg4NTlkNTY3YWZlY2Q1ZDZi
ZjgzYTBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmgKQEAgLTE4Myw2ICsxODMsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAg
ICAgICAgVmVjdG9yPEludFNpemU+IG1fc2Nyb2xsT2Zmc2V0czsKICAgICAgICAgZG91YmxlIG1f
bGFzdERpc3BsYXlUaW1lOwogICAgICAgICB1bnNpZ25lZCBpbnQgbV9yZXBhaW50U29vblNvdXJj
ZUlkOworCisgICAgICAgIHZvaWQgaW52YWxpZGF0ZVdpZGdldFJlY3QoY29uc3QgSW50UmVjdCYp
OwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJzZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0
dGluZ3MuY3BwCmluZGV4IDZiMjYwYzI5YTJlNWQyMzA5YTQ4NDg3ZDlmZmNlMGFmZGUxN2ViMDUu
LmQ5MWMzYmJmMzUyMWMyNTZjNDlkMjg2ZTI0MWVkOWU3NTAwNThjM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcApAQCAtMTE5LDcgKzExOSw4
IEBAIGVudW0gewogICAgIFBST1BfRU5BQkxFX0ZVTExTQ1JFRU4sCiAgICAgUFJPUF9FTkFCTEVf
RE5TX1BSRUZFVENISU5HLAogICAgIFBST1BfRU5BQkxFX1dFQkdMLAotICAgIFBST1BfRU5BQkxF
X1dFQl9BVURJTworICAgIFBST1BfRU5BQkxFX1dFQl9BVURJTywKKyAgICBQUk9QX0VOQUJMRV9B
Q0NFTEVSQVRFRF9DT01QT1NJVElORwogfTsKIAogLy8gQ3JlYXRlIGEgZGVmYXVsdCB1c2VyIGFn
ZW50IHN0cmluZwpAQCAtODk5LDYgKzkwMCwyMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Nl
dHRpbmdzX2NsYXNzX2luaXQoV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyoga2xhc3MpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0
aGVyIFdlYkdMIGNvbnRlbnQgc2hvdWxkIGJlIHJlbmRlcmVkIiksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7
CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS1hY2NlbGVyYXRlZC1j
b21wb3NpdGluZzoKKyAgICAqCisgICAgKiBFbmFibGUgb3IgZGlzYWJsZSBzdXBwb3J0IGZvciBh
Y2NlbGVyYXRlZCBjb21wb3NpdGluZyBvbiBwYWdlcy4gQWNjZWxlcmF0ZWQKKyAgICAqIGNvbXBv
c2l0aW5nIHVzZXMgdGhlIEdQVSB0byByZW5kZXIgYW5pbWF0aW9ucyBvbiBwYWdlcyBzbW9vdGhs
eSBhbmQgYWxzbyBhbGxvd3MKKyAgICAqIHByb3BlciByZW5kZXJpbmcgb2YgM0QgQ1NTIHRyYW5z
Zm9ybXMuCisgICAgKgorICAgICogU2luY2U6IDEuNy41CisgICAgKi8KKyAgICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9BQ0NFTEVSQVRFRF9DT01QT1NJVElORywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJl
bmFibGUtYWNjZWxlcmF0ZWQtY29tcG9zaXRpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIGFjY2VsZXJhdGVkIGNv
bXBvc2l0aW5nIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfKCJXaGV0aGVyIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHNob3VsZCBi
ZSBlbmFibGVkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CiAgICAgLyoqCiAgICAgKiBXZWJLaXRXZWJT
ZXR0aW5nczplbmFibGUtd2ViYXVkaW86CiAgICAgKgpAQCAtMTEwNyw2ICsxMTI1LDkgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0
LCBndWludCBwcm9wX2lkLCBjb24KICAgICBjYXNlIFBST1BfRU5BQkxFX1dFQl9BVURJTzoKICAg
ICAgICAgcHJpdi0+ZW5hYmxlV2ViQXVkaW8gPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9BQ0NFTEVSQVRFRF9DT01QT1NJ
VElORzoKKyAgICAgICAgcHJpdi0+ZW5hYmxlQWNjZWxlcmF0ZWRDb21wb3NpdGluZyA9IGdfdmFs
dWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAg
ICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBw
c3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTI2OSw2ICsxMjkwLDkgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl9zZXR0aW5nc19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBw
cm9wX2lkLCBHVmEKICAgICBjYXNlIFBST1BfRU5BQkxFX1dFQl9BVURJTzoKICAgICAgICAgZ192
YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+ZW5hYmxlV2ViQXVkaW8pOwogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0FDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HOgorICAg
ICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5lbmFibGVBY2NlbGVyYXRlZENv
bXBvc2l0aW5nKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpF
Q1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJzZXR0aW5nc3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJz
ZXR0aW5nc3ByaXZhdGUuaAppbmRleCA4MjNjMzZlYzliODllZDdmMWRlZDEwNDZjYzRiODYwZTgy
YmRkYjI0Li5kN2QwODJlNWJiM2ZmYWJiZWY0ZGViYzZhOGUxMjVhZmM3YzcyNjMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzcHJpdmF0ZS5o
CkBAIC03OSw2ICs3OSw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlIHsKICAg
ICBnYm9vbGVhbiBlbmFibGVETlNQcmVmZXRjaGluZzsKICAgICBnYm9vbGVhbiBlbmFibGVXZWJn
bDsKICAgICBnYm9vbGVhbiBlbmFibGVXZWJBdWRpbzsKKyAgICBnYm9vbGVhbiBlbmFibGVBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nOwogfTsKIAogV0VCS0lUX0FQSSB2b2lkIHdlYmtpdF93ZWJfc2V0
dGluZ3NfYWRkX2V4dHJhX3BsdWdpbl9kaXJlY3RvcnkoV2ViS2l0V2ViVmlldyosIGNvbnN0IGdj
aGFyKiBkaXJlY3RvcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwCmluZGV4IGFjNjE1OGI0NGExNzEzNjc4N2NlNmYzNTFmYzAyOWMzYjgzNzU5MzkuLjMwZThm
MGM0ZmFmNGZlMDI5MGU1OTM3YzFkN2JmZWIyNmQxNjRmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTY0OCw2ICs2NDgsMTIgQEAgc3RhdGljIGdi
b29sZWFuIHdlYmtpdF93ZWJfdmlld19kcmF3KEd0a1dpZGdldCogd2lkZ2V0LCBjYWlyb190KiBj
cikKICAgICBpZiAoIWdka19jYWlyb19nZXRfY2xpcF9yZWN0YW5nbGUoY3IsICZjbGlwUmVjdCkp
CiAgICAgICAgIHJldHVybiBGQUxTRTsKIAorICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2
ID0gV0VCS0lUX1dFQl9WSUVXKHdpZGdldCktPnByaXY7CisjaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKQorICAgIGlmIChwcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC0+cmVuZGVy
TGF5ZXJzVG9XaW5kb3coY2xpcFJlY3QpKQorICAgICAgICByZXR1cm4gRkFMU0U7CisjZW5kaWYK
KwogICAgIGNhaXJvX3JlY3RhbmdsZV9saXN0X3QqIHJlY3RMaXN0ID0gY2Fpcm9fY29weV9jbGlw
X3JlY3RhbmdsZV9saXN0KGNyKTsKICAgICBpZiAocmVjdExpc3QtPnN0YXR1cyB8fCAhcmVjdExp
c3QtPm51bV9yZWN0YW5nbGVzKSB7CiAgICAgICAgIGNhaXJvX3JlY3RhbmdsZV9saXN0X2Rlc3Ry
b3kocmVjdExpc3QpOwpAQCAtNjU2LDggKzY2Miw4IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRf
d2ViX3ZpZXdfZHJhdyhHdGtXaWRnZXQqIHdpZGdldCwgY2Fpcm9fdCogY3IpCiAKICAgICBWZWN0
b3I8SW50UmVjdD4gcmVjdHM7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZWN0TGlzdC0+bnVt
X3JlY3RhbmdsZXM7IGkrKykgewotICAgICAgICBjb3B5UmVjdEZyb21DYWlyb1N1cmZhY2VUb0Nv
bnRleHQoV0VCS0lUX1dFQl9WSUVXKHdpZGdldCktPnByaXYtPmJhY2tpbmdTdG9yZS0+Y2Fpcm9T
dXJmYWNlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjciwg
SW50U2l6ZSgpLCBlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdChyZWN0TGlzdC0+cmVjdGFuZ2xl
c1tpXSkpKTsKKyAgICAgICAgY29weVJlY3RGcm9tQ2Fpcm9TdXJmYWNlVG9Db250ZXh0KHByaXYt
PmJhY2tpbmdTdG9yZS0+Y2Fpcm9TdXJmYWNlKCksIGNyLCBJbnRTaXplKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVj
dChyZWN0TGlzdC0+cmVjdGFuZ2xlc1tpXSkpKTsKICAgICB9CiAgICAgY2Fpcm9fcmVjdGFuZ2xl
X2xpc3RfZGVzdHJveShyZWN0TGlzdCk7CiAKQEAgLTk0MSw2ICs5NDcsOCBAQCBzdGF0aWMgZ2Jv
b2xlYW4gd2Via2l0X3dlYl92aWV3X2ZvY3VzX291dF9ldmVudChHdGtXaWRnZXQqIHdpZGdldCwg
R2RrRXZlbnRGb2N1cwogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbGl6ZShHdGtX
aWRnZXQqIHdpZGdldCkKIHsKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IFdFQktJ
VF9XRUJfVklFVyh3aWRnZXQpLT5wcml2OworCiAgICAgZ3RrX3dpZGdldF9zZXRfcmVhbGl6ZWQo
d2lkZ2V0LCBUUlVFKTsKIAogICAgIEd0a0FsbG9jYXRpb24gYWxsb2NhdGlvbjsKQEAgLTk3OSw2
ICs5ODcsMTAgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlYWxpemUoR3RrV2lkZ2V0
KiB3aWRnZXQpCiAgICAgYXR0cmlidXRlc19tYXNrIHw9IEdES19XQV9DT0xPUk1BUDsKICNlbmRp
ZgogICAgIEdka1dpbmRvdyogd2luZG93ID0gZ2RrX3dpbmRvd19uZXcoZ3RrX3dpZGdldF9nZXRf
cGFyZW50X3dpbmRvdyh3aWRnZXQpLCAmYXR0cmlidXRlcywgYXR0cmlidXRlc19tYXNrKTsKKwor
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KQorICAgIHByaXYtPmhhc05hdGl2ZVdpbmRvdyA9IGdka193aW5kb3dfZW5zdXJlX25hdGl2ZSh3
aW5kb3cpOworI2VuZGlmCiAgICAgZ3RrX3dpZGdldF9zZXRfd2luZG93KHdpZGdldCwgd2luZG93
KTsKICAgICBnZGtfd2luZG93X3NldF91c2VyX2RhdGEod2luZG93LCB3aWRnZXQpOwogCkBAIC05
OTMsOCArMTAwNSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWFsaXplKEd0a1dp
ZGdldCogd2lkZ2V0KQogICAgIGd0a19zdHlsZV9jb250ZXh0X3NldF9iYWNrZ3JvdW5kKGd0a193
aWRnZXRfZ2V0X3N0eWxlX2NvbnRleHQod2lkZ2V0KSwgd2luZG93KTsKICNlbmRpZgogCi0gICAg
V2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3aWRnZXQpOwotICAgIFdl
YktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKICAgICBndGtfaW1fY29u
dGV4dF9zZXRfY2xpZW50X3dpbmRvdyhwcml2LT5pbUNvbnRleHQuZ2V0KCksIHdpbmRvdyk7CiB9
CiAKQEAgLTMyMTEsNiArMzIyMSwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfdXBk
YXRlX3NldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgY29yZVNldHRpbmdzLT5z
ZXRXZWJHTEVuYWJsZWQoc2V0dGluZ3NQcml2YXRlLT5lbmFibGVXZWJnbCk7CiAjZW5kaWYKIAor
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBjb3JlU2V0dGluZ3MtPnNldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlQWNjZWxl
cmF0ZWRDb21wb3NpdGluZyk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAgICAg
Y29yZVNldHRpbmdzLT5zZXRXZWJBdWRpb0VuYWJsZWQoc2V0dGluZ3NQcml2YXRlLT5lbmFibGVX
ZWJBdWRpbyk7CiAjZW5kaWYKQEAgLTMzNDMsNiArMzM1NywxMSBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5n
cywgR1BhcgogICAgICAgICBzZXR0aW5ncy0+c2V0V2ViR0xFbmFibGVkKGdfdmFsdWVfZ2V0X2Jv
b2xlYW4oJnZhbHVlKSk7CiAjZW5kaWYKIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKKyAgICBlbHNlIGlmIChuYW1lID09IGdfaW50ZXJuX3N0cmluZygiZW5hYmxlLWFjY2VsZXJh
dGVkLWNvbXBvc2l0aW5nIikpCisgICAgICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nRW5hYmxlZChnX3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOworI2VuZGlmCisKICNp
ZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3RyaW5n
KCJlbmFibGUtd2ViYXVkaW8iKSkKICAgICAgICAgc2V0dGluZ3MtPnNldFdlYkF1ZGlvRW5hYmxl
ZChnX3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaAppbmRleCA4ZDJiN2IwNGJhOTJlYzRkZWY2ZWY2
YTNjNDMzZDBkMGQ3YThkNjQzLi44MWQ3YjYyYThhY2RlMjkwYzhiNTUzOTAzZTBjODZiNTEzMjEy
ZWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3By
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3ByaXZh
dGUuaApAQCAtNDQsNiArNDQsNyBAQCBleHRlcm4gIkMiIHsKIHR5cGVkZWYgc3RydWN0IF9XZWJL
aXRXZWJWaWV3UHJpdmF0ZSBXZWJLaXRXZWJWaWV3UHJpdmF0ZTsKIHN0cnVjdCBfV2ViS2l0V2Vi
Vmlld1ByaXZhdGUgewogICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQYWdlOworICAgIGJvb2wgaGFz
TmF0aXZlV2luZG93OwogICAgIE93blB0cjxXZWJDb3JlOjpXaWRnZXRCYWNraW5nU3RvcmU+IGJh
Y2tpbmdTdG9yZTsKICAgICBHUmVmUHRyPFdlYktpdFdlYlNldHRpbmdzPiB3ZWJTZXR0aW5nczsK
ICAgICBHUmVmUHRyPFdlYktpdFdlYkluc3BlY3Rvcj4gd2ViSW5zcGVjdG9yOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5hbQppbmRleCAxY2YxYTJkOTBlOWI2NWRkZTQ3NGE0ZjM2ZmVjZGU3MWZmYTYxOWZmLi5l
ZGYwNDQ5N2FmZDZmMWI2Y2FmMWE3M2ViM2U4OTk5MWI3ZmFlZDZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5hbQpAQCAtMTA3LDYgKzEwNyw4IEBAIHdlYmtpdDJfYnVpbHRfc291cmNlcyArPSBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9EcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9FdmVudERpc3BhdGNoZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJLaXQyL0V2ZW50RGlzcGF0Y2hlck1lc3NhZ2VzLmggXAorCURlcml2
ZWRTb3VyY2VzL1dlYktpdDIvTGF5ZXJUcmVlSG9zdFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBc
CisJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9MYXllclRyZWVIb3N0UHJveHlNZXNzYWdlcy5oIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJLaXQyL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZVJl
Y2VpdmVyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OUE9iamVjdE1lc3NhZ2VSZWNl
aXZlck1lc3NhZ2VzLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGx1Z2luQ29udHJvbGxl
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
RHJhd2luZ0FyZWFQcm94eS5jcHAKaW5kZXggYWEyNWRkMWZkMzg4M2ZjZDVjM2Q5ZjFkNDAwMzE4
YmE4YWUxOTcxMi4uOWJiOTc4M2NhMDYwMzFiNTFkNzhhZDljMDZmMDRjYzc1M2JhMTNlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcApAQCAtNjks
OSArNjksMTIgQEAgV2ViQ29yZTo6SW50UmVjdCBEcmF3aW5nQXJlYVByb3h5Ojpjb250ZW50c1Jl
Y3QoKSBjb25zdAogICAgIHJldHVybiBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIG1fd2ViUGFn
ZVByb3h5LT52aWV3U2l6ZSgpKTsKIH0KIAorI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQog
dm9pZCBEcmF3aW5nQXJlYVByb3h5OjpkaWRSZWNlaXZlTGF5ZXJUcmVlSG9zdFByb3h5TWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29y
ZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCiB7CiB9CiAjZW5kaWYKIAorI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAppbmRleCBiOTQ1ZWYwYjUzZDM0MDkwYmU5MGU3MzljMDA3ZDcyMmVkNWE1ZTM5
Li5lZmNhYWNmNmNkMzVjZTE1N2U5MzRjNGRjYjdiNTU2YTlmZjU5NWE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTUzMyw3ICsxNTMzLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNv
bm5lY3Rpb24sIENvcmVJUEM6Ok0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQorI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiBVU0UoVElM
RURfQkFDS0lOR19TVE9SRSkKICAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VD
bGFzc0xheWVyVHJlZUhvc3RQcm94eT4oKSkgewogICAgICAgICBtX2RyYXdpbmdBcmVhLT5kaWRS
ZWNlaXZlTGF5ZXJUcmVlSG9zdFByb3h5TWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFy
Z3VtZW50cyk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggZmZiYmRiYjU3OGYwYTk0NTQyOWM4YjhmMzgw
MzhlNGMwNzlmNTFkOS4uNzFiNjNkMzQ5YTJlNjUwMDJiN2Y2MTBhN2Q3Y2ZkNjNhZTZmNjAyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgK
QEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKICAgICB2aXJ0dWFsIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xh
eWVyU3luYygpID0gMDsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisjaWYgVVNFKFRFWFRVUkVf
TUFQUEVSKSAmJiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUxheWVyVHJlZUhvc3RNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBD
OjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopID0gMDsKICNlbmRpZgogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWFJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYUltcGwuY3BwCmluZGV4IDNhZDI3ZTdhZjIwYjcwZDNlZDk2YTk3MjE5MWNjZWU2NmU2MGUx
ZjYuLjRjYzFmZTI3MjNmOGQzYjI1OWQ3M2M3YzJmOTc0ZGU4NDYzYzc3M2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3Bw
CkBAIC02NjcsNyArNjY3LDcgQEAgdm9pZCBEcmF3aW5nQXJlYUltcGw6OmRpc3BsYXkoVXBkYXRl
SW5mbyYgdXBkYXRlSW5mbykKICAgICBtX2Rpc3BsYXlUaW1lci5zdG9wKCk7CiB9CiAKLSNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBFUikKKyNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBFUikgJiYgVVNF
KFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiB2b2lkIERyYXdpbmdBcmVhSW1wbDo6ZGlkUmVjZWl2ZUxh
eWVyVHJlZUhvc3RNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJ
UEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1l
bnRzKQogewogICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmgKaW5kZXggMjhjOGNlNjhjZDBl
NDczNjBjZGU2ZjNhNjUyNmVlNzZkMTQxOTU5ZS4uYmY4NmZjZjE5NWQ1OWJjOWNkMzYzMWJiZmY5
ZDAwZWRhYmI5MjE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYUltcGwuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBzY2hlZHVsZUNoaWxkV2luZG93R2VvbWV0cnlVcGRhdGUoY29uc3QgV2luZG93
R2VvbWV0cnkmKTsKICNlbmRpZgogCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAm
JiBVU0UoVEVYVFVSRV9NQVBQRVIpCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAm
JiBVU0UoVEVYVFVSRV9NQVBQRVIpICYmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlTGF5ZXJUcmVlSG9zdE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVj
dGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGVlZTg2ODYw
NTA4NTMzYjU5YTRmM2RiODk3YjFmODVhOGJiZWRjZTkuLjFlZDI2ZTY5NmY0NGQ5Y2E5NjRhZTkw
MTI5Y2IyNGM0N2RkZmJlMDkgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAxMi0wMi0wNCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29u
QGlnYWxpYS5jb20+IGFuZCBOYXlhbiBLdW1hciBLICA8bmF5YW5ra0Btb3Rvcm9sYS5jb20+CisK
KyAgICAgICAgW0dUS10gQWRkIFRleHR1cmVNYXBwZXJHTCBpbXBsZW1lbnRhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUzMDgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFt
OiBUZXh0dXJlTWFwcGVyR0wgaW1wbGllcyBVU0UoVEVYVFVSRV9NQVBQRVIpCisgICAgICAgICog
Y29uZmlndXJlLmFjOiBPbmx5IGFsbG93IGVuYWJsaW5nIHRoZSBHTCB2ZXJzaW9uIG9mIFRleHR1
cmVNYXBwZXIgb24gWDExLgorCiAyMDEyLTAyLTAzICBLYWxldiBMZW1iZXIgIDxrYWxldmxlbWJl
ckBnbWFpbC5jb20+CiAKICAgICAgICAgW0dUS10gY29uZmlndXJlOiBQcmludCBvdXQgdGhlIC1X
bm8tYysrMHgtY29tcGF0IHRlc3QgcmVzdWx0CmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBi
L0dOVW1ha2VmaWxlLmFtCmluZGV4IDMzZWY0NjJlMDQwNTk0NmEyZmRjNGUyNWUwODkxYzc5NDVk
NGI0OGUuLjBiMTQwZTk5ZDY1ZmYxYWJkMWNiZThjYjFjNjg0YmViYTQ4ZDgwYzEgMTAwNjQ0Ci0t
LSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1ha2VmaWxlLmFtCkBAIC0xNzgsMTEgKzE3OCwx
MyBAQCBlbmRpZgogCiBpZiBVU0VfVEVYVFVSRV9NQVBQRVJfQ0FJUk8KIGdsb2JhbF9jcHBmbGFn
cyArPSBcCisJLURXVEZfVVNFX1RFWFRVUkVfTUFQUEVSPTEgXAogCS1EV1RGX1VTRV9URVhUVVJF
X01BUFBFUl9DQUlSTz0xCiBlbmRpZgogCiBpZiBVU0VfVEVYVFVSRV9NQVBQRVJfR0wKIGdsb2Jh
bF9jcHBmbGFncyArPSBcCisJLURXVEZfVVNFX1RFWFRVUkVfTUFQUEVSPTEgXAogCS1EV1RGX1VT
RV9URVhUVVJFX01BUFBFUl9HTD0xCiBlbmRpZgogCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMg
Yi9jb25maWd1cmUuYWMKaW5kZXggOGMxZTNkNTIyNjQxMDM0ZTMzYWU4Y2U4ZDBmNWFhNWRlNzZi
NDdjZC4uOTczODcxODQwZTY5NzVmOTMxYzQ0MDBkNDRhNGQyMWIyYTIxZjQ0YSAxMDA2NDQKLS0t
IGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtNDM0LDYgKzQzNCwxMCBAQCBB
Q19BUkdfV0lUSChhY2NlbGVyYXRlZF9jb21wb3NpdGluZywKICAgICAgICAgICAgIFtdLCBbd2l0
aF9hY2NlbGVyYXRlZF9jb21wb3NpdGluZz0ibm8iXSkKIEFDX01TR19SRVNVTFQoWyR3aXRoX2Fj
Y2VsZXJhdGVkX2NvbXBvc2l0aW5nXSkKIAoraWYgdGVzdCAiJHdpdGhfYWNjZWxlcmF0ZWRfY29t
cG9zaXRpbmciID0gIm9wZW5nbCIgJiYgdGVzdCAiJHdpdGhfdGFyZ2V0IiAhPSAieDExIiA7IHRo
ZW4KKyAgICBBQ19NU0dfRVJST1IoW09wZW5HTCBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBpcyBv
bmx5IGF2YWlsYWJsZSBvbiBYMTEgY3VycmVudGx5Ll0pCitmaQorCiBpZiB0ZXN0ICIkZW5hYmxl
X3dlYmdsIiA9ICJ5ZXMiIHx8ICB0ZXN0ICIkd2l0aF9hY2NlbGVyYXRlZF9jb21wb3NpdGluZyIg
PSAib3BlbmdsIiA7IHRoZW4KICAgICBBQ19DSEVDS19IRUFERVJTKFtHTC9nbC5oXSwgW10sIEFD
X01TR19FUlJPUihbT3BlbkdMIGhlYWRlciBub3QgZm91bmRdKSkKICAgICBBQ19DSEVDS19IRUFE
RVJTKFtHTC9nbHguaF0sIFtdLCBBQ19NU0dfRVJST1IoW0dMWCBoZWFkZXIgbm90IGZvdW5kXSkp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125591</attachid>
            <date>2012-02-06 01:06:23 -0800</date>
            <delta_ts>2012-02-06 11:51:51 -0800</delta_ts>
            <desc>Properly handle little endian systems with OpenGL ES</desc>
            <filename>bug-75308-20120206010623.patch</filename>
            <type>text/plain</type>
            <size>46713</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2Y3YTUzY2FjNzNkNjgy
ZDU5Y2JjZWUyNGJhOWVmNGM0MzM5ZTQ5Ny4uYzM3NDlkM2Y0Y2Y2YTBmNWNmYTEyMDExMDcxYmI5
ZGU5N2FiNzM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAyLTA0ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4gYW5kIE5heWFuIEt1bWFyIEsgIDxu
YXlhbmtrQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgVGV4dHVyZU1hcHBlckdM
IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NTMwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyB3aWxsIGJlIGNvdmVyZWQgYnkgYWNjZWxlcmF0ZWQg
Y29tcG9zaXRpbmcgYW5kCisgICAgICAgIDNEIENTUyB0cmFuc2Zvcm0gdGVzdHMgZXZlbnR1YWxs
eS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZGVkIHNvbWUgZmlsZXMgbmVj
ZXNzYXJ5IHRvIGJ1aWxkIFRleHR1cmVNYXBwZXJHTC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9UZXh0dXJlTWFwcGVyR0xDYWlyby5jcHA6IEFkZGVkIGltcGxlbWVudGF0aW9u
cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9UZXh0dXJlTWFwcGVyR0xDYWly
by5oOiBVcGRhdGVkIG1lbWJlciBsaXN0LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0
ay9XaW5kb3dHTENvbnRleHQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3RrL1dpbmRvd0dMQ29udGV4dEdMWC5jcHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwOiBVc2UgdGhlIEdMIHNoaW1zIG9uIEdU
Sy4KKwogMjAxMi0wMi0wMyAgQW5kcmVhcyBLbGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgS2lsbCBwZXItQXR0cmlidXRlIHN0eWxlIGRlY2xhcmF0aW9ucy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0No
YW5nZUxvZwppbmRleCAyZGJjZGQzM2ZiMzBiODlkMmQwNjY3MWRhZTZhYTNmMjkwOTUwMzZiLi43
MmE3MTYxMmIxNzI2YzMzNGIzMjcxM2UwZDJlMzIyZTg4YjYzNTkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMDItMDQgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNv
bkBpZ2FsaWEuY29tPiBhbmQgTmF5YW4gS3VtYXIgSyAgPG5heWFua2tAbW90b3JvbGEuY29tPgor
CisgICAgICAgIFtHVEtdIEFkZCBUZXh0dXJlTWFwcGVyR0wgaW1wbGVtZW50YXRpb24KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1MzA4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5h
bTogQWRkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wgdG8gdGhlIGxpc3QuCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaDoKKyAg
ICAgICAgKEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KTogQWRkZWQgc29tZSBtZW1iZXJz
IGZvciBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEdMLgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Q2x1dHRlci5jcHA6IEFkZGVkIGVt
cHR5IGltcGxlbWVudGF0aW9ucworICAgICAgICBmb3IgR3JhcGhpY3NMYXllckNsaWVudC4gVGhp
cyBpcyBvbmx5IHVzZWQgZm9yIHRoZSBHTCB2YXJpYW50LgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpD
aHJvbWVDbGllbnQ6OnBlcmZvcm1BbGxQZW5kaW5nU2Nyb2xscyk6IFVwZGF0ZSB0aGUgcm9vdCBs
YXllciB3aGlsZSBzY3JvbGxpbmcuCisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6cGFp
bnQpOiBVcGRhdGUgdGhlIHJvb3QgbGF5ZXIgYWZ0ZXIgcGFpbnRpbmcuCisgICAgICAgICogd2Vi
a2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcDogQWRkZWQgYW4gZW5hYmxlLWFjY2VsZXJhdGVkLWNv
bXBvc2l0aW5nIHNldHRpbmcuCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzcHJp
dmF0ZS5oOiBEaXR0by4KKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAg
ICAgICh3ZWJraXRfd2ViX3ZpZXdfZHJhdyk6IENhbGwgaW50byBUZXh0dXJlTWFwcGVyIG5vdy4K
KyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19yZWFsaXplKTogVXNlIGdka193aW5kb3dfZW5zdXJl
X25hdGl2ZSBoZXJlLgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6
IFN1cHBvcnQgdGhlIG5ldyBlbmFibGUtYWNjZWxlcmF0ZWQtY29tcG9zaXRpbmcgc2V0dGluZy4K
KyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3RpZnkpOiBEaXR0by4KKwogMjAx
Mi0wMi0wMiAgS2FsZXYgTGVtYmVyICA8a2FsZXZsZW1iZXJAZ21haWwuY29tPgogCiAgICAgICAg
IFtHVEtdIERvbid0IHVzZSB1aW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDgzNDY2MTkxNjdjYWMwYTNkYmQx
MjEzY2Y5ZWQ1M2UwYmYyNzBiZS4uNGZjZGI4ZWY3NTg0Y2YzZGMyYjhhYjE2MjkwOTNkOTU4NTQ1
ZDk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTAyLTA1ICBNYXJ0aW4gUm9i
aW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgVGV4dHVy
ZU1hcHBlckdMIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NTMwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZpeCB0aGUgV2ViS2l0MiArIEFDIGJ1aWxkIGZvciBHVEsrLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCBzb21lIG1pc3Npbmcgc291cmNlIGZpbGVzLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dCk6IEFkZCBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkgdG8gdGhlIGd1YXJkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZFJlY2VpdmVNZXNzYWdlKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChEcmF3aW5nQXJlYSk6IERpdHRvLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0KTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1w
bC5oOgorICAgICAgICAoRHJhd2luZ0FyZWFJbXBsKTogRGl0dG8uCisKIDIwMTItMDItMDMgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQyIHNo
b3VsZCBkaXNwYXRjaCB3aGVlbCBldmVudHMgdG8gdGhlIG5ldyBTY3JvbGxpbmdUcmVlIGNsYXNz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA5NGUwNWUxMzAzNTgyZDcyNDNjOGY2
NDc0NWNiYTFiMDBiZDk1YWYwLi4xMjU1MjYzZjQxYTE2MzcwYzhlZjFlM2NhYjljMWYyMGUxMzNm
NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTU3NTUsMTMgKzU3NTUsMTMg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmggXAotICAg
ICAgICBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckltYWdlQnVmZmVyLmNwcCBcCi0gICAgICAgIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCBcCi0gICAgICAgIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5jcHAgXAot
ICAgICAgICBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlck5vZGUuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllci5oCiB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAotCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RleHR1cmVNYXBwZXJHTENhaXJvLmNwcCBcCi0JU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVGV4dHVyZU1hcHBlckdMQ2Fpcm8u
aAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9XaW5kb3dHTENvbnRleHRH
TFguY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2luZG93R0xD
b250ZXh0LmgKIGVuZGlmICAjIEVORCBVU0VfVEVYVFVSRV9NQVBQRVJfR0wKIGVuZGlmICAjIFVT
RV9BQ0NFTEVSQVRFRF9DT01QT1NJVElORwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVGV4dHVyZU1hcHBlckdMQ2Fpcm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVGV4dHVyZU1hcHBlckdMQ2Fpcm8uY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzcxYjY2MTRjYTIwYTk2ZGExZGMyMWU2Y2Y3
NjI3YTBiMTk1MTgyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RleHR1cmVNYXBwZXJH
TENhaXJvLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgQ2hhbmdTZW9rIE9oIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KLSAqCi0gKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTENhaXJvLmgiCi0KLSNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUJHUkEzMlByZW11
bHRpbXBsaWVkQnVmZmVyQ2Fpcm86OkJHUkEzMlByZW11bHRpbXBsaWVkQnVmZmVyQ2Fpcm8oKQot
ICAgIDogbV9jb250ZXh0KDApCi0gICAgLCBtX2NhaXJvQ29udGV4dCgwKQotICAgICwgbV9jYWly
b1N1cmZhY2UoMCkgCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotQkdSQTMyUHJlbXVs
dGltcGxpZWRCdWZmZXJDYWlybzo6fkJHUkEzMlByZW11bHRpbXBsaWVkQnVmZmVyQ2Fpcm8oKQot
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLVBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBC
R1JBMzJQcmVtdWx0aW1wbGllZEJ1ZmZlckNhaXJvOjpiZWdpblBhaW50KGNvbnN0IEludFJlY3Qm
IGRpcnR5UmVjdCwgYm9vbCBvcGFxdWUpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gMDsKLX0KLQotdm9pZCogQkdSQTMyUHJlbXVsdGltcGxpZWRCdWZmZXJDYWlybzo6ZGF0
YSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBC
R1JBMzJQcmVtdWx0aW1wbGllZEJ1ZmZlckNhaXJvOjplbmRQYWludCgpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQotdWludDY0X3QgdWlkRm9ySW1hZ2UoSW1hZ2UqIGltYWdlKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLVBhc3NPd25QdHI8QkdS
QTMyUHJlbXVsdGltcGxpZWRCdWZmZXI+IEJHUkEzMlByZW11bHRpbXBsaWVkQnVmZmVyOjpjcmVh
dGUoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBC
R1JBMzJQcmVtdWx0aW1wbGllZEJ1ZmZlckNhaXJvKCkpOwotfQotCi19OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVGV4dHVyZU1hcHBlckdMQ2Fp
cm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RleHR1cmVNYXBw
ZXJHTENhaXJvLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxODgwNmQ3NTNlNWM1
ZTNiOGU5MmE4OTZkMGFkNjU1MjczZjk5MGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
VGV4dHVyZU1hcHBlckdMQ2Fpcm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQ2hhbmdTZW9rIE9oIDxzaGl2YW1pZG93QGdtYWlsLmNv
bT4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8K
LQotI2lmbmRlZiBUZXh0dXJlTWFwcGVyR0xDYWlyb19oCi0jZGVmaW5lIFRleHR1cmVNYXBwZXJH
TENhaXJvX2gKLQotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIEJHUkEzMlByZW11bHRpbXBsaWVkQnVmZmVyQ2Fpcm86IHB1YmxpYyBC
R1JBMzJQcmVtdWx0aW1wbGllZEJ1ZmZlciB7Ci1wdWJsaWM6Ci0gICAgQkdSQTMyUHJlbXVsdGlt
cGxpZWRCdWZmZXJDYWlybygpOwotICAgIHZpcnR1YWwgfkJHUkEzMlByZW11bHRpbXBsaWVkQnVm
ZmVyQ2Fpcm8oKTsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBiZWdpblBh
aW50KGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgYm9vbCBvcGFxdWUpOwotICAgIHZpcnR1YWwg
dm9pZCBlbmRQYWludCgpOyAKLSAgICB2aXJ0dWFsIHZvaWQqIGRhdGEoKTsgCi0KLXByaXZhdGU6
Ci0gICAgUGxhdGZvcm1Db250ZXh0Q2Fpcm8qIG1fY29udGV4dDsKLSAgICBjYWlyb190KiBtX2Nh
aXJvQ29udGV4dDsKLSAgICBjYWlyb19zdXJmYWNlX3QqIG1fY2Fpcm9TdXJmYWNlOwotfTsKLQot
fQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
dGsvV2luZG93R0xDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
dGsvV2luZG93R0xDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTYyMzU2ODM1NjQ3Nzk0NjRhY2NkODQ3
YmRlNWIxMDlkNjFlMDI0NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2d0ay9XaW5kb3dHTENvbnRleHQuaApAQCAtMCwwICsxLDU0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKyAqICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSBVU0EKKyAqLworCisjaWZuZGVmIFdpbmRvd0dMQ29udGV4dF9oCisjZGVmaW5lIFdpbmRvd0dM
Q29udGV4dF9oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgorCisjaWYgZGVmaW5lZChYUF9VTklYKQordHlwZWRlZiBzdHJ1Y3QgX19H
TFhjb250ZXh0UmVjKiBHTFhDb250ZXh0OwordHlwZWRlZiBzdHJ1Y3QgX1hEaXNwbGF5IERpc3Bs
YXk7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXaW5kb3dHTENvbnRl
eHQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdpbmRvd0dMQ29udGV4dCk7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2luZG93R0xDb250ZXh0PiBjcmVhdGVDb250ZXh0V2l0
aEdka1dpbmRvdyhHZGtXaW5kb3cqKTsKKyAgICB2aXJ0dWFsIH5XaW5kb3dHTENvbnRleHQoKTsK
KyAgICB2b2lkIHN0YXJ0RHJhd2luZygpOworICAgIHZvaWQgZmluaXNoRHJhd2luZygpOworCitw
cml2YXRlOgorICAgIFdpbmRvd0dMQ29udGV4dChHZGtXaW5kb3cqKTsKKyAgICBHZGtXaW5kb3cq
IG1fd2luZG93OworCisjaWYgZGVmaW5lZChYUF9VTklYKQorICAgIEdMWENvbnRleHQgbV9jb250
ZXh0OworICAgIERpc3BsYXkqIG1fZGlzcGxheTsKKyAgICBib29sIG1fbmVlZFRvQ2xvc2VEaXNw
bGF5OworI2VuZGlmCit9OworCit9CisKKyNlbmRpZiAvLyBXaW5kb3dHTENvbnRleHRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL1dpbmRvd0dMQ29u
dGV4dEdMWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvV2luZG93
R0xDb250ZXh0R0xYLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTZhNGY0MWI0ZTIzNjlmYjg2ZTYzODU5ZmY5
MWUzOWMwMWU4ZjA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL1dpbmRvd0dMQ29udGV4dEdMWC5jcHAKQEAgLTAsMCArMSw4NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEsIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEg
IFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXaW5kb3dHTENvbnRl
eHQuaCIKKworI2luY2x1ZGUgPEdML2dseC5oPgorI2luY2x1ZGUgPGdkay9nZGsuaD4KKyNpbmNs
dWRlIDxnZGsvZ2RreC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitQYXNzT3duUHRyPFdpbmRvd0dMQ29udGV4dD4gV2luZG93R0xDb250ZXh0Ojpj
cmVhdGVDb250ZXh0V2l0aEdka1dpbmRvdyhHZGtXaW5kb3cqIHdpbmRvdykKK3sKKyAgICBPd25Q
dHI8V2luZG93R0xDb250ZXh0PiBjb250ZXh0ID0gYWRvcHRQdHIobmV3IFdpbmRvd0dMQ29udGV4
dCh3aW5kb3cpKTsKKyAgICBpZiAoIWNvbnRleHQtPm1fY29udGV4dCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgpOworfQorCitXaW5kb3dHTENv
bnRleHQ6OldpbmRvd0dMQ29udGV4dChHZGtXaW5kb3cqIHdpbmRvdykKKyAgICA6IG1fd2luZG93
KHdpbmRvdykKKyAgICAsIG1fY29udGV4dCgwKQorICAgICwgbV9kaXNwbGF5KDApCisgICAgLCBt
X25lZWRUb0Nsb3NlRGlzcGxheSgwKQoreworICAgIEdka0Rpc3BsYXkqIGdka0Rpc3BsYXkgPSBn
ZGtfd2luZG93X2dldF9kaXNwbGF5KG1fd2luZG93KTsKKyAgICBpZiAoZ2RrRGlzcGxheSkKKyAg
ICAgICAgbV9kaXNwbGF5ID0gR0RLX0RJU1BMQVlfWERJU1BMQVkoZ2RrRGlzcGxheSk7CisgICAg
ZWxzZSB7CisgICAgICAgIG1fZGlzcGxheSA9IFhPcGVuRGlzcGxheSgwKTsKKyAgICAgICAgbV9u
ZWVkVG9DbG9zZURpc3BsYXkgPSB0cnVlOworICAgIH0KKworICAgIFhXaW5kb3dBdHRyaWJ1dGVz
IGF0dHJpYnV0ZXM7CisgICAgaWYgKCFYR2V0V2luZG93QXR0cmlidXRlcyhtX2Rpc3BsYXksIEdE
S19XSU5ET1dfWElEKG1fd2luZG93KSwgJmF0dHJpYnV0ZXMpKQorICAgICAgICByZXR1cm47CisK
KyAgICBYVmlzdWFsSW5mbyB2aXN1YWxJbmZvOworICAgIHZpc3VhbEluZm8udmlzdWFsaWQgPSBY
VmlzdWFsSURGcm9tVmlzdWFsKGF0dHJpYnV0ZXMudmlzdWFsKTsKKworICAgIGludCBudW1SZXR1
cm5lZCA9IDA7CisgICAgWFZpc3VhbEluZm8qIHZpc3VhbEluZm9MaXN0ID0gWEdldFZpc3VhbElu
Zm8obV9kaXNwbGF5LCBWaXN1YWxJRE1hc2ssICZ2aXN1YWxJbmZvLCAmbnVtUmV0dXJuZWQpOwor
ICAgIG1fY29udGV4dCA9IGdsWENyZWF0ZUNvbnRleHQobV9kaXNwbGF5LCB2aXN1YWxJbmZvTGlz
dCwgMCwgVHJ1ZSk7CisgICAgWEZyZWUodmlzdWFsSW5mb0xpc3QpOworfQorCitXaW5kb3dHTENv
bnRleHQ6On5XaW5kb3dHTENvbnRleHQoKQoreworICAgIGlmICghbV9jb250ZXh0KQorICAgICAg
ICByZXR1cm47CisgICAgZ2xYTWFrZUN1cnJlbnQobV9kaXNwbGF5LCBOb25lLCBOb25lKTsKKyAg
ICBnbFhEZXN0cm95Q29udGV4dChtX2Rpc3BsYXksIG1fY29udGV4dCk7CisKKyAgICBpZiAobV9u
ZWVkVG9DbG9zZURpc3BsYXkpCisgICAgICAgIFhDbG9zZURpc3BsYXkobV9kaXNwbGF5KTsKK30K
Kwordm9pZCBXaW5kb3dHTENvbnRleHQ6OnN0YXJ0RHJhd2luZygpCit7CisgICAgZ2xYTWFrZUN1
cnJlbnQobV9kaXNwbGF5LCBHREtfV0lORE9XX1hJRChtX3dpbmRvdyksIG1fY29udGV4dCk7Cit9
CisKK3ZvaWQgV2luZG93R0xDb250ZXh0OjpmaW5pc2hEcmF3aW5nKCkKK3sKKyAgICBnbFhTd2Fw
QnVmZmVycyhtX2Rpc3BsYXksIEdES19XSU5ET1dfWElEKG1fd2luZG93KSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggNTg3MjkzNjNmYTI0
NGVlMWM5NGI5NmM1YjNiNmFiNWVlYjM4ZGU1Ni4uMDE1ZGVhZjY5NjViNjczOTNjNzIwNGFlMjc0
ZjVkNGJmOTdlM2NkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAgLTE4LDcgKzE4LDYgQEAK
ICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wu
aCIKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAtMzAsOCArMjksMTEgQEAKICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAK
LSNpZiBQTEFURk9STShRVCkKKyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKQogI2lu
Y2x1ZGUgPGNhaXJvL09wZW5HTFNoaW1zLmg+CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFFUKQog
I2VsaWYgZGVmaW5lZChURVhNQVBfT1BFTkdMX0VTXzIpCiAjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+
CiAjaW5jbHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CkBAIC01MSw3ICs1MywxNCBAQAogI2luY2x1ZGUg
PEdML2dseC5oPgogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChURVhNQVBfT1BFTkdMX0VTXzIpICYm
ICFQTEFURk9STShRVCkKKyNpZiBVU0UoQ0FJUk8pCisjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMu
aCIKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorI2luY2x1ZGUgPGNhaXJvLmg+CisjaW5jbHVk
ZSA8d3RmL0J5dGVBcnJheS5oPgorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChURVhNQVBfT1BFTkdM
X0VTXzIpICYmICFQTEFURk9STShRVCkgJiYgIVBMQVRGT1JNKEdUSykKIGV4dGVybiAiQyIgewog
ICAgIHZvaWQgZ2xVbmlmb3JtMWYoR0xpbnQsIEdMZmxvYXQpOwogICAgIHZvaWQgZ2xVbmlmb3Jt
MWkoR0xpbnQsIEdMaW50KTsKQEAgLTYwNCw3ICs2MTMsNyBAQCB2b2lkIEJpdG1hcFRleHR1cmVH
TDo6cmVzZXQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSwgYm9vbCBvcGFxdWUpCiAgICAgbV9zdXJm
YWNlTmVlZHNSZXNldCA9IHRydWU7CiB9CiAKLQorI2lmIFBMQVRGT1JNKFFUKQogc3RhdGljIHZv
aWQgc3dpenpsZUJHUkFUb1JHQkEodWludDMyX3QqIGRhdGEsIGNvbnN0IEludFNpemUmIHNpemUp
CiB7CiAgICAgaW50IHdpZHRoID0gc2l6ZS53aWR0aCgpOwpAQCAtNjE1LDYgKzYyNCw3IEBAIHN0
YXRpYyB2b2lkIHN3aXp6bGVCR1JBVG9SR0JBKHVpbnQzMl90KiBkYXRhLCBjb25zdCBJbnRTaXpl
JiBzaXplKQogICAgICAgICAgICAgcFt4XSA9ICgocFt4XSA8PCAxNikgJiAweGZmMDAwMCkgfCAo
KHBbeF0gPj4gMTYpICYgMHhmZikgfCAocFt4XSAmIDB4ZmYwMGZmMDApOwogICAgIH0KIH0KKyNl
bmRpZgogCiB2b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoY29uc3Qgdm9pZCog
ZGF0YSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCkKIHsKQEAgLTYzOSw2ICs2NDksMjkgQEAg
dm9pZCBCaXRtYXBUZXh0dXJlR0w6OnVwZGF0ZUNvbnRlbnRzKEltYWdlKiBpbWFnZSwgY29uc3Qg
SW50UmVjdCYgdGFyZ2V0UmVjdCwgY28KICAgICBpZiAoZm9ybWF0ID09IEJHUkFGb3JtYXQgfHwg
Zm9ybWF0ID09IEJHUkZvcm1hdCkKICAgICAgICAgc3dpenpsZUJHUkFUb1JHQkEocmVpbnRlcnBy
ZXRfY2FzdDx1aW50MzJfdCo+KHF0SW1hZ2UuYml0cygpKSwgcXRJbWFnZS5zaXplKCkpOwogICAg
IEdMX0NNRChnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgdGFyZ2V0UmVjdC54KCks
IHRhcmdldFJlY3QueSgpLCB0YXJnZXRSZWN0LndpZHRoKCksIHRhcmdldFJlY3QuaGVpZ2h0KCks
IGdsRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCBxdEltYWdlLmNvbnN0Qml0cygpKSkKKworI2Vs
aWYgVVNFKENBSVJPKQorCisjaWYgIUNQVShCSUdfRU5ESUFOKQorI2lmIGRlZmluZWQoVEVYTUFQ
X09QRU5HTF9FU18yKQorICAgIHN3aXp6bGVCR1JBVG9SR0JBKHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDMyX3QqPihjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGZyYW1lSW1hZ2UpKSwKKyAgICAg
ICAgICAgICAgICAgICAgICBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoZnJhbWVJbWFn
ZSkgKiBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoZnJhbWVJbWFnZSkpOworI2Vsc2UK
KyAgICBnbEZvcm1hdCA9IGlzT3BhcXVlKCkgPyBHTF9CR1IgOiBHTF9CR1JBOworI2VuZGlmCisj
ZW5kaWYKKworICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1JPV19MRU5HVEgsIGNhaXJvX2lt
YWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShmcmFtZUltYWdlKSAvIDQpOworICAgIGdsUGl4ZWxTdG9y
ZWkoR0xfVU5QQUNLX1NLSVBfUk9XUywgc291cmNlUmVjdC55KCkpOworICAgIGdsUGl4ZWxTdG9y
ZWkoR0xfVU5QQUNLX1NLSVBfUElYRUxTLCBzb3VyY2VSZWN0LngoKSk7CisgICAgR0xfQ01EKGds
VGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGFyZ2V0UmVjdC54KCksIHRhcmdldFJlY3QueSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0LmhlaWdodCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKGZyYW1lSW1hZ2Up
KSk7CisgICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSCwgMCk7CisgICAgZ2xQ
aXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9ST1dTLCAwKTsKKyAgICBnbFBpeGVsU3RvcmVpKEdM
X1VOUEFDS19TS0lQX1BJWEVMUywgMCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmls
ZS5hbQppbmRleCAyNDcyMjEyZTlhNTFiNmYxNGE2OTdmOTJjOTkxNTU2NGMwYzE1ZWYxLi4xZjRm
ZGYxYmIzMmFhMzVhNjU1MGRjMjMzOGExYzE0ZGViOTc2ZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtl
ZmlsZS5hbQpAQCAtMTg0LDYgKzE4NCw3IEBAIHdlYmtpdGd0a19zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdEhUTUxFbGVtZW50V3JhcHBlckZhY3Rv
cnkuaCBcCiAJU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHQuaCBcCiAJU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRDbHV0dGVyLmNwcCBcCisJU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRHTC5jcHAgXAog
CVNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Fzc2VydE1hdGNoaW5nRW51bXMuY3Bw
IFwKIAlTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3Bw
IFwKIAlTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaAppbmRleCA2MWMyM2I3MGNkMWVlODY4YmJk
MzhkYmI5MDc4NmY4OTUyZTA1MGI1Li40MmE1ZjI0YjYxYjcxOTIxNzczMWUxNzY1NTgyNzZkZmJl
MjA0ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgKQEAgLTE5LDYgKzE5LDcg
QEAKICNpZm5kZWYgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRfaAogI2RlZmluZSBBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dF9oCiAKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVudC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIK
ICNpbmNsdWRlICJJbnRTaXplLmgiCkBAIC0yNiwxNSArMjcsMTYgQEAKICNpbmNsdWRlICJ3ZWJr
aXR3ZWJ2aWV3LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAotI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlck5vZGUuaCIKKyNpbmNsdWRlICJXaW5kb3dHTENvbnRleHQuaCIKKyNl
bmRpZgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBHcmFwaGljc0xheWVyOwotfQorI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNs
YXNzIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0IHsKK2NsYXNzIEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0IDogcHVibGljIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbGllbnQgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KTsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dD4gY3JlYXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCkBAIC00Nyw3ICs0OSwxNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzY2hlZHVsZVJvb3RMYXllclJlcGFpbnQoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpOwogICAgIHZvaWQgbWFya0ZvclN5bmMoKTsKICAgICB2b2lkIHN5bmNMYXllcnNU
aW1lb3V0KFdlYkNvcmU6OlRpbWVyPEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0PiopOwor
ICAgIHZvaWQgc3luY0xheWVyc05vdygpOwogICAgIHZvaWQgcmVzaXplUm9vdExheWVyKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmKTsKKyAgICBib29sIHJlbmRlckxheWVyc1RvV2luZG93KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0KTsKKyAgICBib29sIGVuYWJsZWQoKTsKKworICAg
IC8vIEdyYXBoaWNzTGF5ZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QW5pbWF0aW9u
U3RhcnRlZChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgZG91YmxlIHRpbWUpOworICAg
IHZpcnR1YWwgdm9pZCBub3RpZnlTeW5jUmVxdWlyZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NM
YXllciopOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXIqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBXZWJDb3JlOjpHcmFwaGlj
c0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdFRvUGFpbnQp
OworICAgIHZpcnR1YWwgYm9vbCBzaG93RGVidWdCb3JkZXJzKGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKGNv
bnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBXZWJL
aXRXZWJWaWV3KiBtX3dlYlZpZXc7CkBAIC01Niw2ICs2OCwxMyBAQCBwcml2YXRlOgogCiAjaWYg
VVNFKENMVVRURVIpCiAgICAgR3RrV2lkZ2V0KiBtX3Jvb3RMYXllckVtYmVkZGVyOworI2VsaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorICAgIHZvaWQgaW5pdGlhbGl6ZUlmTmVjZXNzYXJ5KCk7
CisKKyAgICBib29sIG1faW5pdGlhbGl6ZWQ7CisgICAgV2ViQ29yZTo6VGV4dHVyZU1hcHBlck5v
ZGUqIG1fcm9vdFRleHR1cmVNYXBwZXJOb2RlOworICAgIE93blB0cjxXZWJDb3JlOjpXaW5kb3dH
TENvbnRleHQ+IG1fY29udGV4dDsKKyAgICBPd25QdHI8V2ViQ29yZTo6VGV4dHVyZU1hcHBlcj4g
bV90ZXh0dXJlTWFwcGVyOwogI2VuZGlmCiAKICAgICBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29u
dGV4dChXZWJLaXRXZWJWaWV3Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dENsdXR0ZXIuY3BwIGIvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHRDbHV0dGVyLmNwcAppbmRleCA0NjU3ZWM0M2YwMTc0ODJiMzc2YTgwNzE4YTEyYWVlN2RhZTBk
Y2UyLi5iNTJiNDA5ZTVhZTk1OGNkMjA3MTg0YzU3ZGFiMzA5OWYyODhlMGUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dENsdXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Q2x1dHRlci5jcHAKQEAgLTQ1LDYgKzQ1LDEx
IEBAIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojp+QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQoKQogewogfQogCitib29sIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpl
bmFibGVkKCkKK3sKKyAgICByZXR1cm4gbV9yb290R3JhcGhpY3NMYXllcjsKK30KKwogYm9vbCBB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6cmVuZGVyTGF5ZXJzVG9XaW5kb3coY2Fpcm9f
dCogd2lkZ2V0Q3IsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CkBAIC0xMTYsNiArMTIxLDMyIEBAIHZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQ6OnN5bmNMYXllcnNUaW1lb3V0KFRpbWVyPEFjY2VsZXJhdGVkQ29tcG9zaXRpCiAgICAg
Y29yZShtX3dlYlZpZXcpLT5tYWluRnJhbWUoKS0+dmlldygpLT5zeW5jQ29tcG9zaXRpbmdTdGF0
ZUluY2x1ZGluZ1N1YmZyYW1lcygpOwogfQogCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0Ojpub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXIqLCBkb3VibGUgdGltZSkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KK3ZvaWQg
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6Om5vdGlmeVN5bmNSZXF1aXJlZChjb25zdCBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyKikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
Kwordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6cGFpbnRDb250ZW50cyhjb25z
dCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgV2Vi
Q29yZTo6R3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitib29sIEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0OjpzaG93RGVidWdCb3JkZXJzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXIqKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c2hvd1JlcGFp
bnRDb3VudGVyKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVT
RShDTFVUVEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dEdMLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45YmZhM2QwZmVkYTVmM2Q4ODg5NDI4YzNmZmM1MTcyMjliYzk2N2U2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHRHTC5jcHAKQEAgLTAsMCArMSwyMDggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgSWdhbGlhLCBTLkwuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVf
TUFQUEVSX0dMKQorCisjaW5jbHVkZSAiQ2Fpcm9VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJDaHJv
bWUuaCIKKyNpbmNsdWRlICJDaHJvbWVDbGllbnRHdGsuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgor
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgi
CisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlck5v
ZGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oIgorI2luY2x1ZGUgPEdML2ds
Lmg+CisjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNpbmNsdWRlIDxnZGsvZ2RrLmg+CisjaW5jbHVkZSA8
Z3RrL2d0ay5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQorICAgIDogbV93ZWJWaWV3KHdlYlZp
ZXcpCisgICAgLCBtX3N5bmNUaW1lcih0aGlzLCAmQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRl
eHQ6OnN5bmNMYXllcnNUaW1lb3V0KQorICAgICwgbV9pbml0aWFsaXplZChmYWxzZSkKKyAgICAs
IG1fcm9vdFRleHR1cmVNYXBwZXJOb2RlKDApCit7Cit9CisKK0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdDb250ZXh0Ojp+QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQoKQoreworCit9CisKK3Zv
aWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OmluaXRpYWxpemVJZk5lY2Vzc2FyeSgp
Cit7CisgICAgaWYgKG1faW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1faW5p
dGlhbGl6ZWQgPSB0cnVlOworCisgICAgLy8gVGhlIEdUSysgZG9jcyBzYXkgdGhhdCB3ZSBjYW4g
ZmFpbCB0byBjcmVhdGUgYSBuYXRpdmUgd2luZG93LgorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
ZmFsbCBiYWNrIHRvIHRoZSBJbWFnZUJ1ZmZlciBUZXh0dXJlTWFwcGVyIHdoZW4gaXQgZXhpc3Rz
LgorICAgIGlmICghbV93ZWJWaWV3LT5wcml2LT5oYXNOYXRpdmVXaW5kb3cpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fY29udGV4dCA9IFdlYkNvcmU6OldpbmRvd0dMQ29udGV4dDo6Y3JlYXRl
Q29udGV4dFdpdGhHZGtXaW5kb3coZ3RrX3dpZGdldF9nZXRfd2luZG93KEdUS19XSURHRVQobV93
ZWJWaWV3KSkpOworfQorCitib29sIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjplbmFi
bGVkKCkKK3sKKyAgICByZXR1cm4gbV9yb290VGV4dHVyZU1hcHBlck5vZGUgJiYgbV90ZXh0dXJl
TWFwcGVyOworfQorCisKK2Jvb2wgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnJlbmRl
ckxheWVyc1RvV2luZG93KGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQoreworICAgIGlmICghZW5h
YmxlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBXZSBpbml0aWFsaXplIHRo
ZSBjb250ZXh0IGxhemlseSBoZXJlIHNvIHRoYXQgd2Uga25vdyB0aGF0IHRoZSBHZGtXaW5kb3cg
cmVhbGl6ZWQuCisgICAgaW5pdGlhbGl6ZUlmTmVjZXNzYXJ5KCk7CisgICAgaWYgKCFtX2NvbnRl
eHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fY29udGV4dC0+c3RhcnREcmF3aW5n
KCk7CisKKyAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRpb247CisgICAgZ3RrX3dpZGdldF9nZXRf
YWxsb2NhdGlvbihHVEtfV0lER0VUKG1fd2ViVmlldyksICZhbGxvY2F0aW9uKTsKKyAgICBnbFZp
ZXdwb3J0KDAsIDAsIGFsbG9jYXRpb24ud2lkdGgsIGFsbG9jYXRpb24uaGVpZ2h0KTsKKworICAg
IG1fdGV4dHVyZU1hcHBlci0+YmVnaW5QYWludGluZygpOworICAgIG1fcm9vdFRleHR1cmVNYXBw
ZXJOb2RlLT5wYWludCgpOworICAgIG1fdGV4dHVyZU1hcHBlci0+ZW5kUGFpbnRpbmcoKTsKKwor
ICAgIG1fY29udGV4dC0+ZmluaXNoRHJhd2luZygpOworICAgIHJldHVybiB0cnVlOworfQorCit2
b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjphdHRhY2hSb290R3JhcGhpY3NMYXll
cihHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQoreworICAgIGlmICghZ3JhcGhpY3NMYXll
cikgeworICAgICAgICBtX3Jvb3RHcmFwaGljc0xheWVyLmNsZWFyKCk7CisgICAgICAgIG1fcm9v
dFRleHR1cmVNYXBwZXJOb2RlID0gMDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
cm9vdEdyYXBoaWNzTGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUodGhpcyk7CisgICAgbV9y
b290VGV4dHVyZU1hcHBlck5vZGUgPSB0b1RleHR1cmVNYXBwZXJOb2RlKG1fcm9vdEdyYXBoaWNz
TGF5ZXIuZ2V0KCkpOworICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXItPmFkZENoaWxkKGdyYXBoaWNz
TGF5ZXIpOworICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsK
KyAgICBtX3Jvb3RHcmFwaGljc0xheWVyLT5zZXRNYXNrc1RvQm91bmRzKGZhbHNlKTsKKyAgICBt
X3Jvb3RHcmFwaGljc0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKKyAgICBtX3Jvb3RHcmFwaGlj
c0xheWVyLT5zZXRTaXplKGNvcmUobV93ZWJWaWV3KS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+ZnJh
bWVSZWN0KCkuc2l6ZSgpKTsKKworICAgIC8vIFdlIGluaXRpYWxpemUgdGhlIGNvbnRleHQgbGF6
aWx5IGhlcmUgc28gdGhhdCB3ZSBrbm93IHRoYXQgdGhlIEdka1dpbmRvdyByZWFsaXplZC4KKyAg
ICBpbml0aWFsaXplSWZOZWNlc3NhcnkoKTsKKyAgICBpZiAoIW1fY29udGV4dCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gVGhlIGNvbnRleHQgbmVlZHMgdG8gYmUgYWN0aXZlIHdoZW4gY3Jl
YXRpbmcgdGhlIHRleHR1cmUgbWFwcGVyLiBJdCdzIGZpbmUgdG8KKyAgICAvLyBhdm9pZCBjYWxs
aW5nIGVuZERyYXdpbmcgaGVyZSwgYmVjYXVzZSBpdCB3aWxsIGp1c3QgaW5pdGlhbGl6ZSBzaGFk
ZXJzLgorICAgIG1fY29udGV4dC0+c3RhcnREcmF3aW5nKCk7CisKKyAgICBHdGtBbGxvY2F0aW9u
IGFsbG9jYXRpb247CisgICAgZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGlvbihHVEtfV0lER0VUKG1f
d2ViVmlldyksICZhbGxvY2F0aW9uKTsKKyAgICBnbFZpZXdwb3J0KDAsIDAsIGFsbG9jYXRpb24u
d2lkdGgsIGFsbG9jYXRpb24uaGVpZ2h0KTsKKworICAgIG1fdGV4dHVyZU1hcHBlciA9IFRleHR1
cmVNYXBwZXJHTDo6Y3JlYXRlKCk7CisgICAgbV9yb290VGV4dHVyZU1hcHBlck5vZGUtPnNldFRl
eHR1cmVNYXBwZXIobV90ZXh0dXJlTWFwcGVyLmdldCgpKTsKKyAgICBtX3Jvb3RHcmFwaGljc0xh
eWVyLT5zeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKK30KKwordm9pZCBB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c2NoZWR1bGVSb290TGF5ZXJSZXBhaW50KGNv
bnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgaWYgKCFtX3Jvb3RHcmFwaGljc0xheWVyKQorICAg
ICAgICByZXR1cm47CisgICAgaWYgKHJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fcm9vdEdy
YXBoaWNzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsKK30K
Kwordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6cmVzaXplUm9vdExheWVyKGNv
bnN0IEludFNpemUmIHNpemUpCit7CisgICAgaWYgKCFtX3Jvb3RHcmFwaGljc0xheWVyKQorICAg
ICAgICByZXR1cm47CisgICAgbV9yb290R3JhcGhpY3NMYXllci0+c2V0U2l6ZShzaXplKTsKKyAg
ICBtX3Jvb3RHcmFwaGljc0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKK30KKwordm9pZCBBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6bWFya0ZvclN5bmMoKQoreworICAgIGlmIChtX3N5
bmNUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisgICAgbV9zeW5jVGltZXIuc3Rh
cnRPbmVTaG90KDApOworfQorCit2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpz
eW5jTGF5ZXJzTm93KCkKK3sKKyAgICBpZiAobV9yb290R3JhcGhpY3NMYXllcikKKyAgICAgICAg
bV9yb290R3JhcGhpY3NMYXllci0+c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5
KCk7CisKKyAgICBjb3JlKG1fd2ViVmlldyktPm1haW5GcmFtZSgpLT52aWV3KCktPnN5bmNDb21w
b3NpdGluZ1N0YXRlSW5jbHVkaW5nU3ViZnJhbWVzKCk7Cit9CisKK3ZvaWQgQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQ6OnN5bmNMYXllcnNUaW1lb3V0KFRpbWVyPEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0PiopCit7CisgICAgc3luY0xheWVyc05vdygpOworICAgIGlmICghbV9y
b290R3JhcGhpY3NMYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVuZGVyTGF5ZXJzVG9X
aW5kb3coSW50UmVjdCgpKTsKKworICAgIGlmICh0b1RleHR1cmVNYXBwZXJOb2RlKG1fcm9vdEdy
YXBoaWNzTGF5ZXIuZ2V0KCkpLT5kZXNjZW5kYW50c09yU2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9u
cygpKQorICAgICAgICBtX3N5bmNUaW1lci5zdGFydE9uZVNob3QoMS4wIC8gNjAuMCk7Cit9CisK
K3ZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6Om5vdGlmeUFuaW1hdGlvblN0YXJ0
ZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIGRvdWJsZSB0aW1lKQoreworCit9Cit2
b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpub3RpZnlTeW5jUmVxdWlyZWQoY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopCit7CisKK30KKwordm9pZCBBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dDo6cGFpbnRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyKiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBXZWJDb3JlOjpHcmFwaGlj
c0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdFRvUGFpbnQp
Cit7CisgICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwor
ICAgIGNvcHlSZWN0RnJvbUNhaXJvU3VyZmFjZVRvQ29udGV4dChtX3dlYlZpZXctPnByaXYtPmJh
Y2tpbmdTdG9yZS0+Y2Fpcm9TdXJmYWNlKCksIGNyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJbnRTaXplKCksIHJlY3RUb1BhaW50KTsKK30KKworYm9vbCBBY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c2hvd0RlYnVnQm9yZGVycyhjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0xheWVyKikgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNob3dSZXBhaW50Q291bnRlcihjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0xheWVyKikgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRleCAxMzdiOTE4YWQxYjQ0
MDlkN2U0NzFhZGZkMjJhMjJmZGY3ZWUwNmFmLi42MjlkNGM3NTc1ZTRlMzZjNWQ2NzVkY2E2ZGE3
MzJmODA5YWU5YzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKQEAgLTUyNSw2ICs1MjUsMjAgQEAgc3RhdGljIHZvaWQg
cGFpbnRXZWJWaWV3KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEZyYW1lKiBmcmFtZSwgUmVnaW9u
IGRpcnR5UmVnaW8KICAgICBnYy5yZXN0b3JlKCk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50Ojpp
bnZhbGlkYXRlV2lkZ2V0UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQoreworI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKKyAgICBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCog
YWNDb250ZXh0ID0gbV93ZWJWaWV3LT5wcml2LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dC5nZXQoKTsKKyAgICBpZiAoYWNDb250ZXh0LT5lbmFibGVkKCkpIHsKKyAgICAgICAgYWNDb250
ZXh0LT5zY2hlZHVsZVJvb3RMYXllclJlcGFpbnQocmVjdCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjZW5kaWYKKyAgICBndGtfd2lkZ2V0X3F1ZXVlX2RyYXdfYXJlYShHVEtfV0lER0VUKG1f
d2ViVmlldyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC54KCksIHJlY3Qu
eSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Qud2lkdGgoKSwgcmVjdC5o
ZWlnaHQoKSk7Cit9CisKIHZvaWQgQ2hyb21lQ2xpZW50OjpwZXJmb3JtQWxsUGVuZGluZ1Njcm9s
bHMoKQogewogICAgIGlmICghbV93ZWJWaWV3LT5wcml2LT5iYWNraW5nU3RvcmUpCkBAIC01MzQs
MTYgKzU0OCwxMyBAQCB2b2lkIENocm9tZUNsaWVudDo6cGVyZm9ybUFsbFBlbmRpbmdTY3JvbGxz
KCkKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcmVjdHNUb1Njcm9sbC5zaXplKCk7IGkr
KykgewogICAgICAgICBJbnRSZWN0JiBzY3JvbGxSZWN0ID0gbV9yZWN0c1RvU2Nyb2xsW2ldOwog
ICAgICAgICBtX3dlYlZpZXctPnByaXYtPmJhY2tpbmdTdG9yZS0+c2Nyb2xsKHNjcm9sbFJlY3Qs
IG1fc2Nyb2xsT2Zmc2V0c1tpXSk7Ci0gICAgICAgIGd0a193aWRnZXRfcXVldWVfZHJhd19hcmVh
KEdUS19XSURHRVQobV93ZWJWaWV3KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2Nyb2xsUmVjdC54KCksIHNjcm9sbFJlY3QueSgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzY3JvbGxSZWN0LndpZHRoKCksIHNjcm9sbFJlY3QuaGVpZ2h0KCkpOwor
ICAgICAgICBpbnZhbGlkYXRlV2lkZ2V0UmVjdChzY3JvbGxSZWN0KTsKICAgICB9CiAKICAgICBt
X3JlY3RzVG9TY3JvbGwuY2xlYXIoKTsKICAgICBtX3Njcm9sbE9mZnNldHMuY2xlYXIoKTsKIH0K
IAotCiB2b2lkIENocm9tZUNsaWVudDo6cGFpbnQoV2ViQ29yZTo6VGltZXI8Q2hyb21lQ2xpZW50
PiopCiB7CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBtaW5pbXVtRnJhbWVJbnRlcnZhbCA9IDEu
MCAvIDYwLjA7IC8vIE5vIG1vcmUgdGhhbiA2MCBmcmFtZXMgYSBzZWNvbmQuCkBAIC01NTksMTMg
KzU3MCwxMCBAQCB2b2lkIENocm9tZUNsaWVudDo6cGFpbnQoV2ViQ29yZTo6VGltZXI8Q2hyb21l
Q2xpZW50PiopCiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpIHx8
ICFmcmFtZS0+dmlldygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwZXJmb3JtQWxsUGVuZGlu
Z1Njcm9sbHMoKTsKICAgICBmcmFtZS0+dmlldygpLT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVl
ZGVkUmVjdXJzaXZlKCk7CisgICAgcGVyZm9ybUFsbFBlbmRpbmdTY3JvbGxzKCk7CiAgICAgcGFp
bnRXZWJWaWV3KG1fd2ViVmlldywgZnJhbWUsIG1fZGlydHlSZWdpb24pOwogCi0gICAgY29uc3Qg
SW50UmVjdCYgcmVjdCA9IG1fZGlydHlSZWdpb24uYm91bmRzKCk7Ci0gICAgZ3RrX3dpZGdldF9x
dWV1ZV9kcmF3X2FyZWEoR1RLX1dJREdFVChtX3dlYlZpZXcpLCByZWN0LngoKSwgcmVjdC55KCks
IHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7Ci0KICAgICBIYXNoU2V0PEd0a1dpZGdldCo+
IGNoaWxkcmVuID0gbV93ZWJWaWV3LT5wcml2LT5jaGlsZHJlbjsKICAgICBIYXNoU2V0PEd0a1dp
ZGdldCo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBjaGlsZHJlbi5lbmQoKTsKICAgICBmb3IgKEhh
c2hTZXQ8R3RrV2lkZ2V0Kj46OmNvbnN0X2l0ZXJhdG9yIGN1cnJlbnQgPSBjaGlsZHJlbi5iZWdp
bigpOyBjdXJyZW50ICE9IGVuZDsgKytjdXJyZW50KSB7CkBAIC01NzUsNiArNTgzLDE0IEBAIHZv
aWQgQ2hyb21lQ2xpZW50OjpwYWludChXZWJDb3JlOjpUaW1lcjxDaHJvbWVDbGllbnQ+KikKICAg
ICAgICAgfQogICAgIH0KIAorICAgIGNvbnN0IEludFJlY3QmIHJlY3QgPSBtX2RpcnR5UmVnaW9u
LmJvdW5kcygpOworICAgIGludmFsaWRhdGVXaWRnZXRSZWN0KHJlY3QpOworCisjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIG1fd2ViVmlldy0+cHJpdi0+YWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHQtPnN5bmNMYXllcnNOb3coKTsKKyAgICBtX3dlYlZpZXctPnByaXYt
PmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LT5yZW5kZXJMYXllcnNUb1dpbmRvdyhyZWN0
KTsKKyNlbmRpZgorCiAgICAgbV9kaXJ0eVJlZ2lvbiA9IFJlZ2lvbigpOwogICAgIG1fbGFzdERp
c3BsYXlUaW1lID0gY3VycmVudFRpbWUoKTsKICAgICBtX3JlcGFpbnRTb29uU291cmNlSWQgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRH
dGsuaAppbmRleCA4MjliMjBiODViYTFjZjc4NzFkYTcwNWU3NGZkZTkwMDAzYTljNzUwLi44Yzdj
ODkyMzM4YmQ2NDMzODg1OWQ1NjdhZmVjZDVkNmJmODNhMGM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaApAQCAtMTgzLDYgKzE4
Myw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICBWZWN0b3I8SW50U2l6ZT4gbV9zY3Jv
bGxPZmZzZXRzOwogICAgICAgICBkb3VibGUgbV9sYXN0RGlzcGxheVRpbWU7CiAgICAgICAgIHVu
c2lnbmVkIGludCBtX3JlcGFpbnRTb29uU291cmNlSWQ7CisKKyAgICAgICAgdm9pZCBpbnZhbGlk
YXRlV2lkZ2V0UmVjdChjb25zdCBJbnRSZWN0Jik7CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKaW5kZXggNmIyNjBjMjlhMmU1
ZDIzMDlhNDg0ODdkOWZmY2UwYWZkZTE3ZWIwNS4uZDkxYzNiYmYzNTIxYzI1NmM0OWQyODZlMjQx
ZWQ5ZTc1MDA1OGMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
c2V0dGluZ3MuY3BwCkBAIC0xMTksNyArMTE5LDggQEAgZW51bSB7CiAgICAgUFJPUF9FTkFCTEVf
RlVMTFNDUkVFTiwKICAgICBQUk9QX0VOQUJMRV9ETlNfUFJFRkVUQ0hJTkcsCiAgICAgUFJPUF9F
TkFCTEVfV0VCR0wsCi0gICAgUFJPUF9FTkFCTEVfV0VCX0FVRElPCisgICAgUFJPUF9FTkFCTEVf
V0VCX0FVRElPLAorICAgIFBST1BfRU5BQkxFX0FDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HCiB9Owog
CiAvLyBDcmVhdGUgYSBkZWZhdWx0IHVzZXIgYWdlbnQgc3RyaW5nCkBAIC04OTksNiArOTAwLDIz
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRXZWJT
ZXR0aW5nc0NsYXNzKiBrbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgV2ViR0wgY29udGVudCBzaG91bGQgYmUg
cmVuZGVyZWQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZBTFNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2Vi
U2V0dGluZ3M6ZW5hYmxlLWFjY2VsZXJhdGVkLWNvbXBvc2l0aW5nOgorICAgICoKKyAgICAqIEVu
YWJsZSBvciBkaXNhYmxlIHN1cHBvcnQgZm9yIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIG9uIHBh
Z2VzLiBBY2NlbGVyYXRlZAorICAgICogY29tcG9zaXRpbmcgdXNlcyB0aGUgR1BVIHRvIHJlbmRl
ciBhbmltYXRpb25zIG9uIHBhZ2VzIHNtb290aGx5IGFuZCBhbHNvIGFsbG93cworICAgICogcHJv
cGVyIHJlbmRlcmluZyBvZiAzRCBDU1MgdHJhbnNmb3Jtcy4KKyAgICAqCisgICAgKiBTaW5jZTog
MS43LjUKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVj
dF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxF
X0FDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1hY2NlbGVyYXRlZC1jb21wb3NpdGlu
ZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfKCJFbmFibGUgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmciKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgYWNj
ZWxlcmF0ZWQgY29tcG9zaXRpbmcgc2hvdWxkIGJlIGVuYWJsZWQiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3Mp
KTsKICAgICAvKioKICAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVuYWJsZS13ZWJhdWRpbzoKICAg
ICAqCkBAIC0xMTA3LDYgKzExMjUsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdz
X3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbgogICAgIGNh
c2UgUFJPUF9FTkFCTEVfV0VCX0FVRElPOgogICAgICAgICBwcml2LT5lbmFibGVXZWJBdWRpbyA9
IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBS
T1BfRU5BQkxFX0FDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HOgorICAgICAgICBwcml2LT5lbmFibGVB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAg
ICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9Q
Uk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKICAgICAgICAgYnJlYWs7CkBAIC0x
MjY5LDYgKzEyOTAsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9wcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYQogICAgIGNhc2UgUFJPUF9F
TkFCTEVfV0VCX0FVRElPOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2
LT5lbmFibGVXZWJBdWRpbyk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVf
QUNDRUxFUkFURURfQ09NUE9TSVRJTkc6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFs
dWUsIHByaXYtPmVuYWJsZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmcpOworICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQo
b2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzcHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzcHJpdmF0ZS5oCmluZGV4IDgyM2Mz
NmVjOWI4OWVkN2YxZGVkMTA0NmNjNGI4NjBlODJiZGRiMjQuLmQ3ZDA4MmU1YmIzZmZhYmJlZjRk
ZWJjNmE4ZTEyNWFmYzdjNzI2MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJzZXR0aW5nc3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmgKQEAgLTc5LDYgKzc5LDcgQEAgc3RydWN0IF9X
ZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUgewogICAgIGdib29sZWFuIGVuYWJsZUROU1ByZWZldGNo
aW5nOwogICAgIGdib29sZWFuIGVuYWJsZVdlYmdsOwogICAgIGdib29sZWFuIGVuYWJsZVdlYkF1
ZGlvOworICAgIGdib29sZWFuIGVuYWJsZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmc7CiB9OwogCiBX
RUJLSVRfQVBJIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19hZGRfZXh0cmFfcGx1Z2luX2RpcmVj
dG9yeShXZWJLaXRXZWJWaWV3KiwgY29uc3QgZ2NoYXIqIGRpcmVjdG9yeSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggYWM2MTU4YjQ0YTE3MTM2Nzg3
Y2U2ZjM1MWZjMDI5YzNiODM3NTkzOS4uMzBlOGYwYzRmYWY0ZmUwMjkwZTU5MzdjMWQ3YmZlYjI2
ZDE2NGY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApA
QCAtNjQ4LDYgKzY0OCwxMiBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2RyYXco
R3RrV2lkZ2V0KiB3aWRnZXQsIGNhaXJvX3QqIGNyKQogICAgIGlmICghZ2RrX2NhaXJvX2dldF9j
bGlwX3JlY3RhbmdsZShjciwgJmNsaXBSZWN0KSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCisg
ICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KS0+
cHJpdjsKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisgICAgaWYgKHByaXYtPmFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdDb250ZXh0LT5yZW5kZXJMYXllcnNUb1dpbmRvdyhjbGlwUmVjdCkpCisg
ICAgICAgIHJldHVybiBGQUxTRTsKKyNlbmRpZgorCiAgICAgY2Fpcm9fcmVjdGFuZ2xlX2xpc3Rf
dCogcmVjdExpc3QgPSBjYWlyb19jb3B5X2NsaXBfcmVjdGFuZ2xlX2xpc3QoY3IpOwogICAgIGlm
IChyZWN0TGlzdC0+c3RhdHVzIHx8ICFyZWN0TGlzdC0+bnVtX3JlY3RhbmdsZXMpIHsKICAgICAg
ICAgY2Fpcm9fcmVjdGFuZ2xlX2xpc3RfZGVzdHJveShyZWN0TGlzdCk7CkBAIC02NTYsOCArNjYy
LDggQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19kcmF3KEd0a1dpZGdldCogd2lk
Z2V0LCBjYWlyb190KiBjcikKIAogICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0czsKICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHJlY3RMaXN0LT5udW1fcmVjdGFuZ2xlczsgaSsrKSB7Ci0gICAgICAg
IGNvcHlSZWN0RnJvbUNhaXJvU3VyZmFjZVRvQ29udGV4dChXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0
KS0+cHJpdi0+YmFja2luZ1N0b3JlLT5jYWlyb1N1cmZhY2UoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyLCBJbnRTaXplKCksIGVuY2xvc2luZ0ludFJlY3Qo
RmxvYXRSZWN0KHJlY3RMaXN0LT5yZWN0YW5nbGVzW2ldKSkpOworICAgICAgICBjb3B5UmVjdEZy
b21DYWlyb1N1cmZhY2VUb0NvbnRleHQocHJpdi0+YmFja2luZ1N0b3JlLT5jYWlyb1N1cmZhY2Uo
KSwgY3IsIEludFNpemUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KHJlY3RMaXN0LT5yZWN0YW5nbGVzW2ldKSkp
OwogICAgIH0KICAgICBjYWlyb19yZWN0YW5nbGVfbGlzdF9kZXN0cm95KHJlY3RMaXN0KTsKIApA
QCAtOTQxLDYgKzk0Nyw4IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZm9jdXNf
b3V0X2V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEZvY3VzCiAKIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfdmlld19yZWFsaXplKEd0a1dpZGdldCogd2lkZ2V0KQogeworICAgIFdlYktp
dFdlYlZpZXdQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXKHdpZGdldCktPnByaXY7CisK
ICAgICBndGtfd2lkZ2V0X3NldF9yZWFsaXplZCh3aWRnZXQsIFRSVUUpOwogCiAgICAgR3RrQWxs
b2NhdGlvbiBhbGxvY2F0aW9uOwpAQCAtOTc5LDYgKzk4NywxMCBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3ZpZXdfcmVhbGl6ZShHdGtXaWRnZXQqIHdpZGdldCkKICAgICBhdHRyaWJ1dGVzX21h
c2sgfD0gR0RLX1dBX0NPTE9STUFQOwogI2VuZGlmCiAgICAgR2RrV2luZG93KiB3aW5kb3cgPSBn
ZGtfd2luZG93X25ldyhndGtfd2lkZ2V0X2dldF9wYXJlbnRfd2luZG93KHdpZGdldCksICZhdHRy
aWJ1dGVzLCBhdHRyaWJ1dGVzX21hc2spOworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisgICAgcHJpdi0+aGFzTmF0aXZlV2luZG93
ID0gZ2RrX3dpbmRvd19lbnN1cmVfbmF0aXZlKHdpbmRvdyk7CisjZW5kaWYKICAgICBndGtfd2lk
Z2V0X3NldF93aW5kb3cod2lkZ2V0LCB3aW5kb3cpOwogICAgIGdka193aW5kb3dfc2V0X3VzZXJf
ZGF0YSh3aW5kb3csIHdpZGdldCk7CiAKQEAgLTk5Myw4ICsxMDA1LDYgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X3JlYWxpemUoR3RrV2lkZ2V0KiB3aWRnZXQpCiAgICAgZ3RrX3N0eWxl
X2NvbnRleHRfc2V0X2JhY2tncm91bmQoZ3RrX3dpZGdldF9nZXRfc3R5bGVfY29udGV4dCh3aWRn
ZXQpLCB3aW5kb3cpOwogI2VuZGlmCiAKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VC
S0lUX1dFQl9WSUVXKHdpZGdldCk7Ci0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3
ZWJWaWV3LT5wcml2OwogICAgIGd0a19pbV9jb250ZXh0X3NldF9jbGllbnRfd2luZG93KHByaXYt
PmltQ29udGV4dC5nZXQoKSwgd2luZG93KTsKIH0KIApAQCAtMzIxMSw2ICszMjIxLDEwIEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyog
d2ViVmlldykKICAgICBjb3JlU2V0dGluZ3MtPnNldFdlYkdMRW5hYmxlZChzZXR0aW5nc1ByaXZh
dGUtPmVuYWJsZVdlYmdsKTsKICNlbmRpZgogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQorICAgIGNvcmVTZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQo
c2V0dGluZ3NQcml2YXRlLT5lbmFibGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nKTsKKyNlbmRpZgor
CiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICBjb3JlU2V0dGluZ3MtPnNldFdlYkF1ZGlvRW5h
YmxlZChzZXR0aW5nc1ByaXZhdGUtPmVuYWJsZVdlYkF1ZGlvKTsKICNlbmRpZgpAQCAtMzM0Myw2
ICszMzU3LDExIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3RpZnko
V2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzLCBHUGFyCiAgICAgICAgIHNldHRpbmdzLT5z
ZXRXZWJHTEVuYWJsZWQoZ192YWx1ZV9nZXRfYm9vbGVhbigmdmFsdWUpKTsKICNlbmRpZgogCisj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19p
bnRlcm5fc3RyaW5nKCJlbmFibGUtYWNjZWxlcmF0ZWQtY29tcG9zaXRpbmciKSkKKyAgICAgICAg
c2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGdfdmFsdWVfZ2V0X2Jv
b2xlYW4oJnZhbHVlKSk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAgICAgZWxz
ZSBpZiAobmFtZSA9PSBnX2ludGVybl9zdHJpbmcoImVuYWJsZS13ZWJhdWRpbyIpKQogICAgICAg
ICBzZXR0aW5ncy0+c2V0V2ViQXVkaW9FbmFibGVkKGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnZhbHVl
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3By
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5o
CmluZGV4IDhkMmI3YjA0YmE5MmVjNGRlZjZlZjZhM2M0MzNkMGQwZDdhOGQ2NDMuLjgxZDdiNjJh
OGFjZGUyOTBjOGI1NTM5MDNlMGM4NmI1MTMyMTJlYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oCkBAIC00NCw2ICs0NCw3IEBAIGV4dGVy
biAiQyIgewogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIFdlYktpdFdlYlZp
ZXdQcml2YXRlOwogc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgV2ViQ29yZTo6
UGFnZSogY29yZVBhZ2U7CisgICAgYm9vbCBoYXNOYXRpdmVXaW5kb3c7CiAgICAgT3duUHRyPFdl
YkNvcmU6OldpZGdldEJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlOwogICAgIEdSZWZQdHI8V2Vi
S2l0V2ViU2V0dGluZ3M+IHdlYlNldHRpbmdzOwogICAgIEdSZWZQdHI8V2ViS2l0V2ViSW5zcGVj
dG9yPiB3ZWJJbnNwZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IDFjZjFhMmQ5MGU5YjY1
ZGRlNDc0YTRmMzZmZWNkZTcxZmZhNjE5ZmYuLmVkZjA0NDk3YWZkNmYxYjZjYWYxYTczZWIzZTg5
OTkxYjdmYWVkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC0xMDcsNiArMTA3LDggQEAgd2Vi
a2l0Ml9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQyL0RyYXdpbmdB
cmVhUHJveHlNZXNzYWdlcy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQyL0V2ZW50RGlzcGF0
Y2hlck1lc3NhZ2VSZWNlaXZlci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvRXZlbnRE
aXNwYXRjaGVyTWVzc2FnZXMuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9MYXllclRyZWVI
b3N0UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJLaXQyL0xh
eWVyVHJlZUhvc3RQcm94eU1lc3NhZ2VzLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvTlBP
YmplY3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJLaXQyL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZXMuaCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9QbHVnaW5Db250cm9sbGVyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcAppbmRleCBh
YTI1ZGQxZmQzODgzZmNkNWMzZDlmMWQ0MDAzMThiYThhZTE5NzEyLi45YmI5NzgzY2EwNjAzMWI1
MWQ3OGFkOWMwNmYwNGNjNzUzYmExM2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHkuY3BwCkBAIC02OSw5ICs2OSwxMiBAQCBXZWJDb3JlOjpJbnRSZWN0
IERyYXdpbmdBcmVhUHJveHk6OmNvbnRlbnRzUmVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIEludFJl
Y3QoSW50UG9pbnQ6Onplcm8oKSwgbV93ZWJQYWdlUHJveHktPnZpZXdTaXplKCkpOwogfQogCisj
aWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiB2b2lkIERyYXdpbmdBcmVhUHJveHk6OmRpZFJl
Y2VpdmVMYXllclRyZWVIb3N0UHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3Jl
SVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3Vt
ZW50cykKIHsKIH0KICNlbmRpZgogCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGI5NDVlZjBiNTNk
MzQwOTBiZTkwZTczOWMwMDdkNzIyZWQ1YTVlMzkuLmVmY2FhY2Y2Y2QzNWNlMTU3ZTkzNGM0ZGNi
N2I1NTZhOWZmNTk1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC0xNTMzLDcgKzE1MzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1l
c3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBV
U0UoVEVYVFVSRV9NQVBQRVIpCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBV
U0UoVEVYVFVSRV9NQVBQRVIpICYmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIGlmICht
ZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzTGF5ZXJUcmVlSG9zdFByb3h5PigpKSB7
CiAgICAgICAgIG1fZHJhd2luZ0FyZWEtPmRpZFJlY2VpdmVMYXllclRyZWVIb3N0UHJveHlNZXNz
YWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzKTsKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRl
eCBmZmJiZGJiNTc4ZjBhOTQ1NDI5YzhiOGYzODAzOGU0YzA3OWY1MWQ5Li43MWI2M2QzNDlhMmU2
NTAwMmI3ZjYxMGE3ZDdjZmQ2M2FlNmY2MDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZpcnR1YWwgdm9pZCBzZXRSb290
Q29tcG9zaXRpbmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJTeW5jKCkgPSAwOwotI2lmIFVTRShURVhU
VVJFX01BUFBFUikKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpICYmIFVTRShUSUxFRF9CQUNLSU5H
X1NUT1JFKQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTGF5ZXJUcmVlSG9zdE1lc3NhZ2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1l
bnREZWNvZGVyKikgPSAwOwogI2VuZGlmCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKaW5kZXggM2FkMjdlN2Fm
MjBiNzBkM2VkOTZhOTcyMTkxY2NlZTY2ZTYwZTFmNi4uNGNjMWZlMjcyM2Y4ZDNiMjU5ZDczYzdj
MmY5NzRkZTg0NjNjNzczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKQEAgLTY2Nyw3ICs2NjcsNyBAQCB2b2lkIERy
YXdpbmdBcmVhSW1wbDo6ZGlzcGxheShVcGRhdGVJbmZvJiB1cGRhdGVJbmZvKQogICAgIG1fZGlz
cGxheVRpbWVyLnN0b3AoKTsKIH0KIAotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykg
JiYgVVNFKFRFWFRVUkVfTUFQUEVSKQorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykg
JiYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKIHZvaWQg
RHJhd2luZ0FyZWFJbXBsOjpkaWRSZWNlaXZlTGF5ZXJUcmVlSG9zdE1lc3NhZ2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29y
ZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCiB7CiAgICAgaWYgKG1fbGF5ZXJUcmVl
SG9zdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYUltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYUltcGwuaAppbmRleCAyOGM4Y2U2OGNkMGU0NzM2MGNkZTZmM2E2NTI2ZWU3NmQxNDE5NTll
Li5iZjg2ZmNmMTk1ZDU5YmM5Y2QzNjMxYmJmZjlkMDBlZGFiYjkyMTdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5oCkBAIC03
MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ2hpbGRXaW5k
b3dHZW9tZXRyeVVwZGF0ZShjb25zdCBXaW5kb3dHZW9tZXRyeSYpOwogI2VuZGlmCiAKLSNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBFUikKKyNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01BUFBFUikgJiYgVVNF
KFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVMYXllclRy
ZWVIb3N0TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9DaGFuZ2VM
b2cgYi9DaGFuZ2VMb2cKaW5kZXggZWVlODY4NjA1MDg1MzNiNTlhNGYzZGI4OTdiMWY4NWE4YmJl
ZGNlOS4uMWVkMjZlNjk2ZjQ0ZDljYTk2NGFlOTAxMjljYjI0YzQ3ZGRmYmUwOSAxMDA2NDQKLS0t
IGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAyLTA0
ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4gYW5kIE5heWFuIEt1bWFy
IEsgIDxuYXlhbmtrQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgVGV4dHVyZU1h
cHBlckdMIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NTMwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IFRleHR1cmVNYXBwZXJHTCBpbXBsaWVzIFVT
RShURVhUVVJFX01BUFBFUikKKyAgICAgICAgKiBjb25maWd1cmUuYWM6IE9ubHkgYWxsb3cgZW5h
YmxpbmcgdGhlIEdMIHZlcnNpb24gb2YgVGV4dHVyZU1hcHBlciBvbiBYMTEuCisKIDIwMTItMDIt
MDMgIEthbGV2IExlbWJlciAgPGthbGV2bGVtYmVyQGdtYWlsLmNvbT4KIAogICAgICAgICBbR1RL
XSBjb25maWd1cmU6IFByaW50IG91dCB0aGUgLVduby1jKysweC1jb21wYXQgdGVzdCByZXN1bHQK
ZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggMzNlZjQ2
MmUwNDA1OTQ2YTJmZGM0ZTI1ZTA4OTFjNzk0NWQ0YjQ4ZS4uMGIxNDBlOTlkNjVmZjFhYmQxY2Jl
OGNiMWM2ODRiZWJhNDhkODBjMSAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05V
bWFrZWZpbGUuYW0KQEAgLTE3OCwxMSArMTc4LDEzIEBAIGVuZGlmCiAKIGlmIFVTRV9URVhUVVJF
X01BUFBFUl9DQUlSTwogZ2xvYmFsX2NwcGZsYWdzICs9IFwKKwktRFdURl9VU0VfVEVYVFVSRV9N
QVBQRVI9MSBcCiAJLURXVEZfVVNFX1RFWFRVUkVfTUFQUEVSX0NBSVJPPTEKIGVuZGlmCiAKIGlm
IFVTRV9URVhUVVJFX01BUFBFUl9HTAogZ2xvYmFsX2NwcGZsYWdzICs9IFwKKwktRFdURl9VU0Vf
VEVYVFVSRV9NQVBQRVI9MSBcCiAJLURXVEZfVVNFX1RFWFRVUkVfTUFQUEVSX0dMPTEKIGVuZGlm
CiAKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCA4YzFlM2Q1
MjI2NDEwMzRlMzNhZThjZThkMGY1YWE1ZGU3NmI0N2NkLi45NzM4NzE4NDBlNjk3NWY5MzFjNDQw
MGQ0NGE0ZDIxYjJhMjFmNDRhIDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmln
dXJlLmFjCkBAIC00MzQsNiArNDM0LDEwIEBAIEFDX0FSR19XSVRIKGFjY2VsZXJhdGVkX2NvbXBv
c2l0aW5nLAogICAgICAgICAgICAgW10sIFt3aXRoX2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nPSJu
byJdKQogQUNfTVNHX1JFU1VMVChbJHdpdGhfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmddKQogCitp
ZiB0ZXN0ICIkd2l0aF9hY2NlbGVyYXRlZF9jb21wb3NpdGluZyIgPSAib3BlbmdsIiAmJiB0ZXN0
ICIkd2l0aF90YXJnZXQiICE9ICJ4MTEiIDsgdGhlbgorICAgIEFDX01TR19FUlJPUihbT3BlbkdM
IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGlzIG9ubHkgYXZhaWxhYmxlIG9uIFgxMSBjdXJyZW50
bHkuXSkKK2ZpCisKIGlmIHRlc3QgIiRlbmFibGVfd2ViZ2wiID0gInllcyIgfHwgIHRlc3QgIiR3
aXRoX2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nIiA9ICJvcGVuZ2wiIDsgdGhlbgogICAgIEFDX0NI
RUNLX0hFQURFUlMoW0dML2dsLmhdLCBbXSwgQUNfTVNHX0VSUk9SKFtPcGVuR0wgaGVhZGVyIG5v
dCBmb3VuZF0pKQogICAgIEFDX0NIRUNLX0hFQURFUlMoW0dML2dseC5oXSwgW10sIEFDX01TR19F
UlJPUihbR0xYIGhlYWRlciBub3QgZm91bmRdKSkK
</data>
<flag name="review"
          id="127122"
          type_id="1"
          status="+"
          setter="alex"
    />
          </attachment>
      

    </bug>

</bugzilla>