<?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>143299</bug_id>
          
          <creation_ts>2015-04-01 01:46:35 -0700</creation_ts>
          <short_desc>[ThreadedCompositor] Add support for PlatformLayer.</short_desc>
          <delta_ts>2015-12-07 13:36:31 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>143298</dependson>
          <blocked>100341</blocked>
    
    <blocked>143300</blocked>
    
    <blocked>143301</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gwang Yoon Hwang">yoon</reporter>
          <assigned_to name="Gwang Yoon Hwang">yoon</assigned_to>
          <cc>changseok</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mrobinson</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1081934</commentid>
    <comment_count>0</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-04-01 01:46:35 -0700</bug_when>
    <thetext>[ThreadedCompositor] Add support for PlatformLayer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081935</commentid>
    <comment_count>1</comment_count>
      <attachid>249906</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-04-01 01:47:51 -0700</bug_when>
    <thetext>Created attachment 249906
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136012</commentid>
    <comment_count>2</comment_count>
      <attachid>249906</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2015-10-23 03:30:54 -0700</bug_when>
    <thetext>Comment on attachment 249906
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/BitmapTextureGL.h:71
&gt; +    GC3Dint internalFormat() const { return m_internalFormat; }

I think m_internalFormat is missing here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136490</commentid>
    <comment_count>3</comment_count>
      <attachid>249906</attachid>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2015-10-25 23:53:49 -0700</bug_when>
    <thetext>Comment on attachment 249906
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:52
&gt; +    return m_texture-&gt;canReuseWith(size) &amp;&amp; (static_cast&lt;BitmapTextureGL*&gt;(m_texture.get())-&gt;internalFormat() == internalFormat || internalFormat == GraphicsContext3D::DONT_CARE);

BitmapTextureGL::canReuseWith has been removed after https://bugs.webkit.org/show_bug.cgi?id=143298. So it needs to be replaced with size() I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136491</commentid>
    <comment_count>4</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-10-25 23:56:53 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 249906 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=249906&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:52
&gt; &gt; +    return m_texture-&gt;canReuseWith(size) &amp;&amp; (static_cast&lt;BitmapTextureGL*&gt;(m_texture.get())-&gt;internalFormat() == internalFormat || internalFormat == GraphicsContext3D::DONT_CARE);
&gt; 
&gt; BitmapTextureGL::canReuseWith has been removed after
&gt; https://bugs.webkit.org/show_bug.cgi?id=143298. So it needs to be replaced
&gt; with size() I think.

Thanks for the comment, I&apos;m cleaning up this patch to update it now.
Maybe it will be updated at tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138309</commentid>
    <comment_count>5</comment_count>
      <attachid>264515</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-11-01 06:57:12 -0800</bug_when>
    <thetext>Created attachment 264515
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138856</commentid>
    <comment_count>6</comment_count>
      <attachid>264515</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-11-02 23:06:13 -0800</bug_when>
    <thetext>Comment on attachment 264515
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:36
&gt; +TextureMapperPlatformLayerBuffer::TextureMapperPlatformLayerBuffer(RefPtr&lt;BitmapTexture&gt;&amp;&amp; texture)
&gt; +    : m_texture(WTF::move(texture))
&gt; +    , m_extraFlags(0)
&gt; +    , m_hasManagedTexture(true)
&gt; +{
&gt; +}

This should initialize m_textureID to 0.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:68
&gt; +}; // namespace WebCore

No need for the semicolon.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h:57
&gt; +        UnmanagedBufferDataHolder() { }

The constructor definition shouldn&apos;t be required at all. If it is, you can default it, just like the destructor.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h:76
&gt; +};

No need for the semicolon. Add `// namespace WebCore` to note that this is the end of the namespace scope.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:43
&gt; +    : m_compositor(0)
&gt; +    , m_targetLayer(0)

nullptr

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:45
&gt; +    , m_runLoop(RunLoop::current())
&gt; +    , m_releaseUnusedBuffersTimer(m_runLoop, this, &amp;TextureMapperPlatformLayerProxy::releaseUnusedBuffersTimerFired)

m_runLoop isn&apos;t used anywhere else -- no need to keep a reference to it in a member variable.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:154
&gt; +};

No need for the semicolon. Add `// namespace WebCore` to note that this is the end of the namespace scope.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:95
&gt; +};

No need for the semicolon. Add `// namespace WebCore` to note that this is the end of the namespace scope.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:88
&gt; +    for (PlatformLayerProxyMap::iterator it = m_platformLayerProxies.begin(); it != m_platformLayerProxies.end(); ++it)
&gt; +        it-&gt;value-&gt;swapBuffer();

for (auto&amp; proxy : m_platformLayerProxies.values())
    proxy-&gt;swapBuffer();

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:194
&gt; +        state.platformLayerProxy-&gt;activateOnCompositingThread(this, layer);

There shouldn&apos;t be a need to call this every time the proxy changes. Perhaps only when the layer key is added for the first time, or when the proxy for the layer changes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138887</commentid>
    <comment_count>7</comment_count>
      <attachid>264679</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-11-03 02:30:12 -0800</bug_when>
    <thetext>Created attachment 264679
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138893</commentid>
    <comment_count>8</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-11-03 02:47:33 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 264515 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264515&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:36
&gt; &gt; +TextureMapperPlatformLayerBuffer::TextureMapperPlatformLayerBuffer(RefPtr&lt;BitmapTexture&gt;&amp;&amp; texture)
&gt; &gt; +    : m_texture(WTF::move(texture))
&gt; &gt; +    , m_extraFlags(0)
&gt; &gt; +    , m_hasManagedTexture(true)
&gt; &gt; +{
&gt; &gt; +}
&gt; 
&gt; This should initialize m_textureID to 0.
&gt; 

Nice catch, fixed!

&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:68
&gt; &gt; +}; // namespace WebCore
&gt; 
&gt; No need for the semicolon.
&gt; 
Again, fixed.

&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h:57
&gt; &gt; +        UnmanagedBufferDataHolder() { }
&gt; 
&gt; The constructor definition shouldn&apos;t be required at all. If it is, you can
&gt; default it, just like the destructor.
&gt; 

Because it is non-copyable, we should provide at least one constructor.
I fixed it to use default keyword.

&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h:76
&gt; &gt; +};
&gt; 
&gt; No need for the semicolon. Add `// namespace WebCore` to note that this is
&gt; the end of the namespace scope.
&gt; 

Ditto.

&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:43
&gt; &gt; +    : m_compositor(0)
&gt; &gt; +    , m_targetLayer(0)
&gt; 
&gt; nullptr
&gt; 

Nice catch!

&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:45
&gt; &gt; +    , m_runLoop(RunLoop::current())
&gt; &gt; +    , m_releaseUnusedBuffersTimer(m_runLoop, this, &amp;TextureMapperPlatformLayerProxy::releaseUnusedBuffersTimerFired)
&gt; 
&gt; m_runLoop isn&apos;t used anywhere else -- no need to keep a reference to it in a
&gt; member variable.
&gt;

Removed.
 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:154
&gt; &gt; +};
&gt; 
&gt; No need for the semicolon. Add `// namespace WebCore` to note that this is
&gt; the end of the namespace scope.
&gt; 

Ditto
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:95
&gt; &gt; +};
&gt; 
&gt; No need for the semicolon. Add `// namespace WebCore` to note that this is
&gt; the end of the namespace scope.
&gt;

Ditto
 
&gt; &gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:88
&gt; &gt; +    for (PlatformLayerProxyMap::iterator it = m_platformLayerProxies.begin(); it != m_platformLayerProxies.end(); ++it)
&gt; &gt; +        it-&gt;value-&gt;swapBuffer();
&gt; 
&gt; for (auto&amp; proxy : m_platformLayerProxies.values())
&gt;     proxy-&gt;swapBuffer();
&gt;

A nice tidy statement, replaced.

&gt; &gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:194
&gt; &gt; +        state.platformLayerProxy-&gt;activateOnCompositingThread(this, layer);
&gt; 
&gt; There shouldn&apos;t be a need to call this every time the proxy changes. Perhaps
&gt; only when the layer key is added for the first time, or when the proxy for
&gt; the layer changes?

In the threaded compositor, platformLayerChanged means the proxy has been created or deleted. And activating the proxy only happens at its creation time.
AFAIK, there are no use cases which changes the layer&apos;s proxy except removing.
So I think this statement satisfies your worry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140738</commentid>
    <comment_count>9</comment_count>
      <attachid>264679</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-11-10 04:44:26 -0800</bug_when>
    <thetext>Comment on attachment 264679
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext3DPrivate.cpp:87
&gt; +#if USE(COORDINATED_GRAPHICS_THREADED)
&gt; +RefPtr&lt;TextureMapperPlatformLayerProxy&gt; GraphicsContext3DPrivate::proxy() const
&gt; +{
&gt; +    notImplemented();
&gt; +    return RefPtr&lt;TextureMapperPlatformLayerProxy&gt;();
&gt; +}

This can just return nullptr.

&gt; Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:420
&gt; +RefPtr&lt;TextureMapperPlatformLayerProxy&gt; ImageBufferData::proxy() const
&gt; +{
&gt; +    notImplemented();
&gt; +    return RefPtr&lt;TextureMapperPlatformLayerProxy&gt;();
&gt; +}

Same here.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:49
&gt; +TextureMapperPlatformLayerBuffer::~TextureMapperPlatformLayerBuffer()
&gt; +{
&gt; +}

This too can be defaulted. Either here or in the constructor.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:118
&gt; +    if (m_releaseUnusedBuffersTimer.isActive())
&gt; +        return;
&gt; +
&gt; +    m_releaseUnusedBuffersTimer.startOneShot(s_releaseUnusedBuffersTimerInterval);

This can just be a two-liner, by starting the timer if it&apos;s not yet active.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:66
&gt; +    std::unique_ptr&lt;TextureMapperPlatformLayerBuffer&gt; getAvailableBuffer(const IntSize&amp;, GC3Dint internalFormat);
&gt; +    void pushNextBuffer(std::unique_ptr&lt;TextureMapperPlatformLayerBuffer&gt;);

What do you think about exposing the m_lock object, and accepting a LockHolder&amp; as the first parameter of getAvailableBuffer() and pushNextBuffer(), like done in [1]? That way there&apos;s no possibility of the composition thread swapping the buffers while the provider thread is still working on pushing the next buffer.

[1] https://github.com/WebKitForWayland/webkit/blob/master/Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.h#L64

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:387
&gt; +    if (auto* platformLayerProxy = m_platformLayerProxies.get(layer.get()))
&gt; +        platformLayerProxy-&gt;invalidate();
&gt; +    m_platformLayerProxies.remove(layer.get());

Replace this with HashMap::take(). That way you only have to look up the key once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146769</commentid>
    <comment_count>10</comment_count>
      <attachid>266754</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-12-06 23:59:27 -0800</bug_when>
    <thetext>Created attachment 266754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146770</commentid>
    <comment_count>11</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-12-07 00:02:36 -0800</bug_when>
    <thetext>Thanks for review!

(In reply to comment #9)
&gt; Comment on attachment 264679 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264679&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext3DPrivate.cpp:87
&gt; &gt; +#if USE(COORDINATED_GRAPHICS_THREADED)
&gt; &gt; +RefPtr&lt;TextureMapperPlatformLayerProxy&gt; GraphicsContext3DPrivate::proxy() const
&gt; &gt; +{
&gt; &gt; +    notImplemented();
&gt; &gt; +    return RefPtr&lt;TextureMapperPlatformLayerProxy&gt;();
&gt; &gt; +}
&gt; 
&gt; This can just return nullptr.

Nice, fixed it.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp:420
&gt; &gt; +RefPtr&lt;TextureMapperPlatformLayerProxy&gt; ImageBufferData::proxy() const
&gt; &gt; +{
&gt; &gt; +    notImplemented();
&gt; &gt; +    return RefPtr&lt;TextureMapperPlatformLayerProxy&gt;();
&gt; &gt; +}
&gt; 
&gt; Same here.
&gt; 

Ditto

&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:49
&gt; &gt; +TextureMapperPlatformLayerBuffer::~TextureMapperPlatformLayerBuffer()
&gt; &gt; +{
&gt; &gt; +}
&gt; 
&gt; This too can be defaulted. Either here or in the constructor.
&gt; 

Oh, I missed that.

&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:118
&gt; &gt; +    if (m_releaseUnusedBuffersTimer.isActive())
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    m_releaseUnusedBuffersTimer.startOneShot(s_releaseUnusedBuffersTimerInterval);
&gt; 
&gt; This can just be a two-liner, by starting the timer if it&apos;s not yet active.
&gt; 

Modified.

&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:66
&gt; &gt; +    std::unique_ptr&lt;TextureMapperPlatformLayerBuffer&gt; getAvailableBuffer(const IntSize&amp;, GC3Dint internalFormat);
&gt; &gt; +    void pushNextBuffer(std::unique_ptr&lt;TextureMapperPlatformLayerBuffer&gt;);
&gt; 
&gt; What do you think about exposing the m_lock object, and accepting a
&gt; LockHolder&amp; as the first parameter of getAvailableBuffer() and
&gt; pushNextBuffer(), like done in [1]? That way there&apos;s no possibility of the
&gt; composition thread swapping the buffers while the provider thread is still
&gt; working on pushing the next buffer.
&gt; 
&gt; [1]
&gt; https://github.com/WebKitForWayland/webkit/blob/master/Source/WebCore/
&gt; platform/graphics/texmap/TextureMapperPlatformLayerProxy.h#L64
&gt; 

I think it is better to skip the frame instead of blocking the working thread (main thread or decoding thread).
Is there any other use-cases which enforcing not to skip a frame?

&gt; &gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:387
&gt; &gt; +    if (auto* platformLayerProxy = m_platformLayerProxies.get(layer.get()))
&gt; &gt; +        platformLayerProxy-&gt;invalidate();
&gt; &gt; +    m_platformLayerProxies.remove(layer.get());
&gt; 
&gt; Replace this with HashMap::take(). That way you only have to look up the key
&gt; once.
I didn&apos;t know that there is a ::take() method. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146822</commentid>
    <comment_count>12</comment_count>
      <attachid>266767</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-12-07 03:47:47 -0800</bug_when>
    <thetext>Created attachment 266767
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146825</commentid>
    <comment_count>13</comment_count>
      <attachid>266768</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-12-07 04:02:07 -0800</bug_when>
    <thetext>Created attachment 266768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146831</commentid>
    <comment_count>14</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-12-07 04:10:36 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created attachment 266754 [details]
&gt; Patch

(In reply to comment #12)
&gt; Created attachment 266767 [details]
&gt; Patch

(In reply to comment #13)
&gt; Created attachment 266768 [details]
&gt; Patch

All these patches failed to address feedback from comment #6 (which was addressed in attachment #264679 from November 3rd).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146846</commentid>
    <comment_count>15</comment_count>
      <attachid>266774</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-12-07 08:17:24 -0800</bug_when>
    <thetext>Created attachment 266774
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146853</commentid>
    <comment_count>16</comment_count>
      <attachid>266774</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-12-07 08:30:17 -0800</bug_when>
    <thetext>Comment on attachment 266774
Patch

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

r=me

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerProxy.cpp:51
&gt; +    if (m_targetLayer)
&gt; +        m_targetLayer-&gt;setContentsLayer(nullptr);

Should a lock be held here? Elsewhere m_targetLayer is operated on with a held lock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146856</commentid>
    <comment_count>17</comment_count>
      <attachid>266776</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-12-07 08:50:22 -0800</bug_when>
    <thetext>Created attachment 266776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146865</commentid>
    <comment_count>18</comment_count>
      <attachid>266776</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-07 09:16:14 -0800</bug_when>
    <thetext>Comment on attachment 266776
Patch

Clearing flags on attachment: 266776

Committed r193630: &lt;http://trac.webkit.org/changeset/193630&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146984</commentid>
    <comment_count>19</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-12-07 13:36:31 -0800</bug_when>
    <thetext>All patches are landed. Closing the bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249906</attachid>
            <date>2015-04-01 01:47:51 -0700</date>
            <delta_ts>2015-11-01 06:57:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143299-20150401174709.patch</filename>
            <type>text/plain</type>
            <size>43639</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTdmODY0NGNkODFlMTAy
MjVmM2I2MTUwOTMyODIwNWJjODY0Zjg3OS4uZWQ3ZTE4YjUyMmM5NjcwODI1YjExZWIxMDlkOTk1
ZWQ2YTQ1YTU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDE1LTAzLTMxICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgogCisgICAgICAgIFtUaHJlYWRlZENvbXBv
c2l0b3JdIEFkZCBzdXBwb3J0IGZvciBQbGF0Zm9ybUxheWVyLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMjk5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkgYW5kIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyIHRvCisgICAgICAgIHNlbmQgYSB0ZXh0dXJlIChhY3R1YWwgdGV4dHVyZSBvciBCaXRt
YXBUZXh0dXJlKSB0byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkIGRpcmVjdGx5LgorICAgICAgICBU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlciBjYW4gYmUgcmV1c2VkIGFmdGVyIHN3YXBw
ZWQgYnkgbmV3IGJ1ZmZlci4KKyAgICAgICAgQmVjYXVzZSBQbGF0Zm9ybUxheWVycyAoQ2FudmFz
LCBWaWRlbykgZHJhdyBpdHMgY29udGVudHMgdXNpbmcgc2FtZSBzaXplIGFuZCBmb3JtYXQgdXN1
YWxseSwgd2UgZG9uJ3QKKyAgICAgICAgaGF2ZSB0byByZS1hbGxvY2F0ZSB0ZXh0dXJlLiBXaGVu
ZXZlciBDYW52YXMgYW5kIFZpZGVvIHJlbmRlcmVyIG5lZWRzIHRvIGRpc3BsYXkgbmV3IGNvbnRl
bnQsIHRoZQorICAgICAgICByZW5kZXJlciB1cGRhdGVzIHVzZWQgYnVmZmVyIGFuZCBwdXNoIGl0
IHRvIHRoZSBjb21wb3NpdG9yIHZpYSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Lgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5j
bWFrZToKKyAgICAgICAgQWRkcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlciBhbmQg
VGV4dHVyZU1hcHBlclBsYXl0Zm9ybUxheWVyUHJveHkuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcDoKKyAgICAgICAgQWRkcyBtb2NrIGlt
cGxlbWVudGF0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5ZXIu
aDoKKyAgICAgICAgTW9kaWZpZWQgdG8gdXNlIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJv
eHlQcm92aWRlciBhcyBhIFBsYXRmb3JtTGF5ZXIgaW4gVGhyZWFkZWQgQ29tcG9zaXRvcgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHA6CisgICAgICAgIEV4Y2x1ZGUgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgd2hl
biB3ZSBhcmUgdXNpbmcgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyU3RhdGU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlKToKKworMjAxNS0wMy0zMSAg
R3dhbmcgWW9vbiBId2FuZyAgPHlvb25AaWdhbGlhLmNvbT4KKwogICAgICAgICBbVGV4TWFwXSBD
bGVhbiB1cCBCaXRtYXBUZXh0dXJlIGFuZCBCaXRtYXBUZXh0dXJlR0wuCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMyOTgKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IGU1Y2M5Y2QxNTZjM2FlOWY1MzQ5NTJlYzZmNDQ1YzA2OTRlOTk4MWEuLmQ5ODU1ODdmMzU5NWQ4
OWMzOTI5Yjg4ZGMxZGU5YzZlMGI5MjRiYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAor
MjAxNS0wMy0zMSAgR3dhbmcgWW9vbiBId2FuZyAgPHlvb25AaWdhbGlhLmNvbT4KKworICAgICAg
ICBbVGhyZWFkZWRDb21wb3NpdG9yXSBBZGQgc3VwcG9ydCBmb3IgUGxhdGZvcm1MYXllci4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzI5OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvQ3VycmVudEdMQ29udGV4
dCk6CisgICAgICAgIFN3YXAgcGVuZGluZyBidWZmZXJzIG9mIFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveGllcyBiZWZvcmUgcGFpbnRpbmcgY29udGVudHMuCisgICAgICAgIChXZWJLaXQ6
OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY1BsYXRmb3JtTGF5ZXJJZk5lZWRlZCk6Cisg
ICAgICAgIEluIHRocmVhZGVkIGNvbXBvc2l0b3IsIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuY2Ug
b25seSBjYXJlcyBhYm91dCBjcmVhdGlvbiBhbmQgZGVsZXRpb24KKyAgICAgICAgb2YgcGxhdGZv
cm0gbGF5ZXJzLgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6Om9u
TmV3QnVmZmVyQXZhaWxhYmxlKToKKyAgICAgICAgV2hlbmV2ZXIgbmV3IGJ1ZmZlciBjb21lcyB2
aWEgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSwgQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lIHNldHMgYQorICAgICAgICB0aW1lciB0byB1cGRhdGUgdmlld3BvcnQgaWYgaXQgaXMgbmVl
ZGVkLgorCiAyMDE1LTAzLTMxICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KIAogICAgICAgICBXS1ZpZXcgc2hvdWxkIHN0b3AgdXNpbmcgZW5kR2VzdHVyZVdpdGhF
dmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA1NmViYzRhYjEwNWU3OWVkMjZhODlh
YjBlYWQ0YWQyZWVlNDA1NTQwLi41YjkyY2E4MTEyOTNiNzQ5MmVkM2FiMGE4MThhZmQyZWNjNjJl
MDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtNDA3LDYgKzQwNyw4IEBAIGlmIChF
TkFCTEVfVEhSRUFERURfQ09NUE9TSVRPUikKICAgICAgICAgcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZU5vZGUuY3BwCiAgICAgICAgIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9y
ZS5jcHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyLmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0FyZWFBbGxvY2F0b3IuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAog
ICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKaW5kZXggNTQ4YjBiMGNi
MjYzYjIwOGRlYjM1ZDllYjRkMTlmNTEyYTE0NDY0Ni4uYTYxMWMxMmQ4NzAyOWE3YjE5YzcwNDMy
MjY3MWEyNDBlNDBmMWQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCkBAIC02Myw3ICs2
Myw3IEBAIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBHCiAKIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6fkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgpCiB7Ci0jaWYgVVNFKFRFWFRVUkVfTUFQUEVS
KQorI2lmIFVTRShURVhUVVJFX01BUFBFUikgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDU19U
SFJFQURFRCkKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT5wbGF0Zm9ybUxh
eWVyV2lsbEJlRGVzdHJveWVkKCk7CiAjZW5kaWYKQEAgLTc5LDcgKzc5LDEzIEBAIFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0M0QgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwbGF0Zm9ybUNvbnRl
eHQoKQogICAgIHJldHVybiBtX2dsQ29udGV4dCA/IG1fZ2xDb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKSA6IEdMQ29udGV4dDo6Z2V0Q3VycmVudCgpLT5wbGF0Zm9ybUNvbnRleHQoKTsKIH0KIAot
I2lmIFVTRShURVhUVVJFX01BUFBFUikKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhS
RUFERUQpCitSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpwcm94eSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+KCk7Cit9
CisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0
cml4LCBmbG9hdCBvcGFjaXR5KQogewogICAgIGlmICghbV9nbENvbnRleHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZS5oCmluZGV4IDlkNzBlZTY5ZTAyMWVkNWViZWVhOGU4YmNiMGVkMTE3YjhmODBjMmMu
LmZiOWJhMTBjNGRmY2FlYjgzZmY2MWJmZTExNmRmZGI0NjE2MzU4MzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZS5oCkBAIC0yMywxNCArMjMsMTggQEAKICNpbmNsdWRlICJHTENvbnRleHQuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQor
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgiCisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiAj
aW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKICNlbmRpZgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZQotI2lmIFVTRShU
RVhUVVJFX01BUFBFUikKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisg
ICAgOiBwdWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVyCisjZWxp
ZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiAgICAgOiBwdWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXIKICNlbmRpZgogewpAQCAtNDIsNyArNDYsOSBAQCBwdWJsaWM6CiAKICAgICBHcmFwaGlj
c0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUoKSB7IHJldHVybiBtX3JlbmRlclN0
eWxlOyB9CiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTX1RIUkVBREVEKQorICAgIHZpcnR1YWwgUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHk+IHByb3h5KCkgY29uc3Qgb3ZlcnJpZGU7CisjZWxpZiBVU0UoVEVYVFVSRV9N
QVBQRVIpCiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBw
ZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
LCBmbG9hdCBvcGFjaXR5KTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmgKaW5kZXggZjkwZmM2N2NjOTE0ZGQ2MDRlNzNlYmUw
ZjQ1NmQyOTQ1ZjNmYTZkNy4uMjlmOWRlY2IyNGJhMmQ0NGU0MTAxZDAzYzE4MDk5ZGFhYjE1ZWU2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1M
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5
ZXIuaApAQCAtMzEsNiArMzEsMTEgQEAgT0JKQ19DTEFTUyBDQUxheWVyOwogdHlwZWRlZiBDQUxh
eWVyIFBsYXRmb3JtTGF5ZXI7CiAjZWxpZiBQTEFURk9STShXSU4pICYmIFVTRShDQSkKIHR5cGVk
ZWYgc3RydWN0IF9DQUNGTGF5ZXIgUGxhdGZvcm1MYXllcjsKKyNlbGlmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDU19USFJFQURFRCkKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHlQcm92aWRlcjsKK3R5cGVkZWYgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVyIFBsYXRmb3JtTGF5ZXI7Cit9OwogI2VsaWYgVVNFKFRF
WFRVUkVfTUFQUEVSKQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDhhZTkyYmY5NGM4ZGQ2MGQw
YjUxYTExNDU0OTllYmViYTgxZmM1ZTAuLjM4MTg0ODE3N2ExMGYwOGFkMTcyMjY1MjYzOGZjNGEz
MDRjZTQ5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC01Miw2ICs1Miw5IEBACiAjaW5j
bHVkZSAiT3BlbkdMU2hpbXMuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKICNpbmNs
dWRlIDxjYWlyby1nbC5oPgorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkK
KyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgiCisjZW5kaWYKICNl
bmRpZgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtMzk0LDYgKzM5NywxMyBAQCBTdHJpbmcg
SW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBkb3Vi
bGUqLCBDb29yZGluYXRlUwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FO
VkFTKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKK1JlZlB0cjxUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBJbWFnZUJ1ZmZlckRhdGE6OnByb3h5KCkgY29u
c3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBSZWZQdHI8VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eT4oKTsKK30KKyNlbHNlCiB2b2lkIEltYWdlQnVmZmVyRGF0
YTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0
cml4LCBmbG9hdCBvcGFjaXR5KQogewogICAgIGlmICh0ZXh0dXJlTWFwcGVyLT5hY2NlbGVyYXRp
b25Nb2RlKCkgIT0gVGV4dHVyZU1hcHBlcjo6T3BlbkdMTW9kZSkgewpAQCAtNDExLDYgKzQyMSw3
IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFw
cGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGCiAgICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBl
ckdMKj4odGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKG1fdGV4dHVyZSwgVGV4dHVyZU1hcHBl
ckdMOjpTaG91bGRCbGVuZCwgbV9zaXplLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHkpOwog
fQogI2VuZGlmCisjZW5kaWYKIAogUGxhdGZvcm1MYXllciogSW1hZ2VCdWZmZXI6OnBsYXRmb3Jt
TGF5ZXIoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJEYXRhQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YUNhaXJvLmgKaW5kZXggY2I4OWM3OTBi
Yzk1NjllODZmZWQ5Nzg2Yjk1MTlmMDU3MDg0NTk0Yy4uMjNhYTNhMzk1ZGFmYmI5MTJjNmYyMjBh
ZWRlNGY5NzRlNjg5NGM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJEYXRhQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWlyby5oCkBAIC0zMyw4ICsz
MywxMiBAQAogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKICNpbmNsdWRlICJU
ZXh0dXJlTWFwcGVyLmgiCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQor
I2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaCIKKyNlbHNlCiAjaW5j
bHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKICNlbmRpZgorI2VuZGlmCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDIsOCArNDYsMTIgQEAgY2xhc3MgSW50U2l6ZTsKIAog
Y2xhc3MgSW1hZ2VCdWZmZXJEYXRhCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykK
KyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgOiBwdWJsaWMgVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVyCisjZWxzZQogICAgIDogcHVibGlj
IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyCiAjZW5kaWYKKyNlbmRpZgogewogcHVibGljOgog
ICAgIEltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJik7CkBAIC01NCw3ICs2MiwxMSBAQCBw
dWJsaWM6CiAgICAgSW50U2l6ZSBtX3NpemU7CiAKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRf
Q0FOVkFTKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICB2aXJ0
dWFsIFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBwcm94eSgpIGNvbnN0
IG92ZXJyaWRlOworI2Vsc2UKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHkpOworI2VuZGlmCiAgICAgdWludDMyX3QgbV90ZXh0
dXJlOwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oCmluZGV4IDY4OTdiMTJiNzZlZjNhOTBj
MDdiMGIwMzBkMGY2ZWNiMDEyZmMxMGMuLmVhN2IxNjdmY2NhMGZhZTViMTg1NjYzNWY1YzY4OTlk
ZWRkMjNkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmgKQEAgLTY4LDYgKzY4LDggQEAgcHVibGljOgog
ICAgIGNvbnN0IEZpbHRlckluZm8qIGZpbHRlckluZm8oKSBjb25zdCB7IHJldHVybiAmbV9maWx0
ZXJJbmZvOyB9CiAgICAgVGV4dHVyZU1hcHBlckdMOjpDbGlwU3RhY2smIGNsaXBTdGFjaygpIHsg
cmV0dXJuIG1fY2xpcFN0YWNrOyB9CiAKKyAgICBHQzNEaW50IGludGVybmFsRm9ybWF0KCkgY29u
c3QgeyByZXR1cm4gbV9pbnRlcm5hbEZvcm1hdDsgfQorCiBwcml2YXRlOgogCiAgICAgUGxhdGZv
cm0zRE9iamVjdCBtX2lkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5j
cHAKaW5kZXggMmU3ZmM1ZGQ4NmJmNDJjM2RhYzYwMGEwMDc2YTdjNGExNWQ0MmU5Yy4uY2E3MzQx
NGIzNjllODQ0MmQ2MDBjOTFiZGI3MGQ1NDgxYzg4ODhjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlckFuaW1hdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCi0j
aWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorI2lmIFVTRShURVhUVVJFX01BUFBFUikgJiYgIVVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCmluZGV4IGM5Yjc4YzI2MzhkMzA1MmMxOTVhZDky
MzQwMzYwNDU4M2Y3MDZjODkuLjhmNmRmOWM5ZDRjYTU5NTQ0ZDkwMGM4ZTAzMTZlY2I4YzNlODYy
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBAIC0yMCw3ICsy
MCw3IEBACiAjaWZuZGVmIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyX2gKICNkZWZpbmUgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXJfaAogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorI2lm
IFVTRShURVhUVVJFX01BUFBFUikgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIAogI2lu
Y2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2xpZW50Lmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IGM4NjQyMDIyYTNhYzE0NjU3NzA4ODFm
MTI0ODdmZjdkZGJiNTQ0ZDguLmQwMDA2ZjRlNDMzMTQwZTBiMDE2ZDJlZDFkZTEyM2FmYzI2OTgx
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC00NDUsMTIgKzQ0NSwxNCBAQCBU
ZXh0dXJlTWFwcGVyTGF5ZXI6On5UZXh0dXJlTWFwcGVyTGF5ZXIoKQogICAgIHJlbW92ZUZyb21Q
YXJlbnQoKTsKIH0KIAorI2lmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiB2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYg
bmV3Q2hpbGRyZW4pCiB7CiAgICAgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKICAgICBmb3IgKGF1dG8q
IGNoaWxkIDogbmV3Q2hpbGRyZW4pCiAgICAgICAgIGFkZENoaWxkKCZkb3duY2FzdDxHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcj4oY2hpbGQpLT5sYXllcigpKTsKIH0KKyNlbmRpZgogCiB2b2lk
IFRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPFRleHR1cmVNYXBw
ZXJMYXllcio+JiBuZXdDaGlsZHJlbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCAy
ZTc2ZDdjZGQwZTE4OWFlZGZmNjhiMTEyOWZkMWE3ODIzYThiYTZjLi4yMzhiZmIwZDM4MTRlMGFk
NTk1MjllODZjYmZkNGE4MDgwZWYxYTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC03
OCw3ICs3OCw5IEBAIHB1YmxpYzoKICAgICBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyKCkg
Y29uc3QgeyByZXR1cm4gcm9vdExheWVyKCkubV90ZXh0dXJlTWFwcGVyOyB9CiAgICAgdm9pZCBz
ZXRUZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleG1hcCkgeyBtX3RleHR1cmVNYXBwZXIg
PSB0ZXhtYXA7IH0KIAorI2lmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgdm9pZCBz
ZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+Jik7CisjZW5kaWYKICAgICB2
b2lkIHNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5ZXIqPiYpOwogICAg
IHZvaWQgc2V0TWFza0xheWVyKFRleHR1cmVNYXBwZXJMYXllciopOwogICAgIHZvaWQgc2V0UmVw
bGljYUxheWVyKFRleHR1cmVNYXBwZXJMYXllciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTZjMWI0NzliYWM3ZGEw
OTg0OTZiZjA5NWU5YmJjZjU1MWFmOWM3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlci5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2Fs
aWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXIoUmVmUHRyPEJpdG1hcFRleHR1cmU+JiYgdGV4dHVyZSkKKyAgICA6IG1fdGV4dHVy
ZShXVEY6Om1vdmUodGV4dHVyZSkpCisgICAgLCBtX2lzTWFuYWdlZFRleHR1cmUodHJ1ZSkKK3sK
K30KKworVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OlRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyKEdMdWludCB0ZXh0dXJlSUQsIGNvbnN0IEludFNpemUmIHNpemUsIGJv
b2wgaGFzQWxwaGEsIGJvb2wgc2hvdWxkRmxpcCkKKyAgICA6IG1fdGV4dHVyZUlEKHRleHR1cmVJ
RCkKKyAgICAsIG1fc2l6ZShzaXplKQorICAgICwgbV9oYXNBbHBoYShoYXNBbHBoYSkKKyAgICAs
IG1fc2hvdWxkRmxpcChzaG91bGRGbGlwKQorICAgICwgbV9pc01hbmFnZWRUZXh0dXJlKGZhbHNl
KQoreworfQorCitUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6flRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyKCkKK3sKK30KKworYm9vbCBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcjo6Y2FuUmV1c2VXaXRob3V0UmVzZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
R0MzRGludCBpbnRlcm5hbEZvcm1hdCkKK3sKKyAgICByZXR1cm4gbV90ZXh0dXJlLT5jYW5SZXVz
ZVdpdGgoc2l6ZSkgJiYgKHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCo+KG1fdGV4dHVyZS5n
ZXQoKSktPmludGVybmFsRm9ybWF0KCkgPT0gaW50ZXJuYWxGb3JtYXQgfHwgaW50ZXJuYWxGb3Jt
YXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRPTlRfQ0FSRSk7Cit9CisKK3ZvaWQgVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBw
ZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSkKK3sKKyAg
ICBpZiAobV9pc01hbmFnZWRUZXh0dXJlKSB7CisgICAgICAgIEFTU0VSVChtX3RleHR1cmUpOwor
ICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqbV90ZXh0dXJlLCB0YXJnZXRSZWN0
LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgQVNTRVJUKG1fdGV4dHVyZUlEKTsKKyAgICBUZXh0dXJlTWFwcGVyR0wqIHRleG1hcEdMID0g
c3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlcik7CisgICAgVGV4dHVy
ZU1hcHBlckdMOjpGbGFncyBmbGFncyA9IChtX3Nob3VsZEZsaXAgPyBUZXh0dXJlTWFwcGVyR0w6
OlNob3VsZEZsaXBUZXh0dXJlIDogMCkgfCAobV9oYXNBbHBoYSA/IFRleHR1cmVNYXBwZXJHTDo6
U2hvdWxkQmxlbmQgOiAwKTsKKyAgICB0ZXhtYXBHTC0+ZHJhd1RleHR1cmUobV90ZXh0dXJlSUQs
IGZsYWdzLCBtX3NpemUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7Cit9
CisKK307IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2NDM1M2Q5NGUzZTNiMmU3Mzc1MGFj
NDUwMmYyMDJkMTU4MDEzZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaApA
QCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXJfaAorI2Rl
ZmluZSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcl9oCisKKyNpbmNsdWRlICJCaXRt
YXBUZXh0dXJlR0wuaCIKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIKKyNpbmNsdWRlICJU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyIDogcHVibGljIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcik7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQoKTsKK3B1YmxpYzoKKyAgICBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcihSZWZQdHI8Qml0bWFwVGV4dHVyZT4mJik7CisgICAgVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoR0x1aW50IHRleHR1cmVJRCwgY29uc3QgSW50U2l6ZSYs
IGJvb2wgaGFzQWxwaGEsIGJvb2wgc2hvdWxkRmxpcCk7CisKKyAgICB2aXJ0dWFsIH5UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcigpOworCisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9U
ZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSwgZmxvYXQgb3BhY2l0eSA9IDEuMCkgZmluYWw7CisKKyAgICBib29sIGNhblJldXNlV2l0aG91
dFJlc2V0KGNvbnN0IEludFNpemUmLCBHQzNEaW50IGludGVybmFsRm9ybWF0KTsKKyAgICBCaXRt
YXBUZXh0dXJlR0wmIHRleHR1cmVHTCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEJpdG1hcFRleHR1
cmVHTCY+KCptX3RleHR1cmUpOyB9CisKKyAgICBpbmxpbmUgdm9pZCBtYXJrVXNlZCgpIHsgbV90
aW1lTGFzdFVzZWQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsgfQorICAgIGRvdWJs
ZSBsYXN0VXNlZFRpbWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVMYXN0VXNlZDsgfQorCitwcml2
YXRlOgorCisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IG1fdGV4dHVyZTsKKyAgICBkb3VibGUg
bV90aW1lTGFzdFVzZWQ7CisKKyAgICBHTHVpbnQgbV90ZXh0dXJlSUQ7CisgICAgSW50U2l6ZSBt
X3NpemU7CisgICAgYm9vbCBtX2hhc0FscGhhOworICAgIGJvb2wgbV9zaG91bGRGbGlwOworICAg
IGJvb2wgbV9pc01hbmFnZWRUZXh0dXJlOworfTsKKworfTsKKworI2VuZGlmIC8vIFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wY2VmMjZlNzcwODQ0ZmQ5OGE5ZDlh
MTE1ZjQ5ZjMyMTJlOTEwODY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3Bw
CkBAIC0wLDAgKzEsMTM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5LmgiCisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhS
RUFERUQpCisKKyNpbmNsdWRlICJCaXRtYXBUZXh0dXJlR0wuaCIKKyNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyR0wuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIKKworY29uc3QgZG91
YmxlIHNfcmVsZWFzZVVudXNlZFNlY29uZHNUb2xlcmFuY2UgPSAxOworY29uc3QgZG91YmxlIHNf
cmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckludGVydmFsID0gMC41OworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OlRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHkoKQorICAgIDogbV9jb21wb3NpdG9yKDApCisgICAgLCBtX3Rhcmdl
dExheWVyKDApCisgICAgLCBtX3J1bkxvb3AoUnVuTG9vcDo6Y3VycmVudCgpKQorICAgICwgbV9y
ZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyKG1fcnVuTG9vcCwgdGhpcywgJlRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHk6OnJlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXJGaXJlZCkKK3sKK30K
Kwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpzZXRDb21wb3NpdG9yKENv
bXBvc2l0b3IqIGNvbXBvc2l0b3IpCit7CisjaWZuZGVmIE5ERUJVRworICAgIG1fY29tcG9zaXRv
clRocmVhZElEID0gV1RGOjpjdXJyZW50VGhyZWFkKCk7CisjZW5kaWYKKyAgICBBU1NFUlQoY29t
cG9zaXRvcik7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcHVzaE11dGV4KTsKKyAgICBtX2Nv
bXBvc2l0b3IgPSBjb21wb3NpdG9yOworICAgIG1fcHVzaENvbmRpdGlvbi5zaWduYWwoKTsKK30K
Kwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpzZXRUYXJnZXRMYXllcihU
ZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyKQoreworICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJl
YWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7CisgICAgbV90YXJnZXRMYXllciA9IGxheWVy
OworfQorCit2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnB1c2hOZXh0QnVm
ZmVyKHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbmV3
QnVmZmVyKQoreworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3B1c2hNdXRleCk7CisgICAgaWYg
KG1fcGVuZGluZ0J1ZmZlcikKKyAgICAgICAgbV9wdXNoQ29uZGl0aW9uLndhaXQobV9wdXNoTXV0
ZXgpOworCisgICAgbV9wZW5kaW5nQnVmZmVyID0gV1RGOjptb3ZlKG5ld0J1ZmZlcik7CisKKyAg
ICBpZiAobV9jb21wb3NpdG9yKQorICAgICAgICBtX2NvbXBvc2l0b3ItPm9uTmV3QnVmZmVyQXZh
aWxhYmxlKCk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6Z2V0QXZhaWxhYmxlQnVm
ZmVyKGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RpbnQgaW50ZXJuYWxGb3JtYXQpCit7CisgICAg
TXV0ZXhMb2NrZXIgbG9ja2VyKG1fcHVzaE11dGV4KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGF2YWlsYWJsZUJ1ZmZlcjsKKyAgICBmb3Ig
KGF1dG8mIGJ1ZmZlciA6IG1fdXNlZEJ1ZmZlcnMpIHsKKyAgICAgICAgaWYgKGJ1ZmZlciAmJiBi
dWZmZXItPmNhblJldXNlV2l0aG91dFJlc2V0KHNpemUsIGludGVybmFsRm9ybWF0KSkgeworICAg
ICAgICAgICAgYXZhaWxhYmxlQnVmZmVyID0gV1RGOjptb3ZlKGJ1ZmZlcik7CisgICAgICAgICAg
ICBhdmFpbGFibGVCdWZmZXItPm1hcmtVc2VkKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHNjaGVkdWxlUmVsZWFzZVVudXNlZEJ1ZmZlcnMoKTsKKyAgICBy
ZXR1cm4gYXZhaWxhYmxlQnVmZmVyOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHk6OnNjaGVkdWxlUmVsZWFzZVVudXNlZEJ1ZmZlcnMoKQoreworICAgIGlmIChtX3Jl
bGVhc2VVbnVzZWRCdWZmZXJzVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9yZWxlYXNlVW51
c2VkQnVmZmVyc1RpbWVyLnN0b3AoKTsKKworICAgIG1fcmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1l
ci5zdGFydE9uZVNob3Qoc19yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVySW50ZXJ2YWwpOworfQor
Cit2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnJlbGVhc2VVbnVzZWRCdWZm
ZXJzVGltZXJGaXJlZCgpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcHVzaE11dGV4KTsK
KyAgICBpZiAobV91c2VkQnVmZmVycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGRvdWJsZSBtaW5Vc2VkVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gc19y
ZWxlYXNlVW51c2VkU2Vjb25kc1RvbGVyYW5jZTsKKyAgICBtX3VzZWRCdWZmZXJzLnJlbW92ZUFs
bE1hdGNoaW5nKFttaW5Vc2VkVGltZV0gKGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4mIGN1cnJlbnQpIHsKKyAgICAgICAgcmV0dXJuICFjdXJy
ZW50IHx8IGN1cnJlbnQtPmxhc3RVc2VkVGltZSgpIDwgbWluVXNlZFRpbWU7CisgICAgfSk7Cit9
CisKK3ZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6c3dhcEJ1ZmZlcigpCit7
CisgICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZElEID09IFdURjo6Y3VycmVudFRocmVhZCgp
KTsKKworICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcHVzaE11dGV4KTsKKyAg
ICAgICAgaWYgKCFtX3RhcmdldExheWVyIHx8ICFtX3BlbmRpbmdCdWZmZXIpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKG1fY3VycmVudEJ1ZmZlcikgeworICAgICAgICAgICAg
bV91c2VkQnVmZmVycy5hcHBlbmQoV1RGOjptb3ZlKG1fY3VycmVudEJ1ZmZlcikpOworICAgICAg
ICAgICAgc2NoZWR1bGVSZWxlYXNlVW51c2VkQnVmZmVycygpOworICAgICAgICB9CisKKyAgICAg
ICAgbV9jdXJyZW50QnVmZmVyID0gV1RGOjptb3ZlKG1fcGVuZGluZ0J1ZmZlcik7CisgICAgICAg
IG1fcHVzaENvbmRpdGlvbi5zaWduYWwoKTsKKyAgICB9CisKKyAgICBtX3RhcmdldExheWVyLT5z
ZXRDb250ZW50c0xheWVyKG1fY3VycmVudEJ1ZmZlci5nZXQoKSk7Cit9CisKK307CisKKyNlbmRp
ZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzMxMzI5ZTUzMDFi
ZWNhYjdlNTMzYTllZWQ3YTVjNmE4ZTdlOWY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHkuaApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxp
YSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eV9oCisjZGVmaW5lIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlfaAorCisjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlci5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKKyNpbmNsdWRlIDx3
dGYvUnVuTG9vcC5oPgorI2lmbmRlZiBOREVCVUcKKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+
CisjZW5kaWYKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXI7CitjbGFzcyBU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OworCitjbGFzcyBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5UHJvdmlkZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgUmVmUHRyPFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IHByb3h5KCkgY29uc3QgPSAwOworfTsKKwor
Y2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQoKTsKK3B1YmxpYzoKKyAgICBjbGFzcyBDb21wb3NpdG9yIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgdm9pZCBvbk5ld0J1ZmZlckF2YWlsYWJsZSgpID0g
MDsKKyAgICB9OworCisgICAgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSgpOworICAg
IHZpcnR1YWwgflRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkoKSB7IH0KKworICAgIHZv
aWQgcHVzaE5leHRCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyPik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyPiBnZXRBdmFpbGFibGVCdWZmZXIoY29uc3QgSW50U2l6ZSYsIEdDM0RpbnQgaW50
ZXJuYWxGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6RE9OVF9DQVJFKTsKKworICAgIHZvaWQg
c2V0Q29tcG9zaXRvcihDb21wb3NpdG9yKik7CisgICAgdm9pZCBzZXRUYXJnZXRMYXllcihUZXh0
dXJlTWFwcGVyTGF5ZXIqKTsKKworICAgIHZvaWQgc3dhcEJ1ZmZlcigpOworCitwcml2YXRlOgor
ICAgIHZvaWQgc2NoZWR1bGVSZWxlYXNlVW51c2VkQnVmZmVycygpOworICAgIHZvaWQgcmVsZWFz
ZVVudXNlZEJ1ZmZlcnNUaW1lckZpcmVkKCk7CisKKyAgICBDb21wb3NpdG9yKiBtX2NvbXBvc2l0
b3I7CisgICAgVGV4dHVyZU1hcHBlckxheWVyKiBtX3RhcmdldExheWVyOworCisgICAgc3RkOjp1
bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBtX2N1cnJlbnRCdWZm
ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
PiBtX3BlbmRpbmdCdWZmZXI7CisKKyAgICBNdXRleCBtX3B1c2hNdXRleDsKKyAgICBUaHJlYWRD
b25kaXRpb24gbV9wdXNoQ29uZGl0aW9uOworCisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4+IG1fdXNlZEJ1ZmZlcnM7CisKKyAgICBS
dW5Mb29wJiBtX3J1bkxvb3A7CisgICAgUnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eT4gbV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyOworI2lmbmRlZiBOREVC
VUcKKyAgICBUaHJlYWRJZGVudGlmaWVyIG1fY29tcG9zaXRvclRocmVhZElEOworI2VuZGlmCit9
OworCit9OworCisjZW5kaWYgLy8gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwCmluZGV4IGJhYzIwN2M4NDdlZTUzZTg5OWMzMzIyNWY5ZjMzNzhkODhiNjFhMTUuLjdjZGUz
NDM3ZmVjYTJjMzAwMDEyMTZlY2IyNjZiYzQzNzNlNGQ3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zMSw5ICsz
MSw5IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJG
YWN0b3J5LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgi
Ci0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYv
Q3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lmbmRlZiBOREVCVUcK
QEAgLTQzLDYgKzQzLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RkOjp1bmlxdWVf
cHRyPEdyYXBoaWNzTGF5ZXI+IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShHcmFwaGljc0xheWVyRmFj
dG9yeSogZmFjdG9yeSwgR3JhcGhpY3NMYXllckNsaWVudCYgY2xpZW50LCBUeXBlIGxheWVyVHlw
ZSkKK3sKKyAgICBpZiAoIWZhY3RvcnkpCisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcj4obGF5ZXJUeXBlLCBjbGllbnQpOworCisgICAgcmV0
dXJuIGZhY3RvcnktPmNyZWF0ZUdyYXBoaWNzTGF5ZXIobGF5ZXJUeXBlLCBjbGllbnQpOworfQor
CiBzdGF0aWMgQ29vcmRpbmF0ZWRMYXllcklEIHRvQ29vcmRpbmF0ZWRMYXllcklEKEdyYXBoaWNz
TGF5ZXIqIGxheWVyKQogewogICAgIHJldHVybiBsYXllciA/IHRvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyKGxheWVyKS0+aWQoKSA6IDA7CkBAIC0xMjIsNiArMTMwLDkgQEAgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoVHlwZSBsYXllclR5cGUsIEdy
YXBoaWNzTGF5ZXIKICAgICAsIG1faXNWYWxpZFBsYXRmb3JtTGF5ZXIoZmFsc2UpCiAgICAgLCBt
X3BlbmRpbmdQbGF0Zm9ybUxheWVyT3BlcmF0aW9uKE5vbmUpCiAjZW5kaWYKKyNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgLCBtX3Nob3VsZFN5bmNQbGF0Zm9ybUxh
eWVyKGZhbHNlKQorI2VuZGlmCiAgICAgLCBtX2Nvb3JkaW5hdG9yKDApCiAgICAgLCBtX2NvbXBv
c2l0ZWROYXRpdmVJbWFnZVB0cigwKQogICAgICwgbV9wbGF0Zm9ybUxheWVyKDApCkBAIC00MTQs
NiArNDI1LDEyIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1Rv
UGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9yCiAgICAgQVNTRVJUKCEoIW1fcGxh
dGZvcm1MYXllclRva2VuLmlzVmFsaWQoKSAmJiBtX3BsYXRmb3JtTGF5ZXIpKTsKIAogICAgIG5v
dGlmeUZsdXNoUmVxdWlyZWQoKTsKKyNlbGlmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJF
QURFRCkKKyAgICBpZiAobV9wbGF0Zm9ybUxheWVyICE9IHBsYXRmb3JtTGF5ZXIpCisgICAgICAg
IG1fc2hvdWxkU3luY1BsYXRmb3JtTGF5ZXIgPSB0cnVlOworCisgICAgbV9wbGF0Zm9ybUxheWVy
ID0gcGxhdGZvcm1MYXllcjsKKyAgICBub3RpZnlGbHVzaFJlcXVpcmVkKCk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShwbGF0Zm9ybUxheWVyKTsKICNlbmRpZgpAQCAtNzE0LDkgKzczMSw5IEBA
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jQW5pbWF0aW9ucygpCiAgICAgbV9s
YXllclN0YXRlLmFuaW1hdGlvbnNDaGFuZ2VkID0gdHJ1ZTsKIH0KIAotI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNQbGF0Zm9ybUxh
eWVyKCkKIHsKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBkZXN0cm95UGxhdGZvcm1M
YXllcklmTmVlZGVkKCk7CiAgICAgY3JlYXRlUGxhdGZvcm1MYXllcklmTmVlZGVkKCk7CiAKQEAg
LTczMSw4ICs3NDgsMTggQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNQbGF0
Zm9ybUxheWVyKCkKICAgICBBU1NFUlQobV9wbGF0Zm9ybUxheWVyKTsKICAgICBtX2xheWVyU3Rh
dGUucGxhdGZvcm1MYXllckZyb250QnVmZmVyID0gbV9wbGF0Zm9ybUxheWVyLT5jb3B5VG9HcmFw
aGljc1N1cmZhY2UoKTsKICAgICBtX2xheWVyU3RhdGUucGxhdGZvcm1MYXllclNob3VsZFN3YXBC
dWZmZXJzID0gdHJ1ZTsKKyNlbGlmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkK
KyAgICBpZiAoIW1fc2hvdWxkU3luY1BsYXRmb3JtTGF5ZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fc2hvdWxkU3luY1BsYXRmb3JtTGF5ZXIgPSBmYWxzZTsKKyAgICBtX2xheWVyU3RhdGUu
cGxhdGZvcm1MYXllckNoYW5nZWQgPSB0cnVlOworICAgIGlmIChtX3BsYXRmb3JtTGF5ZXIpCisg
ICAgICAgIG1fbGF5ZXJTdGF0ZS5wbGF0Zm9ybUxheWVyUHJveHkgPSBtX3BsYXRmb3JtTGF5ZXIt
PnByb3h5KCk7CisjZW5kaWYKIH0KIAorI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmRlc3Ryb3lQbGF0Zm9ybUxheWVySWZOZWVkZWQoKQog
ewogICAgIGlmICghKG1fcGVuZGluZ1BsYXRmb3JtTGF5ZXJPcGVyYXRpb24gJiBEZXN0cm95UGxh
dGZvcm1MYXllcikpCkBAIC03ODMsOSArODEwLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQogICAgIGNvbXB1
dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KCk7CiAgICAgc3luY0NoaWxkcmVuKCk7CiAgICAgc3lu
Y0ZpbHRlcnMoKTsKLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBzeW5jUGxhdGZvcm1M
YXllcigpOwotI2VuZGlmCiAKICAgICAvLyBPbmx5IHVuc2V0IG1fbW92aW5nVmlzaWJsZVJlY3Qg
YWZ0ZXIgd2UgaGF2ZSB1cGRhdGVkIHRoZSB2aXNpYmxlIHJlY3QgYWZ0ZXIgdGhlIGFuaW1hdGlv
biBzdG9wcGVkLgogICAgIGlmICghaGFzQWN0aXZlVHJhbnNmb3JtQW5pbWF0aW9uKQpAQCAtMTIy
NCw1ICsxMjQ5LDE3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjphbmltYXRpb25T
dGFydGVkVGltZXJGaXJlZCgpCiB7CiAgICAgY2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRl
ZCh0aGlzLCAiIiwgbV9sYXN0QW5pbWF0aW9uU3RhcnRUaW1lKTsKIH0KKworI2lmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpwbGF0Zm9ybUxheWVyV2lsbEJlRGVzdHJveWVkKCkKK3sKK30KKwordm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnNldFBsYXRmb3JtTGF5ZXJOZWVkc0Rpc3BsYXkoKQoreworfQorI2Vu
ZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwogI2VuZGlmIC8vIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuaAppbmRleCBhMjE2YWQ1YTkzM2FjYmI1MDU2ZjI0NjZhNzAyMWNjYjA5ODVh
MDllLi42MWUxNjAxMThiZGFkNjE5YjVlMDcwZjBiNzFhMjUwNDgzM2NhZDY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAj
aW5jbHVkZSAiVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiVGlsZWRCYWNraW5nU3RvcmUuaCIKICNpbmNs
dWRlICJUaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9u
TWF0cml4LmgiCkBAIC01OSw2ICs2MCw5IEBAIHB1YmxpYzoKIGNsYXNzIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllciA6IHB1YmxpYyBHcmFwaGljc0xheWVyCiAgICAgLCBwdWJsaWMgVGlsZWRCYWNr
aW5nU3RvcmVDbGllbnQKICAgICAsIHB1YmxpYyBDb29yZGluYXRlZEltYWdlQmFja2luZzo6SG9z
dAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICAsIHB1YmxpYyBU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjo6Q2xpZW50CisjZW5kaWYKICAgICAsIHB1YmxpYyBD
b29yZGluYXRlZFRpbGVDbGllbnQgewogcHVibGljOgogICAgIGV4cGxpY2l0IENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcihUeXBlLCBHcmFwaGljc0xheWVyQ2xpZW50Jik7CkBAIC0xNjEsMTAgKzE2
NSwxNCBAQCBwcml2YXRlOgogICAgICAgICBSZWNyZWF0ZVBsYXRmb3JtTGF5ZXIgPSBDcmVhdGVB
bmRTeW5jUGxhdGZvcm1MYXllciB8IERlc3Ryb3lQbGF0Zm9ybUxheWVyCiAgICAgfTsKIAotICAg
IHZvaWQgc3luY1BsYXRmb3JtTGF5ZXIoKTsKICAgICB2b2lkIGRlc3Ryb3lQbGF0Zm9ybUxheWVy
SWZOZWVkZWQoKTsKICAgICB2b2lkIGNyZWF0ZVBsYXRmb3JtTGF5ZXJJZk5lZWRlZCgpOwogI2Vu
ZGlmCisgICAgdm9pZCBzeW5jUGxhdGZvcm1MYXllcigpOworI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDU19USFJFQURFRCkKKyAgICB2b2lkIHBsYXRmb3JtTGF5ZXJXaWxsQmVEZXN0cm95ZWQo
KTsKKyAgICB2b2lkIHNldFBsYXRmb3JtTGF5ZXJOZWVkc0Rpc3BsYXkoKTsKKyNlbmRpZgogCiAg
ICAgdmlydHVhbCB2b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgd2lkdGgp
IG92ZXJyaWRlOwogCkBAIC0yMjksNiArMjM3LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNW
YWxpZFBsYXRmb3JtTGF5ZXIgOiAxOwogICAgIHVuc2lnbmVkIG1fcGVuZGluZ1BsYXRmb3JtTGF5
ZXJPcGVyYXRpb24gOiAzOwogI2VuZGlmCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RI
UkVBREVEKQorICAgIGJvb2wgbV9zaG91bGRTeW5jUGxhdGZvcm1MYXllciA6IDE7CisjZW5kaWYK
IAogICAgIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCogbV9jb29yZGluYXRvcjsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VGlsZWRCYWNraW5nU3RvcmU+IG1fbWFpbkJhY2tpbmdTdG9yZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUu
aAppbmRleCAxNGYyYjc3NTA0Njc4ZjA5NzYyNzgxODAyMmRmYmVmYTI3MjQyZGY2Li44NGU3YjI3
NGMxYTYyMTY5NGQ2OGMwNDI4Nzg4ZGYzYTU4Nzc3NDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oCkBAIC00NCw2ICs0NCwxMCBA
QAogI2luY2x1ZGUgIkdyYXBoaWNzU3VyZmFjZVRva2VuLmgiCiAjZW5kaWYKIAorI2lmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDb29yZGluYXRlZFN1cmZhY2U7CkBAIC0xMzAsNiArMTM0LDkgQEAgc3RydWN0IENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllclN0YXRlIHsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICAg
ICAgLCBwbGF0Zm9ybUxheWVyRnJvbnRCdWZmZXIoMCkKICNlbmRpZgorI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICAgICAgLCBwbGF0Zm9ybUxheWVyUHJveHkoMCkK
KyNlbmRpZgogICAgIHsKICAgICB9CiAKQEAgLTE2NCw2ICsxNzEsMTAgQEAgc3RydWN0IENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllclN0YXRlIHsKICAgICBHcmFwaGljc1N1cmZhY2U6OkZsYWdzIHBs
YXRmb3JtTGF5ZXJTdXJmYWNlRmxhZ3M7CiAjZW5kaWYKIAorI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDU19USFJFQURFRCkKKyAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eT4gcGxhdGZvcm1MYXllclByb3h5OworI2VuZGlmCisKICAgICBJbnRTaXplIGNvbW1pdHRl
ZFNjcm9sbE9mZnNldDsKIAogICAgIGJvb2wgaGFzUGVuZGluZ0NoYW5nZXMoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggZTY3OTMyZjY0MmJm
YzUzNjQwNDFhNDFmYzY5MWI0Mjg4YjQxYmM3Ni4uODU2OTZmNjJiNDNiMGFmMjFjODM1OGJhMTdk
ZmU1ZGUwNDliYTYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUu
Y3BwCkBAIC04NCw2ICs4NCw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWlu
dFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpCiAgICAgaWYgKCFj
dXJyZW50Um9vdExheWVyKQogICAgICAgICByZXR1cm47CiAKKyAgICBmb3IgKFBsYXRmb3JtTGF5
ZXJQcm94eU1hcDo6aXRlcmF0b3IgaXQgPSBtX3BsYXRmb3JtTGF5ZXJQcm94aWVzLmJlZ2luKCk7
IGl0ICE9IG1fcGxhdGZvcm1MYXllclByb3hpZXMuZW5kKCk7ICsraXQpCisgICAgICAgIGl0LT52
YWx1ZS0+c3dhcEJ1ZmZlcigpOworCiAgICAgY3VycmVudFJvb3RMYXllci0+c2V0VGV4dHVyZU1h
cHBlcihtX3RleHR1cmVNYXBwZXIuZ2V0KCkpOwogICAgIGN1cnJlbnRSb290TGF5ZXItPmFwcGx5
QW5pbWF0aW9uc1JlY3Vyc2l2ZWx5KCk7CiAgICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpblBhaW50
aW5nKFBhaW50RmxhZ3MpOwpAQCAtMTY2LDIwICsxNjksOSBAQCB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6YWRqdXN0UG9zaXRpb25Gb3JGaXhlZExheWVycyhjb25zdCBGbG9hdFBvaW50
JiBjbwogICAgICAgICBmaXhlZExheWVyLT5zZXRTY3JvbGxQb3NpdGlvbkRlbHRhSWZOZWVkZWQo
ZGVsdGEpOwogfQogCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi12b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZTo6Y3JlYXRlUGxhdGZvcm1MYXllcklmTmVlZGVkKFRleHR1cmVNYXBwZXJM
YXllciogbGF5ZXIsIGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJiBzdGF0ZSkK
LXsKLSAgICBpZiAoIXN0YXRlLnBsYXRmb3JtTGF5ZXJUb2tlbi5pc1ZhbGlkKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZT4g
cGxhdGZvcm1MYXllckJhY2tpbmdTdG9yZShUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9y
ZTo6Y3JlYXRlKCkpOwotICAgIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXMuc2V0KGxheWVyLCBwbGF0
Zm9ybUxheWVyQmFja2luZ1N0b3JlKTsKLSAgICBwbGF0Zm9ybUxheWVyQmFja2luZ1N0b3JlLT5z
ZXRHcmFwaGljc1N1cmZhY2UoR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGUoc3RhdGUucGxhdGZvcm1M
YXllclNpemUsIHN0YXRlLnBsYXRmb3JtTGF5ZXJTdXJmYWNlRmxhZ3MsIHN0YXRlLnBsYXRmb3Jt
TGF5ZXJUb2tlbikpOwotICAgIGxheWVyLT5zZXRDb250ZW50c0xheWVyKHBsYXRmb3JtTGF5ZXJC
YWNraW5nU3RvcmUuZ2V0KCkpOwotfQotCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6
c3luY1BsYXRmb3JtTGF5ZXJJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyLCBjb25z
dCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYgc3RhdGUpCiB7CisjaWYgVVNFKEdSQVBI
SUNTX1NVUkZBQ0UpCiAgICAgQVNTRVJUKG1fdGV4dHVyZU1hcHBlcik7CiAKICAgICBpZiAoc3Rh
dGUucGxhdGZvcm1MYXllckNoYW5nZWQpIHsKQEAgLTE5Myw2ICsxODUsNDIgQEAgdm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU6OnN5bmNQbGF0Zm9ybUxheWVySWZOZWVkZWQoVGV4dHVyZU1h
cHBlckxheWVyKiBsYXkKICAgICAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2lu
Z1N0b3JlPiBwbGF0Zm9ybUxheWVyQmFja2luZ1N0b3JlID0gaXQtPnZhbHVlOwogICAgICAgICBw
bGF0Zm9ybUxheWVyQmFja2luZ1N0b3JlLT5zd2FwQnVmZmVyc0lmTmVlZGVkKHN0YXRlLnBsYXRm
b3JtTGF5ZXJGcm9udEJ1ZmZlcik7CiAgICAgfQorI2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTX1RIUkVBREVEKQorICAgIGlmICghc3RhdGUucGxhdGZvcm1MYXllckNoYW5nZWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChzdGF0ZS5wbGF0Zm9ybUxheWVyUHJveHkpIHsKKyAgICAg
ICAgbV9wbGF0Zm9ybUxheWVyUHJveGllcy5zZXQobGF5ZXIsIHN0YXRlLnBsYXRmb3JtTGF5ZXJQ
cm94eSk7CisgICAgICAgIHN0YXRlLnBsYXRmb3JtTGF5ZXJQcm94eS0+c2V0Q29tcG9zaXRvcih0
aGlzKTsKKyAgICAgICAgc3RhdGUucGxhdGZvcm1MYXllclByb3h5LT5zZXRUYXJnZXRMYXllcihs
YXllcik7CisgICAgfSBlbHNlCisgICAgICAgIG1fcGxhdGZvcm1MYXllclByb3hpZXMucmVtb3Zl
KGxheWVyKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGxheWVyKTsKKyAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOworI2VuZGlmCit9CisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhS
RUFERUQpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6b25OZXdCdWZmZXJBdmFpbGFi
bGUoKQoreworICAgIFJlZlB0cjxDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU+IHByb3RlY3Rvcih0
aGlzKTsKKyAgICBkaXNwYXRjaE9uQ2xpZW50UnVuTG9vcChbPV0geworICAgICAgICBwcm90ZWN0
b3ItPnVwZGF0ZVZpZXdwb3J0KCk7CisgICAgfSk7Cit9CisjZW5kaWYKKworI2lmIFVTRShHUkFQ
SElDU19TVVJGQUNFKQordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZVBsYXRm
b3JtTGF5ZXJJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyLCBjb25zdCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYgc3RhdGUpCit7CisgICAgaWYgKCFzdGF0ZS5wbGF0Zm9y
bUxheWVyVG9rZW4uaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8VGV4
dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU+IHBsYXRmb3JtTGF5ZXJCYWNraW5nU3RvcmUo
VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OmNyZWF0ZSgpKTsKKyAgICBtX3N1cmZh
Y2VCYWNraW5nU3RvcmVzLnNldChsYXllciwgcGxhdGZvcm1MYXllckJhY2tpbmdTdG9yZSk7Cisg
ICAgcGxhdGZvcm1MYXllckJhY2tpbmdTdG9yZS0+c2V0R3JhcGhpY3NTdXJmYWNlKEdyYXBoaWNz
U3VyZmFjZTo6Y3JlYXRlKHN0YXRlLnBsYXRmb3JtTGF5ZXJTaXplLCBzdGF0ZS5wbGF0Zm9ybUxh
eWVyU3VyZmFjZUZsYWdzLCBzdGF0ZS5wbGF0Zm9ybUxheWVyVG9rZW4pKTsKKyAgICBsYXllci0+
c2V0Q29udGVudHNMYXllcihwbGF0Zm9ybUxheWVyQmFja2luZ1N0b3JlLmdldCgpKTsKIH0KIAog
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRlc3Ryb3lQbGF0Zm9ybUxheWVySWZOZWVk
ZWQoVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciwgY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyU3RhdGUmIHN0YXRlKQpAQCAtMzE1LDkgKzM0Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjpzZXRMYXllclN0YXRlKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgQ29v
cmRpCiAgICAgdXBkYXRlVGlsZXNJZk5lZWRlZChsYXllciwgbGF5ZXJTdGF0ZSk7CiAgICAgc2V0
TGF5ZXJGaWx0ZXJzSWZOZWVkZWQobGF5ZXIsIGxheWVyU3RhdGUpOwogICAgIHNldExheWVyQW5p
bWF0aW9uc0lmTmVlZGVkKGxheWVyLCBsYXllclN0YXRlKTsKLSNpZiBVU0UoR1JBUEhJQ1NfU1VS
RkFDRSkKICAgICBzeW5jUGxhdGZvcm1MYXllcklmTmVlZGVkKGxheWVyLCBsYXllclN0YXRlKTsK
LSNlbmRpZgogICAgIHNldExheWVyUmVwYWludENvdW50SWZOZWVkZWQobGF5ZXIsIGxheWVyU3Rh
dGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCmluZGV4IGY3
MTcxOWNkNDk0MWIyYjg5NWY3OTJjNzA4YzRiYzAyNjY2ODUwZmUuLjc5MjVhZmE1MGRmY2Q3NTg4
YjhlYWE4N2EyN2Q5OTlmZWY5NDI2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZS5oCkBAIC00NCw2ICs0NCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dHVyZU1h
cHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaD4KICNlbmRpZgogCisjaWYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTX1RIUkVBREVEKQorI2luY2x1ZGUgPFdlYkNvcmUvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBD
b29yZGluYXRlZEJhY2tpbmdTdG9yZTsKQEAgLTU3LDcgKzYxLDExIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgY29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIG9mZnNldCkgPSAwOwogfTsKIAotY2xhc3MgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZT4sIHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlNjcm9sbGluZ0Ns
aWVudCB7CitjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lPiwgcHVibGljIFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJMYXllcjo6U2Nyb2xsaW5nQ2xpZW50CisjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTX1RIUkVBREVEKQorICAgICwgcHVibGljIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHk6OkNvbXBvc2l0b3IKKyNlbmRpZgorewogcHVibGljOgogICAgIGV4cGxp
Y2l0IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZShDb29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGll
bnQqKTsKICAgICB2aXJ0dWFsIH5Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKQEAgLTkzLDkg
KzEwMSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVUaWxlc0lmTmVlZGVkKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJMYXllciosIGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllclN0YXRlJik7CiAgICAgdm9pZCBzZXRMYXllckZpbHRlcnNJZk5lZWRlZChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyTGF5ZXIqLCBjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXJTdGF0ZSYpOwogICAgIHZvaWQgc2V0TGF5ZXJBbmltYXRpb25zSWZOZWVkZWQoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckxheWVyKiwgY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyU3RhdGUmKTsKKyAgICB2b2lkIHN5bmNQbGF0Zm9ybUxheWVySWZOZWVkZWQoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckxheWVyKiwgY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyU3RhdGUmKTsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2b2lkIGNyZWF0ZVBs
YXRmb3JtTGF5ZXJJZk5lZWRlZChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqLCBjb25zdCBX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwotICAgIHZvaWQgc3luY1Bs
YXRmb3JtTGF5ZXJJZk5lZWRlZChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqLCBjb25zdCBX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwogICAgIHZvaWQgZGVzdHJv
eVBsYXRmb3JtTGF5ZXJJZk5lZWRlZChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqLCBjb25z
dCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwogI2VuZGlmCiAgICAg
dm9pZCBzZXRMYXllclJlcGFpbnRDb3VudElmTmVlZGVkKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJM
YXllciosIGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CkBA
IC0xNDMsNiArMTUxLDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpc3BhdGNoQ29tbWl0U2Ny
b2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNl
dCk7CiAKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgdmlydHVh
bCB2b2lkIG9uTmV3QnVmZmVyQXZhaWxhYmxlKCkgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIC8v
IFJlbmRlciBxdWV1ZSBjYW4gYmUgYWNjZXNzZWQgb255IGZyb20gbWFpbiB0aHJlYWQgb3IgdXBk
YXRlUGFpbnROb2RlIGNhbGwgc3RhY2shCiAgICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCgp
Pj4gbV9yZW5kZXJRdWV1ZTsKICAgICBNdXRleCBtX3JlbmRlclF1ZXVlTXV0ZXg7CkBAIC0xNjMs
NiArMTc1LDExIEBAIHByaXZhdGU6CiAgICAgU3VyZmFjZUJhY2tpbmdTdG9yZU1hcCBtX3N1cmZh
Y2VCYWNraW5nU3RvcmVzOwogI2VuZGlmCiAKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Nf
VEhSRUFERUQpCisgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
ciosIFJlZlB0cjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4gUGxh
dGZvcm1MYXllclByb3h5TWFwOworICAgIFBsYXRmb3JtTGF5ZXJQcm94eU1hcCBtX3BsYXRmb3Jt
TGF5ZXJQcm94aWVzOworI2VuZGlmCisKICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDMyX3QgLyog
YXRsYXNJRCAqLywgUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4+IFN1cmZhY2VN
YXA7CiAgICAgU3VyZmFjZU1hcCBtX3N1cmZhY2VzOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264515</attachid>
            <date>2015-11-01 06:57:12 -0800</date>
            <delta_ts>2015-11-03 02:30:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143299-20151101235616.patch</filename>
            <type>text/plain</type>
            <size>46587</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxODU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJlYzQwMTU4ODY2YTRi
ZTdiYzFjMDg3ZjA2MjhlMjFiNDZhZTUzNC4uNTExMjNjOGQ4YmIzODcyZGY5YThiZjA5MDBjNjcx
MGZjZWVlM2ZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE1LTEwLTMxICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtUaHJlYWRlZENvbXBv
c2l0b3JdIEFkZCBzdXBwb3J0IGZvciBQbGF0Zm9ybUxheWVyLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMjk5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkgYW5kIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyIHRvCisgICAgICAgIHNlbmQgYSB0ZXh0dXJlIChhY3R1YWwgdGV4dHVyZSBvciBCaXRt
YXBUZXh0dXJlKSB0byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkIGRpcmVjdGx5LgorICAgICAgICBQ
bGF0Zm9ybSBsYXllciByZW5kZXJlcnMgc2hvdWxkIGltcGxlbWVudCBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5UHJvdmlkZXIgdG8gZXN0YWJsaXNoCisgICAgICAgIGEgY29ubmVjdGlv
biB0byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkLiBBZnRlciB0aGUgY29ubmVjdGlvbiBoYXMgYmVl
biBlc3RhYmxpc2hlZCwgdGhlIHJlbmRlcmVyCisgICAgICAgIGNhbiByZW5kZXIgaXRzIGNvbnRl
bnRzIHRvIHRoZSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlciBhbmQgcGFzcyBpdCB0
byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkCisgICAgICAgIHZpYSBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllciBwcm94eS4KKyAgICAgICAgVGhlIGJ1ZmZlciBjYW4gYmUgYW4gdW5tYW5hZ2VkIHRl
eHR1cmUgKGEuay5hLiBwbGF0Zm9ybSB0ZXh0dXJlKSBvciBCaXRtYXBUZXh0dXJlLgorICAgICAg
ICBGb3IgdGhlIHVubWFuYWdlZCB0ZXh0dXJlLCB0aGUgcmVuZGVyZXIgc2hvdWxkIG1hbmFnZSBp
dHMgbGlmZSBjeWNsZSBpdHNlbGYuIEZvciB0aGUgQml0bWFwVGV4dHVyZSwKKyAgICAgICAgaXQg
d2lsbCBiZSBtYW5hZ2VkIGJ5IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuIEluIHRo
YXQgY2FzZSwgdXNlZCAoc3dhcHBlZCkgYnVmZmVyIHdpbGwgYmUKKyAgICAgICAgcmVjeWNsZWQg
YmVjYXVzZSB0aGUgcmVuZGVyZXIgd2lsbCB1c2Ugc2FtZSBzaXplIGFuZCBmb3JtYXQgdW50aWwg
aXQgY2hhbmdlcyBpdHMgc2l6ZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLgorCisg
ICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgIEFkZHMgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXIgYW5kIFRleHR1cmVNYXBwZXJQbGF5dGZvcm1MYXllclByb3h5Lgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWly
by5oOgorICAgICAgICBBZGRzIG1vY2sgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmg6CisgICAgICAgIEFkZHMgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVyIGFzIGEgUGxhdGZvcm1MYXllciBmb3IgdGhlIFRo
cmVhZGVkIENvbXBvc2l0b3IKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlR0wuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6aW50
ZXJuYWxGb3JtYXQpOiBBZGRzIGEgZ2V0dGVyIHRvIGNoZWNrIHRoZQorICAgICAgICBpbnRlcm5h
bCBmb3JtYXQgb2YgdGV4dHVyZSB0byBjaGVjayByZXVzYWJpbGl0eS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5oOgorICAgICAgICBFeGNsdWRlIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGZy
b20gYnVpbGQgd2hlbiB3ZSBhcmUgdXNpbmcgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eS5oOiBBZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgQmVjYXVzZSB3ZSBy
ZW1vdmVkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGZyb20gYnVpbGQsIHdlIG5lZWQgdG8g
YWRkIG93biBmYWN0b3J5IGZ1bmN0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY1BsYXRmb3JtTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpwbGF0Zm9ybUxheWVyV2ls
bEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6c2V0UGxhdGZvcm1MYXllck5lZWRzRGlzcGxheSk6CisgICAgICAgIEltcGxlbWVudHMgc3lu
YyBvcGVyYXRpb25zIGZvciBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5CisKIDIwMTUt
MTEtMDEgIFBoaWxpcCBDaGltZW50byAgPHBoaWxpcC5jaGltZW50b0BnbWFpbC5jb20+CiAKICAg
ICAgICAgW0dUS10gRml4IGNvbWJpbmF0aW9ucyBvZiBQTEFURk9STShHVEspIGFuZCBPUyhEQVJX
SU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggM2E1OGRhMjAyYjUwYmQ0OGVjYjA2Zjc3NjUwZTk4OTg1YTRkMTI4
OS4uNTg3YjY4ZjQzYWQzMGI2NmJjODg2ZDk0Y2M1YWUxMDExZGFmYThmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIxIEBACisyMDE1LTEwLTMxICBHd2FuZyBZb29uIEh3YW5nICA8eW9vbkBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtUaHJlYWRlZENvbXBvc2l0b3JdIEFkZCBzdXBwb3J0IGZvciBQ
bGF0Zm9ybUxheWVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQzMjk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50
VG9DdXJyZW50R0xDb250ZXh0KToKKyAgICAgICAgU3dhcCBwZW5kaW5nIGJ1ZmZlcnMgb2YgVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94aWVzIGJlZm9yZSBwYWludGluZyBjb250ZW50cy4K
KyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzeW5jUGxhdGZvcm1M
YXllcklmTmVlZGVkKToKKyAgICAgICAgSW4gdGhyZWFkZWQgY29tcG9zaXRvciwgQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5jZSBvbmx5IGNhcmVzIGFib3V0IGNyZWF0aW9uIGFuZCBkZWxldGlvbgor
ICAgICAgICBvZiBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lOjpvbk5ld0J1ZmZlckF2YWlsYWJsZSk6CisgICAgICAgIFdoZW5ldmVy
IG5ldyBidWZmZXIgY29tZXMgdmlhIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHksIENv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZSB3aWxsCisgICAgICAgIHVwZGF0ZSB0aGUgc2NlbmUgaWYg
aXQgaXMgbmVlZGVkLgorCiAyMDE1LTExLTAxICBQaGlsaXAgQ2hpbWVudG8gIDxwaGlsaXAuY2hp
bWVudG9AZ21haWwuY29tPgogCiAgICAgICAgIFtHVEtdIEZpeCBjb21iaW5hdGlvbnMgb2YgUExB
VEZPUk0oR1RLKSBhbmQgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBh
NGQ3ZDc2NzJhOTgxMDcwODBkMjQzNjE2Yjk2OGZlN2NiZjYyNTQzLi43MzMxMzQ3ZTU1YjA0YjYw
ZTQ4YzRmNTlkNGQ1NGVjOWVjZWJkY2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAt
NDQ0LDYgKzQ0NCw4IEBAIGlmIChFTkFCTEVfVEhSRUFERURfQ09NUE9TSVRPUikKICAgICAgICAg
cGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNv
b3JkaW5hdGVkR3JhcGhpY3MuY3BwCiAgICAgICAgIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVk
Z3JhcGhpY3MvU2Nyb2xsaW5nU3RhdGVOb2RlQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKIAorICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5LmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQXJlYUFsbG9jYXRvci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAppbmRleCBiMWNkY2NjYjY3MmZmMDI1ZGYy
N2Y4Y2E3ODc0ZDkzZjJkMTA1ZjEzLi5hOGE4ODI3MjUwMjhmODNiZGJhMDkyNTJkOTc1MjZjMzg5
OTE1MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIEcKIAogR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp+R3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlKCkKIHsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisjaWYgVVNF
KFRFWFRVUkVfTUFQUEVSKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQog
ICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnBsYXRmb3JtTGF5ZXJXaWxsQmVE
ZXN0cm95ZWQoKTsKICNlbmRpZgpAQCAtNzksNyArNzksMTMgQEAgUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQzRCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBsYXRmb3JtQ29udGV4dCgpCiAgICAg
cmV0dXJuIG1fZ2xDb250ZXh0ID8gbV9nbENvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpIDogR0xD
b250ZXh0OjpnZXRDdXJyZW50KCktPnBsYXRmb3JtQ29udGV4dCgpOwogfQogCi0jaWYgVVNFKFRF
WFRVUkVfTUFQUEVSKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKK1Jl
ZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OnByb3h5KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4oKTsKK30KKyNlbGlmIFVT
RShURVhUVVJFX01BUFBFUikKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0
IG9wYWNpdHkpCiB7CiAgICAgaWYgKCFtX2dsQ29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgK
aW5kZXggOWQ3MGVlNjllMDIxZWQ1ZWJlZWE4ZThiY2IwZWQxMTdiOGY4MGMyYy4uOWZjOTIyNDJl
OGJmNTU3YTVjMTRjY2M5ZTdkZWI0YzM2ZWVmZDU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgK
QEAgLTIzLDE0ICsyMywxOCBAQAogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dDNELmgiCiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHkuaCIKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUikKICNpbmNsdWRlICJU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlCi0jaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICA6IHB1Ymxp
YyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5UHJvdmlkZXIKKyNlbGlmIFVTRShURVhU
VVJFX01BUFBFUikKICAgICA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcgogI2Vu
ZGlmCiB7CkBAIC00Miw3ICs0NiwxMCBAQCBwdWJsaWM6CiAKICAgICBHcmFwaGljc0NvbnRleHQz
RDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUoKSB7IHJldHVybiBtX3JlbmRlclN0eWxlOyB9CiAK
LSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RI
UkVBREVEKQorICAgIHZpcnR1YWwgUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJv
eHk+IHByb3h5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN3YXBCdWZmZXJz
SWZOZWVkZWQoKSBvdmVycmlkZSB7IH07CisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiAgICAg
dmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFj
aXR5KTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybUxheWVyLmgKaW5kZXggZjkwZmM2N2NjOTE0ZGQ2MDRlNzNlYmUwZjQ1NmQyOTQ1ZjNm
YTZkNy4uMjlmOWRlY2IyNGJhMmQ0NGU0MTAxZDAzYzE4MDk5ZGFhYjE1ZWU2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1MYXllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5ZXIuaApAQCAtMzEs
NiArMzEsMTEgQEAgT0JKQ19DTEFTUyBDQUxheWVyOwogdHlwZWRlZiBDQUxheWVyIFBsYXRmb3Jt
TGF5ZXI7CiAjZWxpZiBQTEFURk9STShXSU4pICYmIFVTRShDQSkKIHR5cGVkZWYgc3RydWN0IF9D
QUNGTGF5ZXIgUGxhdGZvcm1MYXllcjsKKyNlbGlmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19U
SFJFQURFRCkKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHlQcm92aWRlcjsKK3R5cGVkZWYgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eVByb3ZpZGVyIFBsYXRmb3JtTGF5ZXI7Cit9OwogI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVS
KQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDNlNTIxM2Y4NmRhNjUxMmRlNjFkZmE1YmY5ZjY1
YWU3MWM4MmUzZGYuLjcwZTQ0MjFlMWU3OGVkNjg4ZDVhZWI2NjQwNWFkODI5MGVkN2Y3ZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC01Miw2ICs1Miw5IEBACiAjaW5jbHVkZSAiT3BlbkdM
U2hpbXMuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKICNpbmNsdWRlIDxjYWlyby1n
bC5oPgorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyNpbmNsdWRlICJU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgiCisjZW5kaWYKICNlbmRpZgogCiB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwpAQCAtNDA5LDYgKzQxMiwxMyBAQCBTdHJpbmcgSW1hZ2VCdWZmZXI6
OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBkb3VibGUqLCBDb29yZGlu
YXRlUwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorI2lmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKK1JlZlB0cjxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5PiBJbWFnZUJ1ZmZlckRhdGE6OnByb3h5KCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94eT4oKTsKK30KKyNlbHNlCiB2b2lkIEltYWdlQnVmZmVyRGF0YTo6cGFpbnRUb1Rl
eHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBv
cGFjaXR5KQogewogICAgIEFTU0VSVChtX3RleHR1cmUpOwpAQCAtNDIxLDYgKzQzMSw3IEBAIHZv
aWQgSW1hZ2VCdWZmZXJEYXRhOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0
ZXh0dXJlTWFwcGVyLCBjb25zdCBGCiAgICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4o
dGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKG1fdGV4dHVyZSwgVGV4dHVyZU1hcHBlckdMOjpT
aG91bGRCbGVuZCwgbV9zaXplLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHkpOwogfQogI2Vu
ZGlmCisjZW5kaWYKIAogUGxhdGZvcm1MYXllciogSW1hZ2VCdWZmZXI6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJEYXRhQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YUNhaXJvLmgKaW5kZXggZDYyZjQ3MDUxNWUzZTgy
ZGNhOWQ5NzYzNDQ3YTY3ZTJmYzRkMDYzMy4uYzNmOWExMjI0ODIxNTMwZTc4MTE2NmYwMWEzNmE3
MWQyMjFjYzA4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJEYXRhQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWlyby5oCkBAIC0zMyw4ICszMywxMiBA
QAogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKICNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyLmgiCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaCIKKyNlbHNlCiAjaW5jbHVkZSAi
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKICNlbmRpZgorI2VuZGlmCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNDIsOCArNDYsMTIgQEAgY2xhc3MgSW50U2l6ZTsKIAogY2xhc3Mg
SW1hZ2VCdWZmZXJEYXRhCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgOiBwdWJsaWMgVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVyCisjZWxzZQogICAgIDogcHVibGljIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyCiAjZW5kaWYKKyNlbmRpZgogewogcHVibGljOgogICAgIElt
YWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJik7CkBAIC01NCw3ICs2MiwxMiBAQCBwdWJsaWM6
CiAgICAgSW50U2l6ZSBtX3NpemU7CiAKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFT
KQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBwcm94eSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVyc0lmTmVlZGVkKCkgb3ZlcnJpZGUgeyB9
OworI2Vsc2UKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1h
cHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYsIGZsb2F0IG9wYWNpdHkpOworI2VuZGlmCiAgICAgdWludDMyX3QgbV90ZXh0dXJlOwogI2Vu
ZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0JpdG1hcFRleHR1cmVHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oCmluZGV4IGViMjBhMGYyMGVjYjZjNDdkNWZlMGIyYzUx
NTk5ODJkODdiZDY0ZjIuLmQ1ZDY3MzhhM2VkMWVkZTA4NTM0YjYxNGEwMjBiNjQzOTZjZTBlMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRt
YXBUZXh0dXJlR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZUdMLmgKQEAgLTY5LDYgKzY5LDggQEAgcHVibGljOgogICAgIGNvbnN0
IEZpbHRlckluZm8qIGZpbHRlckluZm8oKSBjb25zdCB7IHJldHVybiAmbV9maWx0ZXJJbmZvOyB9
CiAgICAgVGV4dHVyZU1hcHBlckdMOjpDbGlwU3RhY2smIGNsaXBTdGFjaygpIHsgcmV0dXJuIG1f
Y2xpcFN0YWNrOyB9CiAKKyAgICBHQzNEaW50IGludGVybmFsRm9ybWF0KCkgY29uc3QgeyByZXR1
cm4gbV9pbnRlcm5hbEZvcm1hdDsgfQorCiBwcml2YXRlOgogCiAgICAgUGxhdGZvcm0zRE9iamVj
dCBtX2lkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXgg
NTAxZDJhODllOWU4N2FlMGZkNTUyMmFjNDg3NzcwOTZjM2VjMGNlMy4uY2VkYTgyZGYyNDY2NDQx
ZmE2ZmI0NjIyZDA3OTVhODVhYmEwMGJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBl
ckFuaW1hdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCi0jaWYgVVNFKFRF
WFRVUkVfTUFQUEVSKQorI2lmIFVTRShURVhUVVJFX01BUFBFUikgJiYgIVVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlci5oCmluZGV4IGY1NmNmNTE4NTljZGM3YWJkODBjMzZhNjlhZmQwNmMy
ODhhMzRjMzMuLmIwYWE0NjM3ZDhiYzYxZmIyZjk2NGU5M2UxMzAxNWQyZTJlMzE2MGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBAIC0yMCw3ICsyMCw3IEBACiAj
aWZuZGVmIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyX2gKICNkZWZpbmUgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXJfaAogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorI2lmIFVTRShURVhU
VVJFX01BUFBFUikgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIAogI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2xpZW50LmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IGU4MTIyZDlmOGUwYjBkNjkxOWQwMGJkNWFjNjMxZjQ3
Y2M3ODc4NzcuLjdmNmIxNjM5NmJmMmQxMTMxNjZmYTY0MzM3OTc1MGIwMGE0NTcwYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC00NDUsMTIgKzQ0NSwxNCBAQCBUZXh0dXJlTWFw
cGVyTGF5ZXI6On5UZXh0dXJlTWFwcGVyTGF5ZXIoKQogICAgIHJlbW92ZUZyb21QYXJlbnQoKTsK
IH0KIAorI2lmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiB2b2lkIFRleHR1cmVNYXBwZXJM
YXllcjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgbmV3Q2hpbGRy
ZW4pCiB7CiAgICAgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKICAgICBmb3IgKGF1dG8qIGNoaWxkIDog
bmV3Q2hpbGRyZW4pCiAgICAgICAgIGFkZENoaWxkKCZkb3duY2FzdDxHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcj4oY2hpbGQpLT5sYXllcigpKTsKIH0KKyNlbmRpZgogCiB2b2lkIFRleHR1cmVN
YXBwZXJMYXllcjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPFRleHR1cmVNYXBwZXJMYXllcio+
JiBuZXdDaGlsZHJlbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCAwYzlkYTcxYmIx
OTVjYjRkY2Q3MWYxNTBmN2ZlN2EyZTI2M2FjYWQyLi42YWRiNjU0YzgxMzRjNTE4N2VhOTY3Zjgy
MGNhZWNkMzY3ZDQ4ZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC03OCw3ICs3OCw5
IEBAIHB1YmxpYzoKICAgICBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyKCkgY29uc3QgeyBy
ZXR1cm4gcm9vdExheWVyKCkubV90ZXh0dXJlTWFwcGVyOyB9CiAgICAgdm9pZCBzZXRUZXh0dXJl
TWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleG1hcCkgeyBtX3RleHR1cmVNYXBwZXIgPSB0ZXhtYXA7
IH0KIAorI2lmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgdm9pZCBzZXRDaGlsZHJl
bihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+Jik7CisjZW5kaWYKICAgICB2b2lkIHNldENo
aWxkcmVuKGNvbnN0IFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5ZXIqPiYpOwogICAgIHZvaWQgc2V0
TWFza0xheWVyKFRleHR1cmVNYXBwZXJMYXllciopOwogICAgIHZvaWQgc2V0UmVwbGljYUxheWVy
KFRleHR1cmVNYXBwZXJMYXllciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODM5MTI5MjVjNzI2ZjA0M2IzZjhkMjBj
MjNmZjAzODg5YWU3YmI4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAK
QEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIo
UmVmUHRyPEJpdG1hcFRleHR1cmU+JiYgdGV4dHVyZSkKKyAgICA6IG1fdGV4dHVyZShXVEY6Om1v
dmUodGV4dHVyZSkpCisgICAgLCBtX2V4dHJhRmxhZ3MoMCkKKyAgICAsIG1faGFzTWFuYWdlZFRl
eHR1cmUodHJ1ZSkKK3sKK30KKworVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OlRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKEdMdWludCB0ZXh0dXJlSUQsIGNvbnN0IElu
dFNpemUmIHNpemUsIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MpCisgICAgOiBtX3RleHR1
cmVJRCh0ZXh0dXJlSUQpCisgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAsIG1fZXh0cmFGbGFncyhm
bGFncykKKyAgICAsIG1faGFzTWFuYWdlZFRleHR1cmUoZmFsc2UpCit7Cit9CisKK1RleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjp+VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXIoKQoreworfQorCitib29sIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpjYW5S
ZXVzZVdpdGhvdXRSZXNldChjb25zdCBJbnRTaXplJiBzaXplLCBHQzNEaW50IGludGVybmFsRm9y
bWF0KQoreworICAgIHJldHVybiBtX3RleHR1cmUgJiYgKG1fdGV4dHVyZS0+c2l6ZSgpID09IHNp
emUpICYmIChzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wqPihtX3RleHR1cmUuZ2V0KCkpLT5p
bnRlcm5hbEZvcm1hdCgpID09IGludGVybmFsRm9ybWF0IHx8IGludGVybmFsRm9ybWF0ID09IEdy
YXBoaWNzQ29udGV4dDNEOjpET05UX0NBUkUpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0
dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkpCit7CisgICAgaWYgKG1f
aGFzTWFuYWdlZFRleHR1cmUpIHsKKyAgICAgICAgQVNTRVJUKG1fdGV4dHVyZSk7CisgICAgICAg
IHRleHR1cmVNYXBwZXItPmRyYXdUZXh0dXJlKCptX3RleHR1cmUsIHRhcmdldFJlY3QsIG1vZGVs
Vmlld01hdHJpeCwgb3BhY2l0eSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NF
UlQobV90ZXh0dXJlSUQpOworICAgIFRleHR1cmVNYXBwZXJHTCogdGV4bWFwR0wgPSBzdGF0aWNf
Y2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKTsKKyAgICB0ZXhtYXBHTC0+ZHJh
d1RleHR1cmUobV90ZXh0dXJlSUQsIG1fZXh0cmFGbGFncywgbV9zaXplLCB0YXJnZXRSZWN0LCBt
b2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkpOworfQorCit9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yNjEwZDA2ZWM1MWUwZDgyNmUzZDAyMGQxMzhhMjBkN2VkZTVlMTQzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyX2gKKyNkZWZpbmUgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXJfaAorCisjaW5jbHVkZSAiQml0bWFwVGV4dHVyZUdMLmgiCisjaW5jbHVkZSAiR3Jh
cGhpY3NUeXBlczNELmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIK
KyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlciA6IHB1YmxpYyBUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXIpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKCk7Citw
dWJsaWM6CisgICAgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoUmVmUHRyPEJpdG1h
cFRleHR1cmU+JiYpOworICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKEdMdWlu
dCB0ZXh0dXJlSUQsIGNvbnN0IEludFNpemUmLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzKTsKKwor
ICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKCk7CisKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBvcGFjaXR5ID0gMS4wKSBmaW5hbDsKKworICAg
IGJvb2wgY2FuUmV1c2VXaXRob3V0UmVzZXQoY29uc3QgSW50U2l6ZSYsIEdDM0RpbnQgaW50ZXJu
YWxGb3JtYXQpOworICAgIEJpdG1hcFRleHR1cmVHTCYgdGV4dHVyZUdMKCkgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4oKm1fdGV4dHVyZSk7IH0KKworICAgIGlubGluZSB2
b2lkIG1hcmtVc2VkKCkgeyBtX3RpbWVMYXN0VXNlZCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5n
VGltZSgpOyB9CisgICAgZG91YmxlIGxhc3RVc2VkVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlt
ZUxhc3RVc2VkOyB9CisKKyAgICBjbGFzcyBVbm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVyIHsKKyAg
ICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcik7Cisg
ICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKCk7CisgICAgcHVibGljOgorICAgICAgICBV
bm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVyKCkgeyB9CisgICAgICAgIHZpcnR1YWwgflVubWFuYWdl
ZEJ1ZmZlckRhdGFIb2xkZXIoKSA9IGRlZmF1bHQ7CisgICAgfTsKKworICAgIGJvb2wgaGFzTWFu
YWdlZFRleHR1cmUoKSBjb25zdCB7IHJldHVybiBtX2hhc01hbmFnZWRUZXh0dXJlOyB9CisgICAg
dm9pZCBzZXRVbm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVyKHN0ZDo6dW5pcXVlX3B0cjxVbm1hbmFn
ZWRCdWZmZXJEYXRhSG9sZGVyPiBob2xkZXIpIHsgbV91bm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVy
ID0gV1RGOjptb3ZlKGhvbGRlcik7IH0KKworcHJpdmF0ZToKKworICAgIFJlZlB0cjxCaXRtYXBU
ZXh0dXJlPiBtX3RleHR1cmU7CisgICAgZG91YmxlIG1fdGltZUxhc3RVc2VkIHsgMCB9OworCisg
ICAgR0x1aW50IG1fdGV4dHVyZUlEOworICAgIEludFNpemUgbV9zaXplOworICAgIFRleHR1cmVN
YXBwZXJHTDo6RmxhZ3MgbV9leHRyYUZsYWdzOworICAgIGJvb2wgbV9oYXNNYW5hZ2VkVGV4dHVy
ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcj4gbV91bm1h
bmFnZWRCdWZmZXJEYXRhSG9sZGVyOworfTsKKworfTsKKworI2VuZGlmIC8vIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTEwMmI3ODBmNzg1MjU1ZDEwZjRjNDY4
ZTBkNDQ5MzkzY2RiNjRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCkBA
IC0wLDAgKzEsMTU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5LmgiCisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFE
RUQpCisKKyNpbmNsdWRlICJCaXRtYXBUZXh0dXJlR0wuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFw
cGVyR0wuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oIgorCitjb25zdCBkb3VibGUgc19yZWxlYXNl
VW51c2VkU2Vjb25kc1RvbGVyYW5jZSA9IDE7Citjb25zdCBkb3VibGUgc19yZWxlYXNlVW51c2Vk
QnVmZmVyc1RpbWVySW50ZXJ2YWwgPSAwLjU7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eSgpCisgICAgOiBtX2NvbXBvc2l0b3IoMCkKKyAgICAsIG1fdGFyZ2V0TGF5ZXIoMCkKKyAg
ICAsIG1fcnVuTG9vcChSdW5Mb29wOjpjdXJyZW50KCkpCisgICAgLCBtX3JlbGVhc2VVbnVzZWRC
dWZmZXJzVGltZXIobV9ydW5Mb29wLCB0aGlzLCAmVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eTo6cmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckZpcmVkKQoreworfQorCitUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5Ojp+VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSgp
Cit7CisgICAgaWYgKG1fdGFyZ2V0TGF5ZXIpCisgICAgICAgIG1fdGFyZ2V0TGF5ZXItPnNldENv
bnRlbnRzTGF5ZXIobnVsbHB0cik7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eTo6YWN0aXZhdGVPbkNvbXBvc2l0aW5nVGhyZWFkKENvbXBvc2l0b3IqIGNvbXBvc2l0
b3IsIFRleHR1cmVNYXBwZXJMYXllciogdGFyZ2V0TGF5ZXIpCit7CisjaWZuZGVmIE5ERUJVRwor
ICAgIG1fY29tcG9zaXRvclRocmVhZElEID0gbV9jb21wb3NpdG9yVGhyZWFkSUQgPyBtX2NvbXBv
c2l0b3JUaHJlYWRJRCA6IFdURjo6Y3VycmVudFRocmVhZCgpOworI2VuZGlmCisgICAgQVNTRVJU
KG1fY29tcG9zaXRvclRocmVhZElEID09IFdURjo6Y3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NF
UlQoY29tcG9zaXRvcik7CisgICAgQVNTRVJUKHRhcmdldExheWVyKTsKKyAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2xvY2spOworICAgIG1fY29tcG9zaXRvciA9IGNvbXBvc2l0b3I7CisgICAgbV90
YXJnZXRMYXllciA9IHRhcmdldExheWVyOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHk6OmludmFsaWRhdGUoKQoreworICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJl
YWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9s
b2NrKTsKKyAgICBtX2NvbXBvc2l0b3IgPSBudWxscHRyOworICAgIG1fdGFyZ2V0TGF5ZXIgPSBu
dWxscHRyOworfQorCitib29sIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmlzQWN0
aXZlKCkKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIHJldHVybiAhIW1f
dGFyZ2V0TGF5ZXIgJiYgISFtX2NvbXBvc2l0b3I7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eTo6cHVzaE5leHRCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBuZXdCdWZmZXIpCit7CisgICAgTG9ja0hvbGRlciBs
b2NrZXIobV9sb2NrKTsKKyAgICBtX3BlbmRpbmdCdWZmZXIgPSBXVEY6Om1vdmUobmV3QnVmZmVy
KTsKKworICAgIGlmIChtX2NvbXBvc2l0b3IpCisgICAgICAgIG1fY29tcG9zaXRvci0+b25OZXdC
dWZmZXJBdmFpbGFibGUoKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyPiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpnZXRBdmFp
bGFibGVCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGludCBpbnRlcm5hbEZvcm1hdCkK
K3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIHN0ZDo6dW5pcXVlX3B0cjxU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gYXZhaWxhYmxlQnVmZmVyOworCisgICAg
YXV0byBidWZmZXJzID0gV1RGOjptb3ZlKG1fdXNlZEJ1ZmZlcnMpOworICAgIGZvciAoYXV0byYg
YnVmZmVyIDogYnVmZmVycykgeworICAgICAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIGlmICghYXZhaWxhYmxlQnVmZmVyICYmIGJ1ZmZlci0+Y2FuUmV1
c2VXaXRob3V0UmVzZXQoc2l6ZSwgaW50ZXJuYWxGb3JtYXQpKSB7CisgICAgICAgICAgICBhdmFp
bGFibGVCdWZmZXIgPSBXVEY6Om1vdmUoYnVmZmVyKTsKKyAgICAgICAgICAgIGF2YWlsYWJsZUJ1
ZmZlci0+bWFya1VzZWQoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAg
ICAgIG1fdXNlZEJ1ZmZlcnMuYXBwZW5kKFdURjo6bW92ZShidWZmZXIpKTsKKyAgICB9CisKKyAg
ICBpZiAoIW1fdXNlZEJ1ZmZlcnMuaXNFbXB0eSgpKQorICAgICAgICBzY2hlZHVsZVJlbGVhc2VV
bnVzZWRCdWZmZXJzKCk7CisgICAgcmV0dXJuIGF2YWlsYWJsZUJ1ZmZlcjsKK30KKwordm9pZCBU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpzY2hlZHVsZVJlbGVhc2VVbnVzZWRCdWZm
ZXJzKCkKK3sKKyAgICBpZiAobV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyLmlzQWN0aXZlKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lci5zdGFy
dE9uZVNob3Qoc19yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVySW50ZXJ2YWwpOworfQorCit2b2lk
IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnJlbGVhc2VVbnVzZWRCdWZmZXJzVGlt
ZXJGaXJlZCgpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBpZiAobV91
c2VkQnVmZmVycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gYnVmZmVy
cyA9IFdURjo6bW92ZShtX3VzZWRCdWZmZXJzKTsKKyAgICBkb3VibGUgbWluVXNlZFRpbWUgPSBt
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIHNfcmVsZWFzZVVudXNlZFNlY29uZHNUb2xl
cmFuY2U7CisKKyAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGJ1ZmZlcnMpIHsKKyAgICAgICAgaWYg
KGJ1ZmZlciAmJiBidWZmZXItPmxhc3RVc2VkVGltZSgpID49IG1pblVzZWRUaW1lKQorICAgICAg
ICAgICAgbV91c2VkQnVmZmVycy5hcHBlbmQoV1RGOjptb3ZlKGJ1ZmZlcikpOworICAgIH0KK30K
Kwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpzd2FwQnVmZmVyKCkKK3sK
KyAgICBBU1NFUlQobV9jb21wb3NpdG9yVGhyZWFkSUQgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkp
OworCisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICBp
ZiAoIW1fdGFyZ2V0TGF5ZXIgfHwgIW1fcGVuZGluZ0J1ZmZlcikKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBpZiAobV9jdXJyZW50QnVmZmVyICYmIG1fY3VycmVudEJ1ZmZlci0+aGFz
TWFuYWdlZFRleHR1cmUoKSkKKyAgICAgICAgICAgIG1fdXNlZEJ1ZmZlcnMuYXBwZW5kKFdURjo6
bW92ZShtX2N1cnJlbnRCdWZmZXIpKTsKKworICAgICAgICBtX2N1cnJlbnRCdWZmZXIgPSBXVEY6
Om1vdmUobV9wZW5kaW5nQnVmZmVyKTsKKyAgICAgICAgbV90YXJnZXRMYXllci0+c2V0Q29udGVu
dHNMYXllcihtX2N1cnJlbnRCdWZmZXIuZ2V0KCkpOworICAgIH0KK30KKworfTsKKworI2VuZGlm
IC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllclByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwNGY5NTQwOGM1NDc0
OGNlNjMwNjUxODNmNjE0NzEzZmQwODFlMDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eS5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlh
IFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
X2gKKyNkZWZpbmUgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eV9oCisKKyNpbmNsdWRl
ICJHcmFwaGljc1R5cGVzM0QuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCisjaW5jbHVk
ZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKKyNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+Cisj
aW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
I2lmbmRlZiBOREVCVUcKKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjZW5kaWYKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXI7CitjbGFzcyBUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OworY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXI7CisKK2NsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlQcm92
aWRlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94eT4gcHJveHkoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN3YXBCdWZm
ZXJzSWZOZWVkZWQoKSA9IDA7Cit9OworCitjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
clByb3h5IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHk+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCgpOworcHVibGljOgor
ICAgIGNsYXNzIENvbXBvc2l0b3IgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB2b2lk
IG9uTmV3QnVmZmVyQXZhaWxhYmxlKCkgPSAwOworICAgIH07CisKKyAgICBUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5KCk7CisgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94eSgpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyPiBnZXRBdmFpbGFibGVCdWZmZXIoY29uc3QgSW50U2l6ZSYsIEdDM0RpbnQg
aW50ZXJuYWxGb3JtYXQpOworICAgIHZvaWQgcHVzaE5leHRCdWZmZXIoc3RkOjp1bmlxdWVfcHRy
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPik7CisKKyAgICB2b2lkIGFjdGl2YXRl
T25Db21wb3NpdGluZ1RocmVhZChDb21wb3NpdG9yKiwgVGV4dHVyZU1hcHBlckxheWVyKik7Cisg
ICAgdm9pZCBpbnZhbGlkYXRlKCk7CisgICAgYm9vbCBpc0FjdGl2ZSgpOworCisgICAgdm9pZCBz
d2FwQnVmZmVyKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzY2hlZHVsZVJlbGVhc2VVbnVzZWRC
dWZmZXJzKCk7CisgICAgdm9pZCByZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyRmlyZWQoKTsKKwor
ICAgIENvbXBvc2l0b3IqIG1fY29tcG9zaXRvcjsKKyAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIG1f
dGFyZ2V0TGF5ZXI7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXI+IG1fY3VycmVudEJ1ZmZlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IG1fcGVuZGluZ0J1ZmZlcjsKKworICAgIExvY2sg
bV9sb2NrOworCisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcj4+IG1fdXNlZEJ1ZmZlcnM7CisKKyAgICBSdW5Mb29wJiBtX3J1bkxvb3A7
CisgICAgUnVuTG9vcDo6VGltZXI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gbV9y
ZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyOworI2lmbmRlZiBOREVCVUcKKyAgICBUaHJlYWRJZGVu
dGlmaWVyIG1fY29tcG9zaXRvclRocmVhZElEIHsgMCB9OworI2VuZGlmCit9OworCit9OworCisj
ZW5kaWYgLy8gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDdj
NzUyNDRjNzNlMGFhYjFjNTQ3MTViNGUyN2ZmOWI3NGViNjAxNWIuLjFlMGZkNmUwZWE2MWYyMjJk
MzU3YTc5Y2VmMjBjMjBmYWMxZjMyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zMCw5ICszMCw5IEBACiAjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJGYWN0b3J5LmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCi0jaW5jbHVkZSAi
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lmbmRlZiBOREVCVUcKQEAgLTQyLDYgKzQy
LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNz
TGF5ZXI+IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShHcmFwaGljc0xheWVyRmFjdG9yeSogZmFjdG9y
eSwgR3JhcGhpY3NMYXllckNsaWVudCYgY2xpZW50LCBUeXBlIGxheWVyVHlwZSkKK3sKKyAgICBp
ZiAoIWZhY3RvcnkpCisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcj4obGF5ZXJUeXBlLCBjbGllbnQpOworCisgICAgcmV0dXJuIGZhY3Rvcnkt
PmNyZWF0ZUdyYXBoaWNzTGF5ZXIobGF5ZXJUeXBlLCBjbGllbnQpOworfQorCiBzdGF0aWMgQ29v
cmRpbmF0ZWRMYXllcklEIHRvQ29vcmRpbmF0ZWRMYXllcklEKEdyYXBoaWNzTGF5ZXIqIGxheWVy
KQogewogICAgIHJldHVybiBsYXllciA/IHRvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKGxheWVy
KS0+aWQoKSA6IDA7CkBAIC0xMjEsNiArMTI5LDkgQEAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoVHlwZSBsYXllclR5cGUsIEdyYXBoaWNzTGF5ZXIK
ICAgICAsIG1faXNWYWxpZFBsYXRmb3JtTGF5ZXIoZmFsc2UpCiAgICAgLCBtX3BlbmRpbmdQbGF0
Zm9ybUxheWVyT3BlcmF0aW9uKE5vbmUpCiAjZW5kaWYKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1NfVEhSRUFERUQpCisgICAgLCBtX3Nob3VsZFN5bmNQbGF0Zm9ybUxheWVyKGZhbHNlKQor
I2VuZGlmCiAgICAgLCBtX2Nvb3JkaW5hdG9yKDApCiAgICAgLCBtX2NvbXBvc2l0ZWROYXRpdmVJ
bWFnZVB0cigwKQogICAgICwgbV9wbGF0Zm9ybUxheWVyKDApCkBAIC00MDYsNiArNDE3LDEyIEBA
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXll
cihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9yCiAgICAgQVNTRVJUKCEoIW1fcGxhdGZvcm1MYXllclRv
a2VuLmlzVmFsaWQoKSAmJiBtX3BsYXRmb3JtTGF5ZXIpKTsKIAogICAgIG5vdGlmeUZsdXNoUmVx
dWlyZWQoKTsKKyNlbGlmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICBp
ZiAobV9wbGF0Zm9ybUxheWVyICE9IHBsYXRmb3JtTGF5ZXIpCisgICAgICAgIG1fc2hvdWxkU3lu
Y1BsYXRmb3JtTGF5ZXIgPSB0cnVlOworCisgICAgbV9wbGF0Zm9ybUxheWVyID0gcGxhdGZvcm1M
YXllcjsKKyAgICBub3RpZnlGbHVzaFJlcXVpcmVkKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShwbGF0Zm9ybUxheWVyKTsKICNlbmRpZgpAQCAtNjk0LDkgKzcxMSw5IEBAIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jQW5pbWF0aW9ucygpCiAgICAgbV9sYXllclN0YXRlLmFu
aW1hdGlvbnNDaGFuZ2VkID0gdHJ1ZTsKIH0KIAotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQog
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNQbGF0Zm9ybUxheWVyKCkKIHsKKyNp
ZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBkZXN0cm95UGxhdGZvcm1MYXllcklmTmVlZGVk
KCk7CiAgICAgY3JlYXRlUGxhdGZvcm1MYXllcklmTmVlZGVkKCk7CiAKQEAgLTcxMSw4ICs3Mjgs
MjAgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNQbGF0Zm9ybUxheWVyKCkK
ICAgICBBU1NFUlQobV9wbGF0Zm9ybUxheWVyKTsKICAgICBtX2xheWVyU3RhdGUucGxhdGZvcm1M
YXllckZyb250QnVmZmVyID0gbV9wbGF0Zm9ybUxheWVyLT5jb3B5VG9HcmFwaGljc1N1cmZhY2Uo
KTsKICAgICBtX2xheWVyU3RhdGUucGxhdGZvcm1MYXllclNob3VsZFN3YXBCdWZmZXJzID0gdHJ1
ZTsKKyNlbGlmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICBpZiAoIW1f
c2hvdWxkU3luY1BsYXRmb3JtTGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2hvdWxk
U3luY1BsYXRmb3JtTGF5ZXIgPSBmYWxzZTsKKyAgICBtX2xheWVyU3RhdGUucGxhdGZvcm1MYXll
ckNoYW5nZWQgPSB0cnVlOworICAgIGlmIChtX3BsYXRmb3JtTGF5ZXIpIHsKKyAgICAgICAgbV9w
bGF0Zm9ybUxheWVyLT5zd2FwQnVmZmVyc0lmTmVlZGVkKCk7CisgICAgICAgIG1fbGF5ZXJTdGF0
ZS5wbGF0Zm9ybUxheWVyUHJveHkgPSBtX3BsYXRmb3JtTGF5ZXItPnByb3h5KCk7CisgICAgfQor
I2VuZGlmCiB9CiAKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpkZXN0cm95UGxhdGZvcm1MYXllcklmTmVlZGVkKCkKIHsKICAgICBpZiAo
IShtX3BlbmRpbmdQbGF0Zm9ybUxheWVyT3BlcmF0aW9uICYgRGVzdHJveVBsYXRmb3JtTGF5ZXIp
KQpAQCAtNzYzLDkgKzc5Miw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpmbHVz
aENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KGJvb2wpCiAgICAgY29tcHV0ZVRyYW5z
Zm9ybWVkVmlzaWJsZVJlY3QoKTsKICAgICBzeW5jQ2hpbGRyZW4oKTsKICAgICBzeW5jRmlsdGVy
cygpOwotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIHN5bmNQbGF0Zm9ybUxheWVyKCk7
Ci0jZW5kaWYKIAogICAgIC8vIE9ubHkgdW5zZXQgbV9tb3ZpbmdWaXNpYmxlUmVjdCBhZnRlciB3
ZSBoYXZlIHVwZGF0ZWQgdGhlIHZpc2libGUgcmVjdCBhZnRlciB0aGUgYW5pbWF0aW9uIHN0b3Bw
ZWQuCiAgICAgaWYgKCFoYXNBY3RpdmVUcmFuc2Zvcm1BbmltYXRpb24pCkBAIC0xMTg5LDUgKzEy
MTYsMTcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWRU
aW1lckZpcmVkKCkKIHsKICAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMs
ICIiLCBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUpOwogfQorCisjaWYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTX1RIUkVBREVEKQordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnBsYXRm
b3JtTGF5ZXJXaWxsQmVEZXN0cm95ZWQoKQoreworfQorCit2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6c2V0UGxhdGZvcm1MYXllck5lZWRzRGlzcGxheSgpCit7Cit9CisjZW5kaWYKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5oCmluZGV4IDU0NjU2NjRjOWZkMzZjNzQ1YjA1ODFkMjQ4YzQ5NWI2OTU3ODZhMjYuLjhh
NDVjMzU2NTg1NzA0MzU3MWIyZTM1OWY3NjZlZjkxYmQ0MGNjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRl
ICJUZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXIuaCIKICNpbmNsdWRlICJUaWxlZEJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIlRp
bGVkQmFja2luZ1N0b3JlQ2xpZW50LmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXgu
aCIKQEAgLTU3LDYgKzU4LDkgQEAgcHVibGljOgogCiBjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIgOiBwdWJsaWMgR3JhcGhpY3NMYXllcgogICAgICwgcHVibGljIFRpbGVkQmFja2luZ1N0
b3JlQ2xpZW50CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgICwg
cHVibGljIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOjpDbGllbnQKKyNlbmRpZgogICAgICwg
cHVibGljIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpIb3N0IHsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoVHlwZSwgR3JhcGhpY3NMYXllckNsaWVudCYp
OwpAQCAtMTU1LDEwICsxNTksMTQgQEAgcHJpdmF0ZToKICAgICAgICAgUmVjcmVhdGVQbGF0Zm9y
bUxheWVyID0gQ3JlYXRlQW5kU3luY1BsYXRmb3JtTGF5ZXIgfCBEZXN0cm95UGxhdGZvcm1MYXll
cgogICAgIH07CiAKLSAgICB2b2lkIHN5bmNQbGF0Zm9ybUxheWVyKCk7CiAgICAgdm9pZCBkZXN0
cm95UGxhdGZvcm1MYXllcklmTmVlZGVkKCk7CiAgICAgdm9pZCBjcmVhdGVQbGF0Zm9ybUxheWVy
SWZOZWVkZWQoKTsKICNlbmRpZgorICAgIHZvaWQgc3luY1BsYXRmb3JtTGF5ZXIoKTsKKyNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgdm9pZCBwbGF0Zm9ybUxheWVy
V2lsbEJlRGVzdHJveWVkKCk7CisgICAgdm9pZCBzZXRQbGF0Zm9ybUxheWVyTmVlZHNEaXNwbGF5
KCk7CisjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xv
ciYsIGZsb2F0IHdpZHRoKSBvdmVycmlkZTsKIApAQCAtMjIzLDYgKzIzMSw5IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2lzVmFsaWRQbGF0Zm9ybUxheWVyIDogMTsKICAgICB1bnNpZ25lZCBtX3Bl
bmRpbmdQbGF0Zm9ybUxheWVyT3BlcmF0aW9uIDogMzsKICNlbmRpZgorI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICBib29sIG1fc2hvdWxkU3luY1BsYXRmb3JtTGF5
ZXIgOiAxOworI2VuZGlmCiAKICAgICBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQqIG1f
Y29vcmRpbmF0b3I7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRpbGVkQmFja2luZ1N0b3JlPiBtX21h
aW5CYWNraW5nU3RvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc1N0YXRlLmgKaW5kZXggMTRmMmI3NzUwNDY3OGYwOTc2Mjc4MTgwMjJkZmJlZmEy
NzI0MmRmNi4uODRlN2IyNzRjMWE2MjE2OTRkNjhjMDQyODc4OGRmM2E1ODc3NzQ2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaApA
QCAtNDQsNiArNDQsMTAgQEAKICNpbmNsdWRlICJHcmFwaGljc1N1cmZhY2VUb2tlbi5oIgogI2Vu
ZGlmCiAKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisjaW5jbHVkZSAi
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ29vcmRpbmF0ZWRTdXJmYWNlOwpAQCAtMTMwLDYgKzEzNCw5IEBA
IHN0cnVjdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSB7CiAjaWYgVVNFKEdSQVBISUNT
X1NVUkZBQ0UpCiAgICAgICAgICwgcGxhdGZvcm1MYXllckZyb250QnVmZmVyKDApCiAjZW5kaWYK
KyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgICAgICwgcGxhdGZv
cm1MYXllclByb3h5KDApCisjZW5kaWYKICAgICB7CiAgICAgfQogCkBAIC0xNjQsNiArMTcxLDEw
IEBAIHN0cnVjdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSB7CiAgICAgR3JhcGhpY3NT
dXJmYWNlOjpGbGFncyBwbGF0Zm9ybUxheWVyU3VyZmFjZUZsYWdzOwogI2VuZGlmCiAKKyNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgUmVmUHRyPFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk+IHBsYXRmb3JtTGF5ZXJQcm94eTsKKyNlbmRpZgorCiAgICAg
SW50U2l6ZSBjb21taXR0ZWRTY3JvbGxPZmZzZXQ7CiAKICAgICBib29sIGhhc1BlbmRpbmdDaGFu
Z2VzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmlu
ZGV4IGRlYWIwNDczZmVhZjZiZjRhOTc4YjI0OWU3NTZmNjU3MjcyY2U4MGUuLjY1Y2M5NWI4Mzc4
ZmFhNjg3MjU2ZjIzNmMyNzFmNTdjMWFmYTgwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtODMsNiArODMsMTEgQEAgdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cmkKICAgICBpZiAoIWN1cnJlbnRSb290TGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAorI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICBmb3IgKFBsYXRmb3JtTGF5
ZXJQcm94eU1hcDo6aXRlcmF0b3IgaXQgPSBtX3BsYXRmb3JtTGF5ZXJQcm94aWVzLmJlZ2luKCk7
IGl0ICE9IG1fcGxhdGZvcm1MYXllclByb3hpZXMuZW5kKCk7ICsraXQpCisgICAgICAgIGl0LT52
YWx1ZS0+c3dhcEJ1ZmZlcigpOworI2VuZGlmCisKICAgICBjdXJyZW50Um9vdExheWVyLT5zZXRU
ZXh0dXJlTWFwcGVyKG1fdGV4dHVyZU1hcHBlci5nZXQoKSk7CiAgICAgY3VycmVudFJvb3RMYXll
ci0+YXBwbHlBbmltYXRpb25zUmVjdXJzaXZlbHkoKTsKICAgICBtX3RleHR1cmVNYXBwZXItPmJl
Z2luUGFpbnRpbmcoUGFpbnRGbGFncyk7CkBAIC0xNjQsMjAgKzE2OSw5IEBAIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lOjphZGp1c3RQb3NpdGlvbkZvckZpeGVkTGF5ZXJzKGNvbnN0IEZs
b2F0UG9pbnQmIGNvCiAgICAgICAgIGZpeGVkTGF5ZXItPnNldFNjcm9sbFBvc2l0aW9uRGVsdGFJ
Zk5lZWRlZChkZWx0YSk7CiB9CiAKLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLXZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVQbGF0Zm9ybUxheWVySWZOZWVkZWQoVGV4dHVy
ZU1hcHBlckxheWVyKiBsYXllciwgY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUm
IHN0YXRlKQotewotICAgIGlmICghc3RhdGUucGxhdGZvcm1MYXllclRva2VuLmlzVmFsaWQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2lu
Z1N0b3JlPiBwbGF0Zm9ybUxheWVyQmFja2luZ1N0b3JlKFRleHR1cmVNYXBwZXJTdXJmYWNlQmFj
a2luZ1N0b3JlOjpjcmVhdGUoKSk7Ci0gICAgbV9zdXJmYWNlQmFja2luZ1N0b3Jlcy5zZXQobGF5
ZXIsIHBsYXRmb3JtTGF5ZXJCYWNraW5nU3RvcmUpOwotICAgIHBsYXRmb3JtTGF5ZXJCYWNraW5n
U3RvcmUtPnNldEdyYXBoaWNzU3VyZmFjZShHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShzdGF0ZS5w
bGF0Zm9ybUxheWVyU2l6ZSwgc3RhdGUucGxhdGZvcm1MYXllclN1cmZhY2VGbGFncywgc3RhdGUu
cGxhdGZvcm1MYXllclRva2VuKSk7Ci0gICAgbGF5ZXItPnNldENvbnRlbnRzTGF5ZXIocGxhdGZv
cm1MYXllckJhY2tpbmdTdG9yZS5nZXQoKSk7Ci19Ci0KIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lOjpzeW5jUGxhdGZvcm1MYXllcklmTmVlZGVkKFRleHR1cmVNYXBwZXJMYXllciogbGF5
ZXIsIGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJiBzdGF0ZSkKIHsKKyNpZiBV
U0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBBU1NFUlQobV90ZXh0dXJlTWFwcGVyKTsKIAogICAg
IGlmIChzdGF0ZS5wbGF0Zm9ybUxheWVyQ2hhbmdlZCkgewpAQCAtMTkxLDYgKzE4NSw0MSBAQCB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY1BsYXRmb3JtTGF5ZXJJZk5lZWRlZChU
ZXh0dXJlTWFwcGVyTGF5ZXIqIGxheQogICAgICAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclN1cmZh
Y2VCYWNraW5nU3RvcmU+IHBsYXRmb3JtTGF5ZXJCYWNraW5nU3RvcmUgPSBpdC0+dmFsdWU7CiAg
ICAgICAgIHBsYXRmb3JtTGF5ZXJCYWNraW5nU3RvcmUtPnN3YXBCdWZmZXJzSWZOZWVkZWQoc3Rh
dGUucGxhdGZvcm1MYXllckZyb250QnVmZmVyKTsKICAgICB9CisjZWxpZiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgaWYgKCFzdGF0ZS5wbGF0Zm9ybUxheWVyQ2hhbmdl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHN0YXRlLnBsYXRmb3JtTGF5ZXJQcm94eSkg
eworICAgICAgICBtX3BsYXRmb3JtTGF5ZXJQcm94aWVzLnNldChsYXllciwgc3RhdGUucGxhdGZv
cm1MYXllclByb3h5KTsKKyAgICAgICAgc3RhdGUucGxhdGZvcm1MYXllclByb3h5LT5hY3RpdmF0
ZU9uQ29tcG9zaXRpbmdUaHJlYWQodGhpcywgbGF5ZXIpOworICAgIH0gZWxzZQorICAgICAgICBt
X3BsYXRmb3JtTGF5ZXJQcm94aWVzLnJlbW92ZShsYXllcik7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShsYXllcik7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyNlbmRpZgorfQorCisjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQordm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6Om9uTmV3QnVmZmVyQXZhaWxhYmxlKCkKK3sKKyAgICBSZWZQdHI8Q29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lPiBwcm90ZWN0b3IodGhpcyk7CisgICAgZGlzcGF0Y2hPbkNsaWVudFJ1
bkxvb3AoWz1dIHsKKyAgICAgICAgcHJvdGVjdG9yLT51cGRhdGVWaWV3cG9ydCgpOworICAgIH0p
OworfQorI2VuZGlmCisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKK3ZvaWQgQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVQbGF0Zm9ybUxheWVySWZOZWVkZWQoVGV4dHVyZU1hcHBl
ckxheWVyKiBsYXllciwgY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmIHN0YXRl
KQoreworICAgIGlmICghc3RhdGUucGxhdGZvcm1MYXllclRva2VuLmlzVmFsaWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3Jl
PiBwbGF0Zm9ybUxheWVyQmFja2luZ1N0b3JlKFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0
b3JlOjpjcmVhdGUoKSk7CisgICAgbV9zdXJmYWNlQmFja2luZ1N0b3Jlcy5zZXQobGF5ZXIsIHBs
YXRmb3JtTGF5ZXJCYWNraW5nU3RvcmUpOworICAgIHBsYXRmb3JtTGF5ZXJCYWNraW5nU3RvcmUt
PnNldEdyYXBoaWNzU3VyZmFjZShHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShzdGF0ZS5wbGF0Zm9y
bUxheWVyU2l6ZSwgc3RhdGUucGxhdGZvcm1MYXllclN1cmZhY2VGbGFncywgc3RhdGUucGxhdGZv
cm1MYXllclRva2VuKSk7CisgICAgbGF5ZXItPnNldENvbnRlbnRzTGF5ZXIocGxhdGZvcm1MYXll
ckJhY2tpbmdTdG9yZS5nZXQoKSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
OjpkZXN0cm95UGxhdGZvcm1MYXllcklmTmVlZGVkKFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIs
IGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJiBzdGF0ZSkKQEAgLTMxMyw5ICsz
NDIsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0TGF5ZXJTdGF0ZShDb29y
ZGluYXRlZExheWVySUQgaWQsIGNvbnN0IENvb3JkaQogICAgIHVwZGF0ZVRpbGVzSWZOZWVkZWQo
bGF5ZXIsIGxheWVyU3RhdGUpOwogICAgIHNldExheWVyRmlsdGVyc0lmTmVlZGVkKGxheWVyLCBs
YXllclN0YXRlKTsKICAgICBzZXRMYXllckFuaW1hdGlvbnNJZk5lZWRlZChsYXllciwgbGF5ZXJT
dGF0ZSk7Ci0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgc3luY1BsYXRmb3JtTGF5ZXJJ
Zk5lZWRlZChsYXllciwgbGF5ZXJTdGF0ZSk7Ci0jZW5kaWYKICAgICBzZXRMYXllclJlcGFpbnRD
b3VudElmTmVlZGVkKGxheWVyLCBsYXllclN0YXRlKTsKIH0KIApAQCAtMzU0LDYgKzM4MSwxMSBA
QCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZGVsZXRlTGF5ZXIoQ29vcmRpbmF0ZWRM
YXllcklEIGxheWVySUQpCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgbV9zdXJmYWNl
QmFja2luZ1N0b3Jlcy5yZW1vdmUobGF5ZXIuZ2V0KCkpOwogI2VuZGlmCisjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIGlmIChhdXRvKiBwbGF0Zm9ybUxheWVyUHJv
eHkgPSBtX3BsYXRmb3JtTGF5ZXJQcm94aWVzLmdldChsYXllci5nZXQoKSkpCisgICAgICAgIHBs
YXRmb3JtTGF5ZXJQcm94eS0+aW52YWxpZGF0ZSgpOworICAgIG1fcGxhdGZvcm1MYXllclByb3hp
ZXMucmVtb3ZlKGxheWVyLmdldCgpKTsKKyNlbmRpZgogfQogCiB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6c2V0Um9vdExheWVySUQoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQpCkBA
IC02MzIsNiArNjY0LDkgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnB1cmdlR0xS
ZXNvdXJjZXMoKQogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIG1fc3VyZmFjZUJhY2tp
bmdTdG9yZXMuY2xlYXIoKTsKICNlbmRpZgorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19U
SFJFQURFRCkKKyAgICBtX3BsYXRmb3JtTGF5ZXJQcm94aWVzLmNsZWFyKCk7CisjZW5kaWYKICAg
ICBtX3N1cmZhY2VzLmNsZWFyKCk7CiAKICAgICBtX3Jvb3RMYXllciA9IG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCmluZGV4IDY5MDY1YzlhNTZmOGYyMjc1
NmNkN2E1YmQ1MWQyMGU5NzI1NDkzNGIuLjY4YWFiZmU0MGM0ZGY4MTk3ZDE2ZmJkNjJiOGFmZmE1
ZTljMjc5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCkBAIC00
NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNr
aW5nU3RvcmUuaD4KICNlbmRpZgogCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVB
REVEKQorI2luY2x1ZGUgPFdlYkNvcmUvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5o
PgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBDb29yZGluYXRlZEJhY2tp
bmdTdG9yZTsKQEAgLTU4LDcgKzYyLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29t
bWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IG9mZnNldCkgPSAwOwogfTsKIAotY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZT4sIHB1Ymxp
YyBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlNjcm9sbGluZ0NsaWVudCB7CitjbGFzcyBD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lPiwgcHVibGljIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6U2Nyb2xsaW5nQ2xpZW50CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVE
KQorICAgICwgcHVibGljIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6
OkNvbXBvc2l0b3IKKyNlbmRpZgorewogcHVibGljOgogICAgIGV4cGxpY2l0IENvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZShDb29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbnQqKTsKICAgICB2aXJ0
dWFsIH5Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKQEAgLTk0LDkgKzEwMiw5IEBAIHByaXZh
dGU6CiAgICAgdm9pZCByZW1vdmVUaWxlc0lmTmVlZGVkKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJM
YXllciosIGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CiAg
ICAgdm9pZCBzZXRMYXllckZpbHRlcnNJZk5lZWRlZChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5
ZXIqLCBjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwogICAg
IHZvaWQgc2V0TGF5ZXJBbmltYXRpb25zSWZOZWVkZWQoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxh
eWVyKiwgY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKKyAg
ICB2b2lkIHN5bmNQbGF0Zm9ybUxheWVySWZOZWVkZWQoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxh
eWVyKiwgY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKICNp
ZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2b2lkIGNyZWF0ZVBsYXRmb3JtTGF5ZXJJZk5l
ZWRlZChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqLCBjb25zdCBXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwotICAgIHZvaWQgc3luY1BsYXRmb3JtTGF5ZXJJZk5l
ZWRlZChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqLCBjb25zdCBXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwogICAgIHZvaWQgZGVzdHJveVBsYXRmb3JtTGF5ZXJJ
Zk5lZWRlZChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqLCBjb25zdCBXZWJDb3JlOjpDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwogI2VuZGlmCiAgICAgdm9pZCBzZXRMYXllclJl
cGFpbnRDb3VudElmTmVlZGVkKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllciosIGNvbnN0IFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CkBAIC0xNDQsNiArMTUyLDEw
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpc3BhdGNoQ29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQz
Ml90IGxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCk7CiAKKyNpZiBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgdmlydHVhbCB2b2lkIG9uTmV3QnVm
ZmVyQXZhaWxhYmxlKCkgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIC8vIFJlbmRlciBxdWV1ZSBj
YW4gYmUgYWNjZXNzZWQgb255IGZyb20gbWFpbiB0aHJlYWQgb3IgdXBkYXRlUGFpbnROb2RlIGNh
bGwgc3RhY2shCiAgICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gbV9yZW5kZXJRdWV1
ZTsKICAgICBMb2NrIG1fcmVuZGVyUXVldWVNdXRleDsKQEAgLTE2NCw2ICsxNzYsMTEgQEAgcHJp
dmF0ZToKICAgICBTdXJmYWNlQmFja2luZ1N0b3JlTWFwIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXM7
CiAjZW5kaWYKIAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICB0
eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgUmVmUHRyPFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PiBQbGF0Zm9ybUxheWVyUHJveHlN
YXA7CisgICAgUGxhdGZvcm1MYXllclByb3h5TWFwIG1fcGxhdGZvcm1MYXllclByb3hpZXM7Cisj
ZW5kaWYKKwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50MzJfdCAvKiBhdGxhc0lEICovLCBSZWZQ
dHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPj4gU3VyZmFjZU1hcDsKICAgICBTdXJmYWNl
TWFwIG1fc3VyZmFjZXM7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264679</attachid>
            <date>2015-11-03 02:30:12 -0800</date>
            <delta_ts>2015-12-06 23:59:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143299-20151103192915.patch</filename>
            <type>text/plain</type>
            <size>46566</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxODU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJlYzQwMTU4ODY2YTRi
ZTdiYzFjMDg3ZjA2MjhlMjFiNDZhZTUzNC4uNTExMjNjOGQ4YmIzODcyZGY5YThiZjA5MDBjNjcx
MGZjZWVlM2ZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE1LTEwLTMxICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtUaHJlYWRlZENvbXBv
c2l0b3JdIEFkZCBzdXBwb3J0IGZvciBQbGF0Zm9ybUxheWVyLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMjk5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkgYW5kIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyIHRvCisgICAgICAgIHNlbmQgYSB0ZXh0dXJlIChhY3R1YWwgdGV4dHVyZSBvciBCaXRt
YXBUZXh0dXJlKSB0byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkIGRpcmVjdGx5LgorICAgICAgICBQ
bGF0Zm9ybSBsYXllciByZW5kZXJlcnMgc2hvdWxkIGltcGxlbWVudCBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5UHJvdmlkZXIgdG8gZXN0YWJsaXNoCisgICAgICAgIGEgY29ubmVjdGlv
biB0byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkLiBBZnRlciB0aGUgY29ubmVjdGlvbiBoYXMgYmVl
biBlc3RhYmxpc2hlZCwgdGhlIHJlbmRlcmVyCisgICAgICAgIGNhbiByZW5kZXIgaXRzIGNvbnRl
bnRzIHRvIHRoZSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlciBhbmQgcGFzcyBpdCB0
byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkCisgICAgICAgIHZpYSBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllciBwcm94eS4KKyAgICAgICAgVGhlIGJ1ZmZlciBjYW4gYmUgYW4gdW5tYW5hZ2VkIHRl
eHR1cmUgKGEuay5hLiBwbGF0Zm9ybSB0ZXh0dXJlKSBvciBCaXRtYXBUZXh0dXJlLgorICAgICAg
ICBGb3IgdGhlIHVubWFuYWdlZCB0ZXh0dXJlLCB0aGUgcmVuZGVyZXIgc2hvdWxkIG1hbmFnZSBp
dHMgbGlmZSBjeWNsZSBpdHNlbGYuIEZvciB0aGUgQml0bWFwVGV4dHVyZSwKKyAgICAgICAgaXQg
d2lsbCBiZSBtYW5hZ2VkIGJ5IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuIEluIHRo
YXQgY2FzZSwgdXNlZCAoc3dhcHBlZCkgYnVmZmVyIHdpbGwgYmUKKyAgICAgICAgcmVjeWNsZWQg
YmVjYXVzZSB0aGUgcmVuZGVyZXIgd2lsbCB1c2Ugc2FtZSBzaXplIGFuZCBmb3JtYXQgdW50aWwg
aXQgY2hhbmdlcyBpdHMgc2l6ZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLgorCisg
ICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgIEFkZHMgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXIgYW5kIFRleHR1cmVNYXBwZXJQbGF5dGZvcm1MYXllclByb3h5Lgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWly
by5oOgorICAgICAgICBBZGRzIG1vY2sgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmg6CisgICAgICAgIEFkZHMgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVyIGFzIGEgUGxhdGZvcm1MYXllciBmb3IgdGhlIFRo
cmVhZGVkIENvbXBvc2l0b3IKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlR0wuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6aW50
ZXJuYWxGb3JtYXQpOiBBZGRzIGEgZ2V0dGVyIHRvIGNoZWNrIHRoZQorICAgICAgICBpbnRlcm5h
bCBmb3JtYXQgb2YgdGV4dHVyZSB0byBjaGVjayByZXVzYWJpbGl0eS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5oOgorICAgICAgICBFeGNsdWRlIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGZy
b20gYnVpbGQgd2hlbiB3ZSBhcmUgdXNpbmcgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eS5oOiBBZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgQmVjYXVzZSB3ZSBy
ZW1vdmVkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGZyb20gYnVpbGQsIHdlIG5lZWQgdG8g
YWRkIG93biBmYWN0b3J5IGZ1bmN0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY1BsYXRmb3JtTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpwbGF0Zm9ybUxheWVyV2ls
bEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6c2V0UGxhdGZvcm1MYXllck5lZWRzRGlzcGxheSk6CisgICAgICAgIEltcGxlbWVudHMgc3lu
YyBvcGVyYXRpb25zIGZvciBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5CisKIDIwMTUt
MTEtMDEgIFBoaWxpcCBDaGltZW50byAgPHBoaWxpcC5jaGltZW50b0BnbWFpbC5jb20+CiAKICAg
ICAgICAgW0dUS10gRml4IGNvbWJpbmF0aW9ucyBvZiBQTEFURk9STShHVEspIGFuZCBPUyhEQVJX
SU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggM2E1OGRhMjAyYjUwYmQ0OGVjYjA2Zjc3NjUwZTk4OTg1YTRkMTI4
OS4uNTg3YjY4ZjQzYWQzMGI2NmJjODg2ZDk0Y2M1YWUxMDExZGFmYThmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIxIEBACisyMDE1LTEwLTMxICBHd2FuZyBZb29uIEh3YW5nICA8eW9vbkBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtUaHJlYWRlZENvbXBvc2l0b3JdIEFkZCBzdXBwb3J0IGZvciBQ
bGF0Zm9ybUxheWVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQzMjk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50
VG9DdXJyZW50R0xDb250ZXh0KToKKyAgICAgICAgU3dhcCBwZW5kaW5nIGJ1ZmZlcnMgb2YgVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94aWVzIGJlZm9yZSBwYWludGluZyBjb250ZW50cy4K
KyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzeW5jUGxhdGZvcm1M
YXllcklmTmVlZGVkKToKKyAgICAgICAgSW4gdGhyZWFkZWQgY29tcG9zaXRvciwgQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5jZSBvbmx5IGNhcmVzIGFib3V0IGNyZWF0aW9uIGFuZCBkZWxldGlvbgor
ICAgICAgICBvZiBwbGF0Zm9ybSBsYXllcnMuCisKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lOjpvbk5ld0J1ZmZlckF2YWlsYWJsZSk6CisgICAgICAgIFdoZW5ldmVy
IG5ldyBidWZmZXIgY29tZXMgdmlhIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHksIENv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZSB3aWxsCisgICAgICAgIHVwZGF0ZSB0aGUgc2NlbmUgaWYg
aXQgaXMgbmVlZGVkLgorCiAyMDE1LTExLTAxICBQaGlsaXAgQ2hpbWVudG8gIDxwaGlsaXAuY2hp
bWVudG9AZ21haWwuY29tPgogCiAgICAgICAgIFtHVEtdIEZpeCBjb21iaW5hdGlvbnMgb2YgUExB
VEZPUk0oR1RLKSBhbmQgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBh
NGQ3ZDc2NzJhOTgxMDcwODBkMjQzNjE2Yjk2OGZlN2NiZjYyNTQzLi43MzMxMzQ3ZTU1YjA0YjYw
ZTQ4YzRmNTlkNGQ1NGVjOWVjZWJkY2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAt
NDQ0LDYgKzQ0NCw4IEBAIGlmIChFTkFCTEVfVEhSRUFERURfQ09NUE9TSVRPUikKICAgICAgICAg
cGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNv
b3JkaW5hdGVkR3JhcGhpY3MuY3BwCiAgICAgICAgIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVk
Z3JhcGhpY3MvU2Nyb2xsaW5nU3RhdGVOb2RlQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKIAorICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5LmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQXJlYUFsbG9jYXRvci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAppbmRleCBiMWNkY2NjYjY3MmZmMDI1ZGYy
N2Y4Y2E3ODc0ZDkzZjJkMTA1ZjEzLi5hOGE4ODI3MjUwMjhmODNiZGJhMDkyNTJkOTc1MjZjMzg5
OTE1MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIEcKIAogR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp+R3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlKCkKIHsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisjaWYgVVNF
KFRFWFRVUkVfTUFQUEVSKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQog
ICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnBsYXRmb3JtTGF5ZXJXaWxsQmVE
ZXN0cm95ZWQoKTsKICNlbmRpZgpAQCAtNzksNyArNzksMTMgQEAgUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQzRCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBsYXRmb3JtQ29udGV4dCgpCiAgICAg
cmV0dXJuIG1fZ2xDb250ZXh0ID8gbV9nbENvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpIDogR0xD
b250ZXh0OjpnZXRDdXJyZW50KCktPnBsYXRmb3JtQ29udGV4dCgpOwogfQogCi0jaWYgVVNFKFRF
WFRVUkVfTUFQUEVSKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKK1Jl
ZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OnByb3h5KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4oKTsKK30KKyNlbGlmIFVT
RShURVhUVVJFX01BUFBFUikKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0
IG9wYWNpdHkpCiB7CiAgICAgaWYgKCFtX2dsQ29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgK
aW5kZXggOWQ3MGVlNjllMDIxZWQ1ZWJlZWE4ZThiY2IwZWQxMTdiOGY4MGMyYy4uOWZjOTIyNDJl
OGJmNTU3YTVjMTRjY2M5ZTdkZWI0YzM2ZWVmZDU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgK
QEAgLTIzLDE0ICsyMywxOCBAQAogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dDNELmgiCiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHkuaCIKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUikKICNpbmNsdWRlICJU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlCi0jaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICA6IHB1Ymxp
YyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5UHJvdmlkZXIKKyNlbGlmIFVTRShURVhU
VVJFX01BUFBFUikKICAgICA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcgogI2Vu
ZGlmCiB7CkBAIC00Miw3ICs0NiwxMCBAQCBwdWJsaWM6CiAKICAgICBHcmFwaGljc0NvbnRleHQz
RDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUoKSB7IHJldHVybiBtX3JlbmRlclN0eWxlOyB9CiAK
LSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RI
UkVBREVEKQorICAgIHZpcnR1YWwgUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJv
eHk+IHByb3h5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN3YXBCdWZmZXJz
SWZOZWVkZWQoKSBvdmVycmlkZSB7IH07CisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiAgICAg
dmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFj
aXR5KTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
bGF0Zm9ybUxheWVyLmgKaW5kZXggZjkwZmM2N2NjOTE0ZGQ2MDRlNzNlYmUwZjQ1NmQyOTQ1ZjNm
YTZkNy4uMjlmOWRlY2IyNGJhMmQ0NGU0MTAxZDAzYzE4MDk5ZGFhYjE1ZWU2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1MYXllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5ZXIuaApAQCAtMzEs
NiArMzEsMTEgQEAgT0JKQ19DTEFTUyBDQUxheWVyOwogdHlwZWRlZiBDQUxheWVyIFBsYXRmb3Jt
TGF5ZXI7CiAjZWxpZiBQTEFURk9STShXSU4pICYmIFVTRShDQSkKIHR5cGVkZWYgc3RydWN0IF9D
QUNGTGF5ZXIgUGxhdGZvcm1MYXllcjsKKyNlbGlmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19U
SFJFQURFRCkKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHlQcm92aWRlcjsKK3R5cGVkZWYgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eVByb3ZpZGVyIFBsYXRmb3JtTGF5ZXI7Cit9OwogI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVS
KQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDNlNTIxM2Y4NmRhNjUxMmRlNjFkZmE1YmY5ZjY1
YWU3MWM4MmUzZGYuLjcwZTQ0MjFlMWU3OGVkNjg4ZDVhZWI2NjQwNWFkODI5MGVkN2Y3ZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC01Miw2ICs1Miw5IEBACiAjaW5jbHVkZSAiT3BlbkdM
U2hpbXMuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKICNpbmNsdWRlIDxjYWlyby1n
bC5oPgorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyNpbmNsdWRlICJU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgiCisjZW5kaWYKICNlbmRpZgogCiB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwpAQCAtNDA5LDYgKzQxMiwxMyBAQCBTdHJpbmcgSW1hZ2VCdWZmZXI6
OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBkb3VibGUqLCBDb29yZGlu
YXRlUwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorI2lmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKK1JlZlB0cjxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5PiBJbWFnZUJ1ZmZlckRhdGE6OnByb3h5KCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94eT4oKTsKK30KKyNlbHNlCiB2b2lkIEltYWdlQnVmZmVyRGF0YTo6cGFpbnRUb1Rl
eHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBv
cGFjaXR5KQogewogICAgIEFTU0VSVChtX3RleHR1cmUpOwpAQCAtNDIxLDYgKzQzMSw3IEBAIHZv
aWQgSW1hZ2VCdWZmZXJEYXRhOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0
ZXh0dXJlTWFwcGVyLCBjb25zdCBGCiAgICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4o
dGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKG1fdGV4dHVyZSwgVGV4dHVyZU1hcHBlckdMOjpT
aG91bGRCbGVuZCwgbV9zaXplLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHkpOwogfQogI2Vu
ZGlmCisjZW5kaWYKIAogUGxhdGZvcm1MYXllciogSW1hZ2VCdWZmZXI6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJEYXRhQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YUNhaXJvLmgKaW5kZXggZDYyZjQ3MDUxNWUzZTgy
ZGNhOWQ5NzYzNDQ3YTY3ZTJmYzRkMDYzMy4uYzNmOWExMjI0ODIxNTMwZTc4MTE2NmYwMWEzNmE3
MWQyMjFjYzA4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJEYXRhQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWlyby5oCkBAIC0zMyw4ICszMywxMiBA
QAogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKICNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyLmgiCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaCIKKyNlbHNlCiAjaW5jbHVkZSAi
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKICNlbmRpZgorI2VuZGlmCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNDIsOCArNDYsMTIgQEAgY2xhc3MgSW50U2l6ZTsKIAogY2xhc3Mg
SW1hZ2VCdWZmZXJEYXRhCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgOiBwdWJsaWMgVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVyCisjZWxzZQogICAgIDogcHVibGljIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyCiAjZW5kaWYKKyNlbmRpZgogewogcHVibGljOgogICAgIElt
YWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJik7CkBAIC01NCw3ICs2MiwxMiBAQCBwdWJsaWM6
CiAgICAgSW50U2l6ZSBtX3NpemU7CiAKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFT
KQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICB2aXJ0dWFsIFJl
ZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBwcm94eSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVyc0lmTmVlZGVkKCkgb3ZlcnJpZGUgeyB9
OworI2Vsc2UKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1h
cHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYsIGZsb2F0IG9wYWNpdHkpOworI2VuZGlmCiAgICAgdWludDMyX3QgbV90ZXh0dXJlOwogI2Vu
ZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0JpdG1hcFRleHR1cmVHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oCmluZGV4IGViMjBhMGYyMGVjYjZjNDdkNWZlMGIyYzUx
NTk5ODJkODdiZDY0ZjIuLmQ1ZDY3MzhhM2VkMWVkZTA4NTM0YjYxNGEwMjBiNjQzOTZjZTBlMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRt
YXBUZXh0dXJlR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZUdMLmgKQEAgLTY5LDYgKzY5LDggQEAgcHVibGljOgogICAgIGNvbnN0
IEZpbHRlckluZm8qIGZpbHRlckluZm8oKSBjb25zdCB7IHJldHVybiAmbV9maWx0ZXJJbmZvOyB9
CiAgICAgVGV4dHVyZU1hcHBlckdMOjpDbGlwU3RhY2smIGNsaXBTdGFjaygpIHsgcmV0dXJuIG1f
Y2xpcFN0YWNrOyB9CiAKKyAgICBHQzNEaW50IGludGVybmFsRm9ybWF0KCkgY29uc3QgeyByZXR1
cm4gbV9pbnRlcm5hbEZvcm1hdDsgfQorCiBwcml2YXRlOgogCiAgICAgUGxhdGZvcm0zRE9iamVj
dCBtX2lkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5kZXgg
NTAxZDJhODllOWU4N2FlMGZkNTUyMmFjNDg3NzcwOTZjM2VjMGNlMy4uY2VkYTgyZGYyNDY2NDQx
ZmE2ZmI0NjIyZDA3OTVhODVhYmEwMGJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBl
ckFuaW1hdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCi0jaWYgVVNFKFRF
WFRVUkVfTUFQUEVSKQorI2lmIFVTRShURVhUVVJFX01BUFBFUikgJiYgIVVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlci5oCmluZGV4IGY1NmNmNTE4NTljZGM3YWJkODBjMzZhNjlhZmQwNmMy
ODhhMzRjMzMuLmIwYWE0NjM3ZDhiYzYxZmIyZjk2NGU5M2UxMzAxNWQyZTJlMzE2MGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBAIC0yMCw3ICsyMCw3IEBACiAj
aWZuZGVmIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyX2gKICNkZWZpbmUgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXJfaAogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorI2lmIFVTRShURVhU
VVJFX01BUFBFUikgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKIAogI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2xpZW50LmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IGU4MTIyZDlmOGUwYjBkNjkxOWQwMGJkNWFjNjMxZjQ3
Y2M3ODc4NzcuLjdmNmIxNjM5NmJmMmQxMTMxNjZmYTY0MzM3OTc1MGIwMGE0NTcwYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC00NDUsMTIgKzQ0NSwxNCBAQCBUZXh0dXJlTWFw
cGVyTGF5ZXI6On5UZXh0dXJlTWFwcGVyTGF5ZXIoKQogICAgIHJlbW92ZUZyb21QYXJlbnQoKTsK
IH0KIAorI2lmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiB2b2lkIFRleHR1cmVNYXBwZXJM
YXllcjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgbmV3Q2hpbGRy
ZW4pCiB7CiAgICAgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKICAgICBmb3IgKGF1dG8qIGNoaWxkIDog
bmV3Q2hpbGRyZW4pCiAgICAgICAgIGFkZENoaWxkKCZkb3duY2FzdDxHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcj4oY2hpbGQpLT5sYXllcigpKTsKIH0KKyNlbmRpZgogCiB2b2lkIFRleHR1cmVN
YXBwZXJMYXllcjo6c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPFRleHR1cmVNYXBwZXJMYXllcio+
JiBuZXdDaGlsZHJlbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCAwYzlkYTcxYmIx
OTVjYjRkY2Q3MWYxNTBmN2ZlN2EyZTI2M2FjYWQyLi42YWRiNjU0YzgxMzRjNTE4N2VhOTY3Zjgy
MGNhZWNkMzY3ZDQ4ZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC03OCw3ICs3OCw5
IEBAIHB1YmxpYzoKICAgICBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyKCkgY29uc3QgeyBy
ZXR1cm4gcm9vdExheWVyKCkubV90ZXh0dXJlTWFwcGVyOyB9CiAgICAgdm9pZCBzZXRUZXh0dXJl
TWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleG1hcCkgeyBtX3RleHR1cmVNYXBwZXIgPSB0ZXhtYXA7
IH0KIAorI2lmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgdm9pZCBzZXRDaGlsZHJl
bihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+Jik7CisjZW5kaWYKICAgICB2b2lkIHNldENo
aWxkcmVuKGNvbnN0IFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5ZXIqPiYpOwogICAgIHZvaWQgc2V0
TWFza0xheWVyKFRleHR1cmVNYXBwZXJMYXllciopOwogICAgIHZvaWQgc2V0UmVwbGljYUxheWVy
KFRleHR1cmVNYXBwZXJMYXllciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWJiNGExMTQ2NzBhZDNkZmY4MGM0NTZh
MTM2ZmE2ODZmNDBjZjY2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAK
QEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIo
UmVmUHRyPEJpdG1hcFRleHR1cmU+JiYgdGV4dHVyZSkKKyAgICA6IG1fdGV4dHVyZShXVEY6Om1v
dmUodGV4dHVyZSkpCisgICAgLCBtX3RleHR1cmVJRCgwKQorICAgICwgbV9leHRyYUZsYWdzKDAp
CisgICAgLCBtX2hhc01hbmFnZWRUZXh0dXJlKHRydWUpCit7Cit9CisKK1RleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihHTHVp
bnQgdGV4dHVyZUlELCBjb25zdCBJbnRTaXplJiBzaXplLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdz
IGZsYWdzKQorICAgIDogbV90ZXh0dXJlSUQodGV4dHVyZUlEKQorICAgICwgbV9zaXplKHNpemUp
CisgICAgLCBtX2V4dHJhRmxhZ3MoZmxhZ3MpCisgICAgLCBtX2hhc01hbmFnZWRUZXh0dXJlKGZh
bHNlKQoreworfQorCitUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6flRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKCkKK3sKK30KKworYm9vbCBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcjo6Y2FuUmV1c2VXaXRob3V0UmVzZXQoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgR0MzRGludCBpbnRlcm5hbEZvcm1hdCkKK3sKKyAgICByZXR1cm4gbV90ZXh0dXJlICYmICht
X3RleHR1cmUtPnNpemUoKSA9PSBzaXplKSAmJiAoc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdM
Kj4obV90ZXh0dXJlLmdldCgpKS0+aW50ZXJuYWxGb3JtYXQoKSA9PSBpbnRlcm5hbEZvcm1hdCB8
fCBpbnRlcm5hbEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RE9OVF9DQVJFKTsKK30KKwor
dm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBv
cGFjaXR5KQoreworICAgIGlmIChtX2hhc01hbmFnZWRUZXh0dXJlKSB7CisgICAgICAgIEFTU0VS
VChtX3RleHR1cmUpOworICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqbV90ZXh0
dXJlLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgQVNTRVJUKG1fdGV4dHVyZUlEKTsKKyAgICBUZXh0dXJlTWFwcGVy
R0wqIHRleG1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBl
cik7CisgICAgdGV4bWFwR0wtPmRyYXdUZXh0dXJlKG1fdGV4dHVyZUlELCBtX2V4dHJhRmxhZ3Ms
IG1fc2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTI0MjEyZjA0ZDljY2U2NGU2NzBhMzJmYTk4YWY0
OTA0NTY2YThmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgKQEAgLTAsMCAr
MSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyX2gKKyNkZWZpbmUgVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXJfaAorCisjaW5jbHVkZSAiQml0bWFwVGV4dHVy
ZUdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCisjaW5jbHVkZSAiVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ciA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIpOworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEKCk7CitwdWJsaWM6CisgICAgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXIoUmVmUHRyPEJpdG1hcFRleHR1cmU+JiYpOworICAgIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyKEdMdWludCB0ZXh0dXJlSUQsIGNvbnN0IEludFNpemUmLCBUZXh0dXJl
TWFwcGVyR0w6OkZsYWdzKTsKKworICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBvcGFjaXR5
ID0gMS4wKSBmaW5hbDsKKworICAgIGJvb2wgY2FuUmV1c2VXaXRob3V0UmVzZXQoY29uc3QgSW50
U2l6ZSYsIEdDM0RpbnQgaW50ZXJuYWxGb3JtYXQpOworICAgIEJpdG1hcFRleHR1cmVHTCYgdGV4
dHVyZUdMKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4oKm1fdGV4dHVy
ZSk7IH0KKworICAgIGlubGluZSB2b2lkIG1hcmtVc2VkKCkgeyBtX3RpbWVMYXN0VXNlZCA9IG1v
bm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOyB9CisgICAgZG91YmxlIGxhc3RVc2VkVGltZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdGltZUxhc3RVc2VkOyB9CisKKyAgICBjbGFzcyBVbm1hbmFnZWRC
dWZmZXJEYXRhSG9sZGVyIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVW5tYW5hZ2Vk
QnVmZmVyRGF0YUhvbGRlcik7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKCk7Cisg
ICAgcHVibGljOgorICAgICAgICBVbm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVyKCkgPSBkZWZhdWx0
OworICAgICAgICB2aXJ0dWFsIH5Vbm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVyKCkgPSBkZWZhdWx0
OworICAgIH07CisKKyAgICBib29sIGhhc01hbmFnZWRUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNNYW5hZ2VkVGV4dHVyZTsgfQorICAgIHZvaWQgc2V0VW5tYW5hZ2VkQnVmZmVyRGF0YUhv
bGRlcihzdGQ6OnVuaXF1ZV9wdHI8VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcj4gaG9sZGVyKSB7
IG1fdW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlciA9IFdURjo6bW92ZShob2xkZXIpOyB9CisKK3By
aXZhdGU6CisKKyAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gbV90ZXh0dXJlOworICAgIGRvdWJs
ZSBtX3RpbWVMYXN0VXNlZCB7IDAgfTsKKworICAgIEdMdWludCBtX3RleHR1cmVJRDsKKyAgICBJ
bnRTaXplIG1fc2l6ZTsKKyAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIG1fZXh0cmFGbGFnczsK
KyAgICBib29sIG1faGFzTWFuYWdlZFRleHR1cmU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFVubWFu
YWdlZEJ1ZmZlckRhdGFIb2xkZXI+IG1fdW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
clByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTE1YmRhNmU2OGEzZTJjYThlMTIwOTk4NTgxZWVhZTU4
ZDlhMWViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCkBAIC0wLDAgKzEs
MTU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
clByb3h5LmgiCisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisKKyNp
bmNsdWRlICJCaXRtYXBUZXh0dXJlR0wuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIK
KyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlci5oIgorCitjb25zdCBkb3VibGUgc19yZWxlYXNlVW51c2VkU2Vj
b25kc1RvbGVyYW5jZSA9IDE7Citjb25zdCBkb3VibGUgc19yZWxlYXNlVW51c2VkQnVmZmVyc1Rp
bWVySW50ZXJ2YWwgPSAwLjU7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSgpCisg
ICAgOiBtX2NvbXBvc2l0b3IobnVsbHB0cikKKyAgICAsIG1fdGFyZ2V0TGF5ZXIobnVsbHB0cikK
KyAgICAsIG1fcmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lcihSdW5Mb29wOjpjdXJyZW50KCksIHRo
aXMsICZUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpyZWxlYXNlVW51c2VkQnVmZmVy
c1RpbWVyRmlyZWQpCit7Cit9CisKK1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6On5U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5KCkKK3sKKyAgICBpZiAobV90YXJnZXRMYXll
cikKKyAgICAgICAgbV90YXJnZXRMYXllci0+c2V0Q29udGVudHNMYXllcihudWxscHRyKTsKK30K
Kwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjphY3RpdmF0ZU9uQ29tcG9z
aXRpbmdUaHJlYWQoQ29tcG9zaXRvciogY29tcG9zaXRvciwgVGV4dHVyZU1hcHBlckxheWVyKiB0
YXJnZXRMYXllcikKK3sKKyNpZm5kZWYgTkRFQlVHCisgICAgbV9jb21wb3NpdG9yVGhyZWFkSUQg
PSBtX2NvbXBvc2l0b3JUaHJlYWRJRCA/IG1fY29tcG9zaXRvclRocmVhZElEIDogV1RGOjpjdXJy
ZW50VGhyZWFkKCk7CisjZW5kaWYKKyAgICBBU1NFUlQobV9jb21wb3NpdG9yVGhyZWFkSUQgPT0g
V1RGOjpjdXJyZW50VGhyZWFkKCkpOworICAgIEFTU0VSVChjb21wb3NpdG9yKTsKKyAgICBBU1NF
UlQodGFyZ2V0TGF5ZXIpOworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgbV9j
b21wb3NpdG9yID0gY29tcG9zaXRvcjsKKyAgICBtX3RhcmdldExheWVyID0gdGFyZ2V0TGF5ZXI7
Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6aW52YWxpZGF0ZSgp
Cit7CisgICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZElEID09IFdURjo6Y3VycmVudFRocmVh
ZCgpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIG1fY29tcG9zaXRvciA9
IG51bGxwdHI7CisgICAgbV90YXJnZXRMYXllciA9IG51bGxwdHI7Cit9CisKK2Jvb2wgVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6aXNBY3RpdmUoKQoreworICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fbG9jayk7CisgICAgcmV0dXJuICEhbV90YXJnZXRMYXllciAmJiAhIW1fY29tcG9z
aXRvcjsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpwdXNoTmV4
dEJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+
IG5ld0J1ZmZlcikKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIG1fcGVu
ZGluZ0J1ZmZlciA9IFdURjo6bW92ZShuZXdCdWZmZXIpOworCisgICAgaWYgKG1fY29tcG9zaXRv
cikKKyAgICAgICAgbV9jb21wb3NpdG9yLT5vbk5ld0J1ZmZlckF2YWlsYWJsZSgpOworfQorCitz
dGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmdldEF2YWlsYWJsZUJ1ZmZlcihjb25zdCBJbnRTaXpl
JiBzaXplLCBHQzNEaW50IGludGVybmFsRm9ybWF0KQoreworICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fbG9jayk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyPiBhdmFpbGFibGVCdWZmZXI7CisKKyAgICBhdXRvIGJ1ZmZlcnMgPSBXVEY6Om1vdmUo
bV91c2VkQnVmZmVycyk7CisgICAgZm9yIChhdXRvJiBidWZmZXIgOiBidWZmZXJzKSB7CisgICAg
ICAgIGlmICghYnVmZmVyKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCFh
dmFpbGFibGVCdWZmZXIgJiYgYnVmZmVyLT5jYW5SZXVzZVdpdGhvdXRSZXNldChzaXplLCBpbnRl
cm5hbEZvcm1hdCkpIHsKKyAgICAgICAgICAgIGF2YWlsYWJsZUJ1ZmZlciA9IFdURjo6bW92ZShi
dWZmZXIpOworICAgICAgICAgICAgYXZhaWxhYmxlQnVmZmVyLT5tYXJrVXNlZCgpOworICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgbV91c2VkQnVmZmVycy5hcHBlbmQo
V1RGOjptb3ZlKGJ1ZmZlcikpOworICAgIH0KKworICAgIGlmICghbV91c2VkQnVmZmVycy5pc0Vt
cHR5KCkpCisgICAgICAgIHNjaGVkdWxlUmVsZWFzZVVudXNlZEJ1ZmZlcnMoKTsKKyAgICByZXR1
cm4gYXZhaWxhYmxlQnVmZmVyOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHk6OnNjaGVkdWxlUmVsZWFzZVVudXNlZEJ1ZmZlcnMoKQoreworICAgIGlmIChtX3JlbGVh
c2VVbnVzZWRCdWZmZXJzVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyLnN0YXJ0T25lU2hvdChzX3JlbGVhc2VVbnVzZWRC
dWZmZXJzVGltZXJJbnRlcnZhbCk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eTo6cmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckZpcmVkKCkKK3sKKyAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2xvY2spOworICAgIGlmIChtX3VzZWRCdWZmZXJzLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byBidWZmZXJzID0gV1RGOjptb3ZlKG1fdXNlZEJ1ZmZl
cnMpOworICAgIGRvdWJsZSBtaW5Vc2VkVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZSgpIC0gc19yZWxlYXNlVW51c2VkU2Vjb25kc1RvbGVyYW5jZTsKKworICAgIGZvciAoYXV0byYg
YnVmZmVyIDogYnVmZmVycykgeworICAgICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+bGFzdFVz
ZWRUaW1lKCkgPj0gbWluVXNlZFRpbWUpCisgICAgICAgICAgICBtX3VzZWRCdWZmZXJzLmFwcGVu
ZChXVEY6Om1vdmUoYnVmZmVyKSk7CisgICAgfQorfQorCit2b2lkIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHk6OnN3YXBCdWZmZXIoKQoreworICAgIEFTU0VSVChtX2NvbXBvc2l0b3JU
aHJlYWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7CisKKyAgICB7CisgICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIGlmICghbV90YXJnZXRMYXllciB8fCAhbV9w
ZW5kaW5nQnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChtX2N1cnJl
bnRCdWZmZXIgJiYgbV9jdXJyZW50QnVmZmVyLT5oYXNNYW5hZ2VkVGV4dHVyZSgpKQorICAgICAg
ICAgICAgbV91c2VkQnVmZmVycy5hcHBlbmQoV1RGOjptb3ZlKG1fY3VycmVudEJ1ZmZlcikpOwor
CisgICAgICAgIG1fY3VycmVudEJ1ZmZlciA9IFdURjo6bW92ZShtX3BlbmRpbmdCdWZmZXIpOwor
ICAgICAgICBtX3RhcmdldExheWVyLT5zZXRDb250ZW50c0xheWVyKG1fY3VycmVudEJ1ZmZlci5n
ZXQoKSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZDY0YWFmODM2MTAzNWNiZjVi
YWViODFkMWQwZjg0NmI1NzA5ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHku
aApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eV9oCisj
ZGVmaW5lIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlfaAorCisjaW5jbHVkZSAiR3Jh
cGhpY3NUeXBlczNELmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgorI2luY2x1ZGUgIlRy
YW5zZm9ybWF0aW9uTWF0cml4LmgiCisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1
ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYv
VGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZm5k
ZWYgTkRFQlVHCisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2VuZGlmCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dHVyZU1hcHBlckxheWVyOworY2xhc3MgVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eTsKK2NsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyOworCitjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5UHJvdmlkZXIg
eworcHVibGljOgorICAgIHZpcnR1YWwgUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHk+IHByb3h5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVyc0lm
TmVlZGVkKCkgPSAwOworfTsKKworY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
clByb3h5PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoKTsKK3B1YmxpYzoKKyAgICBj
bGFzcyBDb21wb3NpdG9yIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgdm9pZCBvbk5l
d0J1ZmZlckF2YWlsYWJsZSgpID0gMDsKKyAgICB9OworCisgICAgVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eSgpOworICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHkoKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcj4gZ2V0QXZhaWxhYmxlQnVmZmVyKGNvbnN0IEludFNpemUmLCBHQzNEaW50IGludGVy
bmFsRm9ybWF0KTsKKyAgICB2b2lkIHB1c2hOZXh0QnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4pOworCisgICAgdm9pZCBhY3RpdmF0ZU9uQ29t
cG9zaXRpbmdUaHJlYWQoQ29tcG9zaXRvciosIFRleHR1cmVNYXBwZXJMYXllciopOworICAgIHZv
aWQgaW52YWxpZGF0ZSgpOworICAgIGJvb2wgaXNBY3RpdmUoKTsKKworICAgIHZvaWQgc3dhcEJ1
ZmZlcigpOworCitwcml2YXRlOgorICAgIHZvaWQgc2NoZWR1bGVSZWxlYXNlVW51c2VkQnVmZmVy
cygpOworICAgIHZvaWQgcmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckZpcmVkKCk7CisKKyAgICBD
b21wb3NpdG9yKiBtX2NvbXBvc2l0b3I7CisgICAgVGV4dHVyZU1hcHBlckxheWVyKiBtX3Rhcmdl
dExheWVyOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyPiBtX2N1cnJlbnRCdWZmZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBtX3BlbmRpbmdCdWZmZXI7CisKKyAgICBMb2NrIG1fbG9j
azsKKworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI+PiBtX3VzZWRCdWZmZXJzOworCisgICAgUnVuTG9vcDo6VGltZXI8VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gbV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyOworI2lm
bmRlZiBOREVCVUcKKyAgICBUaHJlYWRJZGVudGlmaWVyIG1fY29tcG9zaXRvclRocmVhZElEIHsg
MCB9OworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggN2M3NTI0NGM3M2Uw
YWFiMWM1NDcxNWI0ZTI3ZmY5Yjc0ZWI2MDE1Yi4uMWUwZmQ2ZTBlYTYxZjIyMmQzNTdhNzljZWYy
MGMyMGZhYzFmMzJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKICNpbmNsdWRlICJGcmFt
ZVZpZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0xheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3RvcnkuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaWZuZGVmIE5ERUJVRwpAQCAtNDIsNiArNDIsMTQgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NMYXllcj4gR3Jh
cGhpY3NMYXllcjo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBmYWN0b3J5LCBHcmFwaGlj
c0xheWVyQ2xpZW50JiBjbGllbnQsIFR5cGUgbGF5ZXJUeXBlKQoreworICAgIGlmICghZmFjdG9y
eSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyPihsYXllclR5cGUsIGNsaWVudCk7CisKKyAgICByZXR1cm4gZmFjdG9yeS0+Y3JlYXRlR3Jh
cGhpY3NMYXllcihsYXllclR5cGUsIGNsaWVudCk7Cit9CisKIHN0YXRpYyBDb29yZGluYXRlZExh
eWVySUQgdG9Db29yZGluYXRlZExheWVySUQoR3JhcGhpY3NMYXllciogbGF5ZXIpCiB7CiAgICAg
cmV0dXJuIGxheWVyID8gdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5pZCgpIDog
MDsKQEAgLTEyMSw2ICsxMjksOSBAQCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcihUeXBlIGxheWVyVHlwZSwgR3JhcGhpY3NMYXllcgogICAgICwgbV9p
c1ZhbGlkUGxhdGZvcm1MYXllcihmYWxzZSkKICAgICAsIG1fcGVuZGluZ1BsYXRmb3JtTGF5ZXJP
cGVyYXRpb24oTm9uZSkKICNlbmRpZgorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJF
QURFRCkKKyAgICAsIG1fc2hvdWxkU3luY1BsYXRmb3JtTGF5ZXIoZmFsc2UpCisjZW5kaWYKICAg
ICAsIG1fY29vcmRpbmF0b3IoMCkKICAgICAsIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKDAp
CiAgICAgLCBtX3BsYXRmb3JtTGF5ZXIoMCkKQEAgLTQwNiw2ICs0MTcsMTIgQEAgdm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3IKICAgICBBU1NFUlQoISghbV9wbGF0Zm9ybUxheWVyVG9rZW4uaXNWYWxp
ZCgpICYmIG1fcGxhdGZvcm1MYXllcikpOwogCiAgICAgbm90aWZ5Rmx1c2hSZXF1aXJlZCgpOwor
I2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIGlmIChtX3BsYXRm
b3JtTGF5ZXIgIT0gcGxhdGZvcm1MYXllcikKKyAgICAgICAgbV9zaG91bGRTeW5jUGxhdGZvcm1M
YXllciA9IHRydWU7CisKKyAgICBtX3BsYXRmb3JtTGF5ZXIgPSBwbGF0Zm9ybUxheWVyOworICAg
IG5vdGlmeUZsdXNoUmVxdWlyZWQoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBsYXRmb3Jt
TGF5ZXIpOwogI2VuZGlmCkBAIC02OTQsOSArNzExLDkgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnN5bmNBbmltYXRpb25zKCkKICAgICBtX2xheWVyU3RhdGUuYW5pbWF0aW9uc0No
YW5nZWQgPSB0cnVlOwogfQogCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY1BsYXRmb3JtTGF5ZXIoKQogeworI2lmIFVTRShHUkFQ
SElDU19TVVJGQUNFKQogICAgIGRlc3Ryb3lQbGF0Zm9ybUxheWVySWZOZWVkZWQoKTsKICAgICBj
cmVhdGVQbGF0Zm9ybUxheWVySWZOZWVkZWQoKTsKIApAQCAtNzExLDggKzcyOCwyMCBAQCB2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY1BsYXRmb3JtTGF5ZXIoKQogICAgIEFTU0VS
VChtX3BsYXRmb3JtTGF5ZXIpOwogICAgIG1fbGF5ZXJTdGF0ZS5wbGF0Zm9ybUxheWVyRnJvbnRC
dWZmZXIgPSBtX3BsYXRmb3JtTGF5ZXItPmNvcHlUb0dyYXBoaWNzU3VyZmFjZSgpOwogICAgIG1f
bGF5ZXJTdGF0ZS5wbGF0Zm9ybUxheWVyU2hvdWxkU3dhcEJ1ZmZlcnMgPSB0cnVlOworI2VsaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIGlmICghbV9zaG91bGRTeW5j
UGxhdGZvcm1MYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zaG91bGRTeW5jUGxhdGZv
cm1MYXllciA9IGZhbHNlOworICAgIG1fbGF5ZXJTdGF0ZS5wbGF0Zm9ybUxheWVyQ2hhbmdlZCA9
IHRydWU7CisgICAgaWYgKG1fcGxhdGZvcm1MYXllcikgeworICAgICAgICBtX3BsYXRmb3JtTGF5
ZXItPnN3YXBCdWZmZXJzSWZOZWVkZWQoKTsKKyAgICAgICAgbV9sYXllclN0YXRlLnBsYXRmb3Jt
TGF5ZXJQcm94eSA9IG1fcGxhdGZvcm1MYXllci0+cHJveHkoKTsKKyAgICB9CisjZW5kaWYKIH0K
IAorI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OmRlc3Ryb3lQbGF0Zm9ybUxheWVySWZOZWVkZWQoKQogewogICAgIGlmICghKG1fcGVuZGlu
Z1BsYXRmb3JtTGF5ZXJPcGVyYXRpb24gJiBEZXN0cm95UGxhdGZvcm1MYXllcikpCkBAIC03NjMs
OSArNzkyLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRp
bmdTdGF0ZUZvclRoaXNMYXllck9ubHkoYm9vbCkKICAgICBjb21wdXRlVHJhbnNmb3JtZWRWaXNp
YmxlUmVjdCgpOwogICAgIHN5bmNDaGlsZHJlbigpOwogICAgIHN5bmNGaWx0ZXJzKCk7Ci0jaWYg
VVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgc3luY1BsYXRmb3JtTGF5ZXIoKTsKLSNlbmRpZgog
CiAgICAgLy8gT25seSB1bnNldCBtX21vdmluZ1Zpc2libGVSZWN0IGFmdGVyIHdlIGhhdmUgdXBk
YXRlZCB0aGUgdmlzaWJsZSByZWN0IGFmdGVyIHRoZSBhbmltYXRpb24gc3RvcHBlZC4KICAgICBp
ZiAoIWhhc0FjdGl2ZVRyYW5zZm9ybUFuaW1hdGlvbikKQEAgLTExODksNSArMTIxNiwxNyBAQCB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQo
KQogewogICAgIGNsaWVudCgpLm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgIiIsIG1fbGFz
dEFuaW1hdGlvblN0YXJ0VGltZSk7CiB9CisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Nf
VEhSRUFERUQpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cGxhdGZvcm1MYXllcldp
bGxCZURlc3Ryb3llZCgpCit7Cit9CisKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpz
ZXRQbGF0Zm9ybUxheWVyTmVlZHNEaXNwbGF5KCkKK3sKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5k
ZXggNTQ2NTY2NGM5ZmQzNmM3NDViMDU4MWQyNDhjNDk1YjY5NTc4NmEyNi4uOGE0NWMzNTY1ODU3
MDQzNTcxYjJlMzU5Zjc2NmVmOTFiZDQwY2NjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlRleHR1cmVN
YXBwZXJBbmltYXRpb24uaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5o
IgogI2luY2x1ZGUgIlRpbGVkQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiVGlsZWRCYWNraW5n
U3RvcmVDbGllbnQuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgpAQCAtNTcs
NiArNTgsOSBAQCBwdWJsaWM6CiAKIGNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciA6IHB1
YmxpYyBHcmFwaGljc0xheWVyCiAgICAgLCBwdWJsaWMgVGlsZWRCYWNraW5nU3RvcmVDbGllbnQK
KyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgLCBwdWJsaWMgVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXI6OkNsaWVudAorI2VuZGlmCiAgICAgLCBwdWJsaWMgQ29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmc6Okhvc3QgewogcHVibGljOgogICAgIGV4cGxpY2l0IENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcihUeXBlLCBHcmFwaGljc0xheWVyQ2xpZW50Jik7CkBAIC0xNTUs
MTAgKzE1OSwxNCBAQCBwcml2YXRlOgogICAgICAgICBSZWNyZWF0ZVBsYXRmb3JtTGF5ZXIgPSBD
cmVhdGVBbmRTeW5jUGxhdGZvcm1MYXllciB8IERlc3Ryb3lQbGF0Zm9ybUxheWVyCiAgICAgfTsK
IAotICAgIHZvaWQgc3luY1BsYXRmb3JtTGF5ZXIoKTsKICAgICB2b2lkIGRlc3Ryb3lQbGF0Zm9y
bUxheWVySWZOZWVkZWQoKTsKICAgICB2b2lkIGNyZWF0ZVBsYXRmb3JtTGF5ZXJJZk5lZWRlZCgp
OwogI2VuZGlmCisgICAgdm9pZCBzeW5jUGxhdGZvcm1MYXllcigpOworI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICB2b2lkIHBsYXRmb3JtTGF5ZXJXaWxsQmVEZXN0
cm95ZWQoKTsKKyAgICB2b2lkIHNldFBsYXRmb3JtTGF5ZXJOZWVkc0Rpc3BsYXkoKTsKKyNlbmRp
ZgogCiAgICAgdmlydHVhbCB2b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQg
d2lkdGgpIG92ZXJyaWRlOwogCkBAIC0yMjMsNiArMjMxLDkgQEAgcHJpdmF0ZToKICAgICBib29s
IG1faXNWYWxpZFBsYXRmb3JtTGF5ZXIgOiAxOwogICAgIHVuc2lnbmVkIG1fcGVuZGluZ1BsYXRm
b3JtTGF5ZXJPcGVyYXRpb24gOiAzOwogI2VuZGlmCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTX1RIUkVBREVEKQorICAgIGJvb2wgbV9zaG91bGRTeW5jUGxhdGZvcm1MYXllciA6IDE7Cisj
ZW5kaWYKIAogICAgIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCogbV9jb29yZGluYXRv
cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGlsZWRCYWNraW5nU3RvcmU+IG1fbWFpbkJhY2tpbmdT
dG9yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
U3RhdGUuaAppbmRleCAxNGYyYjc3NTA0Njc4ZjA5NzYyNzgxODAyMmRmYmVmYTI3MjQyZGY2Li44
NGU3YjI3NGMxYTYyMTY5NGQ2OGMwNDI4Nzg4ZGYzYTU4Nzc3NDY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oCkBAIC00NCw2ICs0
NCwxMCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzU3VyZmFjZVRva2VuLmgiCiAjZW5kaWYKIAorI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyNpbmNsdWRlICJUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDb29yZGluYXRlZFN1cmZhY2U7CkBAIC0xMzAsNiArMTM0LDkgQEAgc3RydWN0IENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlIHsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
ICAgICAgICAgLCBwbGF0Zm9ybUxheWVyRnJvbnRCdWZmZXIoMCkKICNlbmRpZgorI2lmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICAgICAgLCBwbGF0Zm9ybUxheWVyUHJv
eHkoMCkKKyNlbmRpZgogICAgIHsKICAgICB9CiAKQEAgLTE2NCw2ICsxNzEsMTAgQEAgc3RydWN0
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlIHsKICAgICBHcmFwaGljc1N1cmZhY2U6OkZs
YWdzIHBsYXRmb3JtTGF5ZXJTdXJmYWNlRmxhZ3M7CiAjZW5kaWYKIAorI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94eT4gcGxhdGZvcm1MYXllclByb3h5OworI2VuZGlmCisKICAgICBJbnRTaXplIGNv
bW1pdHRlZFNjcm9sbE9mZnNldDsKIAogICAgIGJvb2wgaGFzUGVuZGluZ0NoYW5nZXMoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggZGVhYjA0
NzNmZWFmNmJmNGE5NzhiMjQ5ZTc1NmY2NTcyNzJjZTgwZS4uNGNkNGU5MmZlNjZmMjg3ODhlNDUy
ZDFmYzJkZjQwNzFiNmZmY2E3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNz
U2NlbmUuY3BwCkBAIC04Myw2ICs4MywxMSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaQogICAg
IGlmICghY3VycmVudFJvb3RMYXllcikKICAgICAgICAgcmV0dXJuOwogCisjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIGZvciAoYXV0byYgcHJveHkgOiBtX3BsYXRm
b3JtTGF5ZXJQcm94aWVzLnZhbHVlcygpKQorICAgICAgICBwcm94eS0+c3dhcEJ1ZmZlcigpOwor
I2VuZGlmCisKICAgICBjdXJyZW50Um9vdExheWVyLT5zZXRUZXh0dXJlTWFwcGVyKG1fdGV4dHVy
ZU1hcHBlci5nZXQoKSk7CiAgICAgY3VycmVudFJvb3RMYXllci0+YXBwbHlBbmltYXRpb25zUmVj
dXJzaXZlbHkoKTsKICAgICBtX3RleHR1cmVNYXBwZXItPmJlZ2luUGFpbnRpbmcoUGFpbnRGbGFn
cyk7CkBAIC0xNjQsMjAgKzE2OSw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjph
ZGp1c3RQb3NpdGlvbkZvckZpeGVkTGF5ZXJzKGNvbnN0IEZsb2F0UG9pbnQmIGNvCiAgICAgICAg
IGZpeGVkTGF5ZXItPnNldFNjcm9sbFBvc2l0aW9uRGVsdGFJZk5lZWRlZChkZWx0YSk7CiB9CiAK
LSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLXZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
OjpjcmVhdGVQbGF0Zm9ybUxheWVySWZOZWVkZWQoVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciwg
Y29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmIHN0YXRlKQotewotICAgIGlmICgh
c3RhdGUucGxhdGZvcm1MYXllclRva2VuLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlPiBwbGF0Zm9ybUxheWVy
QmFja2luZ1N0b3JlKFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpjcmVhdGUoKSk7
Ci0gICAgbV9zdXJmYWNlQmFja2luZ1N0b3Jlcy5zZXQobGF5ZXIsIHBsYXRmb3JtTGF5ZXJCYWNr
aW5nU3RvcmUpOwotICAgIHBsYXRmb3JtTGF5ZXJCYWNraW5nU3RvcmUtPnNldEdyYXBoaWNzU3Vy
ZmFjZShHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShzdGF0ZS5wbGF0Zm9ybUxheWVyU2l6ZSwgc3Rh
dGUucGxhdGZvcm1MYXllclN1cmZhY2VGbGFncywgc3RhdGUucGxhdGZvcm1MYXllclRva2VuKSk7
Ci0gICAgbGF5ZXItPnNldENvbnRlbnRzTGF5ZXIocGxhdGZvcm1MYXllckJhY2tpbmdTdG9yZS5n
ZXQoKSk7Ci19Ci0KIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzeW5jUGxhdGZvcm1M
YXllcklmTmVlZGVkKFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIsIGNvbnN0IENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllclN0YXRlJiBzdGF0ZSkKIHsKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
ICAgICBBU1NFUlQobV90ZXh0dXJlTWFwcGVyKTsKIAogICAgIGlmIChzdGF0ZS5wbGF0Zm9ybUxh
eWVyQ2hhbmdlZCkgewpAQCAtMTkxLDYgKzE4NSw0MSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZTo6c3luY1BsYXRmb3JtTGF5ZXJJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxh
eQogICAgICAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU+IHBsYXRm
b3JtTGF5ZXJCYWNraW5nU3RvcmUgPSBpdC0+dmFsdWU7CiAgICAgICAgIHBsYXRmb3JtTGF5ZXJC
YWNraW5nU3RvcmUtPnN3YXBCdWZmZXJzSWZOZWVkZWQoc3RhdGUucGxhdGZvcm1MYXllckZyb250
QnVmZmVyKTsKICAgICB9CisjZWxpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQp
CisgICAgaWYgKCFzdGF0ZS5wbGF0Zm9ybUxheWVyQ2hhbmdlZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKHN0YXRlLnBsYXRmb3JtTGF5ZXJQcm94eSkgeworICAgICAgICBtX3BsYXRmb3Jt
TGF5ZXJQcm94aWVzLnNldChsYXllciwgc3RhdGUucGxhdGZvcm1MYXllclByb3h5KTsKKyAgICAg
ICAgc3RhdGUucGxhdGZvcm1MYXllclByb3h5LT5hY3RpdmF0ZU9uQ29tcG9zaXRpbmdUaHJlYWQo
dGhpcywgbGF5ZXIpOworICAgIH0gZWxzZQorICAgICAgICBtX3BsYXRmb3JtTGF5ZXJQcm94aWVz
LnJlbW92ZShsYXllcik7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShsYXllcik7CisgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKKyNlbmRpZgorfQorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTX1RIUkVBREVEKQordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6Om9uTmV3QnVmZmVy
QXZhaWxhYmxlKCkKK3sKKyAgICBSZWZQdHI8Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lPiBwcm90
ZWN0b3IodGhpcyk7CisgICAgZGlzcGF0Y2hPbkNsaWVudFJ1bkxvb3AoWz1dIHsKKyAgICAgICAg
cHJvdGVjdG9yLT51cGRhdGVWaWV3cG9ydCgpOworICAgIH0pOworfQorI2VuZGlmCisKKyNpZiBV
U0UoR1JBUEhJQ1NfU1VSRkFDRSkKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVh
dGVQbGF0Zm9ybUxheWVySWZOZWVkZWQoVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciwgY29uc3Qg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmIHN0YXRlKQoreworICAgIGlmICghc3RhdGUu
cGxhdGZvcm1MYXllclRva2VuLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVm
UHRyPFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlPiBwbGF0Zm9ybUxheWVyQmFja2lu
Z1N0b3JlKFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpjcmVhdGUoKSk7CisgICAg
bV9zdXJmYWNlQmFja2luZ1N0b3Jlcy5zZXQobGF5ZXIsIHBsYXRmb3JtTGF5ZXJCYWNraW5nU3Rv
cmUpOworICAgIHBsYXRmb3JtTGF5ZXJCYWNraW5nU3RvcmUtPnNldEdyYXBoaWNzU3VyZmFjZShH
cmFwaGljc1N1cmZhY2U6OmNyZWF0ZShzdGF0ZS5wbGF0Zm9ybUxheWVyU2l6ZSwgc3RhdGUucGxh
dGZvcm1MYXllclN1cmZhY2VGbGFncywgc3RhdGUucGxhdGZvcm1MYXllclRva2VuKSk7CisgICAg
bGF5ZXItPnNldENvbnRlbnRzTGF5ZXIocGxhdGZvcm1MYXllckJhY2tpbmdTdG9yZS5nZXQoKSk7
CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpkZXN0cm95UGxhdGZvcm1MYXll
cklmTmVlZGVkKFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIsIGNvbnN0IENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllclN0YXRlJiBzdGF0ZSkKQEAgLTMxMyw5ICszNDIsNyBAQCB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZTo6c2V0TGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQgaWQsIGNv
bnN0IENvb3JkaQogICAgIHVwZGF0ZVRpbGVzSWZOZWVkZWQobGF5ZXIsIGxheWVyU3RhdGUpOwog
ICAgIHNldExheWVyRmlsdGVyc0lmTmVlZGVkKGxheWVyLCBsYXllclN0YXRlKTsKICAgICBzZXRM
YXllckFuaW1hdGlvbnNJZk5lZWRlZChsYXllciwgbGF5ZXJTdGF0ZSk7Ci0jaWYgVVNFKEdSQVBI
SUNTX1NVUkZBQ0UpCiAgICAgc3luY1BsYXRmb3JtTGF5ZXJJZk5lZWRlZChsYXllciwgbGF5ZXJT
dGF0ZSk7Ci0jZW5kaWYKICAgICBzZXRMYXllclJlcGFpbnRDb3VudElmTmVlZGVkKGxheWVyLCBs
YXllclN0YXRlKTsKIH0KIApAQCAtMzU0LDYgKzM4MSwxMSBAQCB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6ZGVsZXRlTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQpCiAjaWYg
VVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgbV9zdXJmYWNlQmFja2luZ1N0b3Jlcy5yZW1vdmUo
bGF5ZXIuZ2V0KCkpOwogI2VuZGlmCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVB
REVEKQorICAgIGlmIChhdXRvKiBwbGF0Zm9ybUxheWVyUHJveHkgPSBtX3BsYXRmb3JtTGF5ZXJQ
cm94aWVzLmdldChsYXllci5nZXQoKSkpCisgICAgICAgIHBsYXRmb3JtTGF5ZXJQcm94eS0+aW52
YWxpZGF0ZSgpOworICAgIG1fcGxhdGZvcm1MYXllclByb3hpZXMucmVtb3ZlKGxheWVyLmdldCgp
KTsKKyNlbmRpZgogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0Um9vdExh
eWVySUQoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQpCkBAIC02MzIsNiArNjY0LDkgQEAgdm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnB1cmdlR0xSZXNvdXJjZXMoKQogI2lmIFVTRShH
UkFQSElDU19TVVJGQUNFKQogICAgIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXMuY2xlYXIoKTsKICNl
bmRpZgorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICBtX3BsYXRm
b3JtTGF5ZXJQcm94aWVzLmNsZWFyKCk7CisjZW5kaWYKICAgICBtX3N1cmZhY2VzLmNsZWFyKCk7
CiAKICAgICBtX3Jvb3RMYXllciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZS5oCmluZGV4IDY5MDY1YzlhNTZmOGYyMjc1NmNkN2E1YmQ1MWQyMGU5NzI1NDkz
NGIuLjY4YWFiZmU0MGM0ZGY4MTk3ZDE2ZmJkNjJiOGFmZmE1ZTljMjc5NjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaD4KICNlbmRpZgog
CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorI2luY2x1ZGUgPFdlYkNv
cmUvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oPgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTsKQEAgLTU4LDcgKzYy
LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQz
Ml90IGxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCkgPSAwOwogfTsKIAot
Y2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZT4sIHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyTGF5ZXI6OlNjcm9sbGluZ0NsaWVudCB7CitjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
PiwgcHVibGljIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6U2Nyb2xsaW5nQ2xpZW50Cisj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgICwgcHVibGljIFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OkNvbXBvc2l0b3IKKyNlbmRpZgor
ewogcHVibGljOgogICAgIGV4cGxpY2l0IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZShDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmVDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5Db29yZGluYXRlZEdyYXBo
aWNzU2NlbmUoKTsKQEAgLTk0LDkgKzEwMiw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVU
aWxlc0lmTmVlZGVkKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllciosIGNvbnN0IFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CiAgICAgdm9pZCBzZXRMYXllckZpbHRl
cnNJZk5lZWRlZChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqLCBjb25zdCBXZWJDb3JlOjpD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwogICAgIHZvaWQgc2V0TGF5ZXJBbmltYXRp
b25zSWZOZWVkZWQoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgY29uc3QgV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKKyAgICB2b2lkIHN5bmNQbGF0Zm9ybUxh
eWVySWZOZWVkZWQoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgY29uc3QgV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFD
RSkKICAgICB2b2lkIGNyZWF0ZVBsYXRmb3JtTGF5ZXJJZk5lZWRlZChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyTGF5ZXIqLCBjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0
ZSYpOwotICAgIHZvaWQgc3luY1BsYXRmb3JtTGF5ZXJJZk5lZWRlZChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyTGF5ZXIqLCBjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0
ZSYpOwogICAgIHZvaWQgZGVzdHJveVBsYXRmb3JtTGF5ZXJJZk5lZWRlZChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyTGF5ZXIqLCBjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJT
dGF0ZSYpOwogI2VuZGlmCiAgICAgdm9pZCBzZXRMYXllclJlcGFpbnRDb3VudElmTmVlZGVkKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJMYXllciosIGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllclN0YXRlJik7CkBAIC0xNDQsNiArMTUyLDEwIEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIGRpc3BhdGNoQ29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIG9mZnNldCk7CiAKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Nf
VEhSRUFERUQpCisgICAgdmlydHVhbCB2b2lkIG9uTmV3QnVmZmVyQXZhaWxhYmxlKCkgb3ZlcnJp
ZGU7CisjZW5kaWYKKwogICAgIC8vIFJlbmRlciBxdWV1ZSBjYW4gYmUgYWNjZXNzZWQgb255IGZy
b20gbWFpbiB0aHJlYWQgb3IgdXBkYXRlUGFpbnROb2RlIGNhbGwgc3RhY2shCiAgICAgVmVjdG9y
PHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gbV9yZW5kZXJRdWV1ZTsKICAgICBMb2NrIG1fcmVuZGVy
UXVldWVNdXRleDsKQEAgLTE2NCw2ICsxNzYsMTEgQEAgcHJpdmF0ZToKICAgICBTdXJmYWNlQmFj
a2luZ1N0b3JlTWFwIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXM7CiAjZW5kaWYKIAorI2lmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgUmVmUHRyPFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHk+PiBQbGF0Zm9ybUxheWVyUHJveHlNYXA7CisgICAgUGxhdGZvcm1MYXll
clByb3h5TWFwIG1fcGxhdGZvcm1MYXllclByb3hpZXM7CisjZW5kaWYKKwogICAgIHR5cGVkZWYg
SGFzaE1hcDx1aW50MzJfdCAvKiBhdGxhc0lEICovLCBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0
ZWRTdXJmYWNlPj4gU3VyZmFjZU1hcDsKICAgICBTdXJmYWNlTWFwIG1fc3VyZmFjZXM7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266754</attachid>
            <date>2015-12-06 23:59:27 -0800</date>
            <delta_ts>2015-12-07 03:47:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143299-20151207085858.patch</filename>
            <type>text/plain</type>
            <size>46345</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzNTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjMxMzMzMWJhNDZhYzk2
ZDYyMTZkZDdmZmJmNGRiMmJmZDhkOGNkOS4uM2FiYTk0M2UzNjYyZjA3ZWM4MzZkZDFhOWZhYjBi
MmI0MGE3YTE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE1LTEwLTMxICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtUaHJlYWRlZENvbXBv
c2l0b3JdIEFkZCBzdXBwb3J0IGZvciBQbGF0Zm9ybUxheWVyLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMjk5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkgYW5kIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyIHRvCisgICAgICAgIHNlbmQgYSB0ZXh0dXJlIChhY3R1YWwgdGV4dHVyZSBvciBCaXRt
YXBUZXh0dXJlKSB0byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkIGRpcmVjdGx5LgorICAgICAgICBQ
bGF0Zm9ybSBsYXllciByZW5kZXJlcnMgc2hvdWxkIGltcGxlbWVudCBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5UHJvdmlkZXIgdG8gZXN0YWJsaXNoCisgICAgICAgIGEgY29ubmVjdGlv
biB0byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkLiBBZnRlciB0aGUgY29ubmVjdGlvbiBoYXMgYmVl
biBlc3RhYmxpc2hlZCwgdGhlIHJlbmRlcmVyCisgICAgICAgIGNhbiByZW5kZXIgaXRzIGNvbnRl
bnRzIHRvIHRoZSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlciBhbmQgcGFzcyBpdCB0
byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkCisgICAgICAgIHZpYSBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllciBwcm94eS4KKyAgICAgICAgVGhlIGJ1ZmZlciBjYW4gYmUgYW4gdW5tYW5hZ2VkIHRl
eHR1cmUgKGEuay5hLiBwbGF0Zm9ybSB0ZXh0dXJlKSBvciBCaXRtYXBUZXh0dXJlLgorICAgICAg
ICBGb3IgdGhlIHVubWFuYWdlZCB0ZXh0dXJlLCB0aGUgcmVuZGVyZXIgc2hvdWxkIG1hbmFnZSBp
dHMgbGlmZSBjeWNsZSBpdHNlbGYuIEZvciB0aGUgQml0bWFwVGV4dHVyZSwKKyAgICAgICAgaXQg
d2lsbCBiZSBtYW5hZ2VkIGJ5IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuIEluIHRo
YXQgY2FzZSwgdXNlZCAoc3dhcHBlZCkgYnVmZmVyIHdpbGwgYmUKKyAgICAgICAgcmVjeWNsZWQg
YmVjYXVzZSB0aGUgcmVuZGVyZXIgd2lsbCB1c2Ugc2FtZSBzaXplIGFuZCBmb3JtYXQgdW50aWwg
aXQgY2hhbmdlcyBpdHMgc2l6ZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLgorCisg
ICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgIEFkZHMgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXIgYW5kIFRleHR1cmVNYXBwZXJQbGF5dGZvcm1MYXllclByb3h5Lgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWly
by5oOgorICAgICAgICBBZGRzIG1vY2sgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmg6CisgICAgICAgIEFkZHMgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVyIGFzIGEgUGxhdGZvcm1MYXllciBmb3IgdGhlIFRo
cmVhZGVkIENvbXBvc2l0b3IKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlR0wuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6aW50
ZXJuYWxGb3JtYXQpOiBBZGRzIGEgZ2V0dGVyIHRvIGNoZWNrIHRoZQorICAgICAgICBpbnRlcm5h
bCBmb3JtYXQgb2YgdGV4dHVyZSB0byBjaGVjayByZXVzYWJpbGl0eS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5oOgorICAgICAgICBFeGNsdWRlIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGZy
b20gYnVpbGQgd2hlbiB3ZSBhcmUgdXNpbmcgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eS5oOiBBZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgQmVjYXVzZSB3ZSBy
ZW1vdmVkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGZyb20gYnVpbGQsIHdlIG5lZWQgdG8g
YWRkIG93biBmYWN0b3J5IGZ1bmN0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY1BsYXRmb3JtTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpwbGF0Zm9ybUxheWVyV2ls
bEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6c2V0UGxhdGZvcm1MYXllck5lZWRzRGlzcGxheSk6CisgICAgICAgIEltcGxlbWVudHMgc3lu
YyBvcGVyYXRpb25zIGZvciBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5CisKIDIwMTUt
MTItMDQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgQ09SRVRFWFRfV0VCX0ZPTlRTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjRiODFhODgwNjA4YjUx
MTRlZDZlNDk0MjIwMGJjYjU0YjE0YThhMy4uZGNmZDUwOTJjM2QxMmEyMmExYWFkYTJhZTEzZTQ3
MWE0ZGYzZjIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE1LTEwLTMxICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtUaHJlYWRlZENvbXBv
c2l0b3JdIEFkZCBzdXBwb3J0IGZvciBQbGF0Zm9ybUxheWVyLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMjk5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KToKKyAgICAgICAgU3dh
cCBwZW5kaW5nIGJ1ZmZlcnMgb2YgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94aWVzIGJl
Zm9yZSBwYWludGluZyBjb250ZW50cy4KKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjpzeW5jUGxhdGZvcm1MYXllcklmTmVlZGVkKToKKyAgICAgICAgSW4gdGhyZWFk
ZWQgY29tcG9zaXRvciwgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5jZSBvbmx5IGNhcmVzIGFib3V0
IGNyZWF0aW9uIGFuZCBkZWxldGlvbgorICAgICAgICBvZiBwbGF0Zm9ybSBsYXllcnMuCisKKyAg
ICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpvbk5ld0J1ZmZlckF2YWls
YWJsZSk6CisgICAgICAgIFdoZW5ldmVyIG5ldyBidWZmZXIgY29tZXMgdmlhIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHksIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSB3aWxsCisgICAg
ICAgIHVwZGF0ZSB0aGUgc2NlbmUgaWYgaXQgaXMgbmVlZGVkLgorCiAyMDE1LTEyLTA0ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggd2hlbiBz
ZWNvbmRhcnkgY2xpY2tpbmcgb24gYSBsaW5rIG9uIHlhaG9vLmNvbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdU
Sy5jbWFrZQppbmRleCA4ZTc4OTA3ZDBiMjFkOGUwNGMzODZhM2UzYzRkNTQ3YzA2MDY1MjYwLi44
YzhmZDJiZjdhOTllNDc5YjZmY2JkNjRjODg5NTg5NGE1YzQ2YTM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZQpAQCAtNDQyLDYgKzQ0Miw4IEBAIGlmIChFTkFCTEVfVEhSRUFERURfQ09NUE9T
SVRPUikKICAgICAgICAgcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxp
bmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCiAgICAgICAgIHBhZ2Uvc2Nyb2xs
aW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nU3RhdGVOb2RlQ29vcmRpbmF0ZWRHcmFw
aGljcy5jcHAKIAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcAogICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQXJlYUFsbG9jYXRvci5jcHAKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3Iu
Y3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAppbmRleCBiMWNk
Y2NjYjY3MmZmMDI1ZGYyN2Y4Y2E3ODc0ZDkzZjJkMTA1ZjEzLi5lMTU0NGJmYTk4YmZjYTA4ZDc4
ODc0NDU3YjBiOTRhZWZjZDg5Y2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTYz
LDcgKzYzLDcgQEAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEcKIAogR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjp+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKCkKIHsKLSNpZiBVU0UoVEVYVFVSRV9N
QVBQRVIpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTX1RIUkVBREVEKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnBsYXRm
b3JtTGF5ZXJXaWxsQmVEZXN0cm95ZWQoKTsKICNlbmRpZgpAQCAtNzksNyArNzksMTMgQEAgUGxh
dGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBsYXRmb3Jt
Q29udGV4dCgpCiAgICAgcmV0dXJuIG1fZ2xDb250ZXh0ID8gbV9nbENvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpIDogR0xDb250ZXh0OjpnZXRDdXJyZW50KCktPnBsYXRmb3JtQ29udGV4dCgpOwog
fQogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
U19USFJFQURFRCkKK1JlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OnByb3h5KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQog
dm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1
cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICBp
ZiAoIW1fZ2xDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAppbmRleCA5ZDcwZWU2OWUwMjFl
ZDVlYmVlYThlOGJjYjBlZDExN2I4ZjgwYzJjLi45ZmM5MjI0MmU4YmY1NTdhNWMxNGNjYzllN2Rl
YjRjMzZlZWZkNTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaApAQCAtMjMsMTQgKzIzLDE4IEBA
CiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIK
IAotI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Nf
VEhSRUFERUQpCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oIgor
I2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIDogcHVibGljIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHlQcm92aWRlcgorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQogICAgIDog
cHVibGljIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyCiAjZW5kaWYKIHsKQEAgLTQyLDcgKzQ2
LDEwIEBAIHB1YmxpYzoKIAogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5k
ZXJTdHlsZSgpIHsgcmV0dXJuIG1fcmVuZGVyU3R5bGU7IH0KIAotI2lmIFVTRShURVhUVVJFX01B
UFBFUikKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgdmlydHVh
bCBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gcHJveHkoKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCgpIG92ZXJyaWRl
IHsgfTsKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUikKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRU
b1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHkpOwogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5ZXIuaAppbmRl
eCBmOTBmYzY3Y2M5MTRkZDYwNGU3M2ViZTBmNDU2ZDI5NDVmM2ZhNmQ3Li4yOWY5ZGVjYjI0YmEy
ZDQ0ZTQxMDFkMDNjMTgwOTlkYWFiMTVlZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1MYXllci5oCkBAIC0zMSw2ICszMSwxMSBAQCBPQkpDX0NM
QVNTIENBTGF5ZXI7CiB0eXBlZGVmIENBTGF5ZXIgUGxhdGZvcm1MYXllcjsKICNlbGlmIFBMQVRG
T1JNKFdJTikgJiYgVVNFKENBKQogdHlwZWRlZiBzdHJ1Y3QgX0NBQ0ZMYXllciBQbGF0Zm9ybUxh
eWVyOworI2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVy
OwordHlwZWRlZiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5UHJvdmlkZXIgUGxhdGZv
cm1MYXllcjsKK307CiAjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHAKaW5kZXggMjU2ZDFjYzgzMTNiYThiMDcxODdjNzUwYjFjOTY0NjcyZGY4ZTEwOS4uMDU3YjZi
ZWEyNjY0M2NmMzNjOGU2NmUxZDZjODY3MTdjMDI4NjJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHAKQEAgLTUyLDYgKzUyLDkgQEAKICNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgogI2luY2x1ZGUg
IlRleHR1cmVNYXBwZXJHTC5oIgogI2luY2x1ZGUgPGNhaXJvLWdsLmg+CisjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHkuaCIKKyNlbmRpZgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBA
IC00MDksNiArNDEyLDEzIEBAIFN0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSosIENvb3JkaW5hdGVTCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTX1RIUkVBREVEKQorUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IElt
YWdlQnVmZmVyRGF0YTo6cHJveHkoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZWxzZQogdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxv
YXQgb3BhY2l0eSkKIHsKICAgICBBU1NFUlQobV90ZXh0dXJlKTsKQEAgLTQyMSw2ICs0MzEsNyBA
QCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBl
ciogdGV4dHVyZU1hcHBlciwgY29uc3QgRgogICAgIHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJH
TCo+KHRleHR1cmVNYXBwZXIpLT5kcmF3VGV4dHVyZShtX3RleHR1cmUsIFRleHR1cmVNYXBwZXJH
TDo6U2hvdWxkQmxlbmQsIG1fc2l6ZSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5KTsKIH0K
ICNlbmRpZgorI2VuZGlmCiAKIFBsYXRmb3JtTGF5ZXIqIEltYWdlQnVmZmVyOjpwbGF0Zm9ybUxh
eWVyKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YUNhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWlyby5oCmluZGV4IGQ2MmY0NzA1MTVl
M2U4MmRjYTlkOTc2MzQ0N2E2N2UyZmM0ZDA2MzMuLmMzZjlhMTIyNDgyMTUzMGU3ODExNjZmMDFh
MzZhNzFkMjIxY2MwODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YUNhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJEYXRhQ2Fpcm8uaApAQCAtMzMsOCArMzMs
MTIgQEAKIAogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCiAjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlci5oIgorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgiCisjZWxzZQogI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCiAjZW5kaWYKKyNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQyLDggKzQ2LDEyIEBAIGNsYXNzIEludFNpemU7CiAKIGNs
YXNzIEltYWdlQnVmZmVyRGF0YQogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIDogcHVibGljIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlQcm92aWRlcgorI2Vsc2UKICAgICA6IHB1YmxpYyBU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcgogI2VuZGlmCisjZW5kaWYKIHsKIHB1YmxpYzoKICAg
ICBJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYpOwpAQCAtNTQsNyArNjIsMTIgQEAgcHVi
bGljOgogICAgIEludFNpemUgbV9zaXplOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NB
TlZBUykKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgdmlydHVh
bCBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gcHJveHkoKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCgpIG92ZXJyaWRl
IHsgfTsKKyNlbHNlCiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1
cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmLCBmbG9hdCBvcGFjaXR5KTsKKyNlbmRpZgogICAgIHVpbnQzMl90IG1fdGV4dHVyZTsK
ICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaAppbmRleCBlYjIwYTBmMjBlY2I2YzQ3ZDVmZTBi
MmM1MTU5OTgyZDg3YmQ2NGYyLi5kNWQ2NzM4YTNlZDFlZGUwODUzNGI2MTRhMDIwYjY0Mzk2Y2Uw
ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Qml0bWFwVGV4dHVyZUdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oCkBAIC02OSw2ICs2OSw4IEBAIHB1YmxpYzoKICAgICBj
b25zdCBGaWx0ZXJJbmZvKiBmaWx0ZXJJbmZvKCkgY29uc3QgeyByZXR1cm4gJm1fZmlsdGVySW5m
bzsgfQogICAgIFRleHR1cmVNYXBwZXJHTDo6Q2xpcFN0YWNrJiBjbGlwU3RhY2soKSB7IHJldHVy
biBtX2NsaXBTdGFjazsgfQogCisgICAgR0MzRGludCBpbnRlcm5hbEZvcm1hdCgpIGNvbnN0IHsg
cmV0dXJuIG1faW50ZXJuYWxGb3JtYXQ7IH0KKwogcHJpdmF0ZToKIAogICAgIFBsYXRmb3JtM0RP
YmplY3QgbV9pZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmlu
ZGV4IDUwMWQyYTg5ZTllODdhZTBmZDU1MjJhYzQ4Nzc3MDk2YzNlYzBjZTMuLmNlZGE4MmRmMjQ2
NjQ0MWZhNmZiNDYyMmQwNzk1YTg1YWJhMDBiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIlRleHR1cmVN
YXBwZXJBbmltYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAotI2lmIFVT
RShURVhUVVJFX01BUFBFUikKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpICYmICFVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCBmNTZjZjUxODU5Y2RjN2FiZDgwYzM2YTY5YWZk
MDZjMjg4YTM0YzMzLi5iMGFhNDYzN2Q4YmM2MWZiMmY5NjRlOTNlMTMwMTVkMmUyZTMxNjBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtMjAsNyArMjAsNyBA
QAogI2lmbmRlZiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcl9oCiAjZGVmaW5lIEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyX2gKIAotI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyNpZiBVU0Uo
VEVYVFVSRV9NQVBQRVIpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAKICNpbmNsdWRl
ICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVudC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCA1ZjM0ZjQxODUwMzI2N2NlMDdlYWI2N2U4MDUy
M2ZhMzE4MTA2MzkzLi5mYzc3MTA2MmUxYzAyYWY3MGYzZjNjMzJkNjM3ZmNkMDNlZjg3ZmYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAtNDQ1LDEyICs0NDUsMTQgQEAgVGV4dHVy
ZU1hcHBlckxheWVyOjp+VGV4dHVyZU1hcHBlckxheWVyKCkKICAgICByZW1vdmVGcm9tUGFyZW50
KCk7CiB9CiAKKyNpZiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogdm9pZCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OnNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIG5ld0No
aWxkcmVuKQogewogICAgIHJlbW92ZUFsbENoaWxkcmVuKCk7CiAgICAgZm9yIChhdXRvKiBjaGls
ZCA6IG5ld0NoaWxkcmVuKQogICAgICAgICBhZGRDaGlsZCgmZG93bmNhc3Q8R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI+KGNoaWxkKS0+bGF5ZXIoKSk7CiB9CisjZW5kaWYKIAogdm9pZCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OnNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5
ZXIqPiYgbmV3Q2hpbGRyZW4pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKaW5kZXggMGM5ZGE3
MWJiMTk1Y2I0ZGNkNzFmMTUwZjdmZTdhMmUyNjNhY2FkMi4uNmFkYjY1NGM4MTM0YzUxODdlYTk2
N2Y4MjBjYWVjZDM2N2Q0OGQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtNzgsNyAr
NzgsOSBAQCBwdWJsaWM6CiAgICAgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcigpIGNvbnN0
IHsgcmV0dXJuIHJvb3RMYXllcigpLm1fdGV4dHVyZU1hcHBlcjsgfQogICAgIHZvaWQgc2V0VGV4
dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXhtYXApIHsgbV90ZXh0dXJlTWFwcGVyID0gdGV4
bWFwOyB9CiAKKyNpZiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIHZvaWQgc2V0Q2hp
bGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYpOworI2VuZGlmCiAgICAgdm9pZCBz
ZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8VGV4dHVyZU1hcHBlckxheWVyKj4mKTsKICAgICB2b2lk
IHNldE1hc2tMYXllcihUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKICAgICB2b2lkIHNldFJlcGxpY2FM
YXllcihUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5NzY5MTM0YjRkZDBmOGRlZjIz
ODBhNmUyNzg4M2U4YmFkMDNiZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIu
Y3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMu
TC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyKFJlZlB0cjxCaXRtYXBUZXh0dXJlPiYmIHRleHR1cmUpCisgICAgOiBtX3RleHR1cmUoV1RG
Ojptb3ZlKHRleHR1cmUpKQorICAgICwgbV9leHRyYUZsYWdzKDApCisgICAgLCBtX2hhc01hbmFn
ZWRUZXh0dXJlKHRydWUpCit7Cit9CisKK1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
OjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihHTHVpbnQgdGV4dHVyZUlELCBjb25z
dCBJbnRTaXplJiBzaXplLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzKQorICAgIDogbV90
ZXh0dXJlSUQodGV4dHVyZUlEKQorICAgICwgbV9zaXplKHNpemUpCisgICAgLCBtX2V4dHJhRmxh
Z3MoZmxhZ3MpCisgICAgLCBtX2hhc01hbmFnZWRUZXh0dXJlKGZhbHNlKQoreworfQorCitib29s
IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpjYW5SZXVzZVdpdGhvdXRSZXNldChj
b25zdCBJbnRTaXplJiBzaXplLCBHQzNEaW50IGludGVybmFsRm9ybWF0KQoreworICAgIHJldHVy
biBtX3RleHR1cmUgJiYgKG1fdGV4dHVyZS0+c2l6ZSgpID09IHNpemUpICYmIChzdGF0aWNfY2Fz
dDxCaXRtYXBUZXh0dXJlR0wqPihtX3RleHR1cmUuZ2V0KCkpLT5pbnRlcm5hbEZvcm1hdCgpID09
IGludGVybmFsRm9ybWF0IHx8IGludGVybmFsRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpE
T05UX0NBUkUpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpw
YWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZp
ZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkpCit7CisgICAgaWYgKG1faGFzTWFuYWdlZFRleHR1cmUp
IHsKKyAgICAgICAgQVNTRVJUKG1fdGV4dHVyZSk7CisgICAgICAgIHRleHR1cmVNYXBwZXItPmRy
YXdUZXh0dXJlKCptX3RleHR1cmUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0
eSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQobV90ZXh0dXJlSUQpOwor
ICAgIFRleHR1cmVNYXBwZXJHTCogdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVy
R0wqPih0ZXh0dXJlTWFwcGVyKTsKKyAgICB0ZXhtYXBHTC0+ZHJhd1RleHR1cmUobV90ZXh0dXJl
SUQsIG1fZXh0cmFGbGFncywgbV9zaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9w
YWNpdHkpOworfQorCit9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NmIzOTNiNDIyOTQ3
MWVjNzA1ZTg2NGZjZDNhNmYzZmE5MTNhOTc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyLmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2Fs
aWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyX2gKKyNkZWZpbmUgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXJfaAorCisjaW5j
bHVkZSAiQml0bWFwVGV4dHVyZUdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCisj
aW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlciA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXIpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKCk7CitwdWJsaWM6CisgICAgVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoUmVmUHRyPEJpdG1hcFRleHR1cmU+JiYpOworICAg
IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKEdMdWludCB0ZXh0dXJlSUQsIGNvbnN0
IEludFNpemUmLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzKTsKKworICAgIHZpcnR1YWwgflRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCB2
b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSwgZmxvYXQgb3BhY2l0eSA9IDEuMCkgZmluYWw7CisKKyAgICBib29sIGNh
blJldXNlV2l0aG91dFJlc2V0KGNvbnN0IEludFNpemUmLCBHQzNEaW50IGludGVybmFsRm9ybWF0
KTsKKyAgICBCaXRtYXBUZXh0dXJlR0wmIHRleHR1cmVHTCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PEJpdG1hcFRleHR1cmVHTCY+KCptX3RleHR1cmUpOyB9CisKKyAgICBpbmxpbmUgdm9pZCBtYXJr
VXNlZCgpIHsgbV90aW1lTGFzdFVzZWQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsg
fQorICAgIGRvdWJsZSBsYXN0VXNlZFRpbWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVMYXN0VXNl
ZDsgfQorCisgICAgY2xhc3MgVW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlciB7CisgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIpOworICAgICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRCgpOworICAgIHB1YmxpYzoKKyAgICAgICAgVW5tYW5hZ2Vk
QnVmZmVyRGF0YUhvbGRlcigpIHsgfQorICAgICAgICB2aXJ0dWFsIH5Vbm1hbmFnZWRCdWZmZXJE
YXRhSG9sZGVyKCkgPSBkZWZhdWx0OworICAgIH07CisKKyAgICBib29sIGhhc01hbmFnZWRUZXh0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNYW5hZ2VkVGV4dHVyZTsgfQorICAgIHZvaWQgc2V0
VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcihzdGQ6OnVuaXF1ZV9wdHI8VW5tYW5hZ2VkQnVmZmVy
RGF0YUhvbGRlcj4gaG9sZGVyKSB7IG1fdW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlciA9IFdURjo6
bW92ZShob2xkZXIpOyB9CisKK3ByaXZhdGU6CisKKyAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4g
bV90ZXh0dXJlOworICAgIGRvdWJsZSBtX3RpbWVMYXN0VXNlZCB7IDAgfTsKKworICAgIEdMdWlu
dCBtX3RleHR1cmVJRDsKKyAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBUZXh0dXJlTWFwcGVyR0w6
OkZsYWdzIG1fZXh0cmFGbGFnczsKKyAgICBib29sIG1faGFzTWFuYWdlZFRleHR1cmU7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXI+IG1fdW5tYW5hZ2VkQnVm
ZmVyRGF0YUhvbGRlcjsKK307CisKK307CisKKyNlbmRpZiAvLyBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ZiNjliYjEyOGQzNjY5YmJiZmE5MGExZjBkNjAyZGNh
YzUyMGM5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcApAQCAtMCwwICsx
LDE1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eS5oIgorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorCisj
aW5jbHVkZSAiQml0bWFwVGV4dHVyZUdMLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgi
CisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXIuaCIKKworY29uc3QgZG91YmxlIHNfcmVsZWFzZVVudXNlZFNl
Y29uZHNUb2xlcmFuY2UgPSAxOworY29uc3QgZG91YmxlIHNfcmVsZWFzZVVudXNlZEJ1ZmZlcnNU
aW1lckludGVydmFsID0gMC41OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkoKQor
ICAgIDogbV9jb21wb3NpdG9yKDApCisgICAgLCBtX3RhcmdldExheWVyKDApCisgICAgLCBtX3J1
bkxvb3AoUnVuTG9vcDo6Y3VycmVudCgpKQorICAgICwgbV9yZWxlYXNlVW51c2VkQnVmZmVyc1Rp
bWVyKG1fcnVuTG9vcCwgdGhpcywgJlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnJl
bGVhc2VVbnVzZWRCdWZmZXJzVGltZXJGaXJlZCkKK3sKK30KKworVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eTo6flRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkoKQoreworICAg
IGlmIChtX3RhcmdldExheWVyKQorICAgICAgICBtX3RhcmdldExheWVyLT5zZXRDb250ZW50c0xh
eWVyKG51bGxwdHIpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6
OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZChDb21wb3NpdG9yKiBjb21wb3NpdG9yLCBUZXh0
dXJlTWFwcGVyTGF5ZXIqIHRhcmdldExheWVyKQoreworI2lmbmRlZiBOREVCVUcKKyAgICBtX2Nv
bXBvc2l0b3JUaHJlYWRJRCA9IG1fY29tcG9zaXRvclRocmVhZElEID8gbV9jb21wb3NpdG9yVGhy
ZWFkSUQgOiBXVEY6OmN1cnJlbnRUaHJlYWQoKTsKKyNlbmRpZgorICAgIEFTU0VSVChtX2NvbXBv
c2l0b3JUaHJlYWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGNvbXBv
c2l0b3IpOworICAgIEFTU0VSVCh0YXJnZXRMYXllcik7CisgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9sb2NrKTsKKyAgICBtX2NvbXBvc2l0b3IgPSBjb21wb3NpdG9yOworICAgIG1fdGFyZ2V0TGF5
ZXIgPSB0YXJnZXRMYXllcjsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBy
b3h5OjppbnZhbGlkYXRlKCkKK3sKKyAgICBBU1NFUlQobV9jb21wb3NpdG9yVGhyZWFkSUQgPT0g
V1RGOjpjdXJyZW50VGhyZWFkKCkpOworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Cisg
ICAgbV9jb21wb3NpdG9yID0gbnVsbHB0cjsKKyAgICBtX3RhcmdldExheWVyID0gbnVsbHB0cjsK
K30KKworYm9vbCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojppc0FjdGl2ZSgpCit7
CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICByZXR1cm4gISFtX3RhcmdldExh
eWVyICYmICEhbV9jb21wb3NpdG9yOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHk6OnB1c2hOZXh0QnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcj4gbmV3QnVmZmVyKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
bG9jayk7CisgICAgbV9wZW5kaW5nQnVmZmVyID0gV1RGOjptb3ZlKG5ld0J1ZmZlcik7CisKKyAg
ICBpZiAobV9jb21wb3NpdG9yKQorICAgICAgICBtX2NvbXBvc2l0b3ItPm9uTmV3QnVmZmVyQXZh
aWxhYmxlKCk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6Z2V0QXZhaWxhYmxlQnVm
ZmVyKGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RpbnQgaW50ZXJuYWxGb3JtYXQpCit7CisgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGF2YWlsYWJsZUJ1ZmZlcjsKKworICAgIGF1dG8gYnVm
ZmVycyA9IFdURjo6bW92ZShtX3VzZWRCdWZmZXJzKTsKKyAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6
IGJ1ZmZlcnMpIHsKKyAgICAgICAgaWYgKCFidWZmZXIpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBpZiAoIWF2YWlsYWJsZUJ1ZmZlciAmJiBidWZmZXItPmNhblJldXNlV2l0aG91
dFJlc2V0KHNpemUsIGludGVybmFsRm9ybWF0KSkgeworICAgICAgICAgICAgYXZhaWxhYmxlQnVm
ZmVyID0gV1RGOjptb3ZlKGJ1ZmZlcik7CisgICAgICAgICAgICBhdmFpbGFibGVCdWZmZXItPm1h
cmtVc2VkKCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBtX3Vz
ZWRCdWZmZXJzLmFwcGVuZChXVEY6Om1vdmUoYnVmZmVyKSk7CisgICAgfQorCisgICAgaWYgKCFt
X3VzZWRCdWZmZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgc2NoZWR1bGVSZWxlYXNlVW51c2VkQnVm
ZmVycygpOworICAgIHJldHVybiBhdmFpbGFibGVCdWZmZXI7Cit9CisKK3ZvaWQgVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6c2NoZWR1bGVSZWxlYXNlVW51c2VkQnVmZmVycygpCit7
CisgICAgaWYgKCFtX3JlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXIuaXNBY3RpdmUoKSkKKyAgICAg
ICAgbV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyLnN0YXJ0T25lU2hvdChzX3JlbGVhc2VVbnVz
ZWRCdWZmZXJzVGltZXJJbnRlcnZhbCk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94eTo6cmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckZpcmVkKCkKK3sKKyAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIGlmIChtX3VzZWRCdWZmZXJzLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBidWZmZXJzID0gV1RGOjptb3ZlKG1fdXNlZEJ1
ZmZlcnMpOworICAgIGRvdWJsZSBtaW5Vc2VkVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5n
VGltZSgpIC0gc19yZWxlYXNlVW51c2VkU2Vjb25kc1RvbGVyYW5jZTsKKworICAgIGZvciAoYXV0
byYgYnVmZmVyIDogYnVmZmVycykgeworICAgICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+bGFz
dFVzZWRUaW1lKCkgPj0gbWluVXNlZFRpbWUpCisgICAgICAgICAgICBtX3VzZWRCdWZmZXJzLmFw
cGVuZChXVEY6Om1vdmUoYnVmZmVyKSk7CisgICAgfQorfQorCit2b2lkIFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHk6OnN3YXBCdWZmZXIoKQoreworICAgIEFTU0VSVChtX2NvbXBvc2l0
b3JUaHJlYWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7CisKKyAgICB7CisgICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIGlmICghbV90YXJnZXRMYXllciB8fCAh
bV9wZW5kaW5nQnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChtX2N1
cnJlbnRCdWZmZXIgJiYgbV9jdXJyZW50QnVmZmVyLT5oYXNNYW5hZ2VkVGV4dHVyZSgpKQorICAg
ICAgICAgICAgbV91c2VkQnVmZmVycy5hcHBlbmQoV1RGOjptb3ZlKG1fY3VycmVudEJ1ZmZlcikp
OworCisgICAgICAgIG1fY3VycmVudEJ1ZmZlciA9IFdURjo6bW92ZShtX3BlbmRpbmdCdWZmZXIp
OworICAgICAgICBtX3RhcmdldExheWVyLT5zZXRDb250ZW50c0xheWVyKG1fY3VycmVudEJ1ZmZl
ci5nZXQoKSk7CisgICAgfQorfQorCit9OworCisjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTX1RIUkVBREVEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
clByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA0Zjk1NDA4YzU0NzQ4Y2U2MzA2NTE4M2Y2MTQ3MTNmZDA4
MWUwNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgKQEAgLTAsMCArMSw5NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlfaAorI2RlZmluZSBUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5X2gKKworI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgor
I2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJp
eC5oIgorI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgor
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisjaWZuZGVmIE5ERUJVRworI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFRleHR1cmVNYXBwZXJMYXllcjsKK2NsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHk7CitjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjsKKworY2xhc3Mg
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBwcm94eSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCgpID0gMDsKK307
CisKK2NsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4geworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEKCk7CitwdWJsaWM6CisgICAgY2xhc3MgQ29tcG9zaXRvciB7
CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIHZvaWQgb25OZXdCdWZmZXJBdmFpbGFibGUo
KSA9IDA7CisgICAgfTsKKworICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkoKTsK
KyAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5KCk7CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGdldEF2YWls
YWJsZUJ1ZmZlcihjb25zdCBJbnRTaXplJiwgR0MzRGludCBpbnRlcm5hbEZvcm1hdCk7CisgICAg
dm9pZCBwdXNoTmV4dEJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXI+KTsKKworICAgIHZvaWQgYWN0aXZhdGVPbkNvbXBvc2l0aW5nVGhyZWFkKENv
bXBvc2l0b3IqLCBUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKKyAgICB2b2lkIGludmFsaWRhdGUoKTsK
KyAgICBib29sIGlzQWN0aXZlKCk7CisKKyAgICB2b2lkIHN3YXBCdWZmZXIoKTsKKworcHJpdmF0
ZToKKyAgICB2b2lkIHNjaGVkdWxlUmVsZWFzZVVudXNlZEJ1ZmZlcnMoKTsKKyAgICB2b2lkIHJl
bGVhc2VVbnVzZWRCdWZmZXJzVGltZXJGaXJlZCgpOworCisgICAgQ29tcG9zaXRvciogbV9jb21w
b3NpdG9yOworICAgIFRleHR1cmVNYXBwZXJMYXllciogbV90YXJnZXRMYXllcjsKKworICAgIHN0
ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbV9jdXJyZW50
QnVmZmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcj4gbV9wZW5kaW5nQnVmZmVyOworCisgICAgTG9jayBtX2xvY2s7CisKKyAgICBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPj4gbV91c2Vk
QnVmZmVyczsKKworICAgIFJ1bkxvb3AmIG1fcnVuTG9vcDsKKyAgICBSdW5Mb29wOjpUaW1lcjxU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBtX3JlbGVhc2VVbnVzZWRCdWZmZXJzVGlt
ZXI7CisjaWZuZGVmIE5ERUJVRworICAgIFRocmVhZElkZW50aWZpZXIgbV9jb21wb3NpdG9yVGhy
ZWFkSUQgeyAwIH07CisjZW5kaWYKK307CisKK307CisKKyNlbmRpZiAvLyBUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggZmRmNmJlN2NmZTIyNDRhODI4MmJkODY0
YWRhYzYxM2U2ZWFkM2YzZC4uODVkMmY2ZmFkNGZkYjRjMGFlMDFhYzc3NjA0MjQ5MzVmNmVkODFj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisj
aW5jbHVkZSAiR3JhcGhpY3NMYXllckZhY3RvcnkuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaWZuZGVmIE5ERUJVRwpAQCAtNDIsNiArNDIsMTQgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NMYXllcj4gR3JhcGhpY3NMYXllcjo6
Y3JlYXRlKEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBmYWN0b3J5LCBHcmFwaGljc0xheWVyQ2xpZW50
JiBjbGllbnQsIFR5cGUgbGF5ZXJUeXBlKQoreworICAgIGlmICghZmFjdG9yeSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyPihsYXllclR5
cGUsIGNsaWVudCk7CisKKyAgICByZXR1cm4gZmFjdG9yeS0+Y3JlYXRlR3JhcGhpY3NMYXllcihs
YXllclR5cGUsIGNsaWVudCk7Cit9CisKIHN0YXRpYyBDb29yZGluYXRlZExheWVySUQgdG9Db29y
ZGluYXRlZExheWVySUQoR3JhcGhpY3NMYXllciogbGF5ZXIpCiB7CiAgICAgcmV0dXJuIGxheWVy
ID8gdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5pZCgpIDogMDsKQEAgLTEyMSw2
ICsxMjksOSBAQCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcihUeXBlIGxheWVyVHlwZSwgR3JhcGhpY3NMYXllcgogICAgICwgbV9pc1ZhbGlkUGxhdGZv
cm1MYXllcihmYWxzZSkKICAgICAsIG1fcGVuZGluZ1BsYXRmb3JtTGF5ZXJPcGVyYXRpb24oTm9u
ZSkKICNlbmRpZgorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICAs
IG1fc2hvdWxkU3luY1BsYXRmb3JtTGF5ZXIoZmFsc2UpCisjZW5kaWYKICAgICAsIG1fY29vcmRp
bmF0b3IoMCkKICAgICAsIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKDApCiAgICAgLCBtX3Bs
YXRmb3JtTGF5ZXIoMCkKQEAgLTQwNiw2ICs0MTcsMTIgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqIHBsYXRm
b3IKICAgICBBU1NFUlQoISghbV9wbGF0Zm9ybUxheWVyVG9rZW4uaXNWYWxpZCgpICYmIG1fcGxh
dGZvcm1MYXllcikpOwogCiAgICAgbm90aWZ5Rmx1c2hSZXF1aXJlZCgpOworI2VsaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIGlmIChtX3BsYXRmb3JtTGF5ZXIgIT0g
cGxhdGZvcm1MYXllcikKKyAgICAgICAgbV9zaG91bGRTeW5jUGxhdGZvcm1MYXllciA9IHRydWU7
CisKKyAgICBtX3BsYXRmb3JtTGF5ZXIgPSBwbGF0Zm9ybUxheWVyOworICAgIG5vdGlmeUZsdXNo
UmVxdWlyZWQoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBsYXRmb3JtTGF5ZXIpOwogI2Vu
ZGlmCkBAIC02OTQsOSArNzExLDkgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5
bmNBbmltYXRpb25zKCkKICAgICBtX2xheWVyU3RhdGUuYW5pbWF0aW9uc0NoYW5nZWQgPSB0cnVl
OwogfQogCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6c3luY1BsYXRmb3JtTGF5ZXIoKQogeworI2lmIFVTRShHUkFQSElDU19TVVJGQUNF
KQogICAgIGRlc3Ryb3lQbGF0Zm9ybUxheWVySWZOZWVkZWQoKTsKICAgICBjcmVhdGVQbGF0Zm9y
bUxheWVySWZOZWVkZWQoKTsKIApAQCAtNzExLDggKzcyOCwyMCBAQCB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6c3luY1BsYXRmb3JtTGF5ZXIoKQogICAgIEFTU0VSVChtX3BsYXRmb3Jt
TGF5ZXIpOwogICAgIG1fbGF5ZXJTdGF0ZS5wbGF0Zm9ybUxheWVyRnJvbnRCdWZmZXIgPSBtX3Bs
YXRmb3JtTGF5ZXItPmNvcHlUb0dyYXBoaWNzU3VyZmFjZSgpOwogICAgIG1fbGF5ZXJTdGF0ZS5w
bGF0Zm9ybUxheWVyU2hvdWxkU3dhcEJ1ZmZlcnMgPSB0cnVlOworI2VsaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIGlmICghbV9zaG91bGRTeW5jUGxhdGZvcm1MYXll
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zaG91bGRTeW5jUGxhdGZvcm1MYXllciA9IGZh
bHNlOworICAgIG1fbGF5ZXJTdGF0ZS5wbGF0Zm9ybUxheWVyQ2hhbmdlZCA9IHRydWU7CisgICAg
aWYgKG1fcGxhdGZvcm1MYXllcikgeworICAgICAgICBtX3BsYXRmb3JtTGF5ZXItPnN3YXBCdWZm
ZXJzSWZOZWVkZWQoKTsKKyAgICAgICAgbV9sYXllclN0YXRlLnBsYXRmb3JtTGF5ZXJQcm94eSA9
IG1fcGxhdGZvcm1MYXllci0+cHJveHkoKTsKKyAgICB9CisjZW5kaWYKIH0KIAorI2lmIFVTRShH
UkFQSElDU19TVVJGQUNFKQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmRlc3Ryb3lQ
bGF0Zm9ybUxheWVySWZOZWVkZWQoKQogewogICAgIGlmICghKG1fcGVuZGluZ1BsYXRmb3JtTGF5
ZXJPcGVyYXRpb24gJiBEZXN0cm95UGxhdGZvcm1MYXllcikpCkBAIC03NjMsOSArNzkyLDcgQEAg
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRo
aXNMYXllck9ubHkoYm9vbCkKICAgICBjb21wdXRlVHJhbnNmb3JtZWRWaXNpYmxlUmVjdCgpOwog
ICAgIHN5bmNDaGlsZHJlbigpOwogICAgIHN5bmNGaWx0ZXJzKCk7Ci0jaWYgVVNFKEdSQVBISUNT
X1NVUkZBQ0UpCiAgICAgc3luY1BsYXRmb3JtTGF5ZXIoKTsKLSNlbmRpZgogCiAgICAgLy8gT25s
eSB1bnNldCBtX21vdmluZ1Zpc2libGVSZWN0IGFmdGVyIHdlIGhhdmUgdXBkYXRlZCB0aGUgdmlz
aWJsZSByZWN0IGFmdGVyIHRoZSBhbmltYXRpb24gc3RvcHBlZC4KICAgICBpZiAoIWhhc0FjdGl2
ZVRyYW5zZm9ybUFuaW1hdGlvbikKQEAgLTExODksNSArMTIxNiwxNyBAQCB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQoKQogewogICAgIGNs
aWVudCgpLm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgIiIsIG1fbGFzdEFuaW1hdGlvblN0
YXJ0VGltZSk7CiB9CisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCit2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cGxhdGZvcm1MYXllcldpbGxCZURlc3Ryb3ll
ZCgpCit7Cit9CisKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRQbGF0Zm9ybUxh
eWVyTmVlZHNEaXNwbGF5KCkKK3sKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggNTQ2NTY2NGM5
ZmQzNmM3NDViMDU4MWQyNDhjNDk1YjY5NTc4NmEyNi4uOGE0NWMzNTY1ODU3MDQzNTcxYjJlMzU5
Zjc2NmVmOTFiZDQwY2NjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkltYWdl
LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJBbmltYXRp
b24uaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUg
IlRpbGVkQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiVGlsZWRCYWNraW5nU3RvcmVDbGllbnQu
aCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgpAQCAtNTcsNiArNTgsOSBAQCBw
dWJsaWM6CiAKIGNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciA6IHB1YmxpYyBHcmFwaGlj
c0xheWVyCiAgICAgLCBwdWJsaWMgVGlsZWRCYWNraW5nU3RvcmVDbGllbnQKKyNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgLCBwdWJsaWMgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXI6OkNsaWVudAorI2VuZGlmCiAgICAgLCBwdWJsaWMgQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmc6Okhvc3QgewogcHVibGljOgogICAgIGV4cGxpY2l0IENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcihUeXBlLCBHcmFwaGljc0xheWVyQ2xpZW50Jik7CkBAIC0xNTUsMTAgKzE1OSwxNCBA
QCBwcml2YXRlOgogICAgICAgICBSZWNyZWF0ZVBsYXRmb3JtTGF5ZXIgPSBDcmVhdGVBbmRTeW5j
UGxhdGZvcm1MYXllciB8IERlc3Ryb3lQbGF0Zm9ybUxheWVyCiAgICAgfTsKIAotICAgIHZvaWQg
c3luY1BsYXRmb3JtTGF5ZXIoKTsKICAgICB2b2lkIGRlc3Ryb3lQbGF0Zm9ybUxheWVySWZOZWVk
ZWQoKTsKICAgICB2b2lkIGNyZWF0ZVBsYXRmb3JtTGF5ZXJJZk5lZWRlZCgpOwogI2VuZGlmCisg
ICAgdm9pZCBzeW5jUGxhdGZvcm1MYXllcigpOworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
U19USFJFQURFRCkKKyAgICB2b2lkIHBsYXRmb3JtTGF5ZXJXaWxsQmVEZXN0cm95ZWQoKTsKKyAg
ICB2b2lkIHNldFBsYXRmb3JtTGF5ZXJOZWVkc0Rpc3BsYXkoKTsKKyNlbmRpZgogCiAgICAgdmly
dHVhbCB2b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgd2lkdGgpIG92ZXJy
aWRlOwogCkBAIC0yMjMsNiArMjMxLDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNWYWxpZFBs
YXRmb3JtTGF5ZXIgOiAxOwogICAgIHVuc2lnbmVkIG1fcGVuZGluZ1BsYXRmb3JtTGF5ZXJPcGVy
YXRpb24gOiAzOwogI2VuZGlmCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVE
KQorICAgIGJvb2wgbV9zaG91bGRTeW5jUGxhdGZvcm1MYXllciA6IDE7CisjZW5kaWYKIAogICAg
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCogbV9jb29yZGluYXRvcjsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8VGlsZWRCYWNraW5nU3RvcmU+IG1fbWFpbkJhY2tpbmdTdG9yZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaAppbmRl
eCAxNGYyYjc3NTA0Njc4ZjA5NzYyNzgxODAyMmRmYmVmYTI3MjQyZGY2Li44NGU3YjI3NGMxYTYy
MTY5NGQ2OGMwNDI4Nzg4ZGYzYTU4Nzc3NDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oCkBAIC00NCw2ICs0NCwxMCBAQAogI2lu
Y2x1ZGUgIkdyYXBoaWNzU3VyZmFjZVRva2VuLmgiCiAjZW5kaWYKIAorI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDU19USFJFQURFRCkKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllclByb3h5LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb29y
ZGluYXRlZFN1cmZhY2U7CkBAIC0xMzAsNiArMTM0LDkgQEAgc3RydWN0IENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllclN0YXRlIHsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICAgICAgLCBw
bGF0Zm9ybUxheWVyRnJvbnRCdWZmZXIoMCkKICNlbmRpZgorI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDU19USFJFQURFRCkKKyAgICAgICAgLCBwbGF0Zm9ybUxheWVyUHJveHkoMCkKKyNlbmRp
ZgogICAgIHsKICAgICB9CiAKQEAgLTE2NCw2ICsxNzEsMTAgQEAgc3RydWN0IENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllclN0YXRlIHsKICAgICBHcmFwaGljc1N1cmZhY2U6OkZsYWdzIHBsYXRmb3Jt
TGF5ZXJTdXJmYWNlRmxhZ3M7CiAjZW5kaWYKIAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
U19USFJFQURFRCkKKyAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4g
cGxhdGZvcm1MYXllclByb3h5OworI2VuZGlmCisKICAgICBJbnRTaXplIGNvbW1pdHRlZFNjcm9s
bE9mZnNldDsKIAogICAgIGJvb2wgaGFzUGVuZGluZ0NoYW5nZXMoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggZGVhYjA0NzNmZWFmNmJmNGE5
NzhiMjQ5ZTc1NmY2NTcyNzJjZTgwZS4uMzA2MTFmMTM1NTkzOGQyMzc2Yzc0MzgxY2M0ZWFhNGQ2
ZTk1MmRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCkBA
IC04Myw2ICs4MywxMSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRUb0N1
cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaQogICAgIGlmICghY3VycmVu
dFJvb3RMYXllcikKICAgICAgICAgcmV0dXJuOwogCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTX1RIUkVBREVEKQorICAgIGZvciAoUGxhdGZvcm1MYXllclByb3h5TWFwOjppdGVyYXRvciBp
dCA9IG1fcGxhdGZvcm1MYXllclByb3hpZXMuYmVnaW4oKTsgaXQgIT0gbV9wbGF0Zm9ybUxheWVy
UHJveGllcy5lbmQoKTsgKytpdCkKKyAgICAgICAgaXQtPnZhbHVlLT5zd2FwQnVmZmVyKCk7Cisj
ZW5kaWYKKwogICAgIGN1cnJlbnRSb290TGF5ZXItPnNldFRleHR1cmVNYXBwZXIobV90ZXh0dXJl
TWFwcGVyLmdldCgpKTsKICAgICBjdXJyZW50Um9vdExheWVyLT5hcHBseUFuaW1hdGlvbnNSZWN1
cnNpdmVseSgpOwogICAgIG1fdGV4dHVyZU1hcHBlci0+YmVnaW5QYWludGluZyhQYWludEZsYWdz
KTsKQEAgLTE2NCwyMCArMTY5LDkgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmFk
anVzdFBvc2l0aW9uRm9yRml4ZWRMYXllcnMoY29uc3QgRmxvYXRQb2ludCYgY28KICAgICAgICAg
Zml4ZWRMYXllci0+c2V0U2Nyb2xsUG9zaXRpb25EZWx0YUlmTmVlZGVkKGRlbHRhKTsKIH0KIAot
I2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6
OmNyZWF0ZVBsYXRmb3JtTGF5ZXJJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyLCBj
b25zdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYgc3RhdGUpCi17Ci0gICAgaWYgKCFz
dGF0ZS5wbGF0Zm9ybUxheWVyVG9rZW4uaXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBSZWZQdHI8VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU+IHBsYXRmb3JtTGF5ZXJC
YWNraW5nU3RvcmUoVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OmNyZWF0ZSgpKTsK
LSAgICBtX3N1cmZhY2VCYWNraW5nU3RvcmVzLnNldChsYXllciwgcGxhdGZvcm1MYXllckJhY2tp
bmdTdG9yZSk7Ci0gICAgcGxhdGZvcm1MYXllckJhY2tpbmdTdG9yZS0+c2V0R3JhcGhpY3NTdXJm
YWNlKEdyYXBoaWNzU3VyZmFjZTo6Y3JlYXRlKHN0YXRlLnBsYXRmb3JtTGF5ZXJTaXplLCBzdGF0
ZS5wbGF0Zm9ybUxheWVyU3VyZmFjZUZsYWdzLCBzdGF0ZS5wbGF0Zm9ybUxheWVyVG9rZW4pKTsK
LSAgICBsYXllci0+c2V0Q29udGVudHNMYXllcihwbGF0Zm9ybUxheWVyQmFja2luZ1N0b3JlLmdl
dCgpKTsKLX0KLQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnN5bmNQbGF0Zm9ybUxh
eWVySWZOZWVkZWQoVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciwgY29uc3QgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyU3RhdGUmIHN0YXRlKQogeworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQog
ICAgIEFTU0VSVChtX3RleHR1cmVNYXBwZXIpOwogCiAgICAgaWYgKHN0YXRlLnBsYXRmb3JtTGF5
ZXJDaGFuZ2VkKSB7CkBAIC0xOTEsNiArMTg1LDQxIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lOjpzeW5jUGxhdGZvcm1MYXllcklmTmVlZGVkKFRleHR1cmVNYXBwZXJMYXllciogbGF5
CiAgICAgICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZT4gcGxhdGZv
cm1MYXllckJhY2tpbmdTdG9yZSA9IGl0LT52YWx1ZTsKICAgICAgICAgcGxhdGZvcm1MYXllckJh
Y2tpbmdTdG9yZS0+c3dhcEJ1ZmZlcnNJZk5lZWRlZChzdGF0ZS5wbGF0Zm9ybUxheWVyRnJvbnRC
dWZmZXIpOwogICAgIH0KKyNlbGlmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkK
KyAgICBpZiAoIXN0YXRlLnBsYXRmb3JtTGF5ZXJDaGFuZ2VkKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoc3RhdGUucGxhdGZvcm1MYXllclByb3h5KSB7CisgICAgICAgIG1fcGxhdGZvcm1M
YXllclByb3hpZXMuc2V0KGxheWVyLCBzdGF0ZS5wbGF0Zm9ybUxheWVyUHJveHkpOworICAgICAg
ICBzdGF0ZS5wbGF0Zm9ybUxheWVyUHJveHktPmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZCh0
aGlzLCBsYXllcik7CisgICAgfSBlbHNlCisgICAgICAgIG1fcGxhdGZvcm1MYXllclByb3hpZXMu
cmVtb3ZlKGxheWVyKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGxheWVyKTsKKyAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworI2VuZGlmCit9CisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1NfVEhSRUFERUQpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6b25OZXdCdWZmZXJB
dmFpbGFibGUoKQoreworICAgIFJlZlB0cjxDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU+IHByb3Rl
Y3Rvcih0aGlzKTsKKyAgICBkaXNwYXRjaE9uQ2xpZW50UnVuTG9vcChbPV0geworICAgICAgICBw
cm90ZWN0b3ItPnVwZGF0ZVZpZXdwb3J0KCk7CisgICAgfSk7Cit9CisjZW5kaWYKKworI2lmIFVT
RShHUkFQSElDU19TVVJGQUNFKQordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0
ZVBsYXRmb3JtTGF5ZXJJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyLCBjb25zdCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYgc3RhdGUpCit7CisgICAgaWYgKCFzdGF0ZS5w
bGF0Zm9ybUxheWVyVG9rZW4uaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQ
dHI8VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU+IHBsYXRmb3JtTGF5ZXJCYWNraW5n
U3RvcmUoVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OmNyZWF0ZSgpKTsKKyAgICBt
X3N1cmZhY2VCYWNraW5nU3RvcmVzLnNldChsYXllciwgcGxhdGZvcm1MYXllckJhY2tpbmdTdG9y
ZSk7CisgICAgcGxhdGZvcm1MYXllckJhY2tpbmdTdG9yZS0+c2V0R3JhcGhpY3NTdXJmYWNlKEdy
YXBoaWNzU3VyZmFjZTo6Y3JlYXRlKHN0YXRlLnBsYXRmb3JtTGF5ZXJTaXplLCBzdGF0ZS5wbGF0
Zm9ybUxheWVyU3VyZmFjZUZsYWdzLCBzdGF0ZS5wbGF0Zm9ybUxheWVyVG9rZW4pKTsKKyAgICBs
YXllci0+c2V0Q29udGVudHNMYXllcihwbGF0Zm9ybUxheWVyQmFja2luZ1N0b3JlLmdldCgpKTsK
IH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRlc3Ryb3lQbGF0Zm9ybUxheWVy
SWZOZWVkZWQoVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciwgY29uc3QgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyU3RhdGUmIHN0YXRlKQpAQCAtMzEzLDkgKzM0Miw3IEBAIHZvaWQgQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lOjpzZXRMYXllclN0YXRlKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29u
c3QgQ29vcmRpCiAgICAgdXBkYXRlVGlsZXNJZk5lZWRlZChsYXllciwgbGF5ZXJTdGF0ZSk7CiAg
ICAgc2V0TGF5ZXJGaWx0ZXJzSWZOZWVkZWQobGF5ZXIsIGxheWVyU3RhdGUpOwogICAgIHNldExh
eWVyQW5pbWF0aW9uc0lmTmVlZGVkKGxheWVyLCBsYXllclN0YXRlKTsKLSNpZiBVU0UoR1JBUEhJ
Q1NfU1VSRkFDRSkKICAgICBzeW5jUGxhdGZvcm1MYXllcklmTmVlZGVkKGxheWVyLCBsYXllclN0
YXRlKTsKLSNlbmRpZgogICAgIHNldExheWVyUmVwYWludENvdW50SWZOZWVkZWQobGF5ZXIsIGxh
eWVyU3RhdGUpOwogfQogCkBAIC0zNTQsNiArMzgxLDEwIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjpkZWxldGVMYXllcihDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCkKICNpZiBV
U0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBtX3N1cmZhY2VCYWNraW5nU3RvcmVzLnJlbW92ZShs
YXllci5nZXQoKSk7CiAjZW5kaWYKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFE
RUQpCisgICAgaWYgKGF1dG8gcGxhdGZvcm1MYXllclByb3h5ID0gbV9wbGF0Zm9ybUxheWVyUHJv
eGllcy50YWtlKGxheWVyLmdldCgpKSkKKyAgICAgICAgcGxhdGZvcm1MYXllclByb3h5LT5pbnZh
bGlkYXRlKCk7CisjZW5kaWYKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNl
dFJvb3RMYXllcklEKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklEKQpAQCAtNjMyLDYgKzY2Myw5
IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwdXJnZUdMUmVzb3VyY2VzKCkKICNp
ZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBtX3N1cmZhY2VCYWNraW5nU3RvcmVzLmNsZWFy
KCk7CiAjZW5kaWYKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAg
bV9wbGF0Zm9ybUxheWVyUHJveGllcy5jbGVhcigpOworI2VuZGlmCiAgICAgbV9zdXJmYWNlcy5j
bGVhcigpOwogCiAgICAgbV9yb290TGF5ZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUuaAppbmRleCA2OTA2NWM5YTU2ZjhmMjI3NTZjZDdhNWJkNTFkMjBl
OTcyNTQ5MzRiLi42OGFhYmZlNDBjNGRmODE5N2QxNmZiZDYyYjhhZmZhNWU5YzI3OTYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaApAQCAtNDUsNiArNDUsMTAgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmg+CiAj
ZW5kaWYKIAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyNpbmNsdWRl
IDxXZWJDb3JlL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaD4KKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU7CkBAIC01
OCw3ICs2MiwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdFNjcm9sbE9mZnNl
dCh1aW50MzJfdCBsYXllcklELCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBvZmZzZXQpID0gMDsK
IH07CiAKLWNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU+LCBwdWJsaWMgV2ViQ29yZTo6VGV4
dHVyZU1hcHBlckxheWVyOjpTY3JvbGxpbmdDbGllbnQgeworY2xhc3MgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZT4sIHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlNjcm9sbGluZ0Ns
aWVudAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICAsIHB1Ymxp
YyBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpDb21wb3NpdG9yCisj
ZW5kaWYKK3sKIHB1YmxpYzoKICAgICBleHBsaWNpdCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUo
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lKCk7CkBAIC05NCw5ICsxMDIsOSBAQCBwcml2YXRlOgogICAgIHZvaWQg
cmVtb3ZlVGlsZXNJZk5lZWRlZChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqLCBjb25zdCBX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwogICAgIHZvaWQgc2V0TGF5
ZXJGaWx0ZXJzSWZOZWVkZWQoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgY29uc3QgV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKICAgICB2b2lkIHNldExheWVy
QW5pbWF0aW9uc0lmTmVlZGVkKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllciosIGNvbnN0IFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CisgICAgdm9pZCBzeW5jUGxh
dGZvcm1MYXllcklmTmVlZGVkKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllciosIGNvbnN0IFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CiAjaWYgVVNFKEdSQVBISUNT
X1NVUkZBQ0UpCiAgICAgdm9pZCBjcmVhdGVQbGF0Zm9ybUxheWVySWZOZWVkZWQoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckxheWVyKiwgY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyU3RhdGUmKTsKLSAgICB2b2lkIHN5bmNQbGF0Zm9ybUxheWVySWZOZWVkZWQoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckxheWVyKiwgY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyU3RhdGUmKTsKICAgICB2b2lkIGRlc3Ryb3lQbGF0Zm9ybUxheWVySWZOZWVkZWQoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyU3RhdGUmKTsKICNlbmRpZgogICAgIHZvaWQgc2V0TGF5ZXJSZXBhaW50Q291bnRJZk5l
ZWRlZChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqLCBjb25zdCBXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwpAQCAtMTQ0LDYgKzE1MiwxMCBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBkaXNwYXRjaENvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBvZmZzZXQpOwogCisjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTX1RIUkVBREVEKQorICAgIHZpcnR1YWwgdm9pZCBvbk5ld0J1ZmZlckF2YWlsYWJsZSgp
IG92ZXJyaWRlOworI2VuZGlmCisKICAgICAvLyBSZW5kZXIgcXVldWUgY2FuIGJlIGFjY2Vzc2Vk
IG9ueSBmcm9tIG1haW4gdGhyZWFkIG9yIHVwZGF0ZVBhaW50Tm9kZSBjYWxsIHN0YWNrIQogICAg
IFZlY3RvcjxzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4+IG1fcmVuZGVyUXVldWU7CiAgICAgTG9jayBt
X3JlbmRlclF1ZXVlTXV0ZXg7CkBAIC0xNjQsNiArMTc2LDExIEBAIHByaXZhdGU6CiAgICAgU3Vy
ZmFjZUJhY2tpbmdTdG9yZU1hcCBtX3N1cmZhY2VCYWNraW5nU3RvcmVzOwogI2VuZGlmCiAKKyNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgdHlwZWRlZiBIYXNoTWFw
PFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllciosIFJlZlB0cjxXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5Pj4gUGxhdGZvcm1MYXllclByb3h5TWFwOworICAgIFBsYXRm
b3JtTGF5ZXJQcm94eU1hcCBtX3BsYXRmb3JtTGF5ZXJQcm94aWVzOworI2VuZGlmCisKICAgICB0
eXBlZGVmIEhhc2hNYXA8dWludDMyX3QgLyogYXRsYXNJRCAqLywgUmVmUHRyPFdlYkNvcmU6OkNv
b3JkaW5hdGVkU3VyZmFjZT4+IFN1cmZhY2VNYXA7CiAgICAgU3VyZmFjZU1hcCBtX3N1cmZhY2Vz
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266767</attachid>
            <date>2015-12-07 03:47:47 -0800</date>
            <delta_ts>2015-12-07 04:02:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143299-20151207124718.patch</filename>
            <type>text/plain</type>
            <size>46728</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzNTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjMxMzMzMWJhNDZhYzk2
ZDYyMTZkZDdmZmJmNGRiMmJmZDhkOGNkOS4uM2FiYTk0M2UzNjYyZjA3ZWM4MzZkZDFhOWZhYjBi
MmI0MGE3YTE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE1LTEwLTMxICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtUaHJlYWRlZENvbXBv
c2l0b3JdIEFkZCBzdXBwb3J0IGZvciBQbGF0Zm9ybUxheWVyLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMjk5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkgYW5kIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyIHRvCisgICAgICAgIHNlbmQgYSB0ZXh0dXJlIChhY3R1YWwgdGV4dHVyZSBvciBCaXRt
YXBUZXh0dXJlKSB0byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkIGRpcmVjdGx5LgorICAgICAgICBQ
bGF0Zm9ybSBsYXllciByZW5kZXJlcnMgc2hvdWxkIGltcGxlbWVudCBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5UHJvdmlkZXIgdG8gZXN0YWJsaXNoCisgICAgICAgIGEgY29ubmVjdGlv
biB0byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkLiBBZnRlciB0aGUgY29ubmVjdGlvbiBoYXMgYmVl
biBlc3RhYmxpc2hlZCwgdGhlIHJlbmRlcmVyCisgICAgICAgIGNhbiByZW5kZXIgaXRzIGNvbnRl
bnRzIHRvIHRoZSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlciBhbmQgcGFzcyBpdCB0
byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkCisgICAgICAgIHZpYSBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllciBwcm94eS4KKyAgICAgICAgVGhlIGJ1ZmZlciBjYW4gYmUgYW4gdW5tYW5hZ2VkIHRl
eHR1cmUgKGEuay5hLiBwbGF0Zm9ybSB0ZXh0dXJlKSBvciBCaXRtYXBUZXh0dXJlLgorICAgICAg
ICBGb3IgdGhlIHVubWFuYWdlZCB0ZXh0dXJlLCB0aGUgcmVuZGVyZXIgc2hvdWxkIG1hbmFnZSBp
dHMgbGlmZSBjeWNsZSBpdHNlbGYuIEZvciB0aGUgQml0bWFwVGV4dHVyZSwKKyAgICAgICAgaXQg
d2lsbCBiZSBtYW5hZ2VkIGJ5IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuIEluIHRo
YXQgY2FzZSwgdXNlZCAoc3dhcHBlZCkgYnVmZmVyIHdpbGwgYmUKKyAgICAgICAgcmVjeWNsZWQg
YmVjYXVzZSB0aGUgcmVuZGVyZXIgd2lsbCB1c2Ugc2FtZSBzaXplIGFuZCBmb3JtYXQgdW50aWwg
aXQgY2hhbmdlcyBpdHMgc2l6ZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLgorCisg
ICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgIEFkZHMgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXIgYW5kIFRleHR1cmVNYXBwZXJQbGF5dGZvcm1MYXllclByb3h5Lgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWly
by5oOgorICAgICAgICBBZGRzIG1vY2sgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmg6CisgICAgICAgIEFkZHMgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVyIGFzIGEgUGxhdGZvcm1MYXllciBmb3IgdGhlIFRo
cmVhZGVkIENvbXBvc2l0b3IKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlR0wuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6aW50
ZXJuYWxGb3JtYXQpOiBBZGRzIGEgZ2V0dGVyIHRvIGNoZWNrIHRoZQorICAgICAgICBpbnRlcm5h
bCBmb3JtYXQgb2YgdGV4dHVyZSB0byBjaGVjayByZXVzYWJpbGl0eS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5oOgorICAgICAgICBFeGNsdWRlIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGZy
b20gYnVpbGQgd2hlbiB3ZSBhcmUgdXNpbmcgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eS5oOiBBZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgQmVjYXVzZSB3ZSBy
ZW1vdmVkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGZyb20gYnVpbGQsIHdlIG5lZWQgdG8g
YWRkIG93biBmYWN0b3J5IGZ1bmN0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY1BsYXRmb3JtTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpwbGF0Zm9ybUxheWVyV2ls
bEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6c2V0UGxhdGZvcm1MYXllck5lZWRzRGlzcGxheSk6CisgICAgICAgIEltcGxlbWVudHMgc3lu
YyBvcGVyYXRpb25zIGZvciBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5CisKIDIwMTUt
MTItMDQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgQ09SRVRFWFRfV0VCX0ZPTlRTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjRiODFhODgwNjA4YjUx
MTRlZDZlNDk0MjIwMGJjYjU0YjE0YThhMy4uZGNmZDUwOTJjM2QxMmEyMmExYWFkYTJhZTEzZTQ3
MWE0ZGYzZjIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE1LTEwLTMxICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtUaHJlYWRlZENvbXBv
c2l0b3JdIEFkZCBzdXBwb3J0IGZvciBQbGF0Zm9ybUxheWVyLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMjk5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KToKKyAgICAgICAgU3dh
cCBwZW5kaW5nIGJ1ZmZlcnMgb2YgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94aWVzIGJl
Zm9yZSBwYWludGluZyBjb250ZW50cy4KKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjpzeW5jUGxhdGZvcm1MYXllcklmTmVlZGVkKToKKyAgICAgICAgSW4gdGhyZWFk
ZWQgY29tcG9zaXRvciwgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5jZSBvbmx5IGNhcmVzIGFib3V0
IGNyZWF0aW9uIGFuZCBkZWxldGlvbgorICAgICAgICBvZiBwbGF0Zm9ybSBsYXllcnMuCisKKyAg
ICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpvbk5ld0J1ZmZlckF2YWls
YWJsZSk6CisgICAgICAgIFdoZW5ldmVyIG5ldyBidWZmZXIgY29tZXMgdmlhIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHksIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSB3aWxsCisgICAg
ICAgIHVwZGF0ZSB0aGUgc2NlbmUgaWYgaXQgaXMgbmVlZGVkLgorCiAyMDE1LTEyLTA0ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggd2hlbiBz
ZWNvbmRhcnkgY2xpY2tpbmcgb24gYSBsaW5rIG9uIHlhaG9vLmNvbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdU
Sy5jbWFrZQppbmRleCA4ZTc4OTA3ZDBiMjFkOGUwNGMzODZhM2UzYzRkNTQ3YzA2MDY1MjYwLi44
YzhmZDJiZjdhOTllNDc5YjZmY2JkNjRjODg5NTg5NGE1YzQ2YTM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZQpAQCAtNDQyLDYgKzQ0Miw4IEBAIGlmIChFTkFCTEVfVEhSRUFERURfQ09NUE9T
SVRPUikKICAgICAgICAgcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxp
bmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCiAgICAgICAgIHBhZ2Uvc2Nyb2xs
aW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nU3RhdGVOb2RlQ29vcmRpbmF0ZWRHcmFw
aGljcy5jcHAKIAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcAogICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQXJlYUFsbG9jYXRvci5jcHAKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3Iu
Y3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAppbmRleCBiMWNk
Y2NjYjY3MmZmMDI1ZGYyN2Y4Y2E3ODc0ZDkzZjJkMTA1ZjEzLi5lMTU0NGJmYTk4YmZjYTA4ZDc4
ODc0NDU3YjBiOTRhZWZjZDg5Y2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTYz
LDcgKzYzLDcgQEAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEcKIAogR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjp+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKCkKIHsKLSNpZiBVU0UoVEVYVFVSRV9N
QVBQRVIpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTX1RIUkVBREVEKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnBsYXRm
b3JtTGF5ZXJXaWxsQmVEZXN0cm95ZWQoKTsKICNlbmRpZgpAQCAtNzksNyArNzksMTMgQEAgUGxh
dGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBsYXRmb3Jt
Q29udGV4dCgpCiAgICAgcmV0dXJuIG1fZ2xDb250ZXh0ID8gbV9nbENvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpIDogR0xDb250ZXh0OjpnZXRDdXJyZW50KCktPnBsYXRmb3JtQ29udGV4dCgpOwog
fQogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
U19USFJFQURFRCkKK1JlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OnByb3h5KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQog
dm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1
cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICBp
ZiAoIW1fZ2xDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAppbmRleCA5ZDcwZWU2OWUwMjFl
ZDVlYmVlYThlOGJjYjBlZDExN2I4ZjgwYzJjLi45ZmM5MjI0MmU4YmY1NTdhNWMxNGNjYzllN2Rl
YjRjMzZlZWZkNTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaApAQCAtMjMsMTQgKzIzLDE4IEBA
CiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIK
IAotI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Nf
VEhSRUFERUQpCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oIgor
I2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIDogcHVibGljIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHlQcm92aWRlcgorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQogICAgIDog
cHVibGljIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyCiAjZW5kaWYKIHsKQEAgLTQyLDcgKzQ2
LDEwIEBAIHB1YmxpYzoKIAogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5k
ZXJTdHlsZSgpIHsgcmV0dXJuIG1fcmVuZGVyU3R5bGU7IH0KIAotI2lmIFVTRShURVhUVVJFX01B
UFBFUikKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgdmlydHVh
bCBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gcHJveHkoKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCgpIG92ZXJyaWRl
IHsgfTsKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUikKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRU
b1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHkpOwogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5ZXIuaAppbmRl
eCBmOTBmYzY3Y2M5MTRkZDYwNGU3M2ViZTBmNDU2ZDI5NDVmM2ZhNmQ3Li4yOWY5ZGVjYjI0YmEy
ZDQ0ZTQxMDFkMDNjMTgwOTlkYWFiMTVlZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1MYXllci5oCkBAIC0zMSw2ICszMSwxMSBAQCBPQkpDX0NM
QVNTIENBTGF5ZXI7CiB0eXBlZGVmIENBTGF5ZXIgUGxhdGZvcm1MYXllcjsKICNlbGlmIFBMQVRG
T1JNKFdJTikgJiYgVVNFKENBKQogdHlwZWRlZiBzdHJ1Y3QgX0NBQ0ZMYXllciBQbGF0Zm9ybUxh
eWVyOworI2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVy
OwordHlwZWRlZiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5UHJvdmlkZXIgUGxhdGZv
cm1MYXllcjsKK307CiAjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHAKaW5kZXggMjU2ZDFjYzgzMTNiYThiMDcxODdjNzUwYjFjOTY0NjcyZGY4ZTEwOS4uMDU3YjZi
ZWEyNjY0M2NmMzNjOGU2NmUxZDZjODY3MTdjMDI4NjJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHAKQEAgLTUyLDYgKzUyLDkgQEAKICNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgogI2luY2x1ZGUg
IlRleHR1cmVNYXBwZXJHTC5oIgogI2luY2x1ZGUgPGNhaXJvLWdsLmg+CisjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHkuaCIKKyNlbmRpZgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBA
IC00MDksNiArNDEyLDEzIEBAIFN0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSosIENvb3JkaW5hdGVTCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTX1RIUkVBREVEKQorUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IElt
YWdlQnVmZmVyRGF0YTo6cHJveHkoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZWxzZQogdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxv
YXQgb3BhY2l0eSkKIHsKICAgICBBU1NFUlQobV90ZXh0dXJlKTsKQEAgLTQyMSw2ICs0MzEsNyBA
QCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBl
ciogdGV4dHVyZU1hcHBlciwgY29uc3QgRgogICAgIHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJH
TCo+KHRleHR1cmVNYXBwZXIpLT5kcmF3VGV4dHVyZShtX3RleHR1cmUsIFRleHR1cmVNYXBwZXJH
TDo6U2hvdWxkQmxlbmQsIG1fc2l6ZSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5KTsKIH0K
ICNlbmRpZgorI2VuZGlmCiAKIFBsYXRmb3JtTGF5ZXIqIEltYWdlQnVmZmVyOjpwbGF0Zm9ybUxh
eWVyKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YUNhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWlyby5oCmluZGV4IGQ2MmY0NzA1MTVl
M2U4MmRjYTlkOTc2MzQ0N2E2N2UyZmM0ZDA2MzMuLmMzZjlhMTIyNDgyMTUzMGU3ODExNjZmMDFh
MzZhNzFkMjIxY2MwODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YUNhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJEYXRhQ2Fpcm8uaApAQCAtMzMsOCArMzMs
MTIgQEAKIAogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCiAjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlci5oIgorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgiCisjZWxzZQogI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCiAjZW5kaWYKKyNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQyLDggKzQ2LDEyIEBAIGNsYXNzIEludFNpemU7CiAKIGNs
YXNzIEltYWdlQnVmZmVyRGF0YQogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIDogcHVibGljIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlQcm92aWRlcgorI2Vsc2UKICAgICA6IHB1YmxpYyBU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcgogI2VuZGlmCisjZW5kaWYKIHsKIHB1YmxpYzoKICAg
ICBJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYpOwpAQCAtNTQsNyArNjIsMTIgQEAgcHVi
bGljOgogICAgIEludFNpemUgbV9zaXplOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NB
TlZBUykKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgdmlydHVh
bCBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gcHJveHkoKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCgpIG92ZXJyaWRl
IHsgfTsKKyNlbHNlCiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1
cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmLCBmbG9hdCBvcGFjaXR5KTsKKyNlbmRpZgogICAgIHVpbnQzMl90IG1fdGV4dHVyZTsK
ICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaAppbmRleCBlYjIwYTBmMjBlY2I2YzQ3ZDVmZTBi
MmM1MTU5OTgyZDg3YmQ2NGYyLi5kNWQ2NzM4YTNlZDFlZGUwODUzNGI2MTRhMDIwYjY0Mzk2Y2Uw
ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Qml0bWFwVGV4dHVyZUdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oCkBAIC02OSw2ICs2OSw4IEBAIHB1YmxpYzoKICAgICBj
b25zdCBGaWx0ZXJJbmZvKiBmaWx0ZXJJbmZvKCkgY29uc3QgeyByZXR1cm4gJm1fZmlsdGVySW5m
bzsgfQogICAgIFRleHR1cmVNYXBwZXJHTDo6Q2xpcFN0YWNrJiBjbGlwU3RhY2soKSB7IHJldHVy
biBtX2NsaXBTdGFjazsgfQogCisgICAgR0MzRGludCBpbnRlcm5hbEZvcm1hdCgpIGNvbnN0IHsg
cmV0dXJuIG1faW50ZXJuYWxGb3JtYXQ7IH0KKwogcHJpdmF0ZToKIAogICAgIFBsYXRmb3JtM0RP
YmplY3QgbV9pZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmlu
ZGV4IDUwMWQyYTg5ZTllODdhZTBmZDU1MjJhYzQ4Nzc3MDk2YzNlYzBjZTMuLmNlZGE4MmRmMjQ2
NjQ0MWZhNmZiNDYyMmQwNzk1YTg1YWJhMDBiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIlRleHR1cmVN
YXBwZXJBbmltYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAotI2lmIFVT
RShURVhUVVJFX01BUFBFUikKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpICYmICFVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCBmNTZjZjUxODU5Y2RjN2FiZDgwYzM2YTY5YWZk
MDZjMjg4YTM0YzMzLi5iMGFhNDYzN2Q4YmM2MWZiMmY5NjRlOTNlMTMwMTVkMmUyZTMxNjBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtMjAsNyArMjAsNyBA
QAogI2lmbmRlZiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcl9oCiAjZGVmaW5lIEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyX2gKIAotI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyNpZiBVU0Uo
VEVYVFVSRV9NQVBQRVIpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAKICNpbmNsdWRl
ICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVudC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCA1ZjM0ZjQxODUwMzI2N2NlMDdlYWI2N2U4MDUy
M2ZhMzE4MTA2MzkzLi5mYzc3MTA2MmUxYzAyYWY3MGYzZjNjMzJkNjM3ZmNkMDNlZjg3ZmYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAtNDQ1LDEyICs0NDUsMTQgQEAgVGV4dHVy
ZU1hcHBlckxheWVyOjp+VGV4dHVyZU1hcHBlckxheWVyKCkKICAgICByZW1vdmVGcm9tUGFyZW50
KCk7CiB9CiAKKyNpZiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogdm9pZCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OnNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIG5ld0No
aWxkcmVuKQogewogICAgIHJlbW92ZUFsbENoaWxkcmVuKCk7CiAgICAgZm9yIChhdXRvKiBjaGls
ZCA6IG5ld0NoaWxkcmVuKQogICAgICAgICBhZGRDaGlsZCgmZG93bmNhc3Q8R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI+KGNoaWxkKS0+bGF5ZXIoKSk7CiB9CisjZW5kaWYKIAogdm9pZCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OnNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5
ZXIqPiYgbmV3Q2hpbGRyZW4pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKaW5kZXggMGM5ZGE3
MWJiMTk1Y2I0ZGNkNzFmMTUwZjdmZTdhMmUyNjNhY2FkMi4uNmFkYjY1NGM4MTM0YzUxODdlYTk2
N2Y4MjBjYWVjZDM2N2Q0OGQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtNzgsNyAr
NzgsOSBAQCBwdWJsaWM6CiAgICAgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcigpIGNvbnN0
IHsgcmV0dXJuIHJvb3RMYXllcigpLm1fdGV4dHVyZU1hcHBlcjsgfQogICAgIHZvaWQgc2V0VGV4
dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXhtYXApIHsgbV90ZXh0dXJlTWFwcGVyID0gdGV4
bWFwOyB9CiAKKyNpZiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIHZvaWQgc2V0Q2hp
bGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYpOworI2VuZGlmCiAgICAgdm9pZCBz
ZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8VGV4dHVyZU1hcHBlckxheWVyKj4mKTsKICAgICB2b2lk
IHNldE1hc2tMYXllcihUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKICAgICB2b2lkIHNldFJlcGxpY2FM
YXllcihUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5NzY5MTM0YjRkZDBmOGRlZjIz
ODBhNmUyNzg4M2U4YmFkMDNiZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIu
Y3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMu
TC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyKFJlZlB0cjxCaXRtYXBUZXh0dXJlPiYmIHRleHR1cmUpCisgICAgOiBtX3RleHR1cmUoV1RG
Ojptb3ZlKHRleHR1cmUpKQorICAgICwgbV9leHRyYUZsYWdzKDApCisgICAgLCBtX2hhc01hbmFn
ZWRUZXh0dXJlKHRydWUpCit7Cit9CisKK1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
OjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihHTHVpbnQgdGV4dHVyZUlELCBjb25z
dCBJbnRTaXplJiBzaXplLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzKQorICAgIDogbV90
ZXh0dXJlSUQodGV4dHVyZUlEKQorICAgICwgbV9zaXplKHNpemUpCisgICAgLCBtX2V4dHJhRmxh
Z3MoZmxhZ3MpCisgICAgLCBtX2hhc01hbmFnZWRUZXh0dXJlKGZhbHNlKQoreworfQorCitib29s
IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpjYW5SZXVzZVdpdGhvdXRSZXNldChj
b25zdCBJbnRTaXplJiBzaXplLCBHQzNEaW50IGludGVybmFsRm9ybWF0KQoreworICAgIHJldHVy
biBtX3RleHR1cmUgJiYgKG1fdGV4dHVyZS0+c2l6ZSgpID09IHNpemUpICYmIChzdGF0aWNfY2Fz
dDxCaXRtYXBUZXh0dXJlR0wqPihtX3RleHR1cmUuZ2V0KCkpLT5pbnRlcm5hbEZvcm1hdCgpID09
IGludGVybmFsRm9ybWF0IHx8IGludGVybmFsRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpE
T05UX0NBUkUpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpw
YWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZp
ZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkpCit7CisgICAgaWYgKG1faGFzTWFuYWdlZFRleHR1cmUp
IHsKKyAgICAgICAgQVNTRVJUKG1fdGV4dHVyZSk7CisgICAgICAgIHRleHR1cmVNYXBwZXItPmRy
YXdUZXh0dXJlKCptX3RleHR1cmUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0
eSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQobV90ZXh0dXJlSUQpOwor
ICAgIFRleHR1cmVNYXBwZXJHTCogdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVy
R0wqPih0ZXh0dXJlTWFwcGVyKTsKKyAgICB0ZXhtYXBHTC0+ZHJhd1RleHR1cmUobV90ZXh0dXJl
SUQsIG1fZXh0cmFGbGFncywgbV9zaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9w
YWNpdHkpOworfQorCit9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NmIzOTNiNDIyOTQ3
MWVjNzA1ZTg2NGZjZDNhNmYzZmE5MTNhOTc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyLmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2Fs
aWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyX2gKKyNkZWZpbmUgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXJfaAorCisjaW5j
bHVkZSAiQml0bWFwVGV4dHVyZUdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCisj
aW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlciA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXIpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKCk7CitwdWJsaWM6CisgICAgVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoUmVmUHRyPEJpdG1hcFRleHR1cmU+JiYpOworICAg
IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKEdMdWludCB0ZXh0dXJlSUQsIGNvbnN0
IEludFNpemUmLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzKTsKKworICAgIHZpcnR1YWwgflRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCB2
b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSwgZmxvYXQgb3BhY2l0eSA9IDEuMCkgZmluYWw7CisKKyAgICBib29sIGNh
blJldXNlV2l0aG91dFJlc2V0KGNvbnN0IEludFNpemUmLCBHQzNEaW50IGludGVybmFsRm9ybWF0
KTsKKyAgICBCaXRtYXBUZXh0dXJlR0wmIHRleHR1cmVHTCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PEJpdG1hcFRleHR1cmVHTCY+KCptX3RleHR1cmUpOyB9CisKKyAgICBpbmxpbmUgdm9pZCBtYXJr
VXNlZCgpIHsgbV90aW1lTGFzdFVzZWQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsg
fQorICAgIGRvdWJsZSBsYXN0VXNlZFRpbWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVMYXN0VXNl
ZDsgfQorCisgICAgY2xhc3MgVW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlciB7CisgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIpOworICAgICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRCgpOworICAgIHB1YmxpYzoKKyAgICAgICAgVW5tYW5hZ2Vk
QnVmZmVyRGF0YUhvbGRlcigpIHsgfQorICAgICAgICB2aXJ0dWFsIH5Vbm1hbmFnZWRCdWZmZXJE
YXRhSG9sZGVyKCkgPSBkZWZhdWx0OworICAgIH07CisKKyAgICBib29sIGhhc01hbmFnZWRUZXh0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNYW5hZ2VkVGV4dHVyZTsgfQorICAgIHZvaWQgc2V0
VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcihzdGQ6OnVuaXF1ZV9wdHI8VW5tYW5hZ2VkQnVmZmVy
RGF0YUhvbGRlcj4gaG9sZGVyKSB7IG1fdW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlciA9IFdURjo6
bW92ZShob2xkZXIpOyB9CisKK3ByaXZhdGU6CisKKyAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4g
bV90ZXh0dXJlOworICAgIGRvdWJsZSBtX3RpbWVMYXN0VXNlZCB7IDAgfTsKKworICAgIEdMdWlu
dCBtX3RleHR1cmVJRDsKKyAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBUZXh0dXJlTWFwcGVyR0w6
OkZsYWdzIG1fZXh0cmFGbGFnczsKKyAgICBib29sIG1faGFzTWFuYWdlZFRleHR1cmU7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXI+IG1fdW5tYW5hZ2VkQnVm
ZmVyRGF0YUhvbGRlcjsKK307CisKK307CisKKyNlbmRpZiAvLyBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDk3YjUxNGVjOTlkMDIyZjg4ZmFiOWI2YTBkMjM3MzBl
YWE5MDE5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcApAQCAtMCwwICsx
LDE1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eS5oIgorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorCisj
aW5jbHVkZSAiQml0bWFwVGV4dHVyZUdMLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgi
CisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXIuaCIKKworY29uc3QgZG91YmxlIHNfcmVsZWFzZVVudXNlZFNl
Y29uZHNUb2xlcmFuY2UgPSAxOworY29uc3QgZG91YmxlIHNfcmVsZWFzZVVudXNlZEJ1ZmZlcnNU
aW1lckludGVydmFsID0gMC41OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkoKQor
ICAgIDogbV9jb21wb3NpdG9yKDApCisgICAgLCBtX3RhcmdldExheWVyKDApCisgICAgLCBtX3J1
bkxvb3AoUnVuTG9vcDo6Y3VycmVudCgpKQorICAgICwgbV9yZWxlYXNlVW51c2VkQnVmZmVyc1Rp
bWVyKG1fcnVuTG9vcCwgdGhpcywgJlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnJl
bGVhc2VVbnVzZWRCdWZmZXJzVGltZXJGaXJlZCkKK3sKK30KKworVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eTo6flRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkoKQoreworICAg
IGlmIChtX3RhcmdldExheWVyKQorICAgICAgICBtX3RhcmdldExheWVyLT5zZXRDb250ZW50c0xh
eWVyKG51bGxwdHIpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6
OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZChDb21wb3NpdG9yKiBjb21wb3NpdG9yLCBUZXh0
dXJlTWFwcGVyTGF5ZXIqIHRhcmdldExheWVyKQoreworI2lmbmRlZiBOREVCVUcKKyAgICBtX2Nv
bXBvc2l0b3JUaHJlYWRJRCA9IG1fY29tcG9zaXRvclRocmVhZElEID8gbV9jb21wb3NpdG9yVGhy
ZWFkSUQgOiBXVEY6OmN1cnJlbnRUaHJlYWQoKTsKKyNlbmRpZgorICAgIEFTU0VSVChtX2NvbXBv
c2l0b3JUaHJlYWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGNvbXBv
c2l0b3IpOworICAgIEFTU0VSVCh0YXJnZXRMYXllcik7CisgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9sb2NrKTsKKyAgICBtX2NvbXBvc2l0b3IgPSBjb21wb3NpdG9yOworICAgIG1fdGFyZ2V0TGF5
ZXIgPSB0YXJnZXRMYXllcjsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBy
b3h5OjppbnZhbGlkYXRlKCkKK3sKKyAgICBBU1NFUlQobV9jb21wb3NpdG9yVGhyZWFkSUQgPT0g
V1RGOjpjdXJyZW50VGhyZWFkKCkpOworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Cisg
ICAgbV9jb21wb3NpdG9yID0gbnVsbHB0cjsKKyAgICBtX3RhcmdldExheWVyID0gbnVsbHB0cjsK
K30KKworYm9vbCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojppc0FjdGl2ZSgpCit7
CisgICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7CisgICAgcmV0dXJuICEhbV90YXJnZXRMYXll
ciAmJiAhIW1fY29tcG9zaXRvcjsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
clByb3h5OjpwdXNoTmV4dEJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI+IG5ld0J1ZmZlcikKK3sKKyAgICBBU1NFUlQobV9sb2NrLmlzSGVsZCgp
KTsKKyAgICBtX3BlbmRpbmdCdWZmZXIgPSBXVEY6Om1vdmUobmV3QnVmZmVyKTsKKworICAgIGlm
IChtX2NvbXBvc2l0b3IpCisgICAgICAgIG1fY29tcG9zaXRvci0+b25OZXdCdWZmZXJBdmFpbGFi
bGUoKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyPiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpnZXRBdmFpbGFibGVCdWZmZXIo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGludCBpbnRlcm5hbEZvcm1hdCkKK3sKKyAgICBBU1NF
UlQobV9sb2NrLmlzSGVsZCgpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXI+IGF2YWlsYWJsZUJ1ZmZlcjsKKworICAgIGF1dG8gYnVmZmVycyA9
IFdURjo6bW92ZShtX3VzZWRCdWZmZXJzKTsKKyAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGJ1ZmZl
cnMpIHsKKyAgICAgICAgaWYgKCFidWZmZXIpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBpZiAoIWF2YWlsYWJsZUJ1ZmZlciAmJiBidWZmZXItPmNhblJldXNlV2l0aG91dFJlc2V0
KHNpemUsIGludGVybmFsRm9ybWF0KSkgeworICAgICAgICAgICAgYXZhaWxhYmxlQnVmZmVyID0g
V1RGOjptb3ZlKGJ1ZmZlcik7CisgICAgICAgICAgICBhdmFpbGFibGVCdWZmZXItPm1hcmtVc2Vk
KCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBtX3VzZWRCdWZm
ZXJzLmFwcGVuZChXVEY6Om1vdmUoYnVmZmVyKSk7CisgICAgfQorCisgICAgaWYgKCFtX3VzZWRC
dWZmZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgc2NoZWR1bGVSZWxlYXNlVW51c2VkQnVmZmVycygp
OworICAgIHJldHVybiBhdmFpbGFibGVCdWZmZXI7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eTo6c2NoZWR1bGVSZWxlYXNlVW51c2VkQnVmZmVycygpCit7CisgICAg
aWYgKCFtX3JlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9y
ZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyLnN0YXJ0T25lU2hvdChzX3JlbGVhc2VVbnVzZWRCdWZm
ZXJzVGltZXJJbnRlcnZhbCk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eTo6cmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckZpcmVkKCkKK3sKKyAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2xvY2spOworICAgIGlmIChtX3VzZWRCdWZmZXJzLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBidWZmZXJzID0gV1RGOjptb3ZlKG1fdXNlZEJ1ZmZlcnMp
OworICAgIGRvdWJsZSBtaW5Vc2VkVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
IC0gc19yZWxlYXNlVW51c2VkU2Vjb25kc1RvbGVyYW5jZTsKKworICAgIGZvciAoYXV0byYgYnVm
ZmVyIDogYnVmZmVycykgeworICAgICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+bGFzdFVzZWRU
aW1lKCkgPj0gbWluVXNlZFRpbWUpCisgICAgICAgICAgICBtX3VzZWRCdWZmZXJzLmFwcGVuZChX
VEY6Om1vdmUoYnVmZmVyKSk7CisgICAgfQorfQorCit2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHk6OnN3YXBCdWZmZXIoKQoreworICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJl
YWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBwcmV2QnVmZmVyOworCisgICAgeworICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICBpZiAoIW1fdGFyZ2V0TGF5ZXIg
fHwgIW1fcGVuZGluZ0J1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBwcmV2
QnVmZmVyID0gV1RGOjptb3ZlKG1fY3VycmVudEJ1ZmZlcik7CisKKyAgICAgICAgbV9jdXJyZW50
QnVmZmVyID0gV1RGOjptb3ZlKG1fcGVuZGluZ0J1ZmZlcik7CisgICAgICAgIG1fdGFyZ2V0TGF5
ZXItPnNldENvbnRlbnRzTGF5ZXIobV9jdXJyZW50QnVmZmVyLmdldCgpKTsKKyAgICB9CisKKyAg
ICBpZiAocHJldkJ1ZmZlciAmJiBwcmV2QnVmZmVyLT5oYXNNYW5hZ2VkVGV4dHVyZSgpKQorICAg
ICAgICBtX3VzZWRCdWZmZXJzLmFwcGVuZChXVEY6Om1vdmUocHJldkJ1ZmZlcikpOworfQorCit9
OworCisjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBh
OTQ3MTAyZGZkMTNmNzg2YTY2NjZkNzBmYmQwMzQ3NWE2NWYyMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5LmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5X2gKKyNkZWZpbmUgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eV9o
CisKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
LmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKKyNpbmNsdWRlIDx3dGYvQ29u
ZGl0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworI2lmbmRlZiBOREVCVUcKKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Cisj
ZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXI7
CitjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OworY2xhc3MgVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI7CisKK2NsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHlQcm92aWRlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCBSZWZQdHI8VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gcHJveHkoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQoKSA9IDA7Cit9OworCitjbGFzcyBUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCgp
OworcHVibGljOgorICAgIGNsYXNzIENvbXBvc2l0b3IgeworICAgIHB1YmxpYzoKKyAgICAgICAg
dmlydHVhbCB2b2lkIG9uTmV3QnVmZmVyQXZhaWxhYmxlKCkgPSAwOworICAgIH07CisKKyAgICBU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5KCk7CisgICAgdmlydHVhbCB+VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eSgpOworCisgICAgLy8gVG8gYXZvaWQgbXVsdGlwbGUgbG9j
ay9yZWxlYXNlIHNpdHVhdGlvbiB0byB1cGRhdGUgYSBzaW5nbGUgZnJhbWUsCisgICAgLy8gdGhl
IGltcGxlbWVudGF0aW9uIG9mIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlQcm92aWRl
ciBzaG91bGQKKyAgICAvLyBhcXVpcmUgLyByZWxlYXNlIHRoZSBsb2NrIGV4cGxpY2l0bHkgdG8g
dXNlIGJlbG93IG1ldGhvZHMuCisgICAgTG9jayYgbG9jaygpIHsgcmV0dXJuIG1fbG9jazsgfQor
ICAgIHZvaWQgYXF1aXJlTG9ja1RvUHVzaEJ1ZmZlcigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gZ2V0QXZhaWxhYmxlQnVmZmVyKGNvbnN0
IEludFNpemUmLCBHQzNEaW50IGludGVybmFsRm9ybWF0KTsKKyAgICB2b2lkIHB1c2hOZXh0QnVm
ZmVyKHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4pOwor
ICAgIGJvb2wgaXNBY3RpdmUoKTsKKworICAgIHZvaWQgYWN0aXZhdGVPbkNvbXBvc2l0aW5nVGhy
ZWFkKENvbXBvc2l0b3IqLCBUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKKyAgICB2b2lkIGludmFsaWRh
dGUoKTsKKworICAgIHZvaWQgc3dhcEJ1ZmZlcigpOworCitwcml2YXRlOgorICAgIHZvaWQgc2No
ZWR1bGVSZWxlYXNlVW51c2VkQnVmZmVycygpOworICAgIHZvaWQgcmVsZWFzZVVudXNlZEJ1ZmZl
cnNUaW1lckZpcmVkKCk7CisKKyAgICBDb21wb3NpdG9yKiBtX2NvbXBvc2l0b3I7CisgICAgVGV4
dHVyZU1hcHBlckxheWVyKiBtX3RhcmdldExheWVyOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBtX2N1cnJlbnRCdWZmZXI7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBtX3BlbmRpbmdC
dWZmZXI7CisKKyAgICBMb2NrIG1fbG9jazsKKworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+PiBtX3VzZWRCdWZmZXJzOworCisgICAg
UnVuTG9vcCYgbV9ydW5Mb29wOworICAgIFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHk+IG1fcmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lcjsKKyNpZm5kZWYgTkRF
QlVHCisgICAgVGhyZWFkSWRlbnRpZmllciBtX2NvbXBvc2l0b3JUaHJlYWRJRCB7IDAgfTsKKyNl
bmRpZgorfTsKKworfTsKKworI2VuZGlmIC8vIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJv
eHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmNwcAppbmRleCBmZGY2YmU3Y2ZlMjI0NGE4MjgyYmQ4NjRhZGFjNjEzZTZlYWQzZjNk
Li44NWQyZjZmYWQ0ZmRiNGMwYWUwMWFjNzc2MDQyNDkzNWY2ZWQ4MWNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAt
MzAsOSArMzAsOSBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlICJHcmFwaGlj
c0xheWVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JvbGxhYmxl
QXJlYS5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpZm5kZWYg
TkRFQlVHCkBAIC00Miw2ICs0MiwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0ZDo6
dW5pcXVlX3B0cjxHcmFwaGljc0xheWVyPiBHcmFwaGljc0xheWVyOjpjcmVhdGUoR3JhcGhpY3NM
YXllckZhY3RvcnkqIGZhY3RvcnksIEdyYXBoaWNzTGF5ZXJDbGllbnQmIGNsaWVudCwgVHlwZSBs
YXllclR5cGUpCit7CisgICAgaWYgKCFmYWN0b3J5KQorICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3VuaXF1ZTxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+KGxheWVyVHlwZSwgY2xpZW50KTsKKwor
ICAgIHJldHVybiBmYWN0b3J5LT5jcmVhdGVHcmFwaGljc0xheWVyKGxheWVyVHlwZSwgY2xpZW50
KTsKK30KKwogc3RhdGljIENvb3JkaW5hdGVkTGF5ZXJJRCB0b0Nvb3JkaW5hdGVkTGF5ZXJJRChH
cmFwaGljc0xheWVyKiBsYXllcikKIHsKICAgICByZXR1cm4gbGF5ZXIgPyB0b0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcihsYXllciktPmlkKCkgOiAwOwpAQCAtMTIxLDYgKzEyOSw5IEBAIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKFR5cGUgbGF5ZXJU
eXBlLCBHcmFwaGljc0xheWVyCiAgICAgLCBtX2lzVmFsaWRQbGF0Zm9ybUxheWVyKGZhbHNlKQog
ICAgICwgbV9wZW5kaW5nUGxhdGZvcm1MYXllck9wZXJhdGlvbihOb25lKQogI2VuZGlmCisjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgICwgbV9zaG91bGRTeW5jUGxh
dGZvcm1MYXllcihmYWxzZSkKKyNlbmRpZgogICAgICwgbV9jb29yZGluYXRvcigwKQogICAgICwg
bV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIoMCkKICAgICAsIG1fcGxhdGZvcm1MYXllcigwKQpA
QCAtNDA2LDYgKzQxNywxMiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29u
dGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcgogICAgIEFTU0VSVCgh
KCFtX3BsYXRmb3JtTGF5ZXJUb2tlbi5pc1ZhbGlkKCkgJiYgbV9wbGF0Zm9ybUxheWVyKSk7CiAK
ICAgICBub3RpZnlGbHVzaFJlcXVpcmVkKCk7CisjZWxpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1NfVEhSRUFERUQpCisgICAgaWYgKG1fcGxhdGZvcm1MYXllciAhPSBwbGF0Zm9ybUxheWVyKQor
ICAgICAgICBtX3Nob3VsZFN5bmNQbGF0Zm9ybUxheWVyID0gdHJ1ZTsKKworICAgIG1fcGxhdGZv
cm1MYXllciA9IHBsYXRmb3JtTGF5ZXI7CisgICAgbm90aWZ5Rmx1c2hSZXF1aXJlZCgpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0ocGxhdGZvcm1MYXllcik7CiAjZW5kaWYKQEAgLTY5NCw5ICs3
MTEsOSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0FuaW1hdGlvbnMoKQog
ICAgIG1fbGF5ZXJTdGF0ZS5hbmltYXRpb25zQ2hhbmdlZCA9IHRydWU7CiB9CiAKLSNpZiBVU0Uo
R1JBUEhJQ1NfU1VSRkFDRSkKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jUGxh
dGZvcm1MYXllcigpCiB7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgZGVzdHJveVBs
YXRmb3JtTGF5ZXJJZk5lZWRlZCgpOwogICAgIGNyZWF0ZVBsYXRmb3JtTGF5ZXJJZk5lZWRlZCgp
OwogCkBAIC03MTEsOCArNzI4LDIwIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpz
eW5jUGxhdGZvcm1MYXllcigpCiAgICAgQVNTRVJUKG1fcGxhdGZvcm1MYXllcik7CiAgICAgbV9s
YXllclN0YXRlLnBsYXRmb3JtTGF5ZXJGcm9udEJ1ZmZlciA9IG1fcGxhdGZvcm1MYXllci0+Y29w
eVRvR3JhcGhpY3NTdXJmYWNlKCk7CiAgICAgbV9sYXllclN0YXRlLnBsYXRmb3JtTGF5ZXJTaG91
bGRTd2FwQnVmZmVycyA9IHRydWU7CisjZWxpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhS
RUFERUQpCisgICAgaWYgKCFtX3Nob3VsZFN5bmNQbGF0Zm9ybUxheWVyKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX3Nob3VsZFN5bmNQbGF0Zm9ybUxheWVyID0gZmFsc2U7CisgICAgbV9sYXll
clN0YXRlLnBsYXRmb3JtTGF5ZXJDaGFuZ2VkID0gdHJ1ZTsKKyAgICBpZiAobV9wbGF0Zm9ybUxh
eWVyKSB7CisgICAgICAgIG1fcGxhdGZvcm1MYXllci0+c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpOwor
ICAgICAgICBtX2xheWVyU3RhdGUucGxhdGZvcm1MYXllclByb3h5ID0gbV9wbGF0Zm9ybUxheWVy
LT5wcm94eSgpOworICAgIH0KKyNlbmRpZgogfQogCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0Up
CiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZGVzdHJveVBsYXRmb3JtTGF5ZXJJZk5l
ZWRlZCgpCiB7CiAgICAgaWYgKCEobV9wZW5kaW5nUGxhdGZvcm1MYXllck9wZXJhdGlvbiAmIERl
c3Ryb3lQbGF0Zm9ybUxheWVyKSkKQEAgLTc2Myw5ICs3OTIsNyBAQCB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seShib29s
KQogICAgIGNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0KCk7CiAgICAgc3luY0NoaWxkcmVu
KCk7CiAgICAgc3luY0ZpbHRlcnMoKTsKLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBz
eW5jUGxhdGZvcm1MYXllcigpOwotI2VuZGlmCiAKICAgICAvLyBPbmx5IHVuc2V0IG1fbW92aW5n
VmlzaWJsZVJlY3QgYWZ0ZXIgd2UgaGF2ZSB1cGRhdGVkIHRoZSB2aXNpYmxlIHJlY3QgYWZ0ZXIg
dGhlIGFuaW1hdGlvbiBzdG9wcGVkLgogICAgIGlmICghaGFzQWN0aXZlVHJhbnNmb3JtQW5pbWF0
aW9uKQpAQCAtMTE4OSw1ICsxMjE2LDE3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZCgpCiB7CiAgICAgY2xpZW50KCkubm90aWZ5QW5p
bWF0aW9uU3RhcnRlZCh0aGlzLCAiIiwgbV9sYXN0QW5pbWF0aW9uU3RhcnRUaW1lKTsKIH0KKwor
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKK3ZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpwbGF0Zm9ybUxheWVyV2lsbEJlRGVzdHJveWVkKCkKK3sKK30KKwordm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFBsYXRmb3JtTGF5ZXJOZWVkc0Rpc3BsYXko
KQoreworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwogI2VuZGlmIC8vIFVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCA1NDY1NjY0YzlmZDM2Yzc0NWIwNTgxZDI0
OGM0OTViNjk1Nzg2YTI2Li44YTQ1YzM1NjU4NTcwNDM1NzFiMmUzNTlmNzY2ZWY5MWJkNDBjY2Nh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJ
bnRTaXplLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5oIgorI2luY2x1ZGUg
IlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiVGlsZWRCYWNraW5nU3Rv
cmUuaCIKICNpbmNsdWRlICJUaWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oIgogI2luY2x1ZGUgIlRy
YW5zZm9ybWF0aW9uTWF0cml4LmgiCkBAIC01Nyw2ICs1OCw5IEBAIHB1YmxpYzoKIAogY2xhc3Mg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyIDogcHVibGljIEdyYXBoaWNzTGF5ZXIKICAgICAsIHB1
YmxpYyBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
U19USFJFQURFRCkKKyAgICAsIHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjo6Q2xp
ZW50CisjZW5kaWYKICAgICAsIHB1YmxpYyBDb29yZGluYXRlZEltYWdlQmFja2luZzo6SG9zdCB7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKFR5cGUsIEdy
YXBoaWNzTGF5ZXJDbGllbnQmKTsKQEAgLTE1NSwxMCArMTU5LDE0IEBAIHByaXZhdGU6CiAgICAg
ICAgIFJlY3JlYXRlUGxhdGZvcm1MYXllciA9IENyZWF0ZUFuZFN5bmNQbGF0Zm9ybUxheWVyIHwg
RGVzdHJveVBsYXRmb3JtTGF5ZXIKICAgICB9OwogCi0gICAgdm9pZCBzeW5jUGxhdGZvcm1MYXll
cigpOwogICAgIHZvaWQgZGVzdHJveVBsYXRmb3JtTGF5ZXJJZk5lZWRlZCgpOwogICAgIHZvaWQg
Y3JlYXRlUGxhdGZvcm1MYXllcklmTmVlZGVkKCk7CiAjZW5kaWYKKyAgICB2b2lkIHN5bmNQbGF0
Zm9ybUxheWVyKCk7CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAg
IHZvaWQgcGxhdGZvcm1MYXllcldpbGxCZURlc3Ryb3llZCgpOworICAgIHZvaWQgc2V0UGxhdGZv
cm1MYXllck5lZWRzRGlzcGxheSgpOworI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVi
dWdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCB3aWR0aCkgb3ZlcnJpZGU7CiAKQEAgLTIyMyw2
ICsyMzEsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1ZhbGlkUGxhdGZvcm1MYXllciA6IDE7
CiAgICAgdW5zaWduZWQgbV9wZW5kaW5nUGxhdGZvcm1MYXllck9wZXJhdGlvbiA6IDM7CiAjZW5k
aWYKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgYm9vbCBtX3No
b3VsZFN5bmNQbGF0Zm9ybUxheWVyIDogMTsKKyNlbmRpZgogCiAgICAgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyQ2xpZW50KiBtX2Nvb3JkaW5hdG9yOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaWxl
ZEJhY2tpbmdTdG9yZT4gbV9tYWluQmFja2luZ1N0b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oCmluZGV4IDE0ZjJiNzc1MDQ2Nzhm
MDk3NjI3ODE4MDIyZGZiZWZhMjcyNDJkZjYuLjg0ZTdiMjc0YzFhNjIxNjk0ZDY4YzA0Mjg3ODhk
ZjNhNTg3Nzc0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc1N0YXRlLmgKQEAgLTQ0LDYgKzQ0LDEwIEBACiAjaW5jbHVkZSAiR3JhcGhpY3NT
dXJmYWNlVG9rZW4uaCIKICNlbmRpZgogCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RI
UkVBREVEKQorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaCIKKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvb3JkaW5hdGVkU3VyZmFjZTsK
QEAgLTEzMCw2ICsxMzQsOSBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUg
ewogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgICAgICAsIHBsYXRmb3JtTGF5ZXJGcm9u
dEJ1ZmZlcigwKQogI2VuZGlmCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVE
KQorICAgICAgICAsIHBsYXRmb3JtTGF5ZXJQcm94eSgwKQorI2VuZGlmCiAgICAgewogICAgIH0K
IApAQCAtMTY0LDYgKzE3MSwxMCBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3Rh
dGUgewogICAgIEdyYXBoaWNzU3VyZmFjZTo6RmxhZ3MgcGxhdGZvcm1MYXllclN1cmZhY2VGbGFn
czsKICNlbmRpZgogCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAg
IFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBwbGF0Zm9ybUxheWVyUHJv
eHk7CisjZW5kaWYKKwogICAgIEludFNpemUgY29tbWl0dGVkU2Nyb2xsT2Zmc2V0OwogCiAgICAg
Ym9vbCBoYXNQZW5kaW5nQ2hhbmdlcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmNwcAppbmRleCBkZWFiMDQ3M2ZlYWY2YmY0YTk3OGIyNDllNzU2ZjY1NzI3
MmNlODBlLi4zMDYxMWYxMzU1OTM4ZDIzNzZjNzQzODFjYzRlYWE0ZDZlOTUyZGIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTgzLDYgKzgzLDExIEBA
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvQ3VycmVudEdMQ29udGV4dChj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpCiAgICAgaWYgKCFjdXJyZW50Um9vdExheWVyKQogICAg
ICAgICByZXR1cm47CiAKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisg
ICAgZm9yIChQbGF0Zm9ybUxheWVyUHJveHlNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wbGF0Zm9ybUxh
eWVyUHJveGllcy5iZWdpbigpOyBpdCAhPSBtX3BsYXRmb3JtTGF5ZXJQcm94aWVzLmVuZCgpOyAr
K2l0KQorICAgICAgICBpdC0+dmFsdWUtPnN3YXBCdWZmZXIoKTsKKyNlbmRpZgorCiAgICAgY3Vy
cmVudFJvb3RMYXllci0+c2V0VGV4dHVyZU1hcHBlcihtX3RleHR1cmVNYXBwZXIuZ2V0KCkpOwog
ICAgIGN1cnJlbnRSb290TGF5ZXItPmFwcGx5QW5pbWF0aW9uc1JlY3Vyc2l2ZWx5KCk7CiAgICAg
bV90ZXh0dXJlTWFwcGVyLT5iZWdpblBhaW50aW5nKFBhaW50RmxhZ3MpOwpAQCAtMTY0LDIwICsx
NjksOSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6YWRqdXN0UG9zaXRpb25Gb3JG
aXhlZExheWVycyhjb25zdCBGbG9hdFBvaW50JiBjbwogICAgICAgICBmaXhlZExheWVyLT5zZXRT
Y3JvbGxQb3NpdGlvbkRlbHRhSWZOZWVkZWQoZGVsdGEpOwogfQogCi0jaWYgVVNFKEdSQVBISUNT
X1NVUkZBQ0UpCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRlUGxhdGZvcm1M
YXllcklmTmVlZGVkKFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIsIGNvbnN0IENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllclN0YXRlJiBzdGF0ZSkKLXsKLSAgICBpZiAoIXN0YXRlLnBsYXRmb3JtTGF5
ZXJUb2tlbi5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJlZlB0cjxUZXh0dXJl
TWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZT4gcGxhdGZvcm1MYXllckJhY2tpbmdTdG9yZShUZXh0
dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkpOwotICAgIG1fc3VyZmFjZUJh
Y2tpbmdTdG9yZXMuc2V0KGxheWVyLCBwbGF0Zm9ybUxheWVyQmFja2luZ1N0b3JlKTsKLSAgICBw
bGF0Zm9ybUxheWVyQmFja2luZ1N0b3JlLT5zZXRHcmFwaGljc1N1cmZhY2UoR3JhcGhpY3NTdXJm
YWNlOjpjcmVhdGUoc3RhdGUucGxhdGZvcm1MYXllclNpemUsIHN0YXRlLnBsYXRmb3JtTGF5ZXJT
dXJmYWNlRmxhZ3MsIHN0YXRlLnBsYXRmb3JtTGF5ZXJUb2tlbikpOwotICAgIGxheWVyLT5zZXRD
b250ZW50c0xheWVyKHBsYXRmb3JtTGF5ZXJCYWNraW5nU3RvcmUuZ2V0KCkpOwotfQotCiB2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY1BsYXRmb3JtTGF5ZXJJZk5lZWRlZChUZXh0
dXJlTWFwcGVyTGF5ZXIqIGxheWVyLCBjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0
ZSYgc3RhdGUpCiB7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgQVNTRVJUKG1fdGV4
dHVyZU1hcHBlcik7CiAKICAgICBpZiAoc3RhdGUucGxhdGZvcm1MYXllckNoYW5nZWQpIHsKQEAg
LTE5MSw2ICsxODUsNDEgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnN5bmNQbGF0
Zm9ybUxheWVySWZOZWVkZWQoVGV4dHVyZU1hcHBlckxheWVyKiBsYXkKICAgICAgICAgUmVmUHRy
PFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlPiBwbGF0Zm9ybUxheWVyQmFja2luZ1N0
b3JlID0gaXQtPnZhbHVlOwogICAgICAgICBwbGF0Zm9ybUxheWVyQmFja2luZ1N0b3JlLT5zd2Fw
QnVmZmVyc0lmTmVlZGVkKHN0YXRlLnBsYXRmb3JtTGF5ZXJGcm9udEJ1ZmZlcik7CiAgICAgfQor
I2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIGlmICghc3RhdGUu
cGxhdGZvcm1MYXllckNoYW5nZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChzdGF0ZS5w
bGF0Zm9ybUxheWVyUHJveHkpIHsKKyAgICAgICAgbV9wbGF0Zm9ybUxheWVyUHJveGllcy5zZXQo
bGF5ZXIsIHN0YXRlLnBsYXRmb3JtTGF5ZXJQcm94eSk7CisgICAgICAgIHN0YXRlLnBsYXRmb3Jt
TGF5ZXJQcm94eS0+YWN0aXZhdGVPbkNvbXBvc2l0aW5nVGhyZWFkKHRoaXMsIGxheWVyKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgbV9wbGF0Zm9ybUxheWVyUHJveGllcy5yZW1vdmUobGF5ZXIpOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obGF5ZXIpOworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CisjZW5kaWYKK30KKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKK3Zv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpvbk5ld0J1ZmZlckF2YWlsYWJsZSgpCit7Cisg
ICAgUmVmUHRyPENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZT4gcHJvdGVjdG9yKHRoaXMpOworICAg
IGRpc3BhdGNoT25DbGllbnRSdW5Mb29wKFs9XSB7CisgICAgICAgIHByb3RlY3Rvci0+dXBkYXRl
Vmlld3BvcnQoKTsKKyAgICB9KTsKK30KKyNlbmRpZgorCisjaWYgVVNFKEdSQVBISUNTX1NVUkZB
Q0UpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRlUGxhdGZvcm1MYXllcklm
TmVlZGVkKFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIsIGNvbnN0IENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllclN0YXRlJiBzdGF0ZSkKK3sKKyAgICBpZiAoIXN0YXRlLnBsYXRmb3JtTGF5ZXJUb2tl
bi5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVy
U3VyZmFjZUJhY2tpbmdTdG9yZT4gcGxhdGZvcm1MYXllckJhY2tpbmdTdG9yZShUZXh0dXJlTWFw
cGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkpOworICAgIG1fc3VyZmFjZUJhY2tpbmdT
dG9yZXMuc2V0KGxheWVyLCBwbGF0Zm9ybUxheWVyQmFja2luZ1N0b3JlKTsKKyAgICBwbGF0Zm9y
bUxheWVyQmFja2luZ1N0b3JlLT5zZXRHcmFwaGljc1N1cmZhY2UoR3JhcGhpY3NTdXJmYWNlOjpj
cmVhdGUoc3RhdGUucGxhdGZvcm1MYXllclNpemUsIHN0YXRlLnBsYXRmb3JtTGF5ZXJTdXJmYWNl
RmxhZ3MsIHN0YXRlLnBsYXRmb3JtTGF5ZXJUb2tlbikpOworICAgIGxheWVyLT5zZXRDb250ZW50
c0xheWVyKHBsYXRmb3JtTGF5ZXJCYWNraW5nU3RvcmUuZ2V0KCkpOwogfQogCiB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6ZGVzdHJveVBsYXRmb3JtTGF5ZXJJZk5lZWRlZChUZXh0dXJl
TWFwcGVyTGF5ZXIqIGxheWVyLCBjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYg
c3RhdGUpCkBAIC0zMTMsOSArMzQyLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6
OnNldExheWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBDb29yZGkKICAgICB1
cGRhdGVUaWxlc0lmTmVlZGVkKGxheWVyLCBsYXllclN0YXRlKTsKICAgICBzZXRMYXllckZpbHRl
cnNJZk5lZWRlZChsYXllciwgbGF5ZXJTdGF0ZSk7CiAgICAgc2V0TGF5ZXJBbmltYXRpb25zSWZO
ZWVkZWQobGF5ZXIsIGxheWVyU3RhdGUpOwotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAg
IHN5bmNQbGF0Zm9ybUxheWVySWZOZWVkZWQobGF5ZXIsIGxheWVyU3RhdGUpOwotI2VuZGlmCiAg
ICAgc2V0TGF5ZXJSZXBhaW50Q291bnRJZk5lZWRlZChsYXllciwgbGF5ZXJTdGF0ZSk7CiB9CiAK
QEAgLTM1NCw2ICszODEsMTAgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRlbGV0
ZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklEKQogI2lmIFVTRShHUkFQSElDU19TVVJG
QUNFKQogICAgIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXMucmVtb3ZlKGxheWVyLmdldCgpKTsKICNl
bmRpZgorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICBpZiAoYXV0
byBwbGF0Zm9ybUxheWVyUHJveHkgPSBtX3BsYXRmb3JtTGF5ZXJQcm94aWVzLnRha2UobGF5ZXIu
Z2V0KCkpKQorICAgICAgICBwbGF0Zm9ybUxheWVyUHJveHktPmludmFsaWRhdGUoKTsKKyNlbmRp
ZgogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0Um9vdExheWVySUQoQ29v
cmRpbmF0ZWRMYXllcklEIGxheWVySUQpCkBAIC02MzIsNiArNjYzLDkgQEAgdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OnB1cmdlR0xSZXNvdXJjZXMoKQogI2lmIFVTRShHUkFQSElDU19T
VVJGQUNFKQogICAgIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXMuY2xlYXIoKTsKICNlbmRpZgorI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICBtX3BsYXRmb3JtTGF5ZXJQ
cm94aWVzLmNsZWFyKCk7CisjZW5kaWYKICAgICBtX3N1cmZhY2VzLmNsZWFyKCk7CiAKICAgICBt
X3Jvb3RMYXllciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5oCmluZGV4IDY5MDY1YzlhNTZmOGYyMjc1NmNkN2E1YmQ1MWQyMGU5NzI1NDkzNGIuLjY4YWFi
ZmU0MGM0ZGY4MTk3ZDE2ZmJkNjJiOGFmZmE1ZTljMjc5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5oCkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaD4KICNlbmRpZgogCisjaWYgVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorI2luY2x1ZGUgPFdlYkNvcmUvVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTsKQEAgLTU4LDcgKzYyLDExIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVy
SUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCkgPSAwOwogfTsKIAotY2xhc3MgQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZT4sIHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6
OlNjcm9sbGluZ0NsaWVudCB7CitjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lPiwgcHVibGlj
IFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6U2Nyb2xsaW5nQ2xpZW50CisjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgICwgcHVibGljIFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OkNvbXBvc2l0b3IKKyNlbmRpZgorewogcHVibGlj
OgogICAgIGV4cGxpY2l0IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZShDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmVDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUo
KTsKQEAgLTk0LDkgKzEwMiw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVUaWxlc0lmTmVl
ZGVkKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllciosIGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllclN0YXRlJik7CiAgICAgdm9pZCBzZXRMYXllckZpbHRlcnNJZk5lZWRl
ZChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqLCBjb25zdCBXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwogICAgIHZvaWQgc2V0TGF5ZXJBbmltYXRpb25zSWZOZWVk
ZWQoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKKyAgICB2b2lkIHN5bmNQbGF0Zm9ybUxheWVySWZOZWVk
ZWQoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICB2
b2lkIGNyZWF0ZVBsYXRmb3JtTGF5ZXJJZk5lZWRlZChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5
ZXIqLCBjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwotICAg
IHZvaWQgc3luY1BsYXRmb3JtTGF5ZXJJZk5lZWRlZChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5
ZXIqLCBjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwogICAg
IHZvaWQgZGVzdHJveVBsYXRmb3JtTGF5ZXJJZk5lZWRlZChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
TGF5ZXIqLCBjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwog
I2VuZGlmCiAgICAgdm9pZCBzZXRMYXllclJlcGFpbnRDb3VudElmTmVlZGVkKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJMYXllciosIGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
clN0YXRlJik7CkBAIC0xNDQsNiArMTUyLDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpc3Bh
dGNoQ29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIG9mZnNldCk7CiAKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQp
CisgICAgdmlydHVhbCB2b2lkIG9uTmV3QnVmZmVyQXZhaWxhYmxlKCkgb3ZlcnJpZGU7CisjZW5k
aWYKKwogICAgIC8vIFJlbmRlciBxdWV1ZSBjYW4gYmUgYWNjZXNzZWQgb255IGZyb20gbWFpbiB0
aHJlYWQgb3IgdXBkYXRlUGFpbnROb2RlIGNhbGwgc3RhY2shCiAgICAgVmVjdG9yPHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPj4gbV9yZW5kZXJRdWV1ZTsKICAgICBMb2NrIG1fcmVuZGVyUXVldWVNdXRl
eDsKQEAgLTE2NCw2ICsxNzYsMTEgQEAgcHJpdmF0ZToKICAgICBTdXJmYWNlQmFja2luZ1N0b3Jl
TWFwIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXM7CiAjZW5kaWYKIAorI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDU19USFJFQURFRCkKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckxheWVyKiwgUmVmUHRyPFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHk+PiBQbGF0Zm9ybUxheWVyUHJveHlNYXA7CisgICAgUGxhdGZvcm1MYXllclByb3h5TWFw
IG1fcGxhdGZvcm1MYXllclByb3hpZXM7CisjZW5kaWYKKwogICAgIHR5cGVkZWYgSGFzaE1hcDx1
aW50MzJfdCAvKiBhdGxhc0lEICovLCBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNl
Pj4gU3VyZmFjZU1hcDsKICAgICBTdXJmYWNlTWFwIG1fc3VyZmFjZXM7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266768</attachid>
            <date>2015-12-07 04:02:07 -0800</date>
            <delta_ts>2015-12-07 08:17:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143299-20151207130138.patch</filename>
            <type>text/plain</type>
            <size>46692</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzNTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjMxMzMzMWJhNDZhYzk2
ZDYyMTZkZDdmZmJmNGRiMmJmZDhkOGNkOS4uM2FiYTk0M2UzNjYyZjA3ZWM4MzZkZDFhOWZhYjBi
MmI0MGE3YTE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE1LTEwLTMxICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtUaHJlYWRlZENvbXBv
c2l0b3JdIEFkZCBzdXBwb3J0IGZvciBQbGF0Zm9ybUxheWVyLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMjk5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkgYW5kIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyIHRvCisgICAgICAgIHNlbmQgYSB0ZXh0dXJlIChhY3R1YWwgdGV4dHVyZSBvciBCaXRt
YXBUZXh0dXJlKSB0byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkIGRpcmVjdGx5LgorICAgICAgICBQ
bGF0Zm9ybSBsYXllciByZW5kZXJlcnMgc2hvdWxkIGltcGxlbWVudCBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5UHJvdmlkZXIgdG8gZXN0YWJsaXNoCisgICAgICAgIGEgY29ubmVjdGlv
biB0byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkLiBBZnRlciB0aGUgY29ubmVjdGlvbiBoYXMgYmVl
biBlc3RhYmxpc2hlZCwgdGhlIHJlbmRlcmVyCisgICAgICAgIGNhbiByZW5kZXIgaXRzIGNvbnRl
bnRzIHRvIHRoZSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlciBhbmQgcGFzcyBpdCB0
byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkCisgICAgICAgIHZpYSBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllciBwcm94eS4KKyAgICAgICAgVGhlIGJ1ZmZlciBjYW4gYmUgYW4gdW5tYW5hZ2VkIHRl
eHR1cmUgKGEuay5hLiBwbGF0Zm9ybSB0ZXh0dXJlKSBvciBCaXRtYXBUZXh0dXJlLgorICAgICAg
ICBGb3IgdGhlIHVubWFuYWdlZCB0ZXh0dXJlLCB0aGUgcmVuZGVyZXIgc2hvdWxkIG1hbmFnZSBp
dHMgbGlmZSBjeWNsZSBpdHNlbGYuIEZvciB0aGUgQml0bWFwVGV4dHVyZSwKKyAgICAgICAgaXQg
d2lsbCBiZSBtYW5hZ2VkIGJ5IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuIEluIHRo
YXQgY2FzZSwgdXNlZCAoc3dhcHBlZCkgYnVmZmVyIHdpbGwgYmUKKyAgICAgICAgcmVjeWNsZWQg
YmVjYXVzZSB0aGUgcmVuZGVyZXIgd2lsbCB1c2Ugc2FtZSBzaXplIGFuZCBmb3JtYXQgdW50aWwg
aXQgY2hhbmdlcyBpdHMgc2l6ZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLgorCisg
ICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgIEFkZHMgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXIgYW5kIFRleHR1cmVNYXBwZXJQbGF5dGZvcm1MYXllclByb3h5Lgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWly
by5oOgorICAgICAgICBBZGRzIG1vY2sgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmg6CisgICAgICAgIEFkZHMgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVyIGFzIGEgUGxhdGZvcm1MYXllciBmb3IgdGhlIFRo
cmVhZGVkIENvbXBvc2l0b3IKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlR0wuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6aW50
ZXJuYWxGb3JtYXQpOiBBZGRzIGEgZ2V0dGVyIHRvIGNoZWNrIHRoZQorICAgICAgICBpbnRlcm5h
bCBmb3JtYXQgb2YgdGV4dHVyZSB0byBjaGVjayByZXVzYWJpbGl0eS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5oOgorICAgICAgICBFeGNsdWRlIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGZy
b20gYnVpbGQgd2hlbiB3ZSBhcmUgdXNpbmcgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eS5oOiBBZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgQmVjYXVzZSB3ZSBy
ZW1vdmVkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGZyb20gYnVpbGQsIHdlIG5lZWQgdG8g
YWRkIG93biBmYWN0b3J5IGZ1bmN0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY1BsYXRmb3JtTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpwbGF0Zm9ybUxheWVyV2ls
bEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6c2V0UGxhdGZvcm1MYXllck5lZWRzRGlzcGxheSk6CisgICAgICAgIEltcGxlbWVudHMgc3lu
YyBvcGVyYXRpb25zIGZvciBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5CisKIDIwMTUt
MTItMDQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgQ09SRVRFWFRfV0VCX0ZPTlRTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjRiODFhODgwNjA4YjUx
MTRlZDZlNDk0MjIwMGJjYjU0YjE0YThhMy4uZGNmZDUwOTJjM2QxMmEyMmExYWFkYTJhZTEzZTQ3
MWE0ZGYzZjIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE1LTEwLTMxICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtUaHJlYWRlZENvbXBv
c2l0b3JdIEFkZCBzdXBwb3J0IGZvciBQbGF0Zm9ybUxheWVyLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMjk5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KToKKyAgICAgICAgU3dh
cCBwZW5kaW5nIGJ1ZmZlcnMgb2YgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94aWVzIGJl
Zm9yZSBwYWludGluZyBjb250ZW50cy4KKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjpzeW5jUGxhdGZvcm1MYXllcklmTmVlZGVkKToKKyAgICAgICAgSW4gdGhyZWFk
ZWQgY29tcG9zaXRvciwgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5jZSBvbmx5IGNhcmVzIGFib3V0
IGNyZWF0aW9uIGFuZCBkZWxldGlvbgorICAgICAgICBvZiBwbGF0Zm9ybSBsYXllcnMuCisKKyAg
ICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpvbk5ld0J1ZmZlckF2YWls
YWJsZSk6CisgICAgICAgIFdoZW5ldmVyIG5ldyBidWZmZXIgY29tZXMgdmlhIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHksIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSB3aWxsCisgICAg
ICAgIHVwZGF0ZSB0aGUgc2NlbmUgaWYgaXQgaXMgbmVlZGVkLgorCiAyMDE1LTEyLTA0ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggd2hlbiBz
ZWNvbmRhcnkgY2xpY2tpbmcgb24gYSBsaW5rIG9uIHlhaG9vLmNvbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdU
Sy5jbWFrZQppbmRleCA4ZTc4OTA3ZDBiMjFkOGUwNGMzODZhM2UzYzRkNTQ3YzA2MDY1MjYwLi44
YzhmZDJiZjdhOTllNDc5YjZmY2JkNjRjODg5NTg5NGE1YzQ2YTM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZQpAQCAtNDQyLDYgKzQ0Miw4IEBAIGlmIChFTkFCTEVfVEhSRUFERURfQ09NUE9T
SVRPUikKICAgICAgICAgcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxp
bmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCiAgICAgICAgIHBhZ2Uvc2Nyb2xs
aW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nU3RhdGVOb2RlQ29vcmRpbmF0ZWRHcmFw
aGljcy5jcHAKIAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcAogICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQXJlYUFsbG9jYXRvci5jcHAKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3Iu
Y3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAppbmRleCBiMWNk
Y2NjYjY3MmZmMDI1ZGYyN2Y4Y2E3ODc0ZDkzZjJkMTA1ZjEzLi5lMTU0NGJmYTk4YmZjYTA4ZDc4
ODc0NDU3YjBiOTRhZWZjZDg5Y2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTYz
LDcgKzYzLDcgQEAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEcKIAogR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjp+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKCkKIHsKLSNpZiBVU0UoVEVYVFVSRV9N
QVBQRVIpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTX1RIUkVBREVEKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnBsYXRm
b3JtTGF5ZXJXaWxsQmVEZXN0cm95ZWQoKTsKICNlbmRpZgpAQCAtNzksNyArNzksMTMgQEAgUGxh
dGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBsYXRmb3Jt
Q29udGV4dCgpCiAgICAgcmV0dXJuIG1fZ2xDb250ZXh0ID8gbV9nbENvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpIDogR0xDb250ZXh0OjpnZXRDdXJyZW50KCktPnBsYXRmb3JtQ29udGV4dCgpOwog
fQogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
U19USFJFQURFRCkKK1JlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OnByb3h5KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQog
dm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1
cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICBp
ZiAoIW1fZ2xDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAppbmRleCA5ZDcwZWU2OWUwMjFl
ZDVlYmVlYThlOGJjYjBlZDExN2I4ZjgwYzJjLi45ZmM5MjI0MmU4YmY1NTdhNWMxNGNjYzllN2Rl
YjRjMzZlZWZkNTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaApAQCAtMjMsMTQgKzIzLDE4IEBA
CiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIK
IAotI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Nf
VEhSRUFERUQpCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oIgor
I2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIDogcHVibGljIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHlQcm92aWRlcgorI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQogICAgIDog
cHVibGljIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyCiAjZW5kaWYKIHsKQEAgLTQyLDcgKzQ2
LDEwIEBAIHB1YmxpYzoKIAogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5k
ZXJTdHlsZSgpIHsgcmV0dXJuIG1fcmVuZGVyU3R5bGU7IH0KIAotI2lmIFVTRShURVhUVVJFX01B
UFBFUikKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgdmlydHVh
bCBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gcHJveHkoKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCgpIG92ZXJyaWRl
IHsgfTsKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUikKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRU
b1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHkpOwogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5ZXIuaAppbmRl
eCBmOTBmYzY3Y2M5MTRkZDYwNGU3M2ViZTBmNDU2ZDI5NDVmM2ZhNmQ3Li4yOWY5ZGVjYjI0YmEy
ZDQ0ZTQxMDFkMDNjMTgwOTlkYWFiMTVlZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1MYXllci5oCkBAIC0zMSw2ICszMSwxMSBAQCBPQkpDX0NM
QVNTIENBTGF5ZXI7CiB0eXBlZGVmIENBTGF5ZXIgUGxhdGZvcm1MYXllcjsKICNlbGlmIFBMQVRG
T1JNKFdJTikgJiYgVVNFKENBKQogdHlwZWRlZiBzdHJ1Y3QgX0NBQ0ZMYXllciBQbGF0Zm9ybUxh
eWVyOworI2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVy
OwordHlwZWRlZiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5UHJvdmlkZXIgUGxhdGZv
cm1MYXllcjsKK307CiAjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHAKaW5kZXggMjU2ZDFjYzgzMTNiYThiMDcxODdjNzUwYjFjOTY0NjcyZGY4ZTEwOS4uMDU3YjZi
ZWEyNjY0M2NmMzNjOGU2NmUxZDZjODY3MTdjMDI4NjJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHAKQEAgLTUyLDYgKzUyLDkgQEAKICNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgogI2luY2x1ZGUg
IlRleHR1cmVNYXBwZXJHTC5oIgogI2luY2x1ZGUgPGNhaXJvLWdsLmg+CisjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHkuaCIKKyNlbmRpZgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBA
IC00MDksNiArNDEyLDEzIEBAIFN0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSosIENvb3JkaW5hdGVTCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTX1RIUkVBREVEKQorUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IElt
YWdlQnVmZmVyRGF0YTo6cHJveHkoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisjZWxzZQogdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxv
YXQgb3BhY2l0eSkKIHsKICAgICBBU1NFUlQobV90ZXh0dXJlKTsKQEAgLTQyMSw2ICs0MzEsNyBA
QCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBl
ciogdGV4dHVyZU1hcHBlciwgY29uc3QgRgogICAgIHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJH
TCo+KHRleHR1cmVNYXBwZXIpLT5kcmF3VGV4dHVyZShtX3RleHR1cmUsIFRleHR1cmVNYXBwZXJH
TDo6U2hvdWxkQmxlbmQsIG1fc2l6ZSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5KTsKIH0K
ICNlbmRpZgorI2VuZGlmCiAKIFBsYXRmb3JtTGF5ZXIqIEltYWdlQnVmZmVyOjpwbGF0Zm9ybUxh
eWVyKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YUNhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWlyby5oCmluZGV4IGQ2MmY0NzA1MTVl
M2U4MmRjYTlkOTc2MzQ0N2E2N2UyZmM0ZDA2MzMuLmMzZjlhMTIyNDgyMTUzMGU3ODExNjZmMDFh
MzZhNzFkMjIxY2MwODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YUNhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJEYXRhQ2Fpcm8uaApAQCAtMzMsOCArMzMs
MTIgQEAKIAogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCiAjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlci5oIgorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgiCisjZWxzZQogI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCiAjZW5kaWYKKyNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQyLDggKzQ2LDEyIEBAIGNsYXNzIEludFNpemU7CiAKIGNs
YXNzIEltYWdlQnVmZmVyRGF0YQogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIDogcHVibGljIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlQcm92aWRlcgorI2Vsc2UKICAgICA6IHB1YmxpYyBU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcgogI2VuZGlmCisjZW5kaWYKIHsKIHB1YmxpYzoKICAg
ICBJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYpOwpAQCAtNTQsNyArNjIsMTIgQEAgcHVi
bGljOgogICAgIEludFNpemUgbV9zaXplOwogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NB
TlZBUykKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgdmlydHVh
bCBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gcHJveHkoKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCgpIG92ZXJyaWRl
IHsgfTsKKyNlbHNlCiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1
cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmLCBmbG9hdCBvcGFjaXR5KTsKKyNlbmRpZgogICAgIHVpbnQzMl90IG1fdGV4dHVyZTsK
ICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaAppbmRleCBlYjIwYTBmMjBlY2I2YzQ3ZDVmZTBi
MmM1MTU5OTgyZDg3YmQ2NGYyLi5kNWQ2NzM4YTNlZDFlZGUwODUzNGI2MTRhMDIwYjY0Mzk2Y2Uw
ZTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Qml0bWFwVGV4dHVyZUdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oCkBAIC02OSw2ICs2OSw4IEBAIHB1YmxpYzoKICAgICBj
b25zdCBGaWx0ZXJJbmZvKiBmaWx0ZXJJbmZvKCkgY29uc3QgeyByZXR1cm4gJm1fZmlsdGVySW5m
bzsgfQogICAgIFRleHR1cmVNYXBwZXJHTDo6Q2xpcFN0YWNrJiBjbGlwU3RhY2soKSB7IHJldHVy
biBtX2NsaXBTdGFjazsgfQogCisgICAgR0MzRGludCBpbnRlcm5hbEZvcm1hdCgpIGNvbnN0IHsg
cmV0dXJuIG1faW50ZXJuYWxGb3JtYXQ7IH0KKwogcHJpdmF0ZToKIAogICAgIFBsYXRmb3JtM0RP
YmplY3QgbV9pZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmlu
ZGV4IDUwMWQyYTg5ZTllODdhZTBmZDU1MjJhYzQ4Nzc3MDk2YzNlYzBjZTMuLmNlZGE4MmRmMjQ2
NjQ0MWZhNmZiNDYyMmQwNzk1YTg1YWJhMDBiYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIlRleHR1cmVN
YXBwZXJBbmltYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAotI2lmIFVT
RShURVhUVVJFX01BUFBFUikKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpICYmICFVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCBmNTZjZjUxODU5Y2RjN2FiZDgwYzM2YTY5YWZk
MDZjMjg4YTM0YzMzLi5iMGFhNDYzN2Q4YmM2MWZiMmY5NjRlOTNlMTMwMTVkMmUyZTMxNjBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtMjAsNyArMjAsNyBA
QAogI2lmbmRlZiBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcl9oCiAjZGVmaW5lIEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyX2gKIAotI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyNpZiBVU0Uo
VEVYVFVSRV9NQVBQRVIpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAKICNpbmNsdWRl
ICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVudC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCA1ZjM0ZjQxODUwMzI2N2NlMDdlYWI2N2U4MDUy
M2ZhMzE4MTA2MzkzLi5mYzc3MTA2MmUxYzAyYWY3MGYzZjNjMzJkNjM3ZmNkMDNlZjg3ZmYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAtNDQ1LDEyICs0NDUsMTQgQEAgVGV4dHVy
ZU1hcHBlckxheWVyOjp+VGV4dHVyZU1hcHBlckxheWVyKCkKICAgICByZW1vdmVGcm9tUGFyZW50
KCk7CiB9CiAKKyNpZiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogdm9pZCBUZXh0dXJlTWFw
cGVyTGF5ZXI6OnNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIG5ld0No
aWxkcmVuKQogewogICAgIHJlbW92ZUFsbENoaWxkcmVuKCk7CiAgICAgZm9yIChhdXRvKiBjaGls
ZCA6IG5ld0NoaWxkcmVuKQogICAgICAgICBhZGRDaGlsZCgmZG93bmNhc3Q8R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI+KGNoaWxkKS0+bGF5ZXIoKSk7CiB9CisjZW5kaWYKIAogdm9pZCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OnNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5
ZXIqPiYgbmV3Q2hpbGRyZW4pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKaW5kZXggMGM5ZGE3
MWJiMTk1Y2I0ZGNkNzFmMTUwZjdmZTdhMmUyNjNhY2FkMi4uNmFkYjY1NGM4MTM0YzUxODdlYTk2
N2Y4MjBjYWVjZDM2N2Q0OGQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtNzgsNyAr
NzgsOSBAQCBwdWJsaWM6CiAgICAgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcigpIGNvbnN0
IHsgcmV0dXJuIHJvb3RMYXllcigpLm1fdGV4dHVyZU1hcHBlcjsgfQogICAgIHZvaWQgc2V0VGV4
dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXhtYXApIHsgbV90ZXh0dXJlTWFwcGVyID0gdGV4
bWFwOyB9CiAKKyNpZiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIHZvaWQgc2V0Q2hp
bGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYpOworI2VuZGlmCiAgICAgdm9pZCBz
ZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8VGV4dHVyZU1hcHBlckxheWVyKj4mKTsKICAgICB2b2lk
IHNldE1hc2tMYXllcihUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKICAgICB2b2lkIHNldFJlcGxpY2FM
YXllcihUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5NzY5MTM0YjRkZDBmOGRlZjIz
ODBhNmUyNzg4M2U4YmFkMDNiZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIu
Y3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMu
TC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyKFJlZlB0cjxCaXRtYXBUZXh0dXJlPiYmIHRleHR1cmUpCisgICAgOiBtX3RleHR1cmUoV1RG
Ojptb3ZlKHRleHR1cmUpKQorICAgICwgbV9leHRyYUZsYWdzKDApCisgICAgLCBtX2hhc01hbmFn
ZWRUZXh0dXJlKHRydWUpCit7Cit9CisKK1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
OjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihHTHVpbnQgdGV4dHVyZUlELCBjb25z
dCBJbnRTaXplJiBzaXplLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzKQorICAgIDogbV90
ZXh0dXJlSUQodGV4dHVyZUlEKQorICAgICwgbV9zaXplKHNpemUpCisgICAgLCBtX2V4dHJhRmxh
Z3MoZmxhZ3MpCisgICAgLCBtX2hhc01hbmFnZWRUZXh0dXJlKGZhbHNlKQoreworfQorCitib29s
IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpjYW5SZXVzZVdpdGhvdXRSZXNldChj
b25zdCBJbnRTaXplJiBzaXplLCBHQzNEaW50IGludGVybmFsRm9ybWF0KQoreworICAgIHJldHVy
biBtX3RleHR1cmUgJiYgKG1fdGV4dHVyZS0+c2l6ZSgpID09IHNpemUpICYmIChzdGF0aWNfY2Fz
dDxCaXRtYXBUZXh0dXJlR0wqPihtX3RleHR1cmUuZ2V0KCkpLT5pbnRlcm5hbEZvcm1hdCgpID09
IGludGVybmFsRm9ybWF0IHx8IGludGVybmFsRm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpE
T05UX0NBUkUpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpw
YWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZp
ZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkpCit7CisgICAgaWYgKG1faGFzTWFuYWdlZFRleHR1cmUp
IHsKKyAgICAgICAgQVNTRVJUKG1fdGV4dHVyZSk7CisgICAgICAgIHRleHR1cmVNYXBwZXItPmRy
YXdUZXh0dXJlKCptX3RleHR1cmUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0
eSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQobV90ZXh0dXJlSUQpOwor
ICAgIFRleHR1cmVNYXBwZXJHTCogdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVy
R0wqPih0ZXh0dXJlTWFwcGVyKTsKKyAgICB0ZXhtYXBHTC0+ZHJhd1RleHR1cmUobV90ZXh0dXJl
SUQsIG1fZXh0cmFGbGFncywgbV9zaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9w
YWNpdHkpOworfQorCit9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NmIzOTNiNDIyOTQ3
MWVjNzA1ZTg2NGZjZDNhNmYzZmE5MTNhOTc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyLmgKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2Fs
aWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyX2gKKyNkZWZpbmUgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXJfaAorCisjaW5j
bHVkZSAiQml0bWFwVGV4dHVyZUdMLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCisj
aW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlciA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXIpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKCk7CitwdWJsaWM6CisgICAgVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoUmVmUHRyPEJpdG1hcFRleHR1cmU+JiYpOworICAg
IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKEdMdWludCB0ZXh0dXJlSUQsIGNvbnN0
IEludFNpemUmLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzKTsKKworICAgIHZpcnR1YWwgflRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCB2
b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSwgZmxvYXQgb3BhY2l0eSA9IDEuMCkgZmluYWw7CisKKyAgICBib29sIGNh
blJldXNlV2l0aG91dFJlc2V0KGNvbnN0IEludFNpemUmLCBHQzNEaW50IGludGVybmFsRm9ybWF0
KTsKKyAgICBCaXRtYXBUZXh0dXJlR0wmIHRleHR1cmVHTCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PEJpdG1hcFRleHR1cmVHTCY+KCptX3RleHR1cmUpOyB9CisKKyAgICBpbmxpbmUgdm9pZCBtYXJr
VXNlZCgpIHsgbV90aW1lTGFzdFVzZWQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsg
fQorICAgIGRvdWJsZSBsYXN0VXNlZFRpbWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVMYXN0VXNl
ZDsgfQorCisgICAgY2xhc3MgVW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlciB7CisgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIpOworICAgICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRCgpOworICAgIHB1YmxpYzoKKyAgICAgICAgVW5tYW5hZ2Vk
QnVmZmVyRGF0YUhvbGRlcigpIHsgfQorICAgICAgICB2aXJ0dWFsIH5Vbm1hbmFnZWRCdWZmZXJE
YXRhSG9sZGVyKCkgPSBkZWZhdWx0OworICAgIH07CisKKyAgICBib29sIGhhc01hbmFnZWRUZXh0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNYW5hZ2VkVGV4dHVyZTsgfQorICAgIHZvaWQgc2V0
VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcihzdGQ6OnVuaXF1ZV9wdHI8VW5tYW5hZ2VkQnVmZmVy
RGF0YUhvbGRlcj4gaG9sZGVyKSB7IG1fdW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlciA9IFdURjo6
bW92ZShob2xkZXIpOyB9CisKK3ByaXZhdGU6CisKKyAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4g
bV90ZXh0dXJlOworICAgIGRvdWJsZSBtX3RpbWVMYXN0VXNlZCB7IDAgfTsKKworICAgIEdMdWlu
dCBtX3RleHR1cmVJRDsKKyAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBUZXh0dXJlTWFwcGVyR0w6
OkZsYWdzIG1fZXh0cmFGbGFnczsKKyAgICBib29sIG1faGFzTWFuYWdlZFRleHR1cmU7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXI+IG1fdW5tYW5hZ2VkQnVm
ZmVyRGF0YUhvbGRlcjsKK307CisKK307CisKKyNlbmRpZiAvLyBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDk3YjUxNGVjOTlkMDIyZjg4ZmFiOWI2YTBkMjM3MzBl
YWE5MDE5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcApAQCAtMCwwICsx
LDE1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eS5oIgorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorCisj
aW5jbHVkZSAiQml0bWFwVGV4dHVyZUdMLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgi
CisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXIuaCIKKworY29uc3QgZG91YmxlIHNfcmVsZWFzZVVudXNlZFNl
Y29uZHNUb2xlcmFuY2UgPSAxOworY29uc3QgZG91YmxlIHNfcmVsZWFzZVVudXNlZEJ1ZmZlcnNU
aW1lckludGVydmFsID0gMC41OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkoKQor
ICAgIDogbV9jb21wb3NpdG9yKDApCisgICAgLCBtX3RhcmdldExheWVyKDApCisgICAgLCBtX3J1
bkxvb3AoUnVuTG9vcDo6Y3VycmVudCgpKQorICAgICwgbV9yZWxlYXNlVW51c2VkQnVmZmVyc1Rp
bWVyKG1fcnVuTG9vcCwgdGhpcywgJlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnJl
bGVhc2VVbnVzZWRCdWZmZXJzVGltZXJGaXJlZCkKK3sKK30KKworVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eTo6flRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkoKQoreworICAg
IGlmIChtX3RhcmdldExheWVyKQorICAgICAgICBtX3RhcmdldExheWVyLT5zZXRDb250ZW50c0xh
eWVyKG51bGxwdHIpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6
OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZChDb21wb3NpdG9yKiBjb21wb3NpdG9yLCBUZXh0
dXJlTWFwcGVyTGF5ZXIqIHRhcmdldExheWVyKQoreworI2lmbmRlZiBOREVCVUcKKyAgICBtX2Nv
bXBvc2l0b3JUaHJlYWRJRCA9IG1fY29tcG9zaXRvclRocmVhZElEID8gbV9jb21wb3NpdG9yVGhy
ZWFkSUQgOiBXVEY6OmN1cnJlbnRUaHJlYWQoKTsKKyNlbmRpZgorICAgIEFTU0VSVChtX2NvbXBv
c2l0b3JUaHJlYWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGNvbXBv
c2l0b3IpOworICAgIEFTU0VSVCh0YXJnZXRMYXllcik7CisgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9sb2NrKTsKKyAgICBtX2NvbXBvc2l0b3IgPSBjb21wb3NpdG9yOworICAgIG1fdGFyZ2V0TGF5
ZXIgPSB0YXJnZXRMYXllcjsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBy
b3h5OjppbnZhbGlkYXRlKCkKK3sKKyAgICBBU1NFUlQobV9jb21wb3NpdG9yVGhyZWFkSUQgPT0g
V1RGOjpjdXJyZW50VGhyZWFkKCkpOworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7Cisg
ICAgbV9jb21wb3NpdG9yID0gbnVsbHB0cjsKKyAgICBtX3RhcmdldExheWVyID0gbnVsbHB0cjsK
K30KKworYm9vbCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojppc0FjdGl2ZSgpCit7
CisgICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7CisgICAgcmV0dXJuICEhbV90YXJnZXRMYXll
ciAmJiAhIW1fY29tcG9zaXRvcjsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
clByb3h5OjpwdXNoTmV4dEJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI+IG5ld0J1ZmZlcikKK3sKKyAgICBBU1NFUlQobV9sb2NrLmlzSGVsZCgp
KTsKKyAgICBtX3BlbmRpbmdCdWZmZXIgPSBXVEY6Om1vdmUobmV3QnVmZmVyKTsKKworICAgIGlm
IChtX2NvbXBvc2l0b3IpCisgICAgICAgIG1fY29tcG9zaXRvci0+b25OZXdCdWZmZXJBdmFpbGFi
bGUoKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyPiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpnZXRBdmFpbGFibGVCdWZmZXIo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGludCBpbnRlcm5hbEZvcm1hdCkKK3sKKyAgICBBU1NF
UlQobV9sb2NrLmlzSGVsZCgpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXI+IGF2YWlsYWJsZUJ1ZmZlcjsKKworICAgIGF1dG8gYnVmZmVycyA9
IFdURjo6bW92ZShtX3VzZWRCdWZmZXJzKTsKKyAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGJ1ZmZl
cnMpIHsKKyAgICAgICAgaWYgKCFidWZmZXIpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBpZiAoIWF2YWlsYWJsZUJ1ZmZlciAmJiBidWZmZXItPmNhblJldXNlV2l0aG91dFJlc2V0
KHNpemUsIGludGVybmFsRm9ybWF0KSkgeworICAgICAgICAgICAgYXZhaWxhYmxlQnVmZmVyID0g
V1RGOjptb3ZlKGJ1ZmZlcik7CisgICAgICAgICAgICBhdmFpbGFibGVCdWZmZXItPm1hcmtVc2Vk
KCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBtX3VzZWRCdWZm
ZXJzLmFwcGVuZChXVEY6Om1vdmUoYnVmZmVyKSk7CisgICAgfQorCisgICAgaWYgKCFtX3VzZWRC
dWZmZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgc2NoZWR1bGVSZWxlYXNlVW51c2VkQnVmZmVycygp
OworICAgIHJldHVybiBhdmFpbGFibGVCdWZmZXI7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eTo6c2NoZWR1bGVSZWxlYXNlVW51c2VkQnVmZmVycygpCit7CisgICAg
aWYgKCFtX3JlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9y
ZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyLnN0YXJ0T25lU2hvdChzX3JlbGVhc2VVbnVzZWRCdWZm
ZXJzVGltZXJJbnRlcnZhbCk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eTo6cmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckZpcmVkKCkKK3sKKyAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2xvY2spOworICAgIGlmIChtX3VzZWRCdWZmZXJzLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBidWZmZXJzID0gV1RGOjptb3ZlKG1fdXNlZEJ1ZmZlcnMp
OworICAgIGRvdWJsZSBtaW5Vc2VkVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
IC0gc19yZWxlYXNlVW51c2VkU2Vjb25kc1RvbGVyYW5jZTsKKworICAgIGZvciAoYXV0byYgYnVm
ZmVyIDogYnVmZmVycykgeworICAgICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+bGFzdFVzZWRU
aW1lKCkgPj0gbWluVXNlZFRpbWUpCisgICAgICAgICAgICBtX3VzZWRCdWZmZXJzLmFwcGVuZChX
VEY6Om1vdmUoYnVmZmVyKSk7CisgICAgfQorfQorCit2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHk6OnN3YXBCdWZmZXIoKQoreworICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJl
YWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBwcmV2QnVmZmVyOworCisgICAgeworICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICBpZiAoIW1fdGFyZ2V0TGF5ZXIg
fHwgIW1fcGVuZGluZ0J1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBwcmV2
QnVmZmVyID0gV1RGOjptb3ZlKG1fY3VycmVudEJ1ZmZlcik7CisKKyAgICAgICAgbV9jdXJyZW50
QnVmZmVyID0gV1RGOjptb3ZlKG1fcGVuZGluZ0J1ZmZlcik7CisgICAgICAgIG1fdGFyZ2V0TGF5
ZXItPnNldENvbnRlbnRzTGF5ZXIobV9jdXJyZW50QnVmZmVyLmdldCgpKTsKKyAgICB9CisKKyAg
ICBpZiAocHJldkJ1ZmZlciAmJiBwcmV2QnVmZmVyLT5oYXNNYW5hZ2VkVGV4dHVyZSgpKQorICAg
ICAgICBtX3VzZWRCdWZmZXJzLmFwcGVuZChXVEY6Om1vdmUocHJldkJ1ZmZlcikpOworfQorCit9
OworCisjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWFh
NWVjOGJkNTI0YWMzYTc1NDVkZTdlZjhlMTY4OGNmYmYwYWVlNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5LmgKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5X2gKKyNkZWZpbmUgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eV9o
CisKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
LmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKKyNpbmNsdWRlIDx3dGYvQ29u
ZGl0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworI2lmbmRlZiBOREVCVUcKKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Cisj
ZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXI7
CitjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OworY2xhc3MgVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI7CisKK2NsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHlQcm92aWRlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCBSZWZQdHI8VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gcHJveHkoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQoKSA9IDA7Cit9OworCitjbGFzcyBUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCgp
OworcHVibGljOgorICAgIGNsYXNzIENvbXBvc2l0b3IgeworICAgIHB1YmxpYzoKKyAgICAgICAg
dmlydHVhbCB2b2lkIG9uTmV3QnVmZmVyQXZhaWxhYmxlKCkgPSAwOworICAgIH07CisKKyAgICBU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5KCk7CisgICAgdmlydHVhbCB+VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eSgpOworCisgICAgLy8gVG8gYXZvaWQgbXVsdGlwbGUgbG9j
ay9yZWxlYXNlIHNpdHVhdGlvbiB0byB1cGRhdGUgYSBzaW5nbGUgZnJhbWUsCisgICAgLy8gdGhl
IGltcGxlbWVudGF0aW9uIG9mIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlQcm92aWRl
ciBzaG91bGQKKyAgICAvLyBhcXVpcmUgLyByZWxlYXNlIHRoZSBsb2NrIGV4cGxpY2l0bHkgdG8g
dXNlIGJlbG93IG1ldGhvZHMuCisgICAgTG9jayYgbG9jaygpIHsgcmV0dXJuIG1fbG9jazsgfQor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gZ2V0
QXZhaWxhYmxlQnVmZmVyKGNvbnN0IEludFNpemUmLCBHQzNEaW50IGludGVybmFsRm9ybWF0KTsK
KyAgICB2b2lkIHB1c2hOZXh0QnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcj4pOworICAgIGJvb2wgaXNBY3RpdmUoKTsKKworICAgIHZvaWQgYWN0
aXZhdGVPbkNvbXBvc2l0aW5nVGhyZWFkKENvbXBvc2l0b3IqLCBUZXh0dXJlTWFwcGVyTGF5ZXIq
KTsKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKKworICAgIHZvaWQgc3dhcEJ1ZmZlcigpOworCitw
cml2YXRlOgorICAgIHZvaWQgc2NoZWR1bGVSZWxlYXNlVW51c2VkQnVmZmVycygpOworICAgIHZv
aWQgcmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckZpcmVkKCk7CisKKyAgICBDb21wb3NpdG9yKiBt
X2NvbXBvc2l0b3I7CisgICAgVGV4dHVyZU1hcHBlckxheWVyKiBtX3RhcmdldExheWVyOworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBtX2N1
cnJlbnRCdWZmZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyPiBtX3BlbmRpbmdCdWZmZXI7CisKKyAgICBMb2NrIG1fbG9jazsKKworICAgIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+PiBt
X3VzZWRCdWZmZXJzOworCisgICAgUnVuTG9vcCYgbV9ydW5Mb29wOworICAgIFJ1bkxvb3A6OlRp
bWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IG1fcmVsZWFzZVVudXNlZEJ1ZmZl
cnNUaW1lcjsKKyNpZm5kZWYgTkRFQlVHCisgICAgVGhyZWFkSWRlbnRpZmllciBtX2NvbXBvc2l0
b3JUaHJlYWRJRCB7IDAgfTsKKyNlbmRpZgorfTsKKworfTsKKworI2VuZGlmIC8vIFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCBmZGY2YmU3Y2ZlMjI0NGE4Mjgy
YmQ4NjRhZGFjNjEzZTZlYWQzZjNkLi44NWQyZjZmYWQ0ZmRiNGMwYWUwMWFjNzc2MDQyNDkzNWY2
ZWQ4MWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcApAQCAtMzAsOSArMzAsOSBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIu
aCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyRmFjdG9yeS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpZm5kZWYgTkRFQlVHCkBAIC00Miw2ICs0MiwxNCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK3N0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0xheWVyPiBHcmFwaGljc0xh
eWVyOjpjcmVhdGUoR3JhcGhpY3NMYXllckZhY3RvcnkqIGZhY3RvcnksIEdyYXBoaWNzTGF5ZXJD
bGllbnQmIGNsaWVudCwgVHlwZSBsYXllclR5cGUpCit7CisgICAgaWYgKCFmYWN0b3J5KQorICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+KGxh
eWVyVHlwZSwgY2xpZW50KTsKKworICAgIHJldHVybiBmYWN0b3J5LT5jcmVhdGVHcmFwaGljc0xh
eWVyKGxheWVyVHlwZSwgY2xpZW50KTsKK30KKwogc3RhdGljIENvb3JkaW5hdGVkTGF5ZXJJRCB0
b0Nvb3JkaW5hdGVkTGF5ZXJJRChHcmFwaGljc0xheWVyKiBsYXllcikKIHsKICAgICByZXR1cm4g
bGF5ZXIgPyB0b0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihsYXllciktPmlkKCkgOiAwOwpAQCAt
MTIxLDYgKzEyOSw5IEBAIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyKFR5cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVyCiAgICAgLCBtX2lzVmFsaWRQ
bGF0Zm9ybUxheWVyKGZhbHNlKQogICAgICwgbV9wZW5kaW5nUGxhdGZvcm1MYXllck9wZXJhdGlv
bihOb25lKQogI2VuZGlmCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQor
ICAgICwgbV9zaG91bGRTeW5jUGxhdGZvcm1MYXllcihmYWxzZSkKKyNlbmRpZgogICAgICwgbV9j
b29yZGluYXRvcigwKQogICAgICwgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIoMCkKICAgICAs
IG1fcGxhdGZvcm1MYXllcigwKQpAQCAtNDA2LDYgKzQxNywxMiBAQCB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXllciog
cGxhdGZvcgogICAgIEFTU0VSVCghKCFtX3BsYXRmb3JtTGF5ZXJUb2tlbi5pc1ZhbGlkKCkgJiYg
bV9wbGF0Zm9ybUxheWVyKSk7CiAKICAgICBub3RpZnlGbHVzaFJlcXVpcmVkKCk7CisjZWxpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgaWYgKG1fcGxhdGZvcm1MYXll
ciAhPSBwbGF0Zm9ybUxheWVyKQorICAgICAgICBtX3Nob3VsZFN5bmNQbGF0Zm9ybUxheWVyID0g
dHJ1ZTsKKworICAgIG1fcGxhdGZvcm1MYXllciA9IHBsYXRmb3JtTGF5ZXI7CisgICAgbm90aWZ5
Rmx1c2hSZXF1aXJlZCgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocGxhdGZvcm1MYXllcik7
CiAjZW5kaWYKQEAgLTY5NCw5ICs3MTEsOSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6c3luY0FuaW1hdGlvbnMoKQogICAgIG1fbGF5ZXJTdGF0ZS5hbmltYXRpb25zQ2hhbmdlZCA9
IHRydWU7CiB9CiAKLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjpzeW5jUGxhdGZvcm1MYXllcigpCiB7CisjaWYgVVNFKEdSQVBISUNTX1NV
UkZBQ0UpCiAgICAgZGVzdHJveVBsYXRmb3JtTGF5ZXJJZk5lZWRlZCgpOwogICAgIGNyZWF0ZVBs
YXRmb3JtTGF5ZXJJZk5lZWRlZCgpOwogCkBAIC03MTEsOCArNzI4LDIwIEBAIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jUGxhdGZvcm1MYXllcigpCiAgICAgQVNTRVJUKG1fcGxh
dGZvcm1MYXllcik7CiAgICAgbV9sYXllclN0YXRlLnBsYXRmb3JtTGF5ZXJGcm9udEJ1ZmZlciA9
IG1fcGxhdGZvcm1MYXllci0+Y29weVRvR3JhcGhpY3NTdXJmYWNlKCk7CiAgICAgbV9sYXllclN0
YXRlLnBsYXRmb3JtTGF5ZXJTaG91bGRTd2FwQnVmZmVycyA9IHRydWU7CisjZWxpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgaWYgKCFtX3Nob3VsZFN5bmNQbGF0Zm9y
bUxheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Nob3VsZFN5bmNQbGF0Zm9ybUxheWVy
ID0gZmFsc2U7CisgICAgbV9sYXllclN0YXRlLnBsYXRmb3JtTGF5ZXJDaGFuZ2VkID0gdHJ1ZTsK
KyAgICBpZiAobV9wbGF0Zm9ybUxheWVyKSB7CisgICAgICAgIG1fcGxhdGZvcm1MYXllci0+c3dh
cEJ1ZmZlcnNJZk5lZWRlZCgpOworICAgICAgICBtX2xheWVyU3RhdGUucGxhdGZvcm1MYXllclBy
b3h5ID0gbV9wbGF0Zm9ybUxheWVyLT5wcm94eSgpOworICAgIH0KKyNlbmRpZgogfQogCisjaWYg
VVNFKEdSQVBISUNTX1NVUkZBQ0UpCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZGVz
dHJveVBsYXRmb3JtTGF5ZXJJZk5lZWRlZCgpCiB7CiAgICAgaWYgKCEobV9wZW5kaW5nUGxhdGZv
cm1MYXllck9wZXJhdGlvbiAmIERlc3Ryb3lQbGF0Zm9ybUxheWVyKSkKQEAgLTc2Myw5ICs3OTIs
NyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRl
Rm9yVGhpc0xheWVyT25seShib29sKQogICAgIGNvbXB1dGVUcmFuc2Zvcm1lZFZpc2libGVSZWN0
KCk7CiAgICAgc3luY0NoaWxkcmVuKCk7CiAgICAgc3luY0ZpbHRlcnMoKTsKLSNpZiBVU0UoR1JB
UEhJQ1NfU1VSRkFDRSkKICAgICBzeW5jUGxhdGZvcm1MYXllcigpOwotI2VuZGlmCiAKICAgICAv
LyBPbmx5IHVuc2V0IG1fbW92aW5nVmlzaWJsZVJlY3QgYWZ0ZXIgd2UgaGF2ZSB1cGRhdGVkIHRo
ZSB2aXNpYmxlIHJlY3QgYWZ0ZXIgdGhlIGFuaW1hdGlvbiBzdG9wcGVkLgogICAgIGlmICghaGFz
QWN0aXZlVHJhbnNmb3JtQW5pbWF0aW9uKQpAQCAtMTE4OSw1ICsxMjE2LDE3IEBAIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZCgpCiB7CiAg
ICAgY2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCAiIiwgbV9sYXN0QW5pbWF0
aW9uU3RhcnRUaW1lKTsKIH0KKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURF
RCkKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpwbGF0Zm9ybUxheWVyV2lsbEJlRGVz
dHJveWVkKCkKK3sKK30KKwordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFBsYXRm
b3JtTGF5ZXJOZWVkc0Rpc3BsYXkoKQoreworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKwogI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAppbmRleCA1NDY1
NjY0YzlmZDM2Yzc0NWIwNTgxZDI0OGM0OTViNjk1Nzg2YTI2Li44YTQ1YzM1NjU4NTcwNDM1NzFi
MmUzNTlmNzY2ZWY5MWJkNDBjY2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
SW1hZ2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckFu
aW1hdGlvbi5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCiAjaW5j
bHVkZSAiVGlsZWRCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJUaWxlZEJhY2tpbmdTdG9yZUNs
aWVudC5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCkBAIC01Nyw2ICs1OCw5
IEBAIHB1YmxpYzoKIAogY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyIDogcHVibGljIEdy
YXBoaWNzTGF5ZXIKICAgICAsIHB1YmxpYyBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudAorI2lmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICAsIHB1YmxpYyBUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllcjo6Q2xpZW50CisjZW5kaWYKICAgICAsIHB1YmxpYyBDb29yZGluYXRl
ZEltYWdlQmFja2luZzo6SG9zdCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyKFR5cGUsIEdyYXBoaWNzTGF5ZXJDbGllbnQmKTsKQEAgLTE1NSwxMCArMTU5
LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIFJlY3JlYXRlUGxhdGZvcm1MYXllciA9IENyZWF0ZUFu
ZFN5bmNQbGF0Zm9ybUxheWVyIHwgRGVzdHJveVBsYXRmb3JtTGF5ZXIKICAgICB9OwogCi0gICAg
dm9pZCBzeW5jUGxhdGZvcm1MYXllcigpOwogICAgIHZvaWQgZGVzdHJveVBsYXRmb3JtTGF5ZXJJ
Zk5lZWRlZCgpOwogICAgIHZvaWQgY3JlYXRlUGxhdGZvcm1MYXllcklmTmVlZGVkKCk7CiAjZW5k
aWYKKyAgICB2b2lkIHN5bmNQbGF0Zm9ybUxheWVyKCk7CisjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTX1RIUkVBREVEKQorICAgIHZvaWQgcGxhdGZvcm1MYXllcldpbGxCZURlc3Ryb3llZCgp
OworICAgIHZvaWQgc2V0UGxhdGZvcm1MYXllck5lZWRzRGlzcGxheSgpOworI2VuZGlmCiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCB3aWR0aCkg
b3ZlcnJpZGU7CiAKQEAgLTIyMyw2ICsyMzEsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1Zh
bGlkUGxhdGZvcm1MYXllciA6IDE7CiAgICAgdW5zaWduZWQgbV9wZW5kaW5nUGxhdGZvcm1MYXll
ck9wZXJhdGlvbiA6IDM7CiAjZW5kaWYKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhS
RUFERUQpCisgICAgYm9vbCBtX3Nob3VsZFN5bmNQbGF0Zm9ybUxheWVyIDogMTsKKyNlbmRpZgog
CiAgICAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50KiBtX2Nvb3JkaW5hdG9yOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxUaWxlZEJhY2tpbmdTdG9yZT4gbV9tYWluQmFja2luZ1N0b3JlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5o
CmluZGV4IDE0ZjJiNzc1MDQ2NzhmMDk3NjI3ODE4MDIyZGZiZWZhMjcyNDJkZjYuLjg0ZTdiMjc0
YzFhNjIxNjk0ZDY4YzA0Mjg3ODhkZjNhNTg3Nzc0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmgKQEAgLTQ0LDYgKzQ0LDEwIEBA
CiAjaW5jbHVkZSAiR3JhcGhpY3NTdXJmYWNlVG9rZW4uaCIKICNlbmRpZgogCisjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENvb3JkaW5hdGVkU3VyZmFjZTsKQEAgLTEzMCw2ICsxMzQsOSBAQCBzdHJ1Y3QgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyU3RhdGUgewogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgICAg
ICAsIHBsYXRmb3JtTGF5ZXJGcm9udEJ1ZmZlcigwKQogI2VuZGlmCisjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgICAgICAsIHBsYXRmb3JtTGF5ZXJQcm94eSgwKQor
I2VuZGlmCiAgICAgewogICAgIH0KIApAQCAtMTY0LDYgKzE3MSwxMCBAQCBzdHJ1Y3QgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyU3RhdGUgewogICAgIEdyYXBoaWNzU3VyZmFjZTo6RmxhZ3MgcGxh
dGZvcm1MYXllclN1cmZhY2VGbGFnczsKICNlbmRpZgogCisjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTX1RIUkVBREVEKQorICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBy
b3h5PiBwbGF0Zm9ybUxheWVyUHJveHk7CisjZW5kaWYKKwogICAgIEludFNpemUgY29tbWl0dGVk
U2Nyb2xsT2Zmc2V0OwogCiAgICAgYm9vbCBoYXNQZW5kaW5nQ2hhbmdlcygpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCBkZWFiMDQ3M2ZlYWY2
YmY0YTk3OGIyNDllNzU2ZjY1NzI3MmNlODBlLi4zMDYxMWYxMzU1OTM4ZDIzNzZjNzQzODFjYzRl
YWE0ZDZlOTUyZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5j
cHAKQEAgLTgzLDYgKzgzLDExIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWlu
dFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpCiAgICAgaWYgKCFj
dXJyZW50Um9vdExheWVyKQogICAgICAgICByZXR1cm47CiAKKyNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1NfVEhSRUFERUQpCisgICAgZm9yIChQbGF0Zm9ybUxheWVyUHJveHlNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9wbGF0Zm9ybUxheWVyUHJveGllcy5iZWdpbigpOyBpdCAhPSBtX3BsYXRmb3Jt
TGF5ZXJQcm94aWVzLmVuZCgpOyArK2l0KQorICAgICAgICBpdC0+dmFsdWUtPnN3YXBCdWZmZXIo
KTsKKyNlbmRpZgorCiAgICAgY3VycmVudFJvb3RMYXllci0+c2V0VGV4dHVyZU1hcHBlcihtX3Rl
eHR1cmVNYXBwZXIuZ2V0KCkpOwogICAgIGN1cnJlbnRSb290TGF5ZXItPmFwcGx5QW5pbWF0aW9u
c1JlY3Vyc2l2ZWx5KCk7CiAgICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpblBhaW50aW5nKFBhaW50
RmxhZ3MpOwpAQCAtMTY0LDIwICsxNjksOSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZTo6YWRqdXN0UG9zaXRpb25Gb3JGaXhlZExheWVycyhjb25zdCBGbG9hdFBvaW50JiBjbwogICAg
ICAgICBmaXhlZExheWVyLT5zZXRTY3JvbGxQb3NpdGlvbkRlbHRhSWZOZWVkZWQoZGVsdGEpOwog
fQogCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZTo6Y3JlYXRlUGxhdGZvcm1MYXllcklmTmVlZGVkKFRleHR1cmVNYXBwZXJMYXllciogbGF5
ZXIsIGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJiBzdGF0ZSkKLXsKLSAgICBp
ZiAoIXN0YXRlLnBsYXRmb3JtTGF5ZXJUb2tlbi5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZT4gcGxhdGZvcm1M
YXllckJhY2tpbmdTdG9yZShUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6Y3JlYXRl
KCkpOwotICAgIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXMuc2V0KGxheWVyLCBwbGF0Zm9ybUxheWVy
QmFja2luZ1N0b3JlKTsKLSAgICBwbGF0Zm9ybUxheWVyQmFja2luZ1N0b3JlLT5zZXRHcmFwaGlj
c1N1cmZhY2UoR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGUoc3RhdGUucGxhdGZvcm1MYXllclNpemUs
IHN0YXRlLnBsYXRmb3JtTGF5ZXJTdXJmYWNlRmxhZ3MsIHN0YXRlLnBsYXRmb3JtTGF5ZXJUb2tl
bikpOwotICAgIGxheWVyLT5zZXRDb250ZW50c0xheWVyKHBsYXRmb3JtTGF5ZXJCYWNraW5nU3Rv
cmUuZ2V0KCkpOwotfQotCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY1BsYXRm
b3JtTGF5ZXJJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyLCBjb25zdCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYgc3RhdGUpCiB7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZB
Q0UpCiAgICAgQVNTRVJUKG1fdGV4dHVyZU1hcHBlcik7CiAKICAgICBpZiAoc3RhdGUucGxhdGZv
cm1MYXllckNoYW5nZWQpIHsKQEAgLTE5MSw2ICsxODUsNDEgQEAgdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OnN5bmNQbGF0Zm9ybUxheWVySWZOZWVkZWQoVGV4dHVyZU1hcHBlckxheWVy
KiBsYXkKICAgICAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlPiBw
bGF0Zm9ybUxheWVyQmFja2luZ1N0b3JlID0gaXQtPnZhbHVlOwogICAgICAgICBwbGF0Zm9ybUxh
eWVyQmFja2luZ1N0b3JlLT5zd2FwQnVmZmVyc0lmTmVlZGVkKHN0YXRlLnBsYXRmb3JtTGF5ZXJG
cm9udEJ1ZmZlcik7CiAgICAgfQorI2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVB
REVEKQorICAgIGlmICghc3RhdGUucGxhdGZvcm1MYXllckNoYW5nZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChzdGF0ZS5wbGF0Zm9ybUxheWVyUHJveHkpIHsKKyAgICAgICAgbV9wbGF0
Zm9ybUxheWVyUHJveGllcy5zZXQobGF5ZXIsIHN0YXRlLnBsYXRmb3JtTGF5ZXJQcm94eSk7Cisg
ICAgICAgIHN0YXRlLnBsYXRmb3JtTGF5ZXJQcm94eS0+YWN0aXZhdGVPbkNvbXBvc2l0aW5nVGhy
ZWFkKHRoaXMsIGxheWVyKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9wbGF0Zm9ybUxheWVyUHJv
eGllcy5yZW1vdmUobGF5ZXIpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obGF5ZXIpOworICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisjZW5kaWYKK30KKworI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDU19USFJFQURFRCkKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpvbk5ld0J1
ZmZlckF2YWlsYWJsZSgpCit7CisgICAgUmVmUHRyPENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZT4g
cHJvdGVjdG9yKHRoaXMpOworICAgIGRpc3BhdGNoT25DbGllbnRSdW5Mb29wKFs9XSB7CisgICAg
ICAgIHByb3RlY3Rvci0+dXBkYXRlVmlld3BvcnQoKTsKKyAgICB9KTsKK30KKyNlbmRpZgorCisj
aWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6
Y3JlYXRlUGxhdGZvcm1MYXllcklmTmVlZGVkKFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIsIGNv
bnN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJiBzdGF0ZSkKK3sKKyAgICBpZiAoIXN0
YXRlLnBsYXRmb3JtTGF5ZXJUb2tlbi5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IFJlZlB0cjxUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZT4gcGxhdGZvcm1MYXllckJh
Y2tpbmdTdG9yZShUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkpOwor
ICAgIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXMuc2V0KGxheWVyLCBwbGF0Zm9ybUxheWVyQmFja2lu
Z1N0b3JlKTsKKyAgICBwbGF0Zm9ybUxheWVyQmFja2luZ1N0b3JlLT5zZXRHcmFwaGljc1N1cmZh
Y2UoR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGUoc3RhdGUucGxhdGZvcm1MYXllclNpemUsIHN0YXRl
LnBsYXRmb3JtTGF5ZXJTdXJmYWNlRmxhZ3MsIHN0YXRlLnBsYXRmb3JtTGF5ZXJUb2tlbikpOwor
ICAgIGxheWVyLT5zZXRDb250ZW50c0xheWVyKHBsYXRmb3JtTGF5ZXJCYWNraW5nU3RvcmUuZ2V0
KCkpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZGVzdHJveVBsYXRmb3Jt
TGF5ZXJJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyLCBjb25zdCBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXJTdGF0ZSYgc3RhdGUpCkBAIC0zMTMsOSArMzQyLDcgQEAgdm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNldExheWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXllcklEIGlk
LCBjb25zdCBDb29yZGkKICAgICB1cGRhdGVUaWxlc0lmTmVlZGVkKGxheWVyLCBsYXllclN0YXRl
KTsKICAgICBzZXRMYXllckZpbHRlcnNJZk5lZWRlZChsYXllciwgbGF5ZXJTdGF0ZSk7CiAgICAg
c2V0TGF5ZXJBbmltYXRpb25zSWZOZWVkZWQobGF5ZXIsIGxheWVyU3RhdGUpOwotI2lmIFVTRShH
UkFQSElDU19TVVJGQUNFKQogICAgIHN5bmNQbGF0Zm9ybUxheWVySWZOZWVkZWQobGF5ZXIsIGxh
eWVyU3RhdGUpOwotI2VuZGlmCiAgICAgc2V0TGF5ZXJSZXBhaW50Q291bnRJZk5lZWRlZChsYXll
ciwgbGF5ZXJTdGF0ZSk7CiB9CiAKQEAgLTM1NCw2ICszODEsMTAgQEAgdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmU6OmRlbGV0ZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklEKQog
I2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXMucmVt
b3ZlKGxheWVyLmdldCgpKTsKICNlbmRpZgorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19U
SFJFQURFRCkKKyAgICBpZiAoYXV0byBwbGF0Zm9ybUxheWVyUHJveHkgPSBtX3BsYXRmb3JtTGF5
ZXJQcm94aWVzLnRha2UobGF5ZXIuZ2V0KCkpKQorICAgICAgICBwbGF0Zm9ybUxheWVyUHJveHkt
PmludmFsaWRhdGUoKTsKKyNlbmRpZgogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZTo6c2V0Um9vdExheWVySUQoQ29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQpCkBAIC02MzIsNiAr
NjYzLDkgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnB1cmdlR0xSZXNvdXJjZXMo
KQogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXMu
Y2xlYXIoKTsKICNlbmRpZgorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkK
KyAgICBtX3BsYXRmb3JtTGF5ZXJQcm94aWVzLmNsZWFyKCk7CisjZW5kaWYKICAgICBtX3N1cmZh
Y2VzLmNsZWFyKCk7CiAKICAgICBtX3Jvb3RMYXllciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzU2NlbmUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCmluZGV4IDY5MDY1YzlhNTZmOGYyMjc1NmNkN2E1YmQ1
MWQyMGU5NzI1NDkzNGIuLjY4YWFiZmU0MGM0ZGY4MTk3ZDE2ZmJkNjJiOGFmZmE1ZTljMjc5NjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCkBAIC00NSw2ICs0NSwx
MCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUu
aD4KICNlbmRpZgogCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorI2lu
Y2x1ZGUgPFdlYkNvcmUvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oPgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTsK
QEAgLTU4LDcgKzYyLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0U2Nyb2xs
T2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCkg
PSAwOwogfTsKIAotY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZT4sIHB1YmxpYyBXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlNjcm9sbGluZ0NsaWVudCB7CitjbGFzcyBDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lPiwgcHVibGljIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6U2Nyb2xs
aW5nQ2xpZW50CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgICwg
cHVibGljIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OkNvbXBvc2l0
b3IKKyNlbmRpZgorewogcHVibGljOgogICAgIGV4cGxpY2l0IENvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZShDb29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUoKTsKQEAgLTk0LDkgKzEwMiw5IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZW1vdmVUaWxlc0lmTmVlZGVkKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllciosIGNv
bnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CiAgICAgdm9pZCBz
ZXRMYXllckZpbHRlcnNJZk5lZWRlZChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqLCBjb25z
dCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwogICAgIHZvaWQgc2V0
TGF5ZXJBbmltYXRpb25zSWZOZWVkZWQoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgY29u
c3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKKyAgICB2b2lkIHN5
bmNQbGF0Zm9ybUxheWVySWZOZWVkZWQoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgY29u
c3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKICNpZiBVU0UoR1JB
UEhJQ1NfU1VSRkFDRSkKICAgICB2b2lkIGNyZWF0ZVBsYXRmb3JtTGF5ZXJJZk5lZWRlZChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqLCBjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXJTdGF0ZSYpOwotICAgIHZvaWQgc3luY1BsYXRmb3JtTGF5ZXJJZk5lZWRlZChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqLCBjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXJTdGF0ZSYpOwogICAgIHZvaWQgZGVzdHJveVBsYXRmb3JtTGF5ZXJJZk5lZWRlZChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqLCBjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXJTdGF0ZSYpOwogI2VuZGlmCiAgICAgdm9pZCBzZXRMYXllclJlcGFpbnRDb3Vu
dElmTmVlZGVkKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllciosIGNvbnN0IFdlYkNvcmU6OkNv
b3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CkBAIC0xNDQsNiArMTUyLDEwIEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGRpc3BhdGNoQ29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVy
SUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCk7CiAKKyNpZiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgdmlydHVhbCB2b2lkIG9uTmV3QnVmZmVyQXZhaWxh
YmxlKCkgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIC8vIFJlbmRlciBxdWV1ZSBjYW4gYmUgYWNj
ZXNzZWQgb255IGZyb20gbWFpbiB0aHJlYWQgb3IgdXBkYXRlUGFpbnROb2RlIGNhbGwgc3RhY2sh
CiAgICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gbV9yZW5kZXJRdWV1ZTsKICAgICBM
b2NrIG1fcmVuZGVyUXVldWVNdXRleDsKQEAgLTE2NCw2ICsxNzYsMTEgQEAgcHJpdmF0ZToKICAg
ICBTdXJmYWNlQmFja2luZ1N0b3JlTWFwIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXM7CiAjZW5kaWYK
IAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICB0eXBlZGVmIEhh
c2hNYXA8V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgUmVmUHRyPFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+PiBQbGF0Zm9ybUxheWVyUHJveHlNYXA7CisgICAg
UGxhdGZvcm1MYXllclByb3h5TWFwIG1fcGxhdGZvcm1MYXllclByb3hpZXM7CisjZW5kaWYKKwog
ICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50MzJfdCAvKiBhdGxhc0lEICovLCBSZWZQdHI8V2ViQ29y
ZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPj4gU3VyZmFjZU1hcDsKICAgICBTdXJmYWNlTWFwIG1fc3Vy
ZmFjZXM7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266774</attachid>
            <date>2015-12-07 08:17:24 -0800</date>
            <delta_ts>2015-12-07 08:30:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143299-20151207171654.patch</filename>
            <type>text/plain</type>
            <size>46699</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzNjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzYzNmVkMDEyZWM3ZmVk
NjllNjg1ZTE0YzIyOTc1YWI4YTlmYzMwNS4uZGM5Y2ZiYmU4YmJhYTYxMGQzODg3YjJkY2ZmNDk4
OWIxY2Q1ZjQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE1LTEwLTMxICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtUaHJlYWRlZENvbXBv
c2l0b3JdIEFkZCBzdXBwb3J0IGZvciBQbGF0Zm9ybUxheWVyLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMjk5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkgYW5kIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyIHRvCisgICAgICAgIHNlbmQgYSB0ZXh0dXJlIChhY3R1YWwgdGV4dHVyZSBvciBCaXRt
YXBUZXh0dXJlKSB0byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkIGRpcmVjdGx5LgorICAgICAgICBQ
bGF0Zm9ybSBsYXllciByZW5kZXJlcnMgc2hvdWxkIGltcGxlbWVudCBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5UHJvdmlkZXIgdG8gZXN0YWJsaXNoCisgICAgICAgIGEgY29ubmVjdGlv
biB0byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkLiBBZnRlciB0aGUgY29ubmVjdGlvbiBoYXMgYmVl
biBlc3RhYmxpc2hlZCwgdGhlIHJlbmRlcmVyCisgICAgICAgIGNhbiByZW5kZXIgaXRzIGNvbnRl
bnRzIHRvIHRoZSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlciBhbmQgcGFzcyBpdCB0
byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkCisgICAgICAgIHZpYSBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllciBwcm94eS4KKyAgICAgICAgVGhlIGJ1ZmZlciBjYW4gYmUgYW4gdW5tYW5hZ2VkIHRl
eHR1cmUgKGEuay5hLiBwbGF0Zm9ybSB0ZXh0dXJlKSBvciBCaXRtYXBUZXh0dXJlLgorICAgICAg
ICBGb3IgdGhlIHVubWFuYWdlZCB0ZXh0dXJlLCB0aGUgcmVuZGVyZXIgc2hvdWxkIG1hbmFnZSBp
dHMgbGlmZSBjeWNsZSBpdHNlbGYuIEZvciB0aGUgQml0bWFwVGV4dHVyZSwKKyAgICAgICAgaXQg
d2lsbCBiZSBtYW5hZ2VkIGJ5IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuIEluIHRo
YXQgY2FzZSwgdXNlZCAoc3dhcHBlZCkgYnVmZmVyIHdpbGwgYmUKKyAgICAgICAgcmVjeWNsZWQg
YmVjYXVzZSB0aGUgcmVuZGVyZXIgd2lsbCB1c2Ugc2FtZSBzaXplIGFuZCBmb3JtYXQgdW50aWwg
aXQgY2hhbmdlcyBpdHMgc2l6ZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLgorCisg
ICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgIEFkZHMgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXIgYW5kIFRleHR1cmVNYXBwZXJQbGF5dGZvcm1MYXllclByb3h5Lgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWly
by5oOgorICAgICAgICBBZGRzIG1vY2sgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmg6CisgICAgICAgIEFkZHMgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVyIGFzIGEgUGxhdGZvcm1MYXllciBmb3IgdGhlIFRo
cmVhZGVkIENvbXBvc2l0b3IKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlR0wuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6aW50
ZXJuYWxGb3JtYXQpOiBBZGRzIGEgZ2V0dGVyIHRvIGNoZWNrIHRoZQorICAgICAgICBpbnRlcm5h
bCBmb3JtYXQgb2YgdGV4dHVyZSB0byBjaGVjayByZXVzYWJpbGl0eS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5oOgorICAgICAgICBFeGNsdWRlIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGZy
b20gYnVpbGQgd2hlbiB3ZSBhcmUgdXNpbmcgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eS5oOiBBZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgQmVjYXVzZSB3ZSBy
ZW1vdmVkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGZyb20gYnVpbGQsIHdlIG5lZWQgdG8g
YWRkIG93biBmYWN0b3J5IGZ1bmN0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY1BsYXRmb3JtTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpwbGF0Zm9ybUxheWVyV2ls
bEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6c2V0UGxhdGZvcm1MYXllck5lZWRzRGlzcGxheSk6CisgICAgICAgIEltcGxlbWVudHMgc3lu
YyBvcGVyYXRpb25zIGZvciBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5CisKIDIwMTUt
MTItMDcgIEd3YW5nIFlvb24gSHdhbmcgIDx5b29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S10gQ2xlYW4gdXAgdmlydHVhbCBmdW5jdGlvbnMgaW4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGIzODVjNjRjN2VjOGE1NDVhZDI0MzVjNjJhZWYzNjFhZWYz
NTBjNWUuLmEwOTZhYWZjY2E4NjZjZjZiMjA4MGExNWM2MDNmMjZkMmYwZmRhYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNS0xMC0zMSAgR3dhbmcgWW9vbiBId2FuZyAgPHlvb25A
aWdhbGlhLmNvbT4KKworICAgICAgICBbVGhyZWFkZWRDb21wb3NpdG9yXSBBZGQgc3VwcG9ydCBm
b3IgUGxhdGZvcm1MYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MzI5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpw
YWludFRvQ3VycmVudEdMQ29udGV4dCk6CisgICAgICAgIFN3YXAgcGVuZGluZyBidWZmZXJzIG9m
IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveGllcyBiZWZvcmUgcGFpbnRpbmcgY29udGVu
dHMuCisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY1BsYXRm
b3JtTGF5ZXJJZk5lZWRlZCk6CisgICAgICAgIEluIHRocmVhZGVkIGNvbXBvc2l0b3IsIENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuY2Ugb25seSBjYXJlcyBhYm91dCBjcmVhdGlvbiBhbmQgZGVsZXRp
b24KKyAgICAgICAgb2YgcGxhdGZvcm0gbGF5ZXJzLgorCisgICAgICAgIChXZWJLaXQ6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6b25OZXdCdWZmZXJBdmFpbGFibGUpOgorICAgICAgICBXaGVu
ZXZlciBuZXcgYnVmZmVyIGNvbWVzIHZpYSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
LCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUgd2lsbAorICAgICAgICB1cGRhdGUgdGhlIHNjZW5l
IGlmIGl0IGlzIG5lZWRlZC4KKwogMjAxNS0xMi0wNyAgSm9uIEZvcnNiZXJnICA8am9uLm9yZWJy
b0BnbWFpbC5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIHdlYmtpdF91cmlfcmVxdWVzdF9nZXRf
aHR0cF9tZXRob2QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggOGU3ODkwN2QwYjIxZDhl
MDRjMzg2YTNlM2M0ZDU0N2MwNjA2NTI2MC4uOGM4ZmQyYmY3YTk5ZTQ3OWI2ZmNiZDY0Yzg4OTU4
OTRhNWM0NmEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTQ0Miw2ICs0NDIsOCBA
QCBpZiAoRU5BQkxFX1RIUkVBREVEX0NPTVBPU0lUT1IpCiAgICAgICAgIHBhZ2Uvc2Nyb2xsaW5n
L2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBo
aWNzLmNwcAogICAgICAgICBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9s
bGluZ1N0YXRlTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCiAKKyAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAorICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eS5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Fy
ZWFBbGxvY2F0b3IuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZS5jcHAKaW5kZXggYjFjZGNjY2I2NzJmZjAyNWRmMjdmOGNhNzg3NGQ5M2Yy
ZDEwNWYxMy4uZTE1NDRiZmE5OGJmY2EwOGQ3ODg3NDQ1N2IwYjk0YWVmY2Q4OWNhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuY3BwCkBAIC02Myw3ICs2Myw3IEBAIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBHCiAKIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6fkdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZSgpCiB7Ci0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorI2lmIFVTRShURVhUVVJFX01BUFBF
UikgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKICAgICBpZiAoY2xpZW50
KCkpCiAgICAgICAgIGNsaWVudCgpLT5wbGF0Zm9ybUxheWVyV2lsbEJlRGVzdHJveWVkKCk7CiAj
ZW5kaWYKQEAgLTc5LDcgKzc5LDEzIEBAIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpwbGF0Zm9ybUNvbnRleHQoKQogICAgIHJldHVybiBtX2dsQ29u
dGV4dCA/IG1fZ2xDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSA6IEdMQ29udGV4dDo6Z2V0Q3Vy
cmVudCgpLT5wbGF0Zm9ybUNvbnRleHQoKTsKIH0KIAotI2lmIFVTRShURVhUVVJFX01BUFBFUikK
KyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCitSZWZQdHI8VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwcm94eSgp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KyNlbGlmIFVTRShURVhUVVJFX01BUFBFUikKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRy
aXgsIGZsb2F0IG9wYWNpdHkpCiB7CiAgICAgaWYgKCFtX2dsQ29udGV4dCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmgKaW5kZXggOWQ3MGVlNjllMDIxZWQ1ZWJlZWE4ZThiY2IwZWQxMTdiOGY4MGMyYy4u
OWZjOTIyNDJlOGJmNTU3YTVjMTRjY2M5ZTdkZWI0YzM2ZWVmZDU2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmgKQEAgLTIzLDE0ICsyMywxOCBAQAogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorI2luY2x1ZGUgIlRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaCIKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUikKICNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgogI2VuZGlmCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlCi0jaWYgVVNFKFRF
WFRVUkVfTUFQUEVSKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAg
ICA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5UHJvdmlkZXIKKyNlbGlm
IFVTRShURVhUVVJFX01BUFBFUikKICAgICA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllcgogI2VuZGlmCiB7CkBAIC00Miw3ICs0NiwxMCBAQCBwdWJsaWM6CiAKICAgICBHcmFwaGlj
c0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUoKSB7IHJldHVybiBtX3JlbmRlclN0
eWxlOyB9CiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTX1RIUkVBREVEKQorICAgIHZpcnR1YWwgUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHk+IHByb3h5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN3
YXBCdWZmZXJzSWZOZWVkZWQoKSBvdmVycmlkZSB7IH07CisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQ
RVIpCiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIq
LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBm
bG9hdCBvcGFjaXR5KTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybUxheWVyLmgKaW5kZXggZjkwZmM2N2NjOTE0ZGQ2MDRlNzNlYmUwZjQ1
NmQyOTQ1ZjNmYTZkNy4uMjlmOWRlY2IyNGJhMmQ0NGU0MTAxZDAzYzE4MDk5ZGFhYjE1ZWU2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1MYXll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5ZXIu
aApAQCAtMzEsNiArMzEsMTEgQEAgT0JKQ19DTEFTUyBDQUxheWVyOwogdHlwZWRlZiBDQUxheWVy
IFBsYXRmb3JtTGF5ZXI7CiAjZWxpZiBQTEFURk9STShXSU4pICYmIFVTRShDQSkKIHR5cGVkZWYg
c3RydWN0IF9DQUNGTGF5ZXIgUGxhdGZvcm1MYXllcjsKKyNlbGlmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDU19USFJFQURFRCkKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHlQcm92aWRlcjsKK3R5cGVkZWYgVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eVByb3ZpZGVyIFBsYXRmb3JtTGF5ZXI7Cit9OwogI2VsaWYgVVNFKFRFWFRV
UkVfTUFQUEVSKQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDI1NmQxY2M4MzEzYmE4YjA3MTg3
Yzc1MGIxYzk2NDY3MmRmOGUxMDkuLjA1N2I2YmVhMjY2NDNjZjMzYzhlNjZlMWQ2Yzg2NzE3YzAy
ODYyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC01Miw2ICs1Miw5IEBACiAjaW5jbHVk
ZSAiT3BlbkdMU2hpbXMuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKICNpbmNsdWRl
IDxjYWlyby1nbC5oPgorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgiCisjZW5kaWYKICNlbmRp
ZgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtNDA5LDYgKzQxMiwxMyBAQCBTdHJpbmcgSW1h
Z2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBkb3VibGUq
LCBDb29yZGluYXRlUwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFT
KQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKK1JlZlB0cjxUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBJbWFnZUJ1ZmZlckRhdGE6OnByb3h5KCkgY29uc3QK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorI2Vsc2UK
IHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHkpCiB7CiAgICAgQVNTRVJUKG1f
dGV4dHVyZSk7CkBAIC00MjEsNiArNDMxLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEYKICAg
ICBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKS0+ZHJhd1RleHR1
cmUobV90ZXh0dXJlLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kLCBtX3NpemUsIHRhcmdl
dFJlY3QsIG1hdHJpeCwgb3BhY2l0eSk7CiB9CiAjZW5kaWYKKyNlbmRpZgogCiBQbGF0Zm9ybUxh
eWVyKiBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWly
by5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJE
YXRhQ2Fpcm8uaAppbmRleCBkNjJmNDcwNTE1ZTNlODJkY2E5ZDk3NjM0NDdhNjdlMmZjNGQwNjMz
Li5jM2Y5YTEyMjQ4MjE1MzBlNzgxMTY2ZjAxYTM2YTcxZDIyMWNjMDgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWly
by5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyRGF0YUNhaXJvLmgKQEAgLTMzLDggKzMzLDEyIEBACiAKICNpZiBFTkFCTEUoQUNDRUxFUkFU
RURfMkRfQ0FOVkFTKQogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKKyNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94eS5oIgorI2Vsc2UKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ci5oIgogI2VuZGlmCisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Miw4ICs0
NiwxMiBAQCBjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBJbWFnZUJ1ZmZlckRhdGEKICNpZiBFTkFC
TEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19U
SFJFQURFRCkKKyAgICA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5UHJv
dmlkZXIKKyNlbHNlCiAgICAgOiBwdWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIKICNl
bmRpZgorI2VuZGlmCiB7CiBwdWJsaWM6CiAgICAgSW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNp
emUmKTsKQEAgLTU0LDcgKzYyLDEyIEBAIHB1YmxpYzoKICAgICBJbnRTaXplIG1fc2l6ZTsKIAog
I2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTX1RIUkVBREVEKQorICAgIHZpcnR1YWwgUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHk+IHByb3h5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN3
YXBCdWZmZXJzSWZOZWVkZWQoKSBvdmVycmlkZSB7IH07CisjZWxzZQogICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSk7CisjZW5k
aWYKICAgICB1aW50MzJfdCBtX3RleHR1cmU7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmgK
aW5kZXggZWIyMGEwZjIwZWNiNmM0N2Q1ZmUwYjJjNTE1OTk4MmQ4N2JkNjRmMi4uZDVkNjczOGEz
ZWQxZWRlMDg1MzRiNjE0YTAyMGI2NDM5NmNlMGUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaApAQCAt
NjksNiArNjksOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgRmlsdGVySW5mbyogZmlsdGVySW5mbygp
IGNvbnN0IHsgcmV0dXJuICZtX2ZpbHRlckluZm87IH0KICAgICBUZXh0dXJlTWFwcGVyR0w6OkNs
aXBTdGFjayYgY2xpcFN0YWNrKCkgeyByZXR1cm4gbV9jbGlwU3RhY2s7IH0KIAorICAgIEdDM0Rp
bnQgaW50ZXJuYWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsRm9ybWF0OyB9CisK
IHByaXZhdGU6CiAKICAgICBQbGF0Zm9ybTNET2JqZWN0IG1faWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA1MDFkMmE4OWU5ZTg3YWUwZmQ1NTIyYWM0
ODc3NzA5NmMzZWMwY2UzLi5jZWRhODJkZjI0NjY0NDFmYTZmYjQ2MjJkMDc5NWE4NWFiYTAwYmFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSA8
d3RmL0N1cnJlbnRUaW1lLmg+CiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisjaWYgVVNFKFRF
WFRVUkVfTUFQUEVSKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXgg
ZjU2Y2Y1MTg1OWNkYzdhYmQ4MGMzNmE2OWFmZDA2YzI4OGEzNGMzMy4uYjBhYTQ2MzdkOGJjNjFm
YjJmOTY0ZTkzZTEzMDE1ZDJlMmUzMTYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyLmgKQEAgLTIwLDcgKzIwLDcgQEAKICNpZm5kZWYgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXJfaAogI2RlZmluZSBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcl9oCiAKLSNpZiBV
U0UoVEVYVFVSRV9NQVBQRVIpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiAhVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXgg
NWYzNGY0MTg1MDMyNjdjZTA3ZWFiNjdlODA1MjNmYTMxODEwNjM5My4uZmM3NzEwNjJlMWMwMmFm
NzBmM2YzYzMyZDYzN2ZjZDAzZWY4N2ZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAK
QEAgLTQ0NSwxMiArNDQ1LDE0IEBAIFRleHR1cmVNYXBwZXJMYXllcjo6flRleHR1cmVNYXBwZXJM
YXllcigpCiAgICAgcmVtb3ZlRnJvbVBhcmVudCgpOwogfQogCisjaWYgIVVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRDaGlsZHJlbihjb25zdCBW
ZWN0b3I8R3JhcGhpY3NMYXllcio+JiBuZXdDaGlsZHJlbikKIHsKICAgICByZW1vdmVBbGxDaGls
ZHJlbigpOwogICAgIGZvciAoYXV0byogY2hpbGQgOiBuZXdDaGlsZHJlbikKICAgICAgICAgYWRk
Q2hpbGQoJmRvd25jYXN0PEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyPihjaGlsZCktPmxheWVy
KCkpOwogfQorI2VuZGlmCiAKIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRDaGlsZHJlbihj
b25zdCBWZWN0b3I8VGV4dHVyZU1hcHBlckxheWVyKj4mIG5ld0NoaWxkcmVuKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJMYXllci5oCmluZGV4IDBjOWRhNzFiYjE5NWNiNGRjZDcxZjE1MGY3ZmU3YTJlMjYz
YWNhZDIuLjZhZGI2NTRjODEzNGM1MTg3ZWE5NjdmODIwY2FlY2QzNjdkNDhkNDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmgKQEAgLTc4LDcgKzc4LDkgQEAgcHVibGljOgogICAgIFRleHR1cmVN
YXBwZXIqIHRleHR1cmVNYXBwZXIoKSBjb25zdCB7IHJldHVybiByb290TGF5ZXIoKS5tX3RleHR1
cmVNYXBwZXI7IH0KICAgICB2b2lkIHNldFRleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4
bWFwKSB7IG1fdGV4dHVyZU1hcHBlciA9IHRleG1hcDsgfQogCisjaWYgIVVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKICAgICB2b2lkIHNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xh
eWVyKj4mKTsKKyNlbmRpZgogICAgIHZvaWQgc2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPFRleHR1
cmVNYXBwZXJMYXllcio+Jik7CiAgICAgdm9pZCBzZXRNYXNrTGF5ZXIoVGV4dHVyZU1hcHBlckxh
eWVyKik7CiAgICAgdm9pZCBzZXRSZXBsaWNhTGF5ZXIoVGV4dHVyZU1hcHBlckxheWVyKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iMmQ2ODhiNTU0NmEyYjk3NTJlMWJiYmU2OTE5NTVkNGIwYTA3ZGFkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihSZWZQdHI8Qml0bWFwVGV4dHVyZT4mJiB0
ZXh0dXJlKQorICAgIDogbV90ZXh0dXJlKFdURjo6bW92ZSh0ZXh0dXJlKSkKKyAgICAsIG1fdGV4
dHVyZUlEKDApCisgICAgLCBtX2V4dHJhRmxhZ3MoMCkKKyAgICAsIG1faGFzTWFuYWdlZFRleHR1
cmUodHJ1ZSkKK3sKK30KKworVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OlRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKEdMdWludCB0ZXh0dXJlSUQsIGNvbnN0IEludFNp
emUmIHNpemUsIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MpCisgICAgOiBtX3RleHR1cmVJ
RCh0ZXh0dXJlSUQpCisgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAsIG1fZXh0cmFGbGFncyhmbGFn
cykKKyAgICAsIG1faGFzTWFuYWdlZFRleHR1cmUoZmFsc2UpCit7Cit9CisKK2Jvb2wgVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OmNhblJldXNlV2l0aG91dFJlc2V0KGNvbnN0IElu
dFNpemUmIHNpemUsIEdDM0RpbnQgaW50ZXJuYWxGb3JtYXQpCit7CisgICAgcmV0dXJuIG1fdGV4
dHVyZSAmJiAobV90ZXh0dXJlLT5zaXplKCkgPT0gc2l6ZSkgJiYgKHN0YXRpY19jYXN0PEJpdG1h
cFRleHR1cmVHTCo+KG1fdGV4dHVyZS5nZXQoKSktPmludGVybmFsRm9ybWF0KCkgPT0gaW50ZXJu
YWxGb3JtYXQgfHwgaW50ZXJuYWxGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRPTlRfQ0FS
RSk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnBhaW50VG9U
ZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJp
eCwgZmxvYXQgb3BhY2l0eSkKK3sKKyAgICBpZiAobV9oYXNNYW5hZ2VkVGV4dHVyZSkgeworICAg
ICAgICBBU1NFUlQobV90ZXh0dXJlKTsKKyAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1
cmUoKm1fdGV4dHVyZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChtX3RleHR1cmVJRCk7CisgICAgVGV4
dHVyZU1hcHBlckdMKiB0ZXhtYXBHTCA9IHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCo+KHRl
eHR1cmVNYXBwZXIpOworICAgIHRleG1hcEdMLT5kcmF3VGV4dHVyZShtX3RleHR1cmVJRCwgbV9l
eHRyYUZsYWdzLCBtX3NpemUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjU3ZDI4MzkyZDA5M2YxOTYzZDg3
N2Q3ZjQ2MjYwMzI2N2VjMWU1OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5o
CkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcl9oCisj
ZGVmaW5lIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyX2gKKworI2luY2x1ZGUgIkJp
dG1hcFRleHR1cmVHTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgorI2luY2x1ZGUg
IlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1l
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXIgOiBwdWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKTsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCgpOworcHVibGljOgorICAgIFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyKFJlZlB0cjxCaXRtYXBUZXh0dXJlPiYmKTsKKyAgICBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihHTHVpbnQgdGV4dHVyZUlELCBjb25zdCBJbnRTaXpl
JiwgVGV4dHVyZU1hcHBlckdMOjpGbGFncyk7CisKKyAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcigpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0
cml4KCksIGZsb2F0IG9wYWNpdHkgPSAxLjApIGZpbmFsOworCisgICAgYm9vbCBjYW5SZXVzZVdp
dGhvdXRSZXNldChjb25zdCBJbnRTaXplJiwgR0MzRGludCBpbnRlcm5hbEZvcm1hdCk7CisgICAg
Qml0bWFwVGV4dHVyZUdMJiB0ZXh0dXJlR0woKSB7IHJldHVybiBzdGF0aWNfY2FzdDxCaXRtYXBU
ZXh0dXJlR0wmPigqbV90ZXh0dXJlKTsgfQorCisgICAgaW5saW5lIHZvaWQgbWFya1VzZWQoKSB7
IG1fdGltZUxhc3RVc2VkID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7IH0KKyAgICBk
b3VibGUgbGFzdFVzZWRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV90aW1lTGFzdFVzZWQ7IH0KKwor
ICAgIGNsYXNzIFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIgeworICAgICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShVbm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVyKTsKKyAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQoKTsKKyAgICBwdWJsaWM6CisgICAgICAgIFVubWFuYWdlZEJ1ZmZlckRh
dGFIb2xkZXIoKSA9IGRlZmF1bHQ7CisgICAgICAgIHZpcnR1YWwgflVubWFuYWdlZEJ1ZmZlckRh
dGFIb2xkZXIoKSA9IGRlZmF1bHQ7CisgICAgfTsKKworICAgIGJvb2wgaGFzTWFuYWdlZFRleHR1
cmUoKSBjb25zdCB7IHJldHVybiBtX2hhc01hbmFnZWRUZXh0dXJlOyB9CisgICAgdm9pZCBzZXRV
bm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVyKHN0ZDo6dW5pcXVlX3B0cjxVbm1hbmFnZWRCdWZmZXJE
YXRhSG9sZGVyPiBob2xkZXIpIHsgbV91bm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVyID0gV1RGOjpt
b3ZlKGhvbGRlcik7IH0KKworcHJpdmF0ZToKKworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBt
X3RleHR1cmU7CisgICAgZG91YmxlIG1fdGltZUxhc3RVc2VkIHsgMCB9OworCisgICAgR0x1aW50
IG1fdGV4dHVyZUlEOworICAgIEludFNpemUgbV9zaXplOworICAgIFRleHR1cmVNYXBwZXJHTDo6
RmxhZ3MgbV9leHRyYUZsYWdzOworICAgIGJvb2wgbV9oYXNNYW5hZ2VkVGV4dHVyZTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcj4gbV91bm1hbmFnZWRCdWZm
ZXJEYXRhSG9sZGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjOTBmNGE5ZGI2Mjk1
NzZkOGQ4MjE1NGYwZDI4YjNiMGNiMmUwODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eS5jcHAKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdh
bGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaCIKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDU19USFJFQURFRCkKKworI2luY2x1ZGUgIkJpdG1hcFRleHR1cmVHTC5oIgorI2luY2x1ZGUg
IlRleHR1cmVNYXBwZXJHTC5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgorI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCisKK2NvbnN0IGRvdWJs
ZSBzX3JlbGVhc2VVbnVzZWRTZWNvbmRzVG9sZXJhbmNlID0gMTsKK2NvbnN0IGRvdWJsZSBzX3Jl
bGVhc2VVbnVzZWRCdWZmZXJzVGltZXJJbnRlcnZhbCA9IDAuNTsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5KCkKKyAgICA6IG1fY29tcG9zaXRvcihudWxscHRyKQorICAgICwgbV90
YXJnZXRMYXllcihudWxscHRyKQorICAgICwgbV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyKFJ1
bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6
OnJlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXJGaXJlZCkKK3sKK30KKworVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eTo6flRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkoKQorewor
ICAgIGlmIChtX3RhcmdldExheWVyKQorICAgICAgICBtX3RhcmdldExheWVyLT5zZXRDb250ZW50
c0xheWVyKG51bGxwdHIpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJv
eHk6OmFjdGl2YXRlT25Db21wb3NpdGluZ1RocmVhZChDb21wb3NpdG9yKiBjb21wb3NpdG9yLCBU
ZXh0dXJlTWFwcGVyTGF5ZXIqIHRhcmdldExheWVyKQoreworI2lmbmRlZiBOREVCVUcKKyAgICBt
X2NvbXBvc2l0b3JUaHJlYWRJRCA9IG1fY29tcG9zaXRvclRocmVhZElEID8gbV9jb21wb3NpdG9y
VGhyZWFkSUQgOiBXVEY6OmN1cnJlbnRUaHJlYWQoKTsKKyNlbmRpZgorICAgIEFTU0VSVChtX2Nv
bXBvc2l0b3JUaHJlYWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGNv
bXBvc2l0b3IpOworICAgIEFTU0VSVCh0YXJnZXRMYXllcik7CisgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9sb2NrKTsKKyAgICBtX2NvbXBvc2l0b3IgPSBjb21wb3NpdG9yOworICAgIG1fdGFyZ2V0
TGF5ZXIgPSB0YXJnZXRMYXllcjsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
clByb3h5OjppbnZhbGlkYXRlKCkKK3sKKyAgICBBU1NFUlQobV9jb21wb3NpdG9yVGhyZWFkSUQg
PT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpOworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7
CisgICAgbV9jb21wb3NpdG9yID0gbnVsbHB0cjsKKyAgICBtX3RhcmdldExheWVyID0gbnVsbHB0
cjsKK30KKworYm9vbCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojppc0FjdGl2ZSgp
Cit7CisgICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7CisgICAgcmV0dXJuICEhbV90YXJnZXRM
YXllciAmJiAhIW1fY29tcG9zaXRvcjsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllclByb3h5OjpwdXNoTmV4dEJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXI+IG5ld0J1ZmZlcikKK3sKKyAgICBBU1NFUlQobV9sb2NrLmlzSGVs
ZCgpKTsKKyAgICBtX3BlbmRpbmdCdWZmZXIgPSBXVEY6Om1vdmUobmV3QnVmZmVyKTsKKworICAg
IGlmIChtX2NvbXBvc2l0b3IpCisgICAgICAgIG1fY29tcG9zaXRvci0+b25OZXdCdWZmZXJBdmFp
bGFibGUoKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyPiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpnZXRBdmFpbGFibGVCdWZm
ZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0MzRGludCBpbnRlcm5hbEZvcm1hdCkKK3sKKyAgICBB
U1NFUlQobV9sb2NrLmlzSGVsZCgpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXI+IGF2YWlsYWJsZUJ1ZmZlcjsKKworICAgIGF1dG8gYnVmZmVy
cyA9IFdURjo6bW92ZShtX3VzZWRCdWZmZXJzKTsKKyAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6IGJ1
ZmZlcnMpIHsKKyAgICAgICAgaWYgKCFidWZmZXIpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICBpZiAoIWF2YWlsYWJsZUJ1ZmZlciAmJiBidWZmZXItPmNhblJldXNlV2l0aG91dFJl
c2V0KHNpemUsIGludGVybmFsRm9ybWF0KSkgeworICAgICAgICAgICAgYXZhaWxhYmxlQnVmZmVy
ID0gV1RGOjptb3ZlKGJ1ZmZlcik7CisgICAgICAgICAgICBhdmFpbGFibGVCdWZmZXItPm1hcmtV
c2VkKCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBtX3VzZWRC
dWZmZXJzLmFwcGVuZChXVEY6Om1vdmUoYnVmZmVyKSk7CisgICAgfQorCisgICAgaWYgKCFtX3Vz
ZWRCdWZmZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgc2NoZWR1bGVSZWxlYXNlVW51c2VkQnVmZmVy
cygpOworICAgIHJldHVybiBhdmFpbGFibGVCdWZmZXI7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eTo6c2NoZWR1bGVSZWxlYXNlVW51c2VkQnVmZmVycygpCit7Cisg
ICAgaWYgKCFtX3JlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAg
bV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyLnN0YXJ0T25lU2hvdChzX3JlbGVhc2VVbnVzZWRC
dWZmZXJzVGltZXJJbnRlcnZhbCk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eTo6cmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckZpcmVkKCkKK3sKKyAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2xvY2spOworICAgIGlmIChtX3VzZWRCdWZmZXJzLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byBidWZmZXJzID0gV1RGOjptb3ZlKG1fdXNlZEJ1ZmZl
cnMpOworICAgIGRvdWJsZSBtaW5Vc2VkVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZSgpIC0gc19yZWxlYXNlVW51c2VkU2Vjb25kc1RvbGVyYW5jZTsKKworICAgIGZvciAoYXV0byYg
YnVmZmVyIDogYnVmZmVycykgeworICAgICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZlci0+bGFzdFVz
ZWRUaW1lKCkgPj0gbWluVXNlZFRpbWUpCisgICAgICAgICAgICBtX3VzZWRCdWZmZXJzLmFwcGVu
ZChXVEY6Om1vdmUoYnVmZmVyKSk7CisgICAgfQorfQorCit2b2lkIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHk6OnN3YXBCdWZmZXIoKQoreworICAgIEFTU0VSVChtX2NvbXBvc2l0b3JU
aHJlYWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBwcmV2QnVmZmVyOworCisgICAgeworICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgICAgICBpZiAoIW1fdGFyZ2V0TGF5
ZXIgfHwgIW1fcGVuZGluZ0J1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBw
cmV2QnVmZmVyID0gV1RGOjptb3ZlKG1fY3VycmVudEJ1ZmZlcik7CisKKyAgICAgICAgbV9jdXJy
ZW50QnVmZmVyID0gV1RGOjptb3ZlKG1fcGVuZGluZ0J1ZmZlcik7CisgICAgICAgIG1fdGFyZ2V0
TGF5ZXItPnNldENvbnRlbnRzTGF5ZXIobV9jdXJyZW50QnVmZmVyLmdldCgpKTsKKyAgICB9CisK
KyAgICBpZiAocHJldkJ1ZmZlciAmJiBwcmV2QnVmZmVyLT5oYXNNYW5hZ2VkVGV4dHVyZSgpKQor
ICAgICAgICBtX3VzZWRCdWZmZXJzLmFwcGVuZChXVEY6Om1vdmUocHJldkJ1ZmZlcikpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1NfVEhSRUFERUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43Y2ZmMWNjNGZhZDJkNGMzZTI0Mjg5YjQxZmRjMzVkMDRkODA5
MWViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaApAQCAtMCwwICsxLDEwMCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlfaAorI2RlZmluZSBUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5X2gKKworI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgor
I2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJp
eC5oIgorI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgor
I2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisjaWZuZGVmIE5ERUJVRworI2luY2x1
ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFRleHR1cmVNYXBwZXJMYXllcjsKK2NsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHk7CitjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjsKKworY2xhc3Mg
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBwcm94eSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCgpID0gMDsKK307
CisKK2NsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4geworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEKCk7CitwdWJsaWM6CisgICAgY2xhc3MgQ29tcG9zaXRvciB7
CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIHZvaWQgb25OZXdCdWZmZXJBdmFpbGFibGUo
KSA9IDA7CisgICAgfTsKKworICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkoKTsK
KyAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5KCk7CisKKyAgICAv
LyBUbyBhdm9pZCBtdWx0aXBsZSBsb2NrL3JlbGVhc2Ugc2l0dWF0aW9uIHRvIHVwZGF0ZSBhIHNp
bmdsZSBmcmFtZSwKKyAgICAvLyB0aGUgaW1wbGVtZW50YXRpb24gb2YgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVyIHNob3VsZAorICAgIC8vIGFxdWlyZSAvIHJlbGVhc2Ug
dGhlIGxvY2sgZXhwbGljaXRseSB0byB1c2UgYmVsb3cgbWV0aG9kcy4KKyAgICBMb2NrJiBsb2Nr
KCkgeyByZXR1cm4gbV9sb2NrOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyPiBnZXRBdmFpbGFibGVCdWZmZXIoY29uc3QgSW50U2l6ZSYsIEdD
M0RpbnQgaW50ZXJuYWxGb3JtYXQpOworICAgIHZvaWQgcHVzaE5leHRCdWZmZXIoc3RkOjp1bmlx
dWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPik7CisgICAgYm9vbCBpc0Fj
dGl2ZSgpOworCisgICAgdm9pZCBhY3RpdmF0ZU9uQ29tcG9zaXRpbmdUaHJlYWQoQ29tcG9zaXRv
ciosIFRleHR1cmVNYXBwZXJMYXllciopOworICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCisgICAg
dm9pZCBzd2FwQnVmZmVyKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBzY2hlZHVsZVJlbGVhc2VV
bnVzZWRCdWZmZXJzKCk7CisgICAgdm9pZCByZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyRmlyZWQo
KTsKKworICAgIENvbXBvc2l0b3IqIG1fY29tcG9zaXRvcjsKKyAgICBUZXh0dXJlTWFwcGVyTGF5
ZXIqIG1fdGFyZ2V0TGF5ZXI7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXI+IG1fY3VycmVudEJ1ZmZlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IG1fcGVuZGluZ0J1ZmZlcjsKKworICAg
IExvY2sgbV9sb2NrOworCisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcj4+IG1fdXNlZEJ1ZmZlcnM7CisKKyAgICBSdW5Mb29wOjpUaW1l
cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBtX3JlbGVhc2VVbnVzZWRCdWZmZXJz
VGltZXI7CisjaWZuZGVmIE5ERUJVRworICAgIFRocmVhZElkZW50aWZpZXIgbV9jb21wb3NpdG9y
VGhyZWFkSUQgeyAwIH07CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCBm
ZGY2YmU3Y2ZlMjI0NGE4MjgyYmQ4NjRhZGFjNjEzZTZlYWQzZjNkLi44NWQyZjZmYWQ0ZmRiNGMw
YWUwMWFjNzc2MDQyNDkzNWY2ZWQ4MWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMzAsOSArMzAsOSBAQAogI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyRmFjdG9yeS5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgotI2luY2x1ZGUg
IlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1l
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpZm5kZWYgTkRFQlVHCkBAIC00Miw2ICs0
MiwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0ZDo6dW5pcXVlX3B0cjxHcmFwaGlj
c0xheWVyPiBHcmFwaGljc0xheWVyOjpjcmVhdGUoR3JhcGhpY3NMYXllckZhY3RvcnkqIGZhY3Rv
cnksIEdyYXBoaWNzTGF5ZXJDbGllbnQmIGNsaWVudCwgVHlwZSBsYXllclR5cGUpCit7CisgICAg
aWYgKCFmYWN0b3J5KQorICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI+KGxheWVyVHlwZSwgY2xpZW50KTsKKworICAgIHJldHVybiBmYWN0b3J5
LT5jcmVhdGVHcmFwaGljc0xheWVyKGxheWVyVHlwZSwgY2xpZW50KTsKK30KKwogc3RhdGljIENv
b3JkaW5hdGVkTGF5ZXJJRCB0b0Nvb3JkaW5hdGVkTGF5ZXJJRChHcmFwaGljc0xheWVyKiBsYXll
cikKIHsKICAgICByZXR1cm4gbGF5ZXIgPyB0b0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihsYXll
ciktPmlkKCkgOiAwOwpAQCAtMTIxLDYgKzEyOSw5IEBAIENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKFR5cGUgbGF5ZXJUeXBlLCBHcmFwaGljc0xheWVy
CiAgICAgLCBtX2lzVmFsaWRQbGF0Zm9ybUxheWVyKGZhbHNlKQogICAgICwgbV9wZW5kaW5nUGxh
dGZvcm1MYXllck9wZXJhdGlvbihOb25lKQogI2VuZGlmCisjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTX1RIUkVBREVEKQorICAgICwgbV9zaG91bGRTeW5jUGxhdGZvcm1MYXllcihmYWxzZSkK
KyNlbmRpZgogICAgICwgbV9jb29yZGluYXRvcigwKQogICAgICwgbV9jb21wb3NpdGVkTmF0aXZl
SW1hZ2VQdHIoMCkKICAgICAsIG1fcGxhdGZvcm1MYXllcigwKQpAQCAtNDA2LDYgKzQxNywxMiBA
QCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5
ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcgogICAgIEFTU0VSVCghKCFtX3BsYXRmb3JtTGF5ZXJU
b2tlbi5pc1ZhbGlkKCkgJiYgbV9wbGF0Zm9ybUxheWVyKSk7CiAKICAgICBub3RpZnlGbHVzaFJl
cXVpcmVkKCk7CisjZWxpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAg
aWYgKG1fcGxhdGZvcm1MYXllciAhPSBwbGF0Zm9ybUxheWVyKQorICAgICAgICBtX3Nob3VsZFN5
bmNQbGF0Zm9ybUxheWVyID0gdHJ1ZTsKKworICAgIG1fcGxhdGZvcm1MYXllciA9IHBsYXRmb3Jt
TGF5ZXI7CisgICAgbm90aWZ5Rmx1c2hSZXF1aXJlZCgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0ocGxhdGZvcm1MYXllcik7CiAjZW5kaWYKQEAgLTY5NCw5ICs3MTEsOSBAQCB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0FuaW1hdGlvbnMoKQogICAgIG1fbGF5ZXJTdGF0ZS5h
bmltYXRpb25zQ2hhbmdlZCA9IHRydWU7CiB9CiAKLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jUGxhdGZvcm1MYXllcigpCiB7Cisj
aWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgZGVzdHJveVBsYXRmb3JtTGF5ZXJJZk5lZWRl
ZCgpOwogICAgIGNyZWF0ZVBsYXRmb3JtTGF5ZXJJZk5lZWRlZCgpOwogCkBAIC03MTEsOCArNzI4
LDIwIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jUGxhdGZvcm1MYXllcigp
CiAgICAgQVNTRVJUKG1fcGxhdGZvcm1MYXllcik7CiAgICAgbV9sYXllclN0YXRlLnBsYXRmb3Jt
TGF5ZXJGcm9udEJ1ZmZlciA9IG1fcGxhdGZvcm1MYXllci0+Y29weVRvR3JhcGhpY3NTdXJmYWNl
KCk7CiAgICAgbV9sYXllclN0YXRlLnBsYXRmb3JtTGF5ZXJTaG91bGRTd2FwQnVmZmVycyA9IHRy
dWU7CisjZWxpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgaWYgKCFt
X3Nob3VsZFN5bmNQbGF0Zm9ybUxheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Nob3Vs
ZFN5bmNQbGF0Zm9ybUxheWVyID0gZmFsc2U7CisgICAgbV9sYXllclN0YXRlLnBsYXRmb3JtTGF5
ZXJDaGFuZ2VkID0gdHJ1ZTsKKyAgICBpZiAobV9wbGF0Zm9ybUxheWVyKSB7CisgICAgICAgIG1f
cGxhdGZvcm1MYXllci0+c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpOworICAgICAgICBtX2xheWVyU3Rh
dGUucGxhdGZvcm1MYXllclByb3h5ID0gbV9wbGF0Zm9ybUxheWVyLT5wcm94eSgpOworICAgIH0K
KyNlbmRpZgogfQogCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6ZGVzdHJveVBsYXRmb3JtTGF5ZXJJZk5lZWRlZCgpCiB7CiAgICAgaWYg
KCEobV9wZW5kaW5nUGxhdGZvcm1MYXllck9wZXJhdGlvbiAmIERlc3Ryb3lQbGF0Zm9ybUxheWVy
KSkKQEAgLTc2Myw5ICs3OTIsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Zmx1
c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seShib29sKQogICAgIGNvbXB1dGVUcmFu
c2Zvcm1lZFZpc2libGVSZWN0KCk7CiAgICAgc3luY0NoaWxkcmVuKCk7CiAgICAgc3luY0ZpbHRl
cnMoKTsKLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBzeW5jUGxhdGZvcm1MYXllcigp
OwotI2VuZGlmCiAKICAgICAvLyBPbmx5IHVuc2V0IG1fbW92aW5nVmlzaWJsZVJlY3QgYWZ0ZXIg
d2UgaGF2ZSB1cGRhdGVkIHRoZSB2aXNpYmxlIHJlY3QgYWZ0ZXIgdGhlIGFuaW1hdGlvbiBzdG9w
cGVkLgogICAgIGlmICghaGFzQWN0aXZlVHJhbnNmb3JtQW5pbWF0aW9uKQpAQCAtMTE4OSw1ICsx
MjE2LDE3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjphbmltYXRpb25TdGFydGVk
VGltZXJGaXJlZCgpCiB7CiAgICAgY2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlz
LCAiIiwgbV9sYXN0QW5pbWF0aW9uU3RhcnRUaW1lKTsKIH0KKworI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDU19USFJFQURFRCkKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpwbGF0
Zm9ybUxheWVyV2lsbEJlRGVzdHJveWVkKCkKK3sKK30KKwordm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnNldFBsYXRmb3JtTGF5ZXJOZWVkc0Rpc3BsYXkoKQoreworfQorI2VuZGlmCisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwogI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuaAppbmRleCA1NDY1NjY0YzlmZDM2Yzc0NWIwNTgxZDI0OGM0OTViNjk1Nzg2YTI2Li44
YTQ1YzM1NjU4NTcwNDM1NzFiMmUzNTlmNzY2ZWY5MWJkNDBjY2NhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiVGlsZWRCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJU
aWxlZEJhY2tpbmdTdG9yZUNsaWVudC5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4
LmgiCkBAIC01Nyw2ICs1OCw5IEBAIHB1YmxpYzoKIAogY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyIDogcHVibGljIEdyYXBoaWNzTGF5ZXIKICAgICAsIHB1YmxpYyBUaWxlZEJhY2tpbmdT
dG9yZUNsaWVudAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICAs
IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjo6Q2xpZW50CisjZW5kaWYKICAgICAs
IHB1YmxpYyBDb29yZGluYXRlZEltYWdlQmFja2luZzo6SG9zdCB7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKFR5cGUsIEdyYXBoaWNzTGF5ZXJDbGllbnQm
KTsKQEAgLTE1NSwxMCArMTU5LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIFJlY3JlYXRlUGxhdGZv
cm1MYXllciA9IENyZWF0ZUFuZFN5bmNQbGF0Zm9ybUxheWVyIHwgRGVzdHJveVBsYXRmb3JtTGF5
ZXIKICAgICB9OwogCi0gICAgdm9pZCBzeW5jUGxhdGZvcm1MYXllcigpOwogICAgIHZvaWQgZGVz
dHJveVBsYXRmb3JtTGF5ZXJJZk5lZWRlZCgpOwogICAgIHZvaWQgY3JlYXRlUGxhdGZvcm1MYXll
cklmTmVlZGVkKCk7CiAjZW5kaWYKKyAgICB2b2lkIHN5bmNQbGF0Zm9ybUxheWVyKCk7CisjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIHZvaWQgcGxhdGZvcm1MYXll
cldpbGxCZURlc3Ryb3llZCgpOworICAgIHZvaWQgc2V0UGxhdGZvcm1MYXllck5lZWRzRGlzcGxh
eSgpOworI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdCb3JkZXIoY29uc3QgQ29s
b3ImLCBmbG9hdCB3aWR0aCkgb3ZlcnJpZGU7CiAKQEAgLTIyMyw2ICsyMzEsOSBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9pc1ZhbGlkUGxhdGZvcm1MYXllciA6IDE7CiAgICAgdW5zaWduZWQgbV9w
ZW5kaW5nUGxhdGZvcm1MYXllck9wZXJhdGlvbiA6IDM7CiAjZW5kaWYKKyNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgYm9vbCBtX3Nob3VsZFN5bmNQbGF0Zm9ybUxh
eWVyIDogMTsKKyNlbmRpZgogCiAgICAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50KiBt
X2Nvb3JkaW5hdG9yOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaWxlZEJhY2tpbmdTdG9yZT4gbV9t
YWluQmFja2luZ1N0b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NTdGF0ZS5oCmluZGV4IDE0ZjJiNzc1MDQ2NzhmMDk3NjI3ODE4MDIyZGZiZWZh
MjcyNDJkZjYuLjg0ZTdiMjc0YzFhNjIxNjk0ZDY4YzA0Mjg3ODhkZjNhNTg3Nzc0NjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmgK
QEAgLTQ0LDYgKzQ0LDEwIEBACiAjaW5jbHVkZSAiR3JhcGhpY3NTdXJmYWNlVG9rZW4uaCIKICNl
bmRpZgogCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorI2luY2x1ZGUg
IlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENvb3JkaW5hdGVkU3VyZmFjZTsKQEAgLTEzMCw2ICsxMzQsOSBA
QCBzdHJ1Y3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUgewogI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKQogICAgICAgICAsIHBsYXRmb3JtTGF5ZXJGcm9udEJ1ZmZlcigwKQogI2VuZGlm
CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgICAgICAsIHBsYXRm
b3JtTGF5ZXJQcm94eSgwKQorI2VuZGlmCiAgICAgewogICAgIH0KIApAQCAtMTY0LDYgKzE3MSwx
MCBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUgewogICAgIEdyYXBoaWNz
U3VyZmFjZTo6RmxhZ3MgcGxhdGZvcm1MYXllclN1cmZhY2VGbGFnczsKICNlbmRpZgogCisjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIFJlZlB0cjxUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5PiBwbGF0Zm9ybUxheWVyUHJveHk7CisjZW5kaWYKKwogICAg
IEludFNpemUgY29tbWl0dGVkU2Nyb2xsT2Zmc2V0OwogCiAgICAgYm9vbCBoYXNQZW5kaW5nQ2hh
bmdlcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApp
bmRleCBkZWFiMDQ3M2ZlYWY2YmY0YTk3OGIyNDllNzU2ZjY1NzI3MmNlODBlLi5iMGVmMTk1MzNi
ODI2YzA1MjdlNGU2OTVkMmU4OTYxN2VlMjVjZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTgzLDYgKzgzLDExIEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lOjpwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpCiAgICAgaWYgKCFjdXJyZW50Um9vdExheWVyKQogICAgICAgICByZXR1cm47CiAKKyNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgZm9yIChhdXRvJiBwcm94
eSA6IG1fcGxhdGZvcm1MYXllclByb3hpZXMudmFsdWVzKCkpCisgICAgICAgIHByb3h5LT5zd2Fw
QnVmZmVyKCk7CisjZW5kaWYKKwogICAgIGN1cnJlbnRSb290TGF5ZXItPnNldFRleHR1cmVNYXBw
ZXIobV90ZXh0dXJlTWFwcGVyLmdldCgpKTsKICAgICBjdXJyZW50Um9vdExheWVyLT5hcHBseUFu
aW1hdGlvbnNSZWN1cnNpdmVseSgpOwogICAgIG1fdGV4dHVyZU1hcHBlci0+YmVnaW5QYWludGlu
ZyhQYWludEZsYWdzKTsKQEAgLTE2NCwyMCArMTY5LDkgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OmFkanVzdFBvc2l0aW9uRm9yRml4ZWRMYXllcnMoY29uc3QgRmxvYXRQb2ludCYg
Y28KICAgICAgICAgZml4ZWRMYXllci0+c2V0U2Nyb2xsUG9zaXRpb25EZWx0YUlmTmVlZGVkKGRl
bHRhKTsKIH0KIAotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OmNyZWF0ZVBsYXRmb3JtTGF5ZXJJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5
ZXIqIGxheWVyLCBjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYgc3RhdGUpCi17
Ci0gICAgaWYgKCFzdGF0ZS5wbGF0Zm9ybUxheWVyVG9rZW4uaXNWYWxpZCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU+IHBs
YXRmb3JtTGF5ZXJCYWNraW5nU3RvcmUoVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6
OmNyZWF0ZSgpKTsKLSAgICBtX3N1cmZhY2VCYWNraW5nU3RvcmVzLnNldChsYXllciwgcGxhdGZv
cm1MYXllckJhY2tpbmdTdG9yZSk7Ci0gICAgcGxhdGZvcm1MYXllckJhY2tpbmdTdG9yZS0+c2V0
R3JhcGhpY3NTdXJmYWNlKEdyYXBoaWNzU3VyZmFjZTo6Y3JlYXRlKHN0YXRlLnBsYXRmb3JtTGF5
ZXJTaXplLCBzdGF0ZS5wbGF0Zm9ybUxheWVyU3VyZmFjZUZsYWdzLCBzdGF0ZS5wbGF0Zm9ybUxh
eWVyVG9rZW4pKTsKLSAgICBsYXllci0+c2V0Q29udGVudHNMYXllcihwbGF0Zm9ybUxheWVyQmFj
a2luZ1N0b3JlLmdldCgpKTsKLX0KLQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnN5
bmNQbGF0Zm9ybUxheWVySWZOZWVkZWQoVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciwgY29uc3Qg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmIHN0YXRlKQogeworI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKQogICAgIEFTU0VSVChtX3RleHR1cmVNYXBwZXIpOwogCiAgICAgaWYgKHN0YXRl
LnBsYXRmb3JtTGF5ZXJDaGFuZ2VkKSB7CkBAIC0xOTEsNiArMTg1LDQxIEBAIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lOjpzeW5jUGxhdGZvcm1MYXllcklmTmVlZGVkKFRleHR1cmVNYXBw
ZXJMYXllciogbGF5CiAgICAgICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdT
dG9yZT4gcGxhdGZvcm1MYXllckJhY2tpbmdTdG9yZSA9IGl0LT52YWx1ZTsKICAgICAgICAgcGxh
dGZvcm1MYXllckJhY2tpbmdTdG9yZS0+c3dhcEJ1ZmZlcnNJZk5lZWRlZChzdGF0ZS5wbGF0Zm9y
bUxheWVyRnJvbnRCdWZmZXIpOwogICAgIH0KKyNlbGlmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
U19USFJFQURFRCkKKyAgICBpZiAoIXN0YXRlLnBsYXRmb3JtTGF5ZXJDaGFuZ2VkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAoc3RhdGUucGxhdGZvcm1MYXllclByb3h5KSB7CisgICAgICAg
IG1fcGxhdGZvcm1MYXllclByb3hpZXMuc2V0KGxheWVyLCBzdGF0ZS5wbGF0Zm9ybUxheWVyUHJv
eHkpOworICAgICAgICBzdGF0ZS5wbGF0Zm9ybUxheWVyUHJveHktPmFjdGl2YXRlT25Db21wb3Np
dGluZ1RocmVhZCh0aGlzLCBsYXllcik7CisgICAgfSBlbHNlCisgICAgICAgIG1fcGxhdGZvcm1M
YXllclByb3hpZXMucmVtb3ZlKGxheWVyKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGxheWVy
KTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworI2VuZGlmCit9CisKKyNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6
b25OZXdCdWZmZXJBdmFpbGFibGUoKQoreworICAgIFJlZlB0cjxDb29yZGluYXRlZEdyYXBoaWNz
U2NlbmU+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBkaXNwYXRjaE9uQ2xpZW50UnVuTG9vcChbPV0g
eworICAgICAgICBwcm90ZWN0b3ItPnVwZGF0ZVZpZXdwb3J0KCk7CisgICAgfSk7Cit9CisjZW5k
aWYKKworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQordm9pZCBDb29yZGluYXRlZEdyYXBoaWNz
U2NlbmU6OmNyZWF0ZVBsYXRmb3JtTGF5ZXJJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxh
eWVyLCBjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYgc3RhdGUpCit7CisgICAg
aWYgKCFzdGF0ZS5wbGF0Zm9ybUxheWVyVG9rZW4uaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU+IHBsYXRmb3Jt
TGF5ZXJCYWNraW5nU3RvcmUoVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OmNyZWF0
ZSgpKTsKKyAgICBtX3N1cmZhY2VCYWNraW5nU3RvcmVzLnNldChsYXllciwgcGxhdGZvcm1MYXll
ckJhY2tpbmdTdG9yZSk7CisgICAgcGxhdGZvcm1MYXllckJhY2tpbmdTdG9yZS0+c2V0R3JhcGhp
Y3NTdXJmYWNlKEdyYXBoaWNzU3VyZmFjZTo6Y3JlYXRlKHN0YXRlLnBsYXRmb3JtTGF5ZXJTaXpl
LCBzdGF0ZS5wbGF0Zm9ybUxheWVyU3VyZmFjZUZsYWdzLCBzdGF0ZS5wbGF0Zm9ybUxheWVyVG9r
ZW4pKTsKKyAgICBsYXllci0+c2V0Q29udGVudHNMYXllcihwbGF0Zm9ybUxheWVyQmFja2luZ1N0
b3JlLmdldCgpKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRlc3Ryb3lQ
bGF0Zm9ybUxheWVySWZOZWVkZWQoVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciwgY29uc3QgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmIHN0YXRlKQpAQCAtMzEzLDkgKzM0Miw3IEBAIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRMYXllclN0YXRlKENvb3JkaW5hdGVkTGF5
ZXJJRCBpZCwgY29uc3QgQ29vcmRpCiAgICAgdXBkYXRlVGlsZXNJZk5lZWRlZChsYXllciwgbGF5
ZXJTdGF0ZSk7CiAgICAgc2V0TGF5ZXJGaWx0ZXJzSWZOZWVkZWQobGF5ZXIsIGxheWVyU3RhdGUp
OwogICAgIHNldExheWVyQW5pbWF0aW9uc0lmTmVlZGVkKGxheWVyLCBsYXllclN0YXRlKTsKLSNp
ZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBzeW5jUGxhdGZvcm1MYXllcklmTmVlZGVkKGxh
eWVyLCBsYXllclN0YXRlKTsKLSNlbmRpZgogICAgIHNldExheWVyUmVwYWludENvdW50SWZOZWVk
ZWQobGF5ZXIsIGxheWVyU3RhdGUpOwogfQogCkBAIC0zNTQsNiArMzgxLDEwIEBAIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpkZWxldGVMYXllcihDb29yZGluYXRlZExheWVySUQgbGF5
ZXJJRCkKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBtX3N1cmZhY2VCYWNraW5nU3Rv
cmVzLnJlbW92ZShsYXllci5nZXQoKSk7CiAjZW5kaWYKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1NfVEhSRUFERUQpCisgICAgaWYgKGF1dG8gcGxhdGZvcm1MYXllclByb3h5ID0gbV9wbGF0
Zm9ybUxheWVyUHJveGllcy50YWtlKGxheWVyLmdldCgpKSkKKyAgICAgICAgcGxhdGZvcm1MYXll
clByb3h5LT5pbnZhbGlkYXRlKCk7CisjZW5kaWYKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OnNldFJvb3RMYXllcklEKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklEKQpAQCAt
NjMyLDYgKzY2Myw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwdXJnZUdMUmVz
b3VyY2VzKCkKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBtX3N1cmZhY2VCYWNraW5n
U3RvcmVzLmNsZWFyKCk7CiAjZW5kaWYKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhS
RUFERUQpCisgICAgbV9wbGF0Zm9ybUxheWVyUHJveGllcy5jbGVhcigpOworI2VuZGlmCiAgICAg
bV9zdXJmYWNlcy5jbGVhcigpOwogCiAgICAgbV9yb290TGF5ZXIgPSBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAppbmRleCA2OTA2NWM5YTU2ZjhmMjI3NTZj
ZDdhNWJkNTFkMjBlOTcyNTQ5MzRiLi42OGFhYmZlNDBjNGRmODE5N2QxNmZiZDYyYjhhZmZhNWU5
YzI3OTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaApAQCAtNDUs
NiArNDUsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2lu
Z1N0b3JlLmg+CiAjZW5kaWYKIAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURF
RCkKKyNpbmNsdWRlIDxXZWJDb3JlL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaD4K
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmU7CkBAIC01OCw3ICs2MiwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbW1p
dFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBv
ZmZzZXQpID0gMDsKIH07CiAKLWNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU+LCBwdWJsaWMg
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpTY3JvbGxpbmdDbGllbnQgeworY2xhc3MgQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZT4sIHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6
OlNjcm9sbGluZ0NsaWVudAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkK
KyAgICAsIHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpD
b21wb3NpdG9yCisjZW5kaWYKK3sKIHB1YmxpYzoKICAgICBleHBsaWNpdCBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmUoQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lQ2xpZW50Kik7CiAgICAgdmlydHVh
bCB+Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7CkBAIC05NCw5ICsxMDIsOSBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVtb3ZlVGlsZXNJZk5lZWRlZChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5
ZXIqLCBjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwogICAg
IHZvaWQgc2V0TGF5ZXJGaWx0ZXJzSWZOZWVkZWQoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVy
KiwgY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKICAgICB2
b2lkIHNldExheWVyQW5pbWF0aW9uc0lmTmVlZGVkKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
ciosIGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CisgICAg
dm9pZCBzeW5jUGxhdGZvcm1MYXllcklmTmVlZGVkKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
ciosIGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CiAjaWYg
VVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgdm9pZCBjcmVhdGVQbGF0Zm9ybUxheWVySWZOZWVk
ZWQoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKLSAgICB2b2lkIHN5bmNQbGF0Zm9ybUxheWVySWZOZWVk
ZWQoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKICAgICB2b2lkIGRlc3Ryb3lQbGF0Zm9ybUxheWVySWZO
ZWVkZWQoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgY29uc3QgV2ViQ29yZTo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKICNlbmRpZgogICAgIHZvaWQgc2V0TGF5ZXJSZXBh
aW50Q291bnRJZk5lZWRlZChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqLCBjb25zdCBXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwpAQCAtMTQ0LDYgKzE1MiwxMCBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBkaXNwYXRjaENvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJf
dCBsYXllcklELCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBvZmZzZXQpOwogCisjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIHZpcnR1YWwgdm9pZCBvbk5ld0J1ZmZl
ckF2YWlsYWJsZSgpIG92ZXJyaWRlOworI2VuZGlmCisKICAgICAvLyBSZW5kZXIgcXVldWUgY2Fu
IGJlIGFjY2Vzc2VkIG9ueSBmcm9tIG1haW4gdGhyZWFkIG9yIHVwZGF0ZVBhaW50Tm9kZSBjYWxs
IHN0YWNrIQogICAgIFZlY3RvcjxzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4+IG1fcmVuZGVyUXVldWU7
CiAgICAgTG9jayBtX3JlbmRlclF1ZXVlTXV0ZXg7CkBAIC0xNjQsNiArMTc2LDExIEBAIHByaXZh
dGU6CiAgICAgU3VyZmFjZUJhY2tpbmdTdG9yZU1hcCBtX3N1cmZhY2VCYWNraW5nU3RvcmVzOwog
I2VuZGlmCiAKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgdHlw
ZWRlZiBIYXNoTWFwPFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllciosIFJlZlB0cjxXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Pj4gUGxhdGZvcm1MYXllclByb3h5TWFw
OworICAgIFBsYXRmb3JtTGF5ZXJQcm94eU1hcCBtX3BsYXRmb3JtTGF5ZXJQcm94aWVzOworI2Vu
ZGlmCisKICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDMyX3QgLyogYXRsYXNJRCAqLywgUmVmUHRy
PFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4+IFN1cmZhY2VNYXA7CiAgICAgU3VyZmFjZU1h
cCBtX3N1cmZhY2VzOwogCg==
</data>
<flag name="review"
          id="291792"
          type_id="1"
          status="+"
          setter="zan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266776</attachid>
            <date>2015-12-07 08:50:22 -0800</date>
            <delta_ts>2015-12-07 09:16:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143299-20151207174952.patch</filename>
            <type>text/plain</type>
            <size>46731</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzNjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzYzNmVkMDEyZWM3ZmVk
NjllNjg1ZTE0YzIyOTc1YWI4YTlmYzMwNS4uZTg5OTg3MDViOTE1MTdiM2RiYWU3NTJkNzUwYWIw
ZWQwZTZjMjMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE1LTEwLTMxICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtUaHJlYWRlZENvbXBv
c2l0b3JdIEFkZCBzdXBwb3J0IGZvciBQbGF0Zm9ybUxheWVyLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMjk5CisKKyAgICAgICAgUmV2aWV3ZWQg
Ynkgxb1hbiBEb2JlcsWhZWsuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkgYW5kIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyIHRvCisgICAgICAgIHNlbmQgYSB0ZXh0dXJlIChhY3R1YWwgdGV4dHVyZSBvciBCaXRt
YXBUZXh0dXJlKSB0byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkIGRpcmVjdGx5LgorICAgICAgICBQ
bGF0Zm9ybSBsYXllciByZW5kZXJlcnMgc2hvdWxkIGltcGxlbWVudCBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5UHJvdmlkZXIgdG8gZXN0YWJsaXNoCisgICAgICAgIGEgY29ubmVjdGlv
biB0byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkLiBBZnRlciB0aGUgY29ubmVjdGlvbiBoYXMgYmVl
biBlc3RhYmxpc2hlZCwgdGhlIHJlbmRlcmVyCisgICAgICAgIGNhbiByZW5kZXIgaXRzIGNvbnRl
bnRzIHRvIHRoZSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlciBhbmQgcGFzcyBpdCB0
byB0aGUgY29tcG9zaXRpbmcgdGhyZWFkCisgICAgICAgIHZpYSBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllciBwcm94eS4KKyAgICAgICAgVGhlIGJ1ZmZlciBjYW4gYmUgYW4gdW5tYW5hZ2VkIHRl
eHR1cmUgKGEuay5hLiBwbGF0Zm9ybSB0ZXh0dXJlKSBvciBCaXRtYXBUZXh0dXJlLgorICAgICAg
ICBGb3IgdGhlIHVubWFuYWdlZCB0ZXh0dXJlLCB0aGUgcmVuZGVyZXIgc2hvdWxkIG1hbmFnZSBp
dHMgbGlmZSBjeWNsZSBpdHNlbGYuIEZvciB0aGUgQml0bWFwVGV4dHVyZSwKKyAgICAgICAgaXQg
d2lsbCBiZSBtYW5hZ2VkIGJ5IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuIEluIHRo
YXQgY2FzZSwgdXNlZCAoc3dhcHBlZCkgYnVmZmVyIHdpbGwgYmUKKyAgICAgICAgcmVjeWNsZWQg
YmVjYXVzZSB0aGUgcmVuZGVyZXIgd2lsbCB1c2Ugc2FtZSBzaXplIGFuZCBmb3JtYXQgdW50aWwg
aXQgY2hhbmdlcyBpdHMgc2l6ZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLgorCisg
ICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgIEFkZHMgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXIgYW5kIFRleHR1cmVNYXBwZXJQbGF5dGZvcm1MYXllclByb3h5Lgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWly
by5oOgorICAgICAgICBBZGRzIG1vY2sgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmg6CisgICAgICAgIEFkZHMgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eVByb3ZpZGVyIGFzIGEgUGxhdGZvcm1MYXllciBmb3IgdGhlIFRo
cmVhZGVkIENvbXBvc2l0b3IKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlR0wuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6aW50
ZXJuYWxGb3JtYXQpOiBBZGRzIGEgZ2V0dGVyIHRvIGNoZWNrIHRoZQorICAgICAgICBpbnRlcm5h
bCBmb3JtYXQgb2YgdGV4dHVyZSB0byBjaGVjayByZXVzYWJpbGl0eS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5oOgorICAgICAgICBFeGNsdWRlIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGZy
b20gYnVpbGQgd2hlbiB3ZSBhcmUgdXNpbmcgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eS5oOiBBZGRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgQmVjYXVzZSB3ZSBy
ZW1vdmVkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGZyb20gYnVpbGQsIHdlIG5lZWQgdG8g
YWRkIG93biBmYWN0b3J5IGZ1bmN0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY1BsYXRmb3JtTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpwbGF0Zm9ybUxheWVyV2ls
bEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6c2V0UGxhdGZvcm1MYXllck5lZWRzRGlzcGxheSk6CisgICAgICAgIEltcGxlbWVudHMgc3lu
YyBvcGVyYXRpb25zIGZvciBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5CisKIDIwMTUt
MTItMDcgIEd3YW5nIFlvb24gSHdhbmcgIDx5b29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S10gQ2xlYW4gdXAgdmlydHVhbCBmdW5jdGlvbnMgaW4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGIzODVjNjRjN2VjOGE1NDVhZDI0MzVjNjJhZWYzNjFhZWYz
NTBjNWUuLjY0NWM0M2QwZTRlODQ2ODIzYmJjODAwM2Q5NzkxMzZhOGM4MjJjZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNS0xMC0zMSAgR3dhbmcgWW9vbiBId2FuZyAgPHlvb25A
aWdhbGlhLmNvbT4KKworICAgICAgICBbVGhyZWFkZWRDb21wb3NpdG9yXSBBZGQgc3VwcG9ydCBm
b3IgUGxhdGZvcm1MYXllci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MzI5OQorCisgICAgICAgIFJldmlld2VkIGJ5IMW9YW4gRG9iZXLFoWVrLgor
CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpw
YWludFRvQ3VycmVudEdMQ29udGV4dCk6CisgICAgICAgIFN3YXAgcGVuZGluZyBidWZmZXJzIG9m
IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveGllcyBiZWZvcmUgcGFpbnRpbmcgY29udGVu
dHMuCisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY1BsYXRm
b3JtTGF5ZXJJZk5lZWRlZCk6CisgICAgICAgIEluIHRocmVhZGVkIGNvbXBvc2l0b3IsIENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuY2Ugb25seSBjYXJlcyBhYm91dCBjcmVhdGlvbiBhbmQgZGVsZXRp
b24KKyAgICAgICAgb2YgcGxhdGZvcm0gbGF5ZXJzLgorCisgICAgICAgIChXZWJLaXQ6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6b25OZXdCdWZmZXJBdmFpbGFibGUpOgorICAgICAgICBXaGVu
ZXZlciBuZXcgYnVmZmVyIGNvbWVzIHZpYSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
LCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUgd2lsbAorICAgICAgICB1cGRhdGUgdGhlIHNjZW5l
IGlmIGl0IGlzIG5lZWRlZC4KKwogMjAxNS0xMi0wNyAgSm9uIEZvcnNiZXJnICA8am9uLm9yZWJy
b0BnbWFpbC5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIHdlYmtpdF91cmlfcmVxdWVzdF9nZXRf
aHR0cF9tZXRob2QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggOGU3ODkwN2QwYjIxZDhl
MDRjMzg2YTNlM2M0ZDU0N2MwNjA2NTI2MC4uOGM4ZmQyYmY3YTk5ZTQ3OWI2ZmNiZDY0Yzg4OTU4
OTRhNWM0NmEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTQ0Miw2ICs0NDIsOCBA
QCBpZiAoRU5BQkxFX1RIUkVBREVEX0NPTVBPU0lUT1IpCiAgICAgICAgIHBhZ2Uvc2Nyb2xsaW5n
L2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBo
aWNzLmNwcAogICAgICAgICBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9s
bGluZ1N0YXRlTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCiAKKyAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAorICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eS5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Fy
ZWFBbGxvY2F0b3IuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZS5jcHAKaW5kZXggYjFjZGNjY2I2NzJmZjAyNWRmMjdmOGNhNzg3NGQ5M2Yy
ZDEwNWYxMy4uZTE1NDRiZmE5OGJmY2EwOGQ3ODg3NDQ1N2IwYjk0YWVmY2Q4OWNhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuY3BwCkBAIC02Myw3ICs2Myw3IEBAIEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBHCiAKIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6fkdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZSgpCiB7Ci0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorI2lmIFVTRShURVhUVVJFX01BUFBF
UikgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKICAgICBpZiAoY2xpZW50
KCkpCiAgICAgICAgIGNsaWVudCgpLT5wbGF0Zm9ybUxheWVyV2lsbEJlRGVzdHJveWVkKCk7CiAj
ZW5kaWYKQEAgLTc5LDcgKzc5LDEzIEBAIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjpwbGF0Zm9ybUNvbnRleHQoKQogICAgIHJldHVybiBtX2dsQ29u
dGV4dCA/IG1fZ2xDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSA6IEdMQ29udGV4dDo6Z2V0Q3Vy
cmVudCgpLT5wbGF0Zm9ybUNvbnRleHQoKTsKIH0KIAotI2lmIFVTRShURVhUVVJFX01BUFBFUikK
KyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCitSZWZQdHI8VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwcm94eSgp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KyNlbGlmIFVTRShURVhUVVJFX01BUFBFUikKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRy
aXgsIGZsb2F0IG9wYWNpdHkpCiB7CiAgICAgaWYgKCFtX2dsQ29udGV4dCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmgKaW5kZXggOWQ3MGVlNjllMDIxZWQ1ZWJlZWE4ZThiY2IwZWQxMTdiOGY4MGMyYy4u
OWZjOTIyNDJlOGJmNTU3YTVjMTRjY2M5ZTdkZWI0YzM2ZWVmZDU2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmgKQEAgLTIzLDE0ICsyMywxOCBAQAogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorI2luY2x1ZGUgIlRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaCIKKyNlbGlmIFVTRShURVhUVVJFX01BUFBFUikKICNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgogI2VuZGlmCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlCi0jaWYgVVNFKFRF
WFRVUkVfTUFQUEVSKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAg
ICA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5UHJvdmlkZXIKKyNlbGlm
IFVTRShURVhUVVJFX01BUFBFUikKICAgICA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllcgogI2VuZGlmCiB7CkBAIC00Miw3ICs0NiwxMCBAQCBwdWJsaWM6CiAKICAgICBHcmFwaGlj
c0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUoKSB7IHJldHVybiBtX3JlbmRlclN0
eWxlOyB9CiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTX1RIUkVBREVEKQorICAgIHZpcnR1YWwgUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHk+IHByb3h5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN3
YXBCdWZmZXJzSWZOZWVkZWQoKSBvdmVycmlkZSB7IH07CisjZWxpZiBVU0UoVEVYVFVSRV9NQVBQ
RVIpCiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIq
LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBm
bG9hdCBvcGFjaXR5KTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybUxheWVyLmgKaW5kZXggZjkwZmM2N2NjOTE0ZGQ2MDRlNzNlYmUwZjQ1
NmQyOTQ1ZjNmYTZkNy4uMjlmOWRlY2IyNGJhMmQ0NGU0MTAxZDAzYzE4MDk5ZGFhYjE1ZWU2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1MYXll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTGF5ZXIu
aApAQCAtMzEsNiArMzEsMTEgQEAgT0JKQ19DTEFTUyBDQUxheWVyOwogdHlwZWRlZiBDQUxheWVy
IFBsYXRmb3JtTGF5ZXI7CiAjZWxpZiBQTEFURk9STShXSU4pICYmIFVTRShDQSkKIHR5cGVkZWYg
c3RydWN0IF9DQUNGTGF5ZXIgUGxhdGZvcm1MYXllcjsKKyNlbGlmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDU19USFJFQURFRCkKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHlQcm92aWRlcjsKK3R5cGVkZWYgVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eVByb3ZpZGVyIFBsYXRmb3JtTGF5ZXI7Cit9OwogI2VsaWYgVVNFKFRFWFRV
UkVfTUFQUEVSKQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDI1NmQxY2M4MzEzYmE4YjA3MTg3
Yzc1MGIxYzk2NDY3MmRmOGUxMDkuLjA1N2I2YmVhMjY2NDNjZjMzYzhlNjZlMWQ2Yzg2NzE3YzAy
ODYyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC01Miw2ICs1Miw5IEBACiAjaW5jbHVk
ZSAiT3BlbkdMU2hpbXMuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKICNpbmNsdWRl
IDxjYWlyby1nbC5oPgorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgiCisjZW5kaWYKICNlbmRp
ZgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtNDA5LDYgKzQxMiwxMyBAQCBTdHJpbmcgSW1h
Z2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBkb3VibGUq
LCBDb29yZGluYXRlUwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFT
KQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKK1JlZlB0cjxUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBJbWFnZUJ1ZmZlckRhdGE6OnByb3h5KCkgY29uc3QK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorI2Vsc2UK
IHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHkpCiB7CiAgICAgQVNTRVJUKG1f
dGV4dHVyZSk7CkBAIC00MjEsNiArNDMxLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEYKICAg
ICBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKS0+ZHJhd1RleHR1
cmUobV90ZXh0dXJlLCBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kLCBtX3NpemUsIHRhcmdl
dFJlY3QsIG1hdHJpeCwgb3BhY2l0eSk7CiB9CiAjZW5kaWYKKyNlbmRpZgogCiBQbGF0Zm9ybUxh
eWVyKiBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWly
by5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJE
YXRhQ2Fpcm8uaAppbmRleCBkNjJmNDcwNTE1ZTNlODJkY2E5ZDk3NjM0NDdhNjdlMmZjNGQwNjMz
Li5jM2Y5YTEyMjQ4MjE1MzBlNzgxMTY2ZjAxYTM2YTcxZDIyMWNjMDgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWly
by5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyRGF0YUNhaXJvLmgKQEAgLTMzLDggKzMzLDEyIEBACiAKICNpZiBFTkFCTEUoQUNDRUxFUkFU
RURfMkRfQ0FOVkFTKQogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKKyNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94eS5oIgorI2Vsc2UKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ci5oIgogI2VuZGlmCisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Miw4ICs0
NiwxMiBAQCBjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBJbWFnZUJ1ZmZlckRhdGEKICNpZiBFTkFC
TEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19U
SFJFQURFRCkKKyAgICA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5UHJv
dmlkZXIKKyNlbHNlCiAgICAgOiBwdWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIKICNl
bmRpZgorI2VuZGlmCiB7CiBwdWJsaWM6CiAgICAgSW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNp
emUmKTsKQEAgLTU0LDcgKzYyLDEyIEBAIHB1YmxpYzoKICAgICBJbnRTaXplIG1fc2l6ZTsKIAog
I2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTX1RIUkVBREVEKQorICAgIHZpcnR1YWwgUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHk+IHByb3h5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN3
YXBCdWZmZXJzSWZOZWVkZWQoKSBvdmVycmlkZSB7IH07CisjZWxzZQogICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSk7CisjZW5k
aWYKICAgICB1aW50MzJfdCBtX3RleHR1cmU7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmgK
aW5kZXggZWIyMGEwZjIwZWNiNmM0N2Q1ZmUwYjJjNTE1OTk4MmQ4N2JkNjRmMi4uZDVkNjczOGEz
ZWQxZWRlMDg1MzRiNjE0YTAyMGI2NDM5NmNlMGUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaApAQCAt
NjksNiArNjksOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgRmlsdGVySW5mbyogZmlsdGVySW5mbygp
IGNvbnN0IHsgcmV0dXJuICZtX2ZpbHRlckluZm87IH0KICAgICBUZXh0dXJlTWFwcGVyR0w6OkNs
aXBTdGFjayYgY2xpcFN0YWNrKCkgeyByZXR1cm4gbV9jbGlwU3RhY2s7IH0KIAorICAgIEdDM0Rp
bnQgaW50ZXJuYWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsRm9ybWF0OyB9CisK
IHByaXZhdGU6CiAKICAgICBQbGF0Zm9ybTNET2JqZWN0IG1faWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA1MDFkMmE4OWU5ZTg3YWUwZmQ1NTIyYWM0
ODc3NzA5NmMzZWMwY2UzLi5jZWRhODJkZjI0NjY0NDFmYTZmYjQ2MjJkMDc5NWE4NWFiYTAwYmFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSA8
d3RmL0N1cnJlbnRUaW1lLmg+CiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisjaWYgVVNFKFRF
WFRVUkVfTUFQUEVSKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXgg
ZjU2Y2Y1MTg1OWNkYzdhYmQ4MGMzNmE2OWFmZDA2YzI4OGEzNGMzMy4uYjBhYTQ2MzdkOGJjNjFm
YjJmOTY0ZTkzZTEzMDE1ZDJlMmUzMTYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyLmgKQEAgLTIwLDcgKzIwLDcgQEAKICNpZm5kZWYgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXJfaAogI2RlZmluZSBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcl9oCiAKLSNpZiBV
U0UoVEVYVFVSRV9NQVBQRVIpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiAhVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQogCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXgg
NWYzNGY0MTg1MDMyNjdjZTA3ZWFiNjdlODA1MjNmYTMxODEwNjM5My4uZmM3NzEwNjJlMWMwMmFm
NzBmM2YzYzMyZDYzN2ZjZDAzZWY4N2ZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAK
QEAgLTQ0NSwxMiArNDQ1LDE0IEBAIFRleHR1cmVNYXBwZXJMYXllcjo6flRleHR1cmVNYXBwZXJM
YXllcigpCiAgICAgcmVtb3ZlRnJvbVBhcmVudCgpOwogfQogCisjaWYgIVVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRDaGlsZHJlbihjb25zdCBW
ZWN0b3I8R3JhcGhpY3NMYXllcio+JiBuZXdDaGlsZHJlbikKIHsKICAgICByZW1vdmVBbGxDaGls
ZHJlbigpOwogICAgIGZvciAoYXV0byogY2hpbGQgOiBuZXdDaGlsZHJlbikKICAgICAgICAgYWRk
Q2hpbGQoJmRvd25jYXN0PEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyPihjaGlsZCktPmxheWVy
KCkpOwogfQorI2VuZGlmCiAKIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRDaGlsZHJlbihj
b25zdCBWZWN0b3I8VGV4dHVyZU1hcHBlckxheWVyKj4mIG5ld0NoaWxkcmVuKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJMYXllci5oCmluZGV4IDBjOWRhNzFiYjE5NWNiNGRjZDcxZjE1MGY3ZmU3YTJlMjYz
YWNhZDIuLjZhZGI2NTRjODEzNGM1MTg3ZWE5NjdmODIwY2FlY2QzNjdkNDhkNDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmgKQEAgLTc4LDcgKzc4LDkgQEAgcHVibGljOgogICAgIFRleHR1cmVN
YXBwZXIqIHRleHR1cmVNYXBwZXIoKSBjb25zdCB7IHJldHVybiByb290TGF5ZXIoKS5tX3RleHR1
cmVNYXBwZXI7IH0KICAgICB2b2lkIHNldFRleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4
bWFwKSB7IG1fdGV4dHVyZU1hcHBlciA9IHRleG1hcDsgfQogCisjaWYgIVVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKICAgICB2b2lkIHNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xh
eWVyKj4mKTsKKyNlbmRpZgogICAgIHZvaWQgc2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPFRleHR1
cmVNYXBwZXJMYXllcio+Jik7CiAgICAgdm9pZCBzZXRNYXNrTGF5ZXIoVGV4dHVyZU1hcHBlckxh
eWVyKik7CiAgICAgdm9pZCBzZXRSZXBsaWNhTGF5ZXIoVGV4dHVyZU1hcHBlckxheWVyKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iMmQ2ODhiNTU0NmEyYjk3NTJlMWJiYmU2OTE5NTVkNGIwYTA3ZGFkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihSZWZQdHI8Qml0bWFwVGV4dHVyZT4mJiB0
ZXh0dXJlKQorICAgIDogbV90ZXh0dXJlKFdURjo6bW92ZSh0ZXh0dXJlKSkKKyAgICAsIG1fdGV4
dHVyZUlEKDApCisgICAgLCBtX2V4dHJhRmxhZ3MoMCkKKyAgICAsIG1faGFzTWFuYWdlZFRleHR1
cmUodHJ1ZSkKK3sKK30KKworVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OlRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKEdMdWludCB0ZXh0dXJlSUQsIGNvbnN0IEludFNp
emUmIHNpemUsIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MpCisgICAgOiBtX3RleHR1cmVJ
RCh0ZXh0dXJlSUQpCisgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAsIG1fZXh0cmFGbGFncyhmbGFn
cykKKyAgICAsIG1faGFzTWFuYWdlZFRleHR1cmUoZmFsc2UpCit7Cit9CisKK2Jvb2wgVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OmNhblJldXNlV2l0aG91dFJlc2V0KGNvbnN0IElu
dFNpemUmIHNpemUsIEdDM0RpbnQgaW50ZXJuYWxGb3JtYXQpCit7CisgICAgcmV0dXJuIG1fdGV4
dHVyZSAmJiAobV90ZXh0dXJlLT5zaXplKCkgPT0gc2l6ZSkgJiYgKHN0YXRpY19jYXN0PEJpdG1h
cFRleHR1cmVHTCo+KG1fdGV4dHVyZS5nZXQoKSktPmludGVybmFsRm9ybWF0KCkgPT0gaW50ZXJu
YWxGb3JtYXQgfHwgaW50ZXJuYWxGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRPTlRfQ0FS
RSk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnBhaW50VG9U
ZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJp
eCwgZmxvYXQgb3BhY2l0eSkKK3sKKyAgICBpZiAobV9oYXNNYW5hZ2VkVGV4dHVyZSkgeworICAg
ICAgICBBU1NFUlQobV90ZXh0dXJlKTsKKyAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1
cmUoKm1fdGV4dHVyZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChtX3RleHR1cmVJRCk7CisgICAgVGV4
dHVyZU1hcHBlckdMKiB0ZXhtYXBHTCA9IHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCo+KHRl
eHR1cmVNYXBwZXIpOworICAgIHRleG1hcEdMLT5kcmF3VGV4dHVyZShtX3RleHR1cmVJRCwgbV9l
eHRyYUZsYWdzLCBtX3NpemUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjU3ZDI4MzkyZDA5M2YxOTYzZDg3
N2Q3ZjQ2MjYwMzI2N2VjMWU1OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5o
CkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcl9oCisj
ZGVmaW5lIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyX2gKKworI2luY2x1ZGUgIkJp
dG1hcFRleHR1cmVHTC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgorI2luY2x1ZGUg
IlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1l
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXIgOiBwdWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKTsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCgpOworcHVibGljOgorICAgIFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyKFJlZlB0cjxCaXRtYXBUZXh0dXJlPiYmKTsKKyAgICBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihHTHVpbnQgdGV4dHVyZUlELCBjb25zdCBJbnRTaXpl
JiwgVGV4dHVyZU1hcHBlckdMOjpGbGFncyk7CisKKyAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcigpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0
cml4KCksIGZsb2F0IG9wYWNpdHkgPSAxLjApIGZpbmFsOworCisgICAgYm9vbCBjYW5SZXVzZVdp
dGhvdXRSZXNldChjb25zdCBJbnRTaXplJiwgR0MzRGludCBpbnRlcm5hbEZvcm1hdCk7CisgICAg
Qml0bWFwVGV4dHVyZUdMJiB0ZXh0dXJlR0woKSB7IHJldHVybiBzdGF0aWNfY2FzdDxCaXRtYXBU
ZXh0dXJlR0wmPigqbV90ZXh0dXJlKTsgfQorCisgICAgaW5saW5lIHZvaWQgbWFya1VzZWQoKSB7
IG1fdGltZUxhc3RVc2VkID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7IH0KKyAgICBk
b3VibGUgbGFzdFVzZWRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV90aW1lTGFzdFVzZWQ7IH0KKwor
ICAgIGNsYXNzIFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIgeworICAgICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShVbm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVyKTsKKyAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQoKTsKKyAgICBwdWJsaWM6CisgICAgICAgIFVubWFuYWdlZEJ1ZmZlckRh
dGFIb2xkZXIoKSA9IGRlZmF1bHQ7CisgICAgICAgIHZpcnR1YWwgflVubWFuYWdlZEJ1ZmZlckRh
dGFIb2xkZXIoKSA9IGRlZmF1bHQ7CisgICAgfTsKKworICAgIGJvb2wgaGFzTWFuYWdlZFRleHR1
cmUoKSBjb25zdCB7IHJldHVybiBtX2hhc01hbmFnZWRUZXh0dXJlOyB9CisgICAgdm9pZCBzZXRV
bm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVyKHN0ZDo6dW5pcXVlX3B0cjxVbm1hbmFnZWRCdWZmZXJE
YXRhSG9sZGVyPiBob2xkZXIpIHsgbV91bm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVyID0gV1RGOjpt
b3ZlKGhvbGRlcik7IH0KKworcHJpdmF0ZToKKworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBt
X3RleHR1cmU7CisgICAgZG91YmxlIG1fdGltZUxhc3RVc2VkIHsgMCB9OworCisgICAgR0x1aW50
IG1fdGV4dHVyZUlEOworICAgIEludFNpemUgbV9zaXplOworICAgIFRleHR1cmVNYXBwZXJHTDo6
RmxhZ3MgbV9leHRyYUZsYWdzOworICAgIGJvb2wgbV9oYXNNYW5hZ2VkVGV4dHVyZTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcj4gbV91bm1hbmFnZWRCdWZm
ZXJEYXRhSG9sZGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1ZjA4Y2JlM2ZjMWUw
OWI1OTUwODRhNzc3NGJkNTZkMjQyODA5MzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eS5jcHAKQEAgLTAsMCArMSwxNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdh
bGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaCIKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDU19USFJFQURFRCkKKworI2luY2x1ZGUgIkJpdG1hcFRleHR1cmVHTC5oIgorI2luY2x1ZGUg
IlRleHR1cmVNYXBwZXJHTC5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgorI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCisKK2NvbnN0IGRvdWJs
ZSBzX3JlbGVhc2VVbnVzZWRTZWNvbmRzVG9sZXJhbmNlID0gMTsKK2NvbnN0IGRvdWJsZSBzX3Jl
bGVhc2VVbnVzZWRCdWZmZXJzVGltZXJJbnRlcnZhbCA9IDAuNTsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5KCkKKyAgICA6IG1fY29tcG9zaXRvcihudWxscHRyKQorICAgICwgbV90
YXJnZXRMYXllcihudWxscHRyKQorICAgICwgbV9yZWxlYXNlVW51c2VkQnVmZmVyc1RpbWVyKFJ1
bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6
OnJlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXJGaXJlZCkKK3sKK30KKworVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eTo6flRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkoKQorewor
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgaWYgKG1fdGFyZ2V0TGF5ZXIpCisg
ICAgICAgIG1fdGFyZ2V0TGF5ZXItPnNldENvbnRlbnRzTGF5ZXIobnVsbHB0cik7Cit9CisKK3Zv
aWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6YWN0aXZhdGVPbkNvbXBvc2l0aW5n
VGhyZWFkKENvbXBvc2l0b3IqIGNvbXBvc2l0b3IsIFRleHR1cmVNYXBwZXJMYXllciogdGFyZ2V0
TGF5ZXIpCit7CisjaWZuZGVmIE5ERUJVRworICAgIG1fY29tcG9zaXRvclRocmVhZElEID0gbV9j
b21wb3NpdG9yVGhyZWFkSUQgPyBtX2NvbXBvc2l0b3JUaHJlYWRJRCA6IFdURjo6Y3VycmVudFRo
cmVhZCgpOworI2VuZGlmCisgICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZElEID09IFdURjo6
Y3VycmVudFRocmVhZCgpKTsKKyAgICBBU1NFUlQoY29tcG9zaXRvcik7CisgICAgQVNTRVJUKHRh
cmdldExheWVyKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIG1fY29tcG9z
aXRvciA9IGNvbXBvc2l0b3I7CisgICAgbV90YXJnZXRMYXllciA9IHRhcmdldExheWVyOworfQor
Cit2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmludmFsaWRhdGUoKQorewor
ICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJlYWRJRCA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7
CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb2NrKTsKKyAgICBtX2NvbXBvc2l0b3IgPSBudWxs
cHRyOworICAgIG1fdGFyZ2V0TGF5ZXIgPSBudWxscHRyOworfQorCitib29sIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk6OmlzQWN0aXZlKCkKK3sKKyAgICBBU1NFUlQobV9sb2NrLmlz
SGVsZCgpKTsKKyAgICByZXR1cm4gISFtX3RhcmdldExheWVyICYmICEhbV9jb21wb3NpdG9yOwor
fQorCit2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnB1c2hOZXh0QnVmZmVy
KHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbmV3QnVm
ZmVyKQoreworICAgIEFTU0VSVChtX2xvY2suaXNIZWxkKCkpOworICAgIG1fcGVuZGluZ0J1ZmZl
ciA9IFdURjo6bW92ZShuZXdCdWZmZXIpOworCisgICAgaWYgKG1fY29tcG9zaXRvcikKKyAgICAg
ICAgbV9jb21wb3NpdG9yLT5vbk5ld0J1ZmZlckF2YWlsYWJsZSgpOworfQorCitzdGQ6OnVuaXF1
ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHk6OmdldEF2YWlsYWJsZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBH
QzNEaW50IGludGVybmFsRm9ybWF0KQoreworICAgIEFTU0VSVChtX2xvY2suaXNIZWxkKCkpOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gYXZh
aWxhYmxlQnVmZmVyOworCisgICAgYXV0byBidWZmZXJzID0gV1RGOjptb3ZlKG1fdXNlZEJ1ZmZl
cnMpOworICAgIGZvciAoYXV0byYgYnVmZmVyIDogYnVmZmVycykgeworICAgICAgICBpZiAoIWJ1
ZmZlcikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICghYXZhaWxhYmxlQnVm
ZmVyICYmIGJ1ZmZlci0+Y2FuUmV1c2VXaXRob3V0UmVzZXQoc2l6ZSwgaW50ZXJuYWxGb3JtYXQp
KSB7CisgICAgICAgICAgICBhdmFpbGFibGVCdWZmZXIgPSBXVEY6Om1vdmUoYnVmZmVyKTsKKyAg
ICAgICAgICAgIGF2YWlsYWJsZUJ1ZmZlci0+bWFya1VzZWQoKTsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisgICAgICAgIG1fdXNlZEJ1ZmZlcnMuYXBwZW5kKFdURjo6bW92ZShi
dWZmZXIpKTsKKyAgICB9CisKKyAgICBpZiAoIW1fdXNlZEJ1ZmZlcnMuaXNFbXB0eSgpKQorICAg
ICAgICBzY2hlZHVsZVJlbGVhc2VVbnVzZWRCdWZmZXJzKCk7CisgICAgcmV0dXJuIGF2YWlsYWJs
ZUJ1ZmZlcjsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpzY2hl
ZHVsZVJlbGVhc2VVbnVzZWRCdWZmZXJzKCkKK3sKKyAgICBpZiAoIW1fcmVsZWFzZVVudXNlZEJ1
ZmZlcnNUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3JlbGVhc2VVbnVzZWRCdWZmZXJzVGlt
ZXIuc3RhcnRPbmVTaG90KHNfcmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckludGVydmFsKTsKK30K
Kwordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpyZWxlYXNlVW51c2VkQnVm
ZmVyc1RpbWVyRmlyZWQoKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAg
aWYgKG1fdXNlZEJ1ZmZlcnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IGJ1ZmZlcnMgPSBXVEY6Om1vdmUobV91c2VkQnVmZmVycyk7CisgICAgZG91YmxlIG1pblVzZWRU
aW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBzX3JlbGVhc2VVbnVzZWRTZWNv
bmRzVG9sZXJhbmNlOworCisgICAgZm9yIChhdXRvJiBidWZmZXIgOiBidWZmZXJzKSB7CisgICAg
ICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5sYXN0VXNlZFRpbWUoKSA+PSBtaW5Vc2VkVGltZSkK
KyAgICAgICAgICAgIG1fdXNlZEJ1ZmZlcnMuYXBwZW5kKFdURjo6bW92ZShidWZmZXIpKTsKKyAg
ICB9Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6c3dhcEJ1ZmZl
cigpCit7CisgICAgQVNTRVJUKG1fY29tcG9zaXRvclRocmVhZElEID09IFdURjo6Y3VycmVudFRo
cmVhZCgpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXI+IHByZXZCdWZmZXI7CisKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
bG9jayk7CisgICAgICAgIGlmICghbV90YXJnZXRMYXllciB8fCAhbV9wZW5kaW5nQnVmZmVyKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHByZXZCdWZmZXIgPSBXVEY6Om1vdmUobV9j
dXJyZW50QnVmZmVyKTsKKworICAgICAgICBtX2N1cnJlbnRCdWZmZXIgPSBXVEY6Om1vdmUobV9w
ZW5kaW5nQnVmZmVyKTsKKyAgICAgICAgbV90YXJnZXRMYXllci0+c2V0Q29udGVudHNMYXllciht
X2N1cnJlbnRCdWZmZXIuZ2V0KCkpOworICAgIH0KKworICAgIGlmIChwcmV2QnVmZmVyICYmIHBy
ZXZCdWZmZXItPmhhc01hbmFnZWRUZXh0dXJlKCkpCisgICAgICAgIG1fdXNlZEJ1ZmZlcnMuYXBw
ZW5kKFdURjo6bW92ZShwcmV2QnVmZmVyKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjZmYx
Y2M0ZmFkMmQ0YzNlMjQyODliNDFmZGMzNWQwNGQ4MDkxZWIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eS5oCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94eV9oCisjZGVmaW5lIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlfaAor
CisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5o
IgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisjaW5jbHVkZSA8d3RmL0NvbmRp
dGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
KyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKKyNpZm5kZWYgTkRFQlVHCisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2Vu
ZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dHVyZU1hcHBlckxheWVyOwor
Y2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTsKK2NsYXNzIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyOworCitjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
clByb3h5UHJvdmlkZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgUmVmUHRyPFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk+IHByb3h5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzd2FwQnVmZmVyc0lmTmVlZGVkKCkgPSAwOworfTsKKworY2xhc3MgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoKTsK
K3B1YmxpYzoKKyAgICBjbGFzcyBDb21wb3NpdG9yIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZp
cnR1YWwgdm9pZCBvbk5ld0J1ZmZlckF2YWlsYWJsZSgpID0gMDsKKyAgICB9OworCisgICAgVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSgpOworICAgIHZpcnR1YWwgflRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHkoKTsKKworICAgIC8vIFRvIGF2b2lkIG11bHRpcGxlIGxvY2sv
cmVsZWFzZSBzaXR1YXRpb24gdG8gdXBkYXRlIGEgc2luZ2xlIGZyYW1lLAorICAgIC8vIHRoZSBp
bXBsZW1lbnRhdGlvbiBvZiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5UHJvdmlkZXIg
c2hvdWxkCisgICAgLy8gYXF1aXJlIC8gcmVsZWFzZSB0aGUgbG9jayBleHBsaWNpdGx5IHRvIHVz
ZSBiZWxvdyBtZXRob2RzLgorICAgIExvY2smIGxvY2soKSB7IHJldHVybiBtX2xvY2s7IH0KKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGdldEF2
YWlsYWJsZUJ1ZmZlcihjb25zdCBJbnRTaXplJiwgR0MzRGludCBpbnRlcm5hbEZvcm1hdCk7Cisg
ICAgdm9pZCBwdXNoTmV4dEJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI+KTsKKyAgICBib29sIGlzQWN0aXZlKCk7CisKKyAgICB2b2lkIGFjdGl2
YXRlT25Db21wb3NpdGluZ1RocmVhZChDb21wb3NpdG9yKiwgVGV4dHVyZU1hcHBlckxheWVyKik7
CisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisKKyAgICB2b2lkIHN3YXBCdWZmZXIoKTsKKworcHJp
dmF0ZToKKyAgICB2b2lkIHNjaGVkdWxlUmVsZWFzZVVudXNlZEJ1ZmZlcnMoKTsKKyAgICB2b2lk
IHJlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXJGaXJlZCgpOworCisgICAgQ29tcG9zaXRvciogbV9j
b21wb3NpdG9yOworICAgIFRleHR1cmVNYXBwZXJMYXllciogbV90YXJnZXRMYXllcjsKKworICAg
IHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbV9jdXJy
ZW50QnVmZmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcj4gbV9wZW5kaW5nQnVmZmVyOworCisgICAgTG9jayBtX2xvY2s7CisKKyAgICBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPj4gbV91
c2VkQnVmZmVyczsKKworICAgIFJ1bkxvb3A6OlRpbWVyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHk+IG1fcmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lcjsKKyNpZm5kZWYgTkRFQlVHCisg
ICAgVGhyZWFkSWRlbnRpZmllciBtX2NvbXBvc2l0b3JUaHJlYWRJRCB7IDAgfTsKKyNlbmRpZgor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IGZkZjZiZTdjZmUyMjQ0YTgyODJiZDg2NGFk
YWM2MTNlNmVhZDNmM2QuLjg1ZDJmNmZhZDRmZGI0YzBhZTAxYWM3NzYwNDI0OTM1ZjZlZDgxY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuY3BwCkBAIC0zMCw5ICszMCw5IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2lu
Y2x1ZGUgIkdyYXBoaWNzTGF5ZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlNjcm9sbGFibGVBcmVhLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXIuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2lmbmRlZiBOREVCVUcKQEAgLTQyLDYgKzQyLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzTGF5ZXI+IEdyYXBoaWNzTGF5ZXI6OmNy
ZWF0ZShHcmFwaGljc0xheWVyRmFjdG9yeSogZmFjdG9yeSwgR3JhcGhpY3NMYXllckNsaWVudCYg
Y2xpZW50LCBUeXBlIGxheWVyVHlwZSkKK3sKKyAgICBpZiAoIWZhY3RvcnkpCisgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcj4obGF5ZXJUeXBl
LCBjbGllbnQpOworCisgICAgcmV0dXJuIGZhY3RvcnktPmNyZWF0ZUdyYXBoaWNzTGF5ZXIobGF5
ZXJUeXBlLCBjbGllbnQpOworfQorCiBzdGF0aWMgQ29vcmRpbmF0ZWRMYXllcklEIHRvQ29vcmRp
bmF0ZWRMYXllcklEKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogewogICAgIHJldHVybiBsYXllciA/
IHRvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKGxheWVyKS0+aWQoKSA6IDA7CkBAIC0xMjEsNiAr
MTI5LDkgQEAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIoVHlwZSBsYXllclR5cGUsIEdyYXBoaWNzTGF5ZXIKICAgICAsIG1faXNWYWxpZFBsYXRmb3Jt
TGF5ZXIoZmFsc2UpCiAgICAgLCBtX3BlbmRpbmdQbGF0Zm9ybUxheWVyT3BlcmF0aW9uKE5vbmUp
CiAjZW5kaWYKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgLCBt
X3Nob3VsZFN5bmNQbGF0Zm9ybUxheWVyKGZhbHNlKQorI2VuZGlmCiAgICAgLCBtX2Nvb3JkaW5h
dG9yKDApCiAgICAgLCBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cigwKQogICAgICwgbV9wbGF0
Zm9ybUxheWVyKDApCkBAIC00MDYsNiArNDE3LDEyIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
CiAgICAgQVNTRVJUKCEoIW1fcGxhdGZvcm1MYXllclRva2VuLmlzVmFsaWQoKSAmJiBtX3BsYXRm
b3JtTGF5ZXIpKTsKIAogICAgIG5vdGlmeUZsdXNoUmVxdWlyZWQoKTsKKyNlbGlmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICBpZiAobV9wbGF0Zm9ybUxheWVyICE9IHBs
YXRmb3JtTGF5ZXIpCisgICAgICAgIG1fc2hvdWxkU3luY1BsYXRmb3JtTGF5ZXIgPSB0cnVlOwor
CisgICAgbV9wbGF0Zm9ybUxheWVyID0gcGxhdGZvcm1MYXllcjsKKyAgICBub3RpZnlGbHVzaFJl
cXVpcmVkKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwbGF0Zm9ybUxheWVyKTsKICNlbmRp
ZgpAQCAtNjk0LDkgKzcxMSw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5j
QW5pbWF0aW9ucygpCiAgICAgbV9sYXllclN0YXRlLmFuaW1hdGlvbnNDaGFuZ2VkID0gdHJ1ZTsK
IH0KIAotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OnN5bmNQbGF0Zm9ybUxheWVyKCkKIHsKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
ICAgICBkZXN0cm95UGxhdGZvcm1MYXllcklmTmVlZGVkKCk7CiAgICAgY3JlYXRlUGxhdGZvcm1M
YXllcklmTmVlZGVkKCk7CiAKQEAgLTcxMSw4ICs3MjgsMjAgQEAgdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OnN5bmNQbGF0Zm9ybUxheWVyKCkKICAgICBBU1NFUlQobV9wbGF0Zm9ybUxh
eWVyKTsKICAgICBtX2xheWVyU3RhdGUucGxhdGZvcm1MYXllckZyb250QnVmZmVyID0gbV9wbGF0
Zm9ybUxheWVyLT5jb3B5VG9HcmFwaGljc1N1cmZhY2UoKTsKICAgICBtX2xheWVyU3RhdGUucGxh
dGZvcm1MYXllclNob3VsZFN3YXBCdWZmZXJzID0gdHJ1ZTsKKyNlbGlmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDU19USFJFQURFRCkKKyAgICBpZiAoIW1fc2hvdWxkU3luY1BsYXRmb3JtTGF5ZXIp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fc2hvdWxkU3luY1BsYXRmb3JtTGF5ZXIgPSBmYWxz
ZTsKKyAgICBtX2xheWVyU3RhdGUucGxhdGZvcm1MYXllckNoYW5nZWQgPSB0cnVlOworICAgIGlm
IChtX3BsYXRmb3JtTGF5ZXIpIHsKKyAgICAgICAgbV9wbGF0Zm9ybUxheWVyLT5zd2FwQnVmZmVy
c0lmTmVlZGVkKCk7CisgICAgICAgIG1fbGF5ZXJTdGF0ZS5wbGF0Zm9ybUxheWVyUHJveHkgPSBt
X3BsYXRmb3JtTGF5ZXItPnByb3h5KCk7CisgICAgfQorI2VuZGlmCiB9CiAKKyNpZiBVU0UoR1JB
UEhJQ1NfU1VSRkFDRSkKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpkZXN0cm95UGxh
dGZvcm1MYXllcklmTmVlZGVkKCkKIHsKICAgICBpZiAoIShtX3BlbmRpbmdQbGF0Zm9ybUxheWVy
T3BlcmF0aW9uICYgRGVzdHJveVBsYXRmb3JtTGF5ZXIpKQpAQCAtNzYzLDkgKzc5Miw3IEBAIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlz
TGF5ZXJPbmx5KGJvb2wpCiAgICAgY29tcHV0ZVRyYW5zZm9ybWVkVmlzaWJsZVJlY3QoKTsKICAg
ICBzeW5jQ2hpbGRyZW4oKTsKICAgICBzeW5jRmlsdGVycygpOwotI2lmIFVTRShHUkFQSElDU19T
VVJGQUNFKQogICAgIHN5bmNQbGF0Zm9ybUxheWVyKCk7Ci0jZW5kaWYKIAogICAgIC8vIE9ubHkg
dW5zZXQgbV9tb3ZpbmdWaXNpYmxlUmVjdCBhZnRlciB3ZSBoYXZlIHVwZGF0ZWQgdGhlIHZpc2li
bGUgcmVjdCBhZnRlciB0aGUgYW5pbWF0aW9uIHN0b3BwZWQuCiAgICAgaWYgKCFoYXNBY3RpdmVU
cmFuc2Zvcm1BbmltYXRpb24pCkBAIC0xMTg5LDUgKzEyMTYsMTcgQEAgdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKCkKIHsKICAgICBjbGll
bnQoKS5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMsICIiLCBtX2xhc3RBbmltYXRpb25TdGFy
dFRpbWUpOwogfQorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQordm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnBsYXRmb3JtTGF5ZXJXaWxsQmVEZXN0cm95ZWQo
KQoreworfQorCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0UGxhdGZvcm1MYXll
ck5lZWRzRGlzcGxheSgpCit7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IDU0NjU2NjRjOWZk
MzZjNzQ1YjA1ODFkMjQ4YzQ5NWI2OTU3ODZhMjYuLjhhNDVjMzU2NTg1NzA0MzU3MWIyZTM1OWY3
NjZlZjkxYmQ0MGNjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJJbWFnZS5o
IgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyQW5pbWF0aW9u
LmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlICJU
aWxlZEJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIlRpbGVkQmFja2luZ1N0b3JlQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKQEAgLTU3LDYgKzU4LDkgQEAgcHVi
bGljOgogCiBjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIgOiBwdWJsaWMgR3JhcGhpY3NM
YXllcgogICAgICwgcHVibGljIFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50CisjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgICwgcHVibGljIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyOjpDbGllbnQKKyNlbmRpZgogICAgICwgcHVibGljIENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nOjpIb3N0IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIoVHlwZSwgR3JhcGhpY3NMYXllckNsaWVudCYpOwpAQCAtMTU1LDEwICsxNTksMTQgQEAg
cHJpdmF0ZToKICAgICAgICAgUmVjcmVhdGVQbGF0Zm9ybUxheWVyID0gQ3JlYXRlQW5kU3luY1Bs
YXRmb3JtTGF5ZXIgfCBEZXN0cm95UGxhdGZvcm1MYXllcgogICAgIH07CiAKLSAgICB2b2lkIHN5
bmNQbGF0Zm9ybUxheWVyKCk7CiAgICAgdm9pZCBkZXN0cm95UGxhdGZvcm1MYXllcklmTmVlZGVk
KCk7CiAgICAgdm9pZCBjcmVhdGVQbGF0Zm9ybUxheWVySWZOZWVkZWQoKTsKICNlbmRpZgorICAg
IHZvaWQgc3luY1BsYXRmb3JtTGF5ZXIoKTsKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Nf
VEhSRUFERUQpCisgICAgdm9pZCBwbGF0Zm9ybUxheWVyV2lsbEJlRGVzdHJveWVkKCk7CisgICAg
dm9pZCBzZXRQbGF0Zm9ybUxheWVyTmVlZHNEaXNwbGF5KCk7CisjZW5kaWYKIAogICAgIHZpcnR1
YWwgdm9pZCBzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IHdpZHRoKSBvdmVycmlk
ZTsKIApAQCAtMjIzLDYgKzIzMSw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzVmFsaWRQbGF0
Zm9ybUxheWVyIDogMTsKICAgICB1bnNpZ25lZCBtX3BlbmRpbmdQbGF0Zm9ybUxheWVyT3BlcmF0
aW9uIDogMzsKICNlbmRpZgorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkK
KyAgICBib29sIG1fc2hvdWxkU3luY1BsYXRmb3JtTGF5ZXIgOiAxOworI2VuZGlmCiAKICAgICBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQqIG1fY29vcmRpbmF0b3I7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFRpbGVkQmFja2luZ1N0b3JlPiBtX21haW5CYWNraW5nU3RvcmU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmgKaW5kZXgg
MTRmMmI3NzUwNDY3OGYwOTc2Mjc4MTgwMjJkZmJlZmEyNzI0MmRmNi4uODRlN2IyNzRjMWE2MjE2
OTRkNjhjMDQyODc4OGRmM2E1ODc3NzQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaApAQCAtNDQsNiArNDQsMTAgQEAKICNpbmNs
dWRlICJHcmFwaGljc1N1cmZhY2VUb2tlbi5oIgogI2VuZGlmCiAKKyNpZiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1NfVEhSRUFERUQpCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29vcmRp
bmF0ZWRTdXJmYWNlOwpAQCAtMTMwLDYgKzEzNCw5IEBAIHN0cnVjdCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXJTdGF0ZSB7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgICAgICwgcGxh
dGZvcm1MYXllckZyb250QnVmZmVyKDApCiAjZW5kaWYKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1NfVEhSRUFERUQpCisgICAgICAgICwgcGxhdGZvcm1MYXllclByb3h5KDApCisjZW5kaWYK
ICAgICB7CiAgICAgfQogCkBAIC0xNjQsNiArMTcxLDEwIEBAIHN0cnVjdCBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXJTdGF0ZSB7CiAgICAgR3JhcGhpY3NTdXJmYWNlOjpGbGFncyBwbGF0Zm9ybUxh
eWVyU3VyZmFjZUZsYWdzOwogI2VuZGlmCiAKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Nf
VEhSRUFERUQpCisgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IHBs
YXRmb3JtTGF5ZXJQcm94eTsKKyNlbmRpZgorCiAgICAgSW50U2l6ZSBjb21taXR0ZWRTY3JvbGxP
ZmZzZXQ7CiAKICAgICBib29sIGhhc1BlbmRpbmdDaGFuZ2VzKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IGRlYWIwNDczZmVhZjZiZjRhOTc4
YjI0OWU3NTZmNjU3MjcyY2U4MGUuLmIwZWYxOTUzM2I4MjZjMDUyN2U0ZTY5NWQyZTg5NjE3ZWUy
NWNkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAt
ODMsNiArODMsMTEgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJy
ZW50R0xDb250ZXh0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cmkKICAgICBpZiAoIWN1cnJlbnRS
b290TGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
U19USFJFQURFRCkKKyAgICBmb3IgKGF1dG8mIHByb3h5IDogbV9wbGF0Zm9ybUxheWVyUHJveGll
cy52YWx1ZXMoKSkKKyAgICAgICAgcHJveHktPnN3YXBCdWZmZXIoKTsKKyNlbmRpZgorCiAgICAg
Y3VycmVudFJvb3RMYXllci0+c2V0VGV4dHVyZU1hcHBlcihtX3RleHR1cmVNYXBwZXIuZ2V0KCkp
OwogICAgIGN1cnJlbnRSb290TGF5ZXItPmFwcGx5QW5pbWF0aW9uc1JlY3Vyc2l2ZWx5KCk7CiAg
ICAgbV90ZXh0dXJlTWFwcGVyLT5iZWdpblBhaW50aW5nKFBhaW50RmxhZ3MpOwpAQCAtMTY0LDIw
ICsxNjksOSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6YWRqdXN0UG9zaXRpb25G
b3JGaXhlZExheWVycyhjb25zdCBGbG9hdFBvaW50JiBjbwogICAgICAgICBmaXhlZExheWVyLT5z
ZXRTY3JvbGxQb3NpdGlvbkRlbHRhSWZOZWVkZWQoZGVsdGEpOwogfQogCi0jaWYgVVNFKEdSQVBI
SUNTX1NVUkZBQ0UpCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRlUGxhdGZv
cm1MYXllcklmTmVlZGVkKFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIsIGNvbnN0IENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllclN0YXRlJiBzdGF0ZSkKLXsKLSAgICBpZiAoIXN0YXRlLnBsYXRmb3Jt
TGF5ZXJUb2tlbi5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJlZlB0cjxUZXh0
dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZT4gcGxhdGZvcm1MYXllckJhY2tpbmdTdG9yZShU
ZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkpOwotICAgIG1fc3VyZmFj
ZUJhY2tpbmdTdG9yZXMuc2V0KGxheWVyLCBwbGF0Zm9ybUxheWVyQmFja2luZ1N0b3JlKTsKLSAg
ICBwbGF0Zm9ybUxheWVyQmFja2luZ1N0b3JlLT5zZXRHcmFwaGljc1N1cmZhY2UoR3JhcGhpY3NT
dXJmYWNlOjpjcmVhdGUoc3RhdGUucGxhdGZvcm1MYXllclNpemUsIHN0YXRlLnBsYXRmb3JtTGF5
ZXJTdXJmYWNlRmxhZ3MsIHN0YXRlLnBsYXRmb3JtTGF5ZXJUb2tlbikpOwotICAgIGxheWVyLT5z
ZXRDb250ZW50c0xheWVyKHBsYXRmb3JtTGF5ZXJCYWNraW5nU3RvcmUuZ2V0KCkpOwotfQotCiB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY1BsYXRmb3JtTGF5ZXJJZk5lZWRlZChU
ZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyLCBjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJT
dGF0ZSYgc3RhdGUpCiB7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgQVNTRVJUKG1f
dGV4dHVyZU1hcHBlcik7CiAKICAgICBpZiAoc3RhdGUucGxhdGZvcm1MYXllckNoYW5nZWQpIHsK
QEAgLTE5MSw2ICsxODUsNDEgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnN5bmNQ
bGF0Zm9ybUxheWVySWZOZWVkZWQoVGV4dHVyZU1hcHBlckxheWVyKiBsYXkKICAgICAgICAgUmVm
UHRyPFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlPiBwbGF0Zm9ybUxheWVyQmFja2lu
Z1N0b3JlID0gaXQtPnZhbHVlOwogICAgICAgICBwbGF0Zm9ybUxheWVyQmFja2luZ1N0b3JlLT5z
d2FwQnVmZmVyc0lmTmVlZGVkKHN0YXRlLnBsYXRmb3JtTGF5ZXJGcm9udEJ1ZmZlcik7CiAgICAg
fQorI2VsaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIGlmICghc3Rh
dGUucGxhdGZvcm1MYXllckNoYW5nZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChzdGF0
ZS5wbGF0Zm9ybUxheWVyUHJveHkpIHsKKyAgICAgICAgbV9wbGF0Zm9ybUxheWVyUHJveGllcy5z
ZXQobGF5ZXIsIHN0YXRlLnBsYXRmb3JtTGF5ZXJQcm94eSk7CisgICAgICAgIHN0YXRlLnBsYXRm
b3JtTGF5ZXJQcm94eS0+YWN0aXZhdGVPbkNvbXBvc2l0aW5nVGhyZWFkKHRoaXMsIGxheWVyKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgbV9wbGF0Zm9ybUxheWVyUHJveGllcy5yZW1vdmUobGF5ZXIp
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obGF5ZXIpOworICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CisjZW5kaWYKK30KKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkK
K3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpvbk5ld0J1ZmZlckF2YWlsYWJsZSgpCit7
CisgICAgUmVmUHRyPENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZT4gcHJvdGVjdG9yKHRoaXMpOwor
ICAgIGRpc3BhdGNoT25DbGllbnRSdW5Mb29wKFs9XSB7CisgICAgICAgIHByb3RlY3Rvci0+dXBk
YXRlVmlld3BvcnQoKTsKKyAgICB9KTsKK30KKyNlbmRpZgorCisjaWYgVVNFKEdSQVBISUNTX1NV
UkZBQ0UpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRlUGxhdGZvcm1MYXll
cklmTmVlZGVkKFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIsIGNvbnN0IENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllclN0YXRlJiBzdGF0ZSkKK3sKKyAgICBpZiAoIXN0YXRlLnBsYXRmb3JtTGF5ZXJU
b2tlbi5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxUZXh0dXJlTWFw
cGVyU3VyZmFjZUJhY2tpbmdTdG9yZT4gcGxhdGZvcm1MYXllckJhY2tpbmdTdG9yZShUZXh0dXJl
TWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkpOworICAgIG1fc3VyZmFjZUJhY2tp
bmdTdG9yZXMuc2V0KGxheWVyLCBwbGF0Zm9ybUxheWVyQmFja2luZ1N0b3JlKTsKKyAgICBwbGF0
Zm9ybUxheWVyQmFja2luZ1N0b3JlLT5zZXRHcmFwaGljc1N1cmZhY2UoR3JhcGhpY3NTdXJmYWNl
OjpjcmVhdGUoc3RhdGUucGxhdGZvcm1MYXllclNpemUsIHN0YXRlLnBsYXRmb3JtTGF5ZXJTdXJm
YWNlRmxhZ3MsIHN0YXRlLnBsYXRmb3JtTGF5ZXJUb2tlbikpOworICAgIGxheWVyLT5zZXRDb250
ZW50c0xheWVyKHBsYXRmb3JtTGF5ZXJCYWNraW5nU3RvcmUuZ2V0KCkpOwogfQogCiB2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZGVzdHJveVBsYXRmb3JtTGF5ZXJJZk5lZWRlZChUZXh0
dXJlTWFwcGVyTGF5ZXIqIGxheWVyLCBjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0
ZSYgc3RhdGUpCkBAIC0zMTMsOSArMzQyLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmU6OnNldExheWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBDb29yZGkKICAg
ICB1cGRhdGVUaWxlc0lmTmVlZGVkKGxheWVyLCBsYXllclN0YXRlKTsKICAgICBzZXRMYXllckZp
bHRlcnNJZk5lZWRlZChsYXllciwgbGF5ZXJTdGF0ZSk7CiAgICAgc2V0TGF5ZXJBbmltYXRpb25z
SWZOZWVkZWQobGF5ZXIsIGxheWVyU3RhdGUpOwotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQog
ICAgIHN5bmNQbGF0Zm9ybUxheWVySWZOZWVkZWQobGF5ZXIsIGxheWVyU3RhdGUpOwotI2VuZGlm
CiAgICAgc2V0TGF5ZXJSZXBhaW50Q291bnRJZk5lZWRlZChsYXllciwgbGF5ZXJTdGF0ZSk7CiB9
CiAKQEAgLTM1NCw2ICszODEsMTAgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRl
bGV0ZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCBsYXllcklEKQogI2lmIFVTRShHUkFQSElDU19T
VVJGQUNFKQogICAgIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXMucmVtb3ZlKGxheWVyLmdldCgpKTsK
ICNlbmRpZgorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICBpZiAo
YXV0byBwbGF0Zm9ybUxheWVyUHJveHkgPSBtX3BsYXRmb3JtTGF5ZXJQcm94aWVzLnRha2UobGF5
ZXIuZ2V0KCkpKQorICAgICAgICBwbGF0Zm9ybUxheWVyUHJveHktPmludmFsaWRhdGUoKTsKKyNl
bmRpZgogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0Um9vdExheWVySUQo
Q29vcmRpbmF0ZWRMYXllcklEIGxheWVySUQpCkBAIC02MzIsNiArNjYzLDkgQEAgdm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU6OnB1cmdlR0xSZXNvdXJjZXMoKQogI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKQogICAgIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXMuY2xlYXIoKTsKICNlbmRpZgor
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICBtX3BsYXRmb3JtTGF5
ZXJQcm94aWVzLmNsZWFyKCk7CisjZW5kaWYKICAgICBtX3N1cmZhY2VzLmNsZWFyKCk7CiAKICAg
ICBtX3Jvb3RMYXllciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZS5oCmluZGV4IDY5MDY1YzlhNTZmOGYyMjc1NmNkN2E1YmQ1MWQyMGU5NzI1NDkzNGIuLjY4
YWFiZmU0MGM0ZGY4MTk3ZDE2ZmJkNjJiOGFmZmE1ZTljMjc5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaD4KICNlbmRpZgogCisjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorI2luY2x1ZGUgPFdlYkNvcmUvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTsKQEAgLTU4LDcgKzYyLDExIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxh
eWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCkgPSAwOwogfTsKIAotY2xhc3Mg
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZT4sIHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5
ZXI6OlNjcm9sbGluZ0NsaWVudCB7CitjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lPiwgcHVi
bGljIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6U2Nyb2xsaW5nQ2xpZW50CisjaWYgVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgICwgcHVibGljIFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OkNvbXBvc2l0b3IKKyNlbmRpZgorewogcHVi
bGljOgogICAgIGV4cGxpY2l0IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZShDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmVDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUoKTsKQEAgLTk0LDkgKzEwMiw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVUaWxlc0lm
TmVlZGVkKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllciosIGNvbnN0IFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CiAgICAgdm9pZCBzZXRMYXllckZpbHRlcnNJZk5l
ZWRlZChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqLCBjb25zdCBXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwogICAgIHZvaWQgc2V0TGF5ZXJBbmltYXRpb25zSWZO
ZWVkZWQoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgY29uc3QgV2ViQ29yZTo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKKyAgICB2b2lkIHN5bmNQbGF0Zm9ybUxheWVySWZO
ZWVkZWQoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgY29uc3QgV2ViQ29yZTo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAg
ICB2b2lkIGNyZWF0ZVBsYXRmb3JtTGF5ZXJJZk5lZWRlZChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
TGF5ZXIqLCBjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwot
ICAgIHZvaWQgc3luY1BsYXRmb3JtTGF5ZXJJZk5lZWRlZChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
TGF5ZXIqLCBjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwog
ICAgIHZvaWQgZGVzdHJveVBsYXRmb3JtTGF5ZXJJZk5lZWRlZChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyTGF5ZXIqLCBjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYp
OwogI2VuZGlmCiAgICAgdm9pZCBzZXRMYXllclJlcGFpbnRDb3VudElmTmVlZGVkKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJMYXllciosIGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllclN0YXRlJik7CkBAIC0xNDQsNiArMTUyLDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRp
c3BhdGNoQ29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIG9mZnNldCk7CiAKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFE
RUQpCisgICAgdmlydHVhbCB2b2lkIG9uTmV3QnVmZmVyQXZhaWxhYmxlKCkgb3ZlcnJpZGU7Cisj
ZW5kaWYKKwogICAgIC8vIFJlbmRlciBxdWV1ZSBjYW4gYmUgYWNjZXNzZWQgb255IGZyb20gbWFp
biB0aHJlYWQgb3IgdXBkYXRlUGFpbnROb2RlIGNhbGwgc3RhY2shCiAgICAgVmVjdG9yPHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPj4gbV9yZW5kZXJRdWV1ZTsKICAgICBMb2NrIG1fcmVuZGVyUXVldWVN
dXRleDsKQEAgLTE2NCw2ICsxNzYsMTEgQEAgcHJpdmF0ZToKICAgICBTdXJmYWNlQmFja2luZ1N0
b3JlTWFwIG1fc3VyZmFjZUJhY2tpbmdTdG9yZXM7CiAjZW5kaWYKIAorI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDU19USFJFQURFRCkKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6VGV4
dHVyZU1hcHBlckxheWVyKiwgUmVmUHRyPFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHk+PiBQbGF0Zm9ybUxheWVyUHJveHlNYXA7CisgICAgUGxhdGZvcm1MYXllclByb3h5
TWFwIG1fcGxhdGZvcm1MYXllclByb3hpZXM7CisjZW5kaWYKKwogICAgIHR5cGVkZWYgSGFzaE1h
cDx1aW50MzJfdCAvKiBhdGxhc0lEICovLCBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJm
YWNlPj4gU3VyZmFjZU1hcDsKICAgICBTdXJmYWNlTWFwIG1fc3VyZmFjZXM7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>