<?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>218184</bug_id>
          
          <creation_ts>2020-10-26 06:21:22 -0700</creation_ts>
          <short_desc>Video elements do not work as sources for TexImage2D calls in GPU Process</short_desc>
          <delta_ts>2021-02-22 13:09:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>WebKit Local Build</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=217211</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=217339</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>219641</dependson>
          <blocked>217211</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Peng Liu">peng.liu6</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>stephan.szabo</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1701426</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-10-26 06:21:22 -0700</bug_when>
    <thetext>Implement MediaPlayerPrivateRemote::copyVideoTextureToPlatformTexture

This is needed to support drawing remote video to remote webgl context.
This is needed to support drawing web process video to remote webgl context. (transitional feature if needed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701427</commentid>
    <comment_count>1</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-10-26 06:23:37 -0700</bug_when>
    <thetext>&gt; This is needed to support drawing web process video to remote webgl context. (transitional feature if needed)


Actually meant the inverse: 

This is needed to support remote video to web process webgl context. (transitional feature if needed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703487</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-02 05:22:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/70946541&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730157</commentid>
    <comment_count>3</comment_count>
      <attachid>420602</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-16 23:05:36 -0800</bug_when>
    <thetext>Created attachment 420602
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730216</commentid>
    <comment_count>4</comment_count>
      <attachid>420602</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-17 03:26:29 -0800</bug_when>
    <thetext>Comment on attachment 420602
WIP patch

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

Looks like a good start. However:
I think the method is not media player method, it is graphics context method.
Thus it might be better to organise the code around having the message in the RemoteGraphicsContextGL.messages.in .
For this to work though, the WebCore part of the interface needs some existing type that it can use as the polymorphic type to the media player..
IIUC, canvas2d is implemented as 

canvas2d-&gt;drawMediaPlayer(player)

so this should follow suit, e.g.

webgl-&gt;drawMediaPlayer(player)

&gt; Source/WebCore/platform/graphics/GraphicsContextGL.h:66
&gt; +    virtual bool isRemoteGraphicsContextGLProxy() const { return false; }

I don&apos;t think this is such a good idea, since RemoteGraphicsCotnextGLProxy is not a WebCore concept.
I think it needs to be something like the CV interface.
The tricky part is to figure out what to pass as the communication object (e.g. the texture you now pass).

&gt; Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:356
&gt; +    ASSERT(m_remoteGraphicsContextGLMap.contains(graphicsContextGLIdentifier));

This assert (probably?) cannot hold in all cases, especially if we don&apos;t want to assert if something attacks the GPU Process (during fuzzing, for example).

&gt; Source/WebKit/WebProcess/GPU/GPUProcessConnection.cpp:158
&gt; +GraphicsContextGLIdentifier GPUProcessConnection::graphicsContextGLIdentifier(RemoteGraphicsContextGLProxy&amp; remoteGraphicsContextGLProxy) const

This does not look correct. if the caller has access to the Proxy, he can ask it for the identifier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730699</commentid>
    <comment_count>5</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-17 18:32:38 -0800</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #4)
&gt; Comment on attachment 420602 [details]
&gt; WIP patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420602&amp;action=review
&gt; 
&gt; Looks like a good start. However:
&gt; I think the method is not media player method, it is graphics context method.
&gt; Thus it might be better to organise the code around having the message in
&gt; the RemoteGraphicsContextGL.messages.in .
&gt; For this to work though, the WebCore part of the interface needs some
&gt; existing type that it can use as the polymorphic type to the media player..
&gt; IIUC, canvas2d is implemented as 
&gt; 
&gt; canvas2d-&gt;drawMediaPlayer(player)
&gt; 
&gt; so this should follow suit, e.g.
&gt; 
&gt; webgl-&gt;drawMediaPlayer(player)
&gt; 

Thanks for the comments.

Well, this is just a different implementation &quot;flavor&quot;. In the current implementation (when the GPU Process is disabled), to use video texture for WebGL surfaces, a media player provides a function copyVideoTextureToPlatformTexture() to &quot;paints&quot; the video texture to a given graphics context. So I chose to follow that flavor to support using video texture for surfaces while running WebGL in the GPU process.

In r268145, Wenson introduced the approach you mentioned for 2D canvas. Essentially that approach is to let the graphics context coordinate the drawing. Sounds like a good idea to have consistent implementation for both canvas and WebGL. I will upload a new patch with that approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730795</commentid>
    <comment_count>6</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-18 02:10:54 -0800</bug_when>
    <thetext>(In reply to Peng Liu from comment #5)
&gt; Well, this is just a different implementation &quot;flavor&quot;. In the current
&gt; implementation (when the GPU Process is disabled), to use video texture for
&gt; WebGL surfaces, a media player provides a function
&gt; copyVideoTextureToPlatformTexture() to &quot;paints&quot; the video texture to a given
&gt; graphics context.

Yes and no. The call visits media player, but the eventual &quot;paint&quot;, e.g. copy from media player iosurface to the texture is done by the graphics context (in GraphicsContextGLCV::...).

In GPU process, this needs to be followed, and for simplicity sake, it should be done in the WebProcess side, as the RemoteMediaPlayer command sequence will be different to RemoteGraphicsContextGL command sequence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731077</commentid>
    <comment_count>7</comment_count>
      <attachid>420883</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-18 16:14:33 -0800</bug_when>
    <thetext>Created attachment 420883
The implementation based on a new IPC message in RemoteGraphicsContextGL

The patch is not finished yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731194</commentid>
    <comment_count>8</comment_count>
      <attachid>420912</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-18 20:42:45 -0800</bug_when>
    <thetext>Created attachment 420912
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731197</commentid>
    <comment_count>9</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-18 20:49:05 -0800</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #6)
&gt; (In reply to Peng Liu from comment #5)
&gt; &gt; Well, this is just a different implementation &quot;flavor&quot;. In the current
&gt; &gt; implementation (when the GPU Process is disabled), to use video texture for
&gt; &gt; WebGL surfaces, a media player provides a function
&gt; &gt; copyVideoTextureToPlatformTexture() to &quot;paints&quot; the video texture to a given
&gt; &gt; graphics context.
&gt; 
&gt; Yes and no. The call visits media player, but the eventual &quot;paint&quot;, e.g.
&gt; copy from media player iosurface to the texture is done by the graphics
&gt; context (in GraphicsContextGLCV::...).
&gt; 
&gt; In GPU process, this needs to be followed, and for simplicity sake, it
&gt; should be done in the WebProcess side, as the RemoteMediaPlayer command
&gt; sequence will be different to RemoteGraphicsContextGL command sequence.

Yes, the &quot;painting&quot; is done by the GraphicsContext. The patch implements MediaPlayerPrivateRemote::copyVideoTextureToPlatformTexture() in the web process with a new IPC message, but the actually painting is done in RemoteMediaPlayerProxy::copyVideoTextureToPlatformTexture() in the GPU process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731208</commentid>
    <comment_count>10</comment_count>
      <attachid>420918</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-18 21:21:55 -0800</bug_when>
    <thetext>Created attachment 420918
Version A</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731229</commentid>
    <comment_count>11</comment_count>
      <attachid>420924</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-18 22:37:40 -0800</bug_when>
    <thetext>Created attachment 420924
Version B</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731230</commentid>
    <comment_count>12</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-18 22:40:51 -0800</bug_when>
    <thetext>Kimmo, I guess you prefer patch B?
:-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731235</commentid>
    <comment_count>13</comment_count>
      <attachid>420926</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-18 23:08:01 -0800</bug_when>
    <thetext>Created attachment 420926
Version B</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731248</commentid>
    <comment_count>14</comment_count>
      <attachid>420926</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-19 00:23:22 -0800</bug_when>
    <thetext>Comment on attachment 420926
Version B

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

very nice :)
(not a reviewer)

&gt; Source/WebCore/html/HTMLVideoElement.cpp:303
&gt;  bool HTMLVideoElement::copyVideoTextureToPlatformTexture(GraphicsContextGL* context, PlatformGLObject texture, GCGLenum target, GCGLint level, GCGLenum internalFormat, GCGLenum format, GCGLenum type, bool premultiplyAlpha, bool flipY)

You can now remove this function from the hierarchy as it&apos;s not doing any work.
So you can then at the call site do
-            if (video-&gt;copyVideoTextureToPlatformTexture(m_context.get(), texture-&gt;object(), target, level, internalformat, format, type, m_unpackPremultiplyAlpha, m_unpackFlipY)) {
+           if (video-&gt;player() &amp;&amp;.m_context-&gt;copyVideoTextureToPlatformTexture(*video-&gt;player(), texture-&gt;object(), target, level, internalformat, format, type, m_unpackPremultiplyAlpha, m_unpackFlipY)) {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731320</commentid>
    <comment_count>15</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-02-19 06:28:44 -0800</bug_when>
    <thetext>+           if (video-&gt;player() &amp;&amp;.m_context-&gt;copyVideoTextureToPlatformTexture

(and use whatever function name you see appropriate, such as 
copyPlatformTextureFromMedia...


Unfortunately for you, I got review on the bug 219641 which moves the RemoteGraphicsContextGL to its own thread.

I discussed with Jon and he said that we should merge the above and then adapt this media work to work with the above.

So what remains to be done in this patch is to:
1) Make RemoteGraphicsContextGL ref the remoteMediaPlayerManagerProxy. Currently the manager proxy is not a refcountedthreadsafe, but it probably should be. I&apos;ve tried to avoid reffing the GPUConnectionToWebProcess in RemoteGraphicsContextGL, since that ref is droppend when the connection is broken, but the processing thread needs to still process the commands to end.

2) Make MediaPlayer thread safe. Currently RemoteRenderingBackend calls into MediaPlayer in non-threadsafe manner in call:
 context.paintFrameForMedia(*player, mediaItem.destination());

I&apos;d perhaps not want to see that done in GraphicsContextGL. Rather the MediaPlayer should at least mutex itself so that paintFrameForMedia and private()-&gt;copyVideoTextureToPlatformTexture() are thread-safe.

3) Remove the passing expectations from gpu-process/TestExpectations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731397</commentid>
    <comment_count>16</comment_count>
      <attachid>420926</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-19 09:52:51 -0800</bug_when>
    <thetext>Comment on attachment 420926
Version B

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

&gt;&gt; Source/WebCore/html/HTMLVideoElement.cpp:303
&gt;&gt;  bool HTMLVideoElement::copyVideoTextureToPlatformTexture(GraphicsContextGL* context, PlatformGLObject texture, GCGLenum target, GCGLint level, GCGLenum internalFormat, GCGLenum format, GCGLenum type, bool premultiplyAlpha, bool flipY)
&gt; 
&gt; You can now remove this function from the hierarchy as it&apos;s not doing any work.
&gt; So you can then at the call site do
&gt; -            if (video-&gt;copyVideoTextureToPlatformTexture(m_context.get(), texture-&gt;object(), target, level, internalformat, format, type, m_unpackPremultiplyAlpha, m_unpackFlipY)) {
&gt; +           if (video-&gt;player() &amp;&amp;.m_context-&gt;copyVideoTextureToPlatformTexture(*video-&gt;player(), texture-&gt;object(), target, level, internalformat, format, type, m_unpackPremultiplyAlpha, m_unpackFlipY)) {

Right! A nice cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731398</commentid>
    <comment_count>17</comment_count>
      <attachid>420926</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-02-19 09:55:19 -0800</bug_when>
    <thetext>Comment on attachment 420926
Version B

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

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:259
&gt; +    return player.playerPrivate()-&gt;copyVideoTextureToPlatformTexture(this, texture, target, level, internalFormat, format, type, premultiplyAlpha, flipY);

`playerPrivate()` *should* be a private method, the private player should be an implementation detail. Please add a method to MediaPlayer that calls the private player.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731405</commentid>
    <comment_count>18</comment_count>
      <attachid>420926</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-19 10:05:41 -0800</bug_when>
    <thetext>Comment on attachment 420926
Version B

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

&gt;&gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:259
&gt;&gt; +    return player.playerPrivate()-&gt;copyVideoTextureToPlatformTexture(this, texture, target, level, internalFormat, format, type, premultiplyAlpha, flipY);
&gt; 
&gt; `playerPrivate()` *should* be a private method, the private player should be an implementation detail. Please add a method to MediaPlayer that calls the private player.

Oops, this is a mistake. MediaPlayer already has the method, so I should not call the private player here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731595</commentid>
    <comment_count>19</comment_count>
      <attachid>421034</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-19 14:36:19 -0800</bug_when>
    <thetext>Created attachment 421034
WIP, prepare to merge with the patch for bug 219641</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731616</commentid>
    <comment_count>20</comment_count>
      <attachid>421034</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-02-19 15:08:54 -0800</bug_when>
    <thetext>Comment on attachment 421034
WIP, prepare to merge with the patch for bug 219641

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

The media specific parts of this look fine to me modulo my comments, but someone that has worked on the GL context stuff should review those changes.

&gt; Source/WebCore/html/HTMLVideoElement.cpp:-303
&gt; -bool HTMLVideoElement::copyVideoTextureToPlatformTexture(GraphicsContextGL* context, PlatformGLObject texture, GCGLenum target, GCGLint level, GCGLenum internalFormat, GCGLenum format, GCGLenum type, bool premultiplyAlpha, bool flipY)

Isn&apos;t this used by other ports?

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:65
&gt; +typedef struct __CVBuffer* CVPixelBufferRef;

This is platform specific, so I would put this in an `#if PLATFORM` block.

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:444
&gt; +    CVPixelBufferRef pixelBufferForCurrentTime();

Ditto

&gt; Source/WebCore/platform/graphics/MediaPlayerPrivate.h:165
&gt; +    virtual CVPixelBufferRef pixelBufferForCurrentTime() { return nullptr; }

Ditto.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:665
&gt; +    // We have been asked to paint into a WebGL canvas, so take that as a signal to create
&gt; +    // a decompression session, even if that means the native video can&apos;t also be displayed
&gt; +    // in page.
&gt; +    if (!m_hasBeenAskedToPaintGL) {
&gt; +        m_hasBeenAskedToPaintGL = true;
&gt; +        acceleratedRenderingStateChanged();
&gt; +    }
&gt; +
&gt; +    if (updateLastPixelBuffer()) {
&gt; +        if (!m_lastPixelBuffer)
&gt; +            return nullptr;
&gt; +    }
&gt; +
&gt; +    return m_lastPixelBuffer.get();

if `MediaPlayerPrivateMediaSourceAVFObjC::copyVideoTextureToPlatformTexture` is still needed, you can remove most of the code in it and call this method to get the current pixel buffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731641</commentid>
    <comment_count>21</comment_count>
      <attachid>421047</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-19 15:34:02 -0800</bug_when>
    <thetext>Created attachment 421047
Revise the patch based on Eric&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731655</commentid>
    <comment_count>22</comment_count>
      <attachid>421051</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-19 15:59:15 -0800</bug_when>
    <thetext>Created attachment 421051
WIP, fix build failures on gtk/wpe ports</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731680</commentid>
    <comment_count>23</comment_count>
      <attachid>421051</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-02-19 16:48:39 -0800</bug_when>
    <thetext>Comment on attachment 421051
WIP, fix build failures on gtk/wpe ports

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

&gt; Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.cpp:220
&gt; +#if USE(AVFOUNDATION)
&gt; +    UNUSED_VARIABLE(premultiplyAlpha);
&gt; +    ASSERT_UNUSED(target, target == GraphicsContextGL::TEXTURE_2D);
&gt; +
&gt; +    CVPixelBufferRef pixelBuffer = nullptr;
&gt; +
&gt; +    // --- TODO: To be deleted
&gt; +    if (isMainThread()) {
&gt; +        if (!m_gpuConnectionToWebProcess) {
&gt; +            completionHandler(false);
&gt; +            return;
&gt; +        }
&gt; +
&gt; +        auto mediaPlayer = m_gpuConnectionToWebProcess-&gt;remoteMediaPlayerManagerProxy().mediaPlayer(mediaPlayerIdentifier);
&gt; +        if (!mediaPlayer) {
&gt; +            completionHandler(false);
&gt; +            return;
&gt; +        }
&gt; +
&gt; +        pixelBuffer = mediaPlayer-&gt;pixelBufferForCurrentTime();
&gt; +        if (!pixelBuffer) {
&gt; +            completionHandler(false);
&gt; +            return;
&gt; +        }
&gt; +
&gt; +        auto contextCV = m_context-&gt;asCV();
&gt; +        if (!contextCV) {
&gt; +            completionHandler(false);
&gt; +            return;
&gt; +        }
&gt; +
&gt; +        completionHandler(contextCV-&gt;copyPixelBufferToTexture(pixelBuffer, texture, level, internalFormat, format, type, GraphicsContextGL::FlipY(flipY)));
&gt; +        return;
&gt; +    }
&gt; +    // ---

I think you could clean this up by doing the call to pixelBufferForCurrentTime() in a lambda, and calling the lambda inline if you&apos;re on the main thread, but sync dispatching to the main thread if you&apos;re called from the background. That would reduce the amount of duplicated code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731736</commentid>
    <comment_count>24</comment_count>
      <attachid>421073</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-19 19:37:54 -0800</bug_when>
    <thetext>Created attachment 421073
Revise the patch based on Jer&apos;s suggestion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731737</commentid>
    <comment_count>25</comment_count>
      <attachid>421051</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-19 19:38:50 -0800</bug_when>
    <thetext>Comment on attachment 421051
WIP, fix build failures on gtk/wpe ports

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

&gt;&gt; Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.cpp:220
&gt;&gt; +    // ---
&gt; 
&gt; I think you could clean this up by doing the call to pixelBufferForCurrentTime() in a lambda, and calling the lambda inline if you&apos;re on the main thread, but sync dispatching to the main thread if you&apos;re called from the background. That would reduce the amount of duplicated code.

Great idea! Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731738</commentid>
    <comment_count>26</comment_count>
      <attachid>421034</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-19 19:43:51 -0800</bug_when>
    <thetext>Comment on attachment 421034
WIP, prepare to merge with the patch for bug 219641

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

&gt;&gt; Source/WebCore/html/HTMLVideoElement.cpp:-303
&gt;&gt; -bool HTMLVideoElement::copyVideoTextureToPlatformTexture(GraphicsContextGL* context, PlatformGLObject texture, GCGLenum target, GCGLint level, GCGLenum internalFormat, GCGLenum format, GCGLenum type, bool premultiplyAlpha, bool flipY)
&gt; 
&gt; Isn&apos;t this used by other ports?

After refactoring, this method is not used in all ports. But a similar function is still used in MediaPlayer on some ports, e.g., the gstreamer-based port.

&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.h:65
&gt;&gt; +typedef struct __CVBuffer* CVPixelBufferRef;
&gt; 
&gt; This is platform specific, so I would put this in an `#if PLATFORM` block.

Right!
Added `#if ENABLE(AVFOUNDATION)`.

&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.h:444
&gt;&gt; +    CVPixelBufferRef pixelBufferForCurrentTime();
&gt; 
&gt; Ditto

Fixed.

&gt;&gt; Source/WebCore/platform/graphics/MediaPlayerPrivate.h:165
&gt;&gt; +    virtual CVPixelBufferRef pixelBufferForCurrentTime() { return nullptr; }
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:665
&gt;&gt; +    return m_lastPixelBuffer.get();
&gt; 
&gt; if `MediaPlayerPrivateMediaSourceAVFObjC::copyVideoTextureToPlatformTexture` is still needed, you can remove most of the code in it and call this method to get the current pixel buffer.

`MediaPlayerPrivateMediaSourceAVFObjC::copyVideoTextureToPlatformTexture` is removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731739</commentid>
    <comment_count>27</comment_count>
      <attachid>421034</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-19 19:43:52 -0800</bug_when>
    <thetext>Comment on attachment 421034
WIP, prepare to merge with the patch for bug 219641

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

&gt;&gt; Source/WebCore/html/HTMLVideoElement.cpp:-303
&gt;&gt; -bool HTMLVideoElement::copyVideoTextureToPlatformTexture(GraphicsContextGL* context, PlatformGLObject texture, GCGLenum target, GCGLint level, GCGLenum internalFormat, GCGLenum format, GCGLenum type, bool premultiplyAlpha, bool flipY)
&gt; 
&gt; Isn&apos;t this used by other ports?

After refactoring, this method is not used in all ports. But a similar function is still used in MediaPlayer on some ports, e.g., the gstreamer-based port.

&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.h:65
&gt;&gt; +typedef struct __CVBuffer* CVPixelBufferRef;
&gt; 
&gt; This is platform specific, so I would put this in an `#if PLATFORM` block.

Right!
Added `#if ENABLE(AVFOUNDATION)`.

&gt;&gt; Source/WebCore/platform/graphics/MediaPlayer.h:444
&gt;&gt; +    CVPixelBufferRef pixelBufferForCurrentTime();
&gt; 
&gt; Ditto

Fixed.

&gt;&gt; Source/WebCore/platform/graphics/MediaPlayerPrivate.h:165
&gt;&gt; +    virtual CVPixelBufferRef pixelBufferForCurrentTime() { return nullptr; }
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:665
&gt;&gt; +    return m_lastPixelBuffer.get();
&gt; 
&gt; if `MediaPlayerPrivateMediaSourceAVFObjC::copyVideoTextureToPlatformTexture` is still needed, you can remove most of the code in it and call this method to get the current pixel buffer.

`MediaPlayerPrivateMediaSourceAVFObjC::copyVideoTextureToPlatformTexture` is removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731851</commentid>
    <comment_count>28</comment_count>
      <attachid>421109</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-20 13:50:59 -0800</bug_when>
    <thetext>Created attachment 421109
Rebase the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731899</commentid>
    <comment_count>29</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-20 18:05:45 -0800</bug_when>
    <thetext>Committed r273213: &lt;https://commits.webkit.org/r273213&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421109.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732120</commentid>
    <comment_count>30</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2021-02-22 07:13:30 -0800</bug_when>
    <thetext>(In reply to EWS from comment #29)
&gt; Committed r273213: &lt;https://commits.webkit.org/r273213&gt;
This seems to have broken windows build.

r273213 failed in https://build.webkit.org/#/builders/67/builds/456
r273212 passed in https://build.webkit.org/#/builders/67/builds/455</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732166</commentid>
    <comment_count>31</comment_count>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2021-02-22 09:39:42 -0800</bug_when>
    <thetext>This seems to affect applewin and not wincairo, but I&apos;d wonder if maybe applewin didn&apos;t enable WEBGL?

Early in the MediaPlayer.h file it says:

+#if ENABLE(WEBGL) &amp;&amp; USE(AVFOUNDATION)
+typedef struct __CVBuffer* CVPixelBufferRef;
+#endif

but the usage later is only controlled by USE(AVFOUNDATION)

#if !USE(AVFOUNDATION)
    bool copyVideoTextureToPlatformTexture(GraphicsContextGL*, PlatformGLObject texture, GCGLenum target, GCGLint level, GCGLenum internalFormat, GCGLenum format, GCGLenum type, bool premultiplyAlpha, bool flipY);
#else
    CVPixelBufferRef pixelBufferForCurrentTime();
#endif

If that&apos;s the case, it&apos;s unclear to me which condition would require a change though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732167</commentid>
    <comment_count>32</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-22 09:41:37 -0800</bug_when>
    <thetext>I think we can remove &quot;ENABLE(WEBGL)&quot; here.

+#if ENABLE(WEBGL) &amp;&amp; USE(AVFOUNDATION)
+typedef struct __CVBuffer* CVPixelBufferRef;
+#endif

Testing a patch locally now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732180</commentid>
    <comment_count>33</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-22 09:58:46 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732181</commentid>
    <comment_count>34</comment_count>
      <attachid>421207</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2021-02-22 09:58:48 -0800</bug_when>
    <thetext>Created attachment 421207
A follow-up patch to fix build failures on the windows port</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732271</commentid>
    <comment_count>35</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-22 13:09:32 -0800</bug_when>
    <thetext>Committed r273272: &lt;https://commits.webkit.org/r273272&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421207.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420602</attachid>
            <date>2021-02-16 23:05:36 -0800</date>
            <delta_ts>2021-02-18 20:43:31 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-218184-20210216230535.patch</filename>
            <type>text/plain</type>
            <size>16963</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyODg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmI4ZmE1YjExMDdkOWZh
NmVkNWExOGM3NTI3MGQyMzU1YTMxZDUxYy4uZjQ0YmIwMTI0Y2FlNmVmYjgwNDk3MzA0NmFiODdi
YjczMGYyNzM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAyLTE2ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgVmlkZW8gZWxlbWVudHMgZG8g
bm90IHdvcmsgYXMgc291cmNlcyBmb3IgVGV4SW1hZ2UyRCBjYWxscyBpbiBHUFUgUHJvY2Vzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCBjb3ZlcmVkIGJ5IHVuc2tpcHBlZCBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0w6OmlzUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSBjb25zdCk6CisK
IDIwMjEtMDItMTUgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAg
ICAgICAgIFtKU0NdIFByb3BlcnR5U2xvdCBzaG91bGQgYWxsb3cgcGFzc2luZyBjdXN0b20gc2V0
dGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBlYTc2MzkwNWNjMTAzNDNjY2FjYzk3MjkzNDVhNTA0OTdlMDE1ZTZi
Li5kMjlmNDQ1NTdjMzVhNGM1OTBkYmFlZWE2MTVjMjA4OTQ3NDJmYTRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMxIEBACisyMDIxLTAyLTE2ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+
CisKKyAgICAgICAgVmlkZW8gZWxlbWVudHMgZG8gbm90IHdvcmsgYXMgc291cmNlcyBmb3IgVGV4
SW1hZ2UyRCBjYWxscyBpbiBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1v
dGVHcmFwaGljc0NvbnRleHRHTCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTC5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Z3JhcGhpY3NDb250ZXh0R0wpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OnJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDcmVh
dGVkKToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OnJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHlSZWxlYXNlZCk6CisgICAgICAgIChXZWJLaXQ6OkdQVVByb2Nlc3ND
b25uZWN0aW9uOjpncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Ondhc0NyZWF0ZWQpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNMb3N0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
Ojpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorCiAyMDIxLTAyLTE1ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVVBdIElnbm9yZSBhbiBJ
UEMgbWVzc2FnZSBpZiB0aGUgbWVzc2FnZSByZWNlaXZlciBoYXMgYmVlbiBkZXN0cm95ZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCmluZGV4IDAwMjYyNDVlNDc5NzI3ZGVmY2MwMTFlNmU4YTFmZGM1NGUzMzFjNmUuLmIxYzA0
ZjczMmVlNzI2M2ZlMmRjN2NlOTUwM2E5YWUwMjQ5MTU3ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtNjMsNiAr
NjMsOCBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHRHTENWOwogLy8gQmFzZSBjbGFzcyBmb3IgZ3Jh
cGhpY3MgY29udGV4dCBmb3IgaW1wbGVtZW50aW5nIFdlYkdMIHJlbmRlcmluZyBtb2RlbC4KIGNs
YXNzIEdyYXBoaWNzQ29udGV4dEdMIDogcHVibGljIFJlZkNvdW50ZWQ8R3JhcGhpY3NDb250ZXh0
R0w+IHsKIHB1YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIC8vIFdlYkdMIDEgY29uc3Rh
bnRzLgogICAgIHN0YXRpYyBjb25zdGV4cHIgR0NHTGVudW0gREVQVEhfQlVGRkVSX0JJVCA9IDB4
MDAwMDAxMDA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHQ0dMZW51bSBTVEVOQ0lMX0JVRkZFUl9C
SVQgPSAweDAwMDAwNDAwOwpAQCAtMTQwMCw0ICsxNDAyLDkgQEAgaW5saW5lIEdDR0xpbnQgR3Jh
cGhpY3NDb250ZXh0R0w6OmdldEludGVybmFsZm9ybWF0aShHQ0dMZW51bSB0YXJnZXQsIEdDR0xl
bnVtIGkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfR1JBUEhJQ1NfQ09OVEVYVF9HTChUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkg
XAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihUb1ZhbHVlVHlwZU5hbWUpIFwKKyAgICBz
dGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0wmIGNvbnRl
eHQpIHsgcmV0dXJuIGNvbnRleHQucHJlZGljYXRlOyB9IFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfRU5EKCkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNmI5NzI2MzBlMWM5MjI4YzEzODNj
NDc3OTZjYzFkYWI5NDA5N2MzNi4uMmQwNzNlY2U4OTJkYWY5ZTczN2UxZTU3OTk4MTkyMDQ1ZmU5
MTUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMzUwLDYgKzM1MCwxNiBAQCB2b2lkIEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlbGVhc2VHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0NvbnRleHRH
TElkZW50aQogICAgIGJvb2wgZm91bmQgPSBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLnJl
bW92ZShncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwogICAgIEFTU0VSVF9VTlVTRUQoZm91
bmQsIGZvdW5kKTsKIH0KKworUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wqIEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKG1fcmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xNYXAuY29udGFpbnMoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKSk7CisgICAgaWYgKCFtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmNvbnRhaW5zKGdy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgcmV0dXJuIG1fcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xNYXAuZ2V0KGdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcik7Cit9CisKICNlbmRpZgogdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjbGVhck5vd1BsYXlpbmdJbmZvKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGY3NmI3YTZjYzllNTdk
ZjU3YjYyYWZlNmRjOTY1ODdhNDU2ZGEwNmMuLmRkOGQwYzQwNGVjNWNmNzI4YTcxNjk2N2U5N2U4
ZGExMjJiODI1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMTE5LDYgKzExOSwxMCBAQCBwdWJsaWM6CiAgICAg
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkmIGltYWdlRGVjb2RlckFWRlByb3h5KCk7CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCogcmVt
b3RlR3JhcGhpY3NDb250ZXh0R0woR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKKyNlbmRp
ZgorCiAgICAgdm9pZCB0ZXJtaW5hdGVXZWJQcm9jZXNzKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5oCmluZGV4IDAwMTU5YWM4YjU4NmE4YjYyYTNkZGEzYTU3MDA0ZTg4M2UxNTZk
MDguLjUwOTdkM2ZmYjE3NzVhZWI5NTY4N2IzMjQxOWJiZmFkNTVhMDZlYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5oCkBAIC02Miw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYs
IEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CiAgICAgflJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMKCkgb3ZlcnJpZGU7CiAKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTCog
Z3JhcGhpY3NDb250ZXh0R0woKSB7IHJldHVybiBtX2NvbnRleHQucHRyKCk7IH0KICAgICBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3Q7
CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCBlMTU0ZmNhYWE3ODBhZTBjMzM2
YmJkZTMzZWI3ZGI1NjhjMjg3MTQ5Li43NDIyMzk3YTJmODYxNzU2YTdkYjM0ZmYwMDgzNzZlYjJi
MTQ2YmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRp
b1NvdXJjZVByb3ZpZGVyUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1RyYWNrUHJveHku
aCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIgogI2luY2x1ZGUgIlJlbW90
ZUxlZ2FjeUNETUZhY3RvcnlQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Np
b25Qcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyTWFuYWdlclByb3h5LmgiCkBA
IC0zNzMsNiArMzc0LDE3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5
ZXJFbmdpbmVGYWlsZWRUb0xvYWQoKSBjb25zdAogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6RW5naW5lRmFpbGVkVG9M
b2FkKG1fcGxheWVyLT5wbGF0Zm9ybUVycm9yQ29kZSgpKSwgbV9pZCk7CiB9CiAKKyNpZiBFTkFC
TEUoV0VCR0wpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgaWRlbnRpZmllciwg
dWludDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJf
dCBpbnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHBy
ZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCit7CisgICAgYXV0byogcmVtb3RlR3JhcGhpY3ND
b250ZXh0R0wgPSBtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLnJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMKGlkZW50aWZpZXIpOworICAgIGlmICghcmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcGxheWVyLT5jb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUocmVtb3RlR3JhcGhpY3NDb250ZXh0R0wtPmdyYXBoaWNzQ29udGV4
dEdMKCksIHRleHR1cmUsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5
cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKExF
R0FDWV9FTkNSWVBURURfTUVESUEpCiBTdHJpbmcgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVk
aWFQbGF5ZXJNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5o
CmluZGV4IDE1NDMwZTg5ZTMyMGM0NTA3ODg4NTAwZGM3YjNkZWI3OTEyNjI3ZDkuLmZjOTExNmY3
NmM5ZjJiNmJlNTdiODMxN2Q1YzhhMGE4YjI5MTM3NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaApAQCAtMTQ4
LDYgKzE0OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRWaWRlb0lubGluZVNpemVGZW5jZWQo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYpOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdm9pZCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0
Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJl
LCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsRm9ybWF0
LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwg
Ym9vbCBmbGlwWSk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpCiAgICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKTsKICAg
ICB2b2lkIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCA4MzY3ZWMzZmIzMjhhODVmOTRhZjMzYzMyZDdiMWUw
MjM1YmU0MmI1Li41Yjk3OTU1MGEyMzNjY2E5YWU2ZTRmMDczNTJhMzI3MzZiYTI5MTZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtNzMsNiArNzMsMTAgQEAgbWVzc2Fn
ZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKICAgICAjIFBhaW50
CiAgICAgIyBQYWludEN1cnJlbnRGcmFtZUluQ29udGV4dAogCisjaWYgRU5BQkxFKFdFQkdMKQor
ICAgIENvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShXZWJLaXQ6OkdyYXBoaWNzQ29u
dGV4dEdMSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0
YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBm
b3JtYXQsIHVpbnQzMl90IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkK
KyNlbmRpZgorCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICBTZXRX
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sIGRpc2FibGVkKQogICAgICMgU2V0V2ly
ZWxlc3NQbGF5YmFja1RhcmdldChXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNw
cAppbmRleCA0YWJiNmUzZGIwNjJjNTgxZTMwNzg4Mjc0NWIzNDI2N2E2OTM0NTU1Li5jNGYyNWNk
NTM5ZTgzOTY4N2JkMzFjMjgwMjUwMjI5NjViNGVhNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMzksNiAr
MzksNyBAQAogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgogI2luY2x1ZGUgIlJlbW90ZUNETVByb3h5Lmgi
CisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgogI2luY2x1ZGUgIlJl
bW90ZUxlZ2FjeUNETUZhY3RvcnkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYUVuZ2luZUNvbmZp
Z3VyYXRpb25GYWN0b3J5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyLmgi
CkBAIC0xNDEsNiArMTQyLDI2IEBAIFJlbW90ZUxlZ2FjeUNETUZhY3RvcnkmIEdQVVByb2Nlc3ND
b25uZWN0aW9uOjpsZWdhY3lDRE1GYWN0b3J5KCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdF
QkdMKQordm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6cmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eUNyZWF0ZWQoUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSYgcmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eSwgR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7
CisgICAgQVNTRVJUKCFtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllck1hcC5jb250YWlucygm
cmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSkpOworICAgIG1fZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyTWFwLmFkZCgmcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSwgaWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OnJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHlSZWxlYXNlZChSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5JiByZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5KQoreworICAgIEFTU0VSVChtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllck1hcC5jb250YWlucygmcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSkpOworICAg
IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyTWFwLnJlbW92ZSgmcmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eSk7Cit9CisKK0dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBHUFVQcm9j
ZXNzQ29ubmVjdGlvbjo6Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkmIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyTWFwLmNvbnRhaW5zKCZyZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5KSk7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0
R0xJZGVudGlmaWVyTWFwLmdldCgmcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSk7Cit9Cisj
ZW5kaWYKKwogUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeSYgR1BVUHJvY2Vz
c0Nvbm5lY3Rpb246Om1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkoKQogewogICAgIHJl
dHVybiAqV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxSZW1vdGVNZWRpYUVuZ2lu
ZUNvbmZpZ3VyYXRpb25GYWN0b3J5PigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IGIwYTQ1NWFkZTNjNjc0ZmM5ZjM0
MDNmZTY0MmE0YTUyMGM5NDA5MTIuLjNkM2YxOTU2OGZmNzQ2NzIwNjlhOGI5ODc1ZDMyMDNiMzJl
ZWE3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NDb25uZWN0aW9uLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAi
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1NZWRpYVNlc3Npb24uaD4KQEAgLTQwLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIFJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3Rl
Q0RNRmFjdG9yeTsKK2NsYXNzIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk7CiBjbGFzcyBS
ZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5OwogY2xhc3MgUmVtb3RlTWVkaWFQ
bGF5ZXJNYW5hZ2VyOwogY2xhc3MgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeTsKQEAgLTg4LDYgKzkw
LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGlzVlBTV0RlY29kZXJFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmFibGVWUDlTV0RlY29kZXI7IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQkdM
KQorICAgIHZvaWQgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNyZWF0ZWQoUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSYsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CisgICAg
dm9pZCByZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5UmVsZWFzZWQoUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eSYpOworICAgIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBncmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXIoUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSYpIGNvbnN0
OworI2VuZGlmCisKICAgICBjbGFzcyBDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q2xp
ZW50PiB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSA9IGRlZmF1bHQ7
CkBAIC0xMjgsNiArMTM2LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZW5hYmxlVlA4RGVjb2Rl
ciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2VuYWJsZVZQOURlY29kZXIgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9lbmFibGVWUDlTV0RlY29kZXIgeyBmYWxzZSB9OworI2VuZGlmCisjaWYgRU5BQkxF
KFdFQkdMKQorICAgIEhhc2hNYXA8UmVmUHRyPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk+
LCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXI+IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyTWFwOwogI2VuZGlmCiAgICAgV2Vha0hhc2hTZXQ8Q2xpZW50PiBtX2NsaWVudHM7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKaW5kZXggZjI5YmUwMDZl
YjdiOTc2NGI3ODJkOTE2MjVjODAxNjBmZjhmMzZmMy4uYzVmNmRiZTFmMjlmZjA2N2NlZWZjNjI3
YTQ0MzVhZjU1ZDQ3YjQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuY3BwCkBAIC0xNzQsMTAgKzE3NCwxMiBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6Ondhc0NyZWF0ZWQoYm9vbCBkaWRTdWNjZWVkLCBTdHJpbmcmJiBhdmFpbGFibAogICAg
IEFTU0VSVCghbV9kaWRJbml0aWFsaXplKTsKICAgICBtX2RpZEluaXRpYWxpemUgPSB0cnVlOwog
ICAgIGluaXRpYWxpemUoYXZhaWxhYmxlRXh0ZW5zaW9ucywgcmVxdWVzdGVkRXh0ZW5zaW9ucyk7
CisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+cmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eUNyZWF0ZWQoKnRoaXMsIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKIH0KIAogdm9p
ZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojp3YXNMb3N0KCkKIHsKKyAgICBtX2dwdVBy
b2Nlc3NDb25uZWN0aW9uLT5yZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5UmVsZWFzZWQoKnRo
aXMpOwogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybjsKICAgICBtYXJr
Q29udGV4dExvc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKaW5k
ZXggODMxYjRiMGFiMTM3ZTZhYWY4MzU5NmUwYjBhMDc2ZGYxZTA5MTc2MS4uOWM0NjUyYTcwYmY0
M2I5OTY1MWU0NmM5MmEzYzE5YWYxZjJhNmFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmgKQEAgLTM0NSw2ICszNDUsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9ncHVQcm9jZXNzQ29ubmVj
dGlvbi0+Y29ubmVjdGlvbigpOyB9CiAKIHByaXZhdGU6CisgICAgYm9vbCBpc1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKICAgICAv
LyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KICAgICB2b2lkIHdhc0NyZWF0ZWQoYm9vbCBkaWRT
dWNjZWVkLCBTdHJpbmcmJiBhdmFpbGFibGVFeHRlbnNpb25zLCBTdHJpbmcmJiByZXF1ZXN0ZWRF
eHRlbnNpb25zKTsKICAgICB2b2lkIHdhc0xvc3QoKTsKQEAgLTM5Myw0ICszOTUsNiBAQCBzdGF0
aWNfYXNzZXJ0KHNpemVvZihHQ0dMc3luYykgPD0gc2l6ZW9mKHVpbnQ2NF90KSAmJiBzaXplb2Yo
R0NHTHN5bmMpID09IHNpemVvZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19HUkFQSElDU19DT05URVhUX0dMKFdlYktpdDo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eSwgaXNSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KCkpCisKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDlhYjkwODZiNWIzOWVlNDY4MzFj
OWQ5YWE5NTE5OWRiY2ZhNzIyNjIuLmY1MTMwZmNkMTA5NWM0OTNlZTU5MTUyMjVmNDMzZTBjOTA5
M2RjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAK
IAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZW1vdGVBdWRpb1NvdXJjZVByb3Zp
ZGVyLmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIgogI2luY2x1
ZGUgIlJlbW90ZUxlZ2FjeUNETS5oIgogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3Rvcnku
aCIKICNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1TZXNzaW9uLmgiCkBAIC04NDgsMTAgKzg0OSwx
OSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnRDdXJyZW50RnJhbWVJbkNv
bnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29ucwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
LWJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBH
Q0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9v
bCkKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0
Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wqIGNvbnRleHQsIFBsYXRmb3JtR0xPYmplY3Qg
dGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5h
bEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5
QWxwaGEsIGJvb2wgZmxpcFkpCiB7CisjaWYgRU5BQkxFKFdFQkdMKQorICAgIGlmICghaXM8UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4oKmNvbnRleHQpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5JiByZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5ID0gZG93bmNhc3Q8UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eT4oKmNv
bnRleHQpOworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXll
clByb3h5OjpDb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUobV9tYW5hZ2VyLmdwdVBy
b2Nlc3NDb25uZWN0aW9uKCkuZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKHJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkpLCB0ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1h
dCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSksIG1faWQpOworICAgIHJl
dHVybiB0cnVlOworI2Vsc2UKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZgogfQogCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCg==
</data>
<flag name="commit-queue"
          id="439175"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420883</attachid>
            <date>2021-02-18 16:14:33 -0800</date>
            <delta_ts>2021-02-18 22:40:23 -0800</delta_ts>
            <desc>The implementation based on a new IPC message in RemoteGraphicsContextGL</desc>
            <filename>218184-RemoteGraphicsContextGL.patch</filename>
            <type>text/plain</type>
            <size>10665</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IGQ3NjBlMmI1MGRh
OS4uYTljYWUxMjlmMzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAKQEAgLTMwMiw5ICszMDIsMTIgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpwYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnMKIAogYm9vbCBI
VE1MVmlkZW9FbGVtZW50Ojpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0R0wqIGNvbnRleHQsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkp
CiB7Ci0gICAgaWYgKCFwbGF5ZXIoKSkKKyAgICBSZWZQdHI8TWVkaWFQbGF5ZXI+IHBsYXllciA9
IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXllcigpOworICAgIGlmICghcGxheWVyKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHBsYXllcigpLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0
Zm9ybVRleHR1cmUoY29udGV4dCwgdGV4dHVyZSwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3Jt
YXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOworCisgICAgcGxheWVy
LT5zZXRWaXNpYmxlKHRydWUpOyAvLyBNYWtlIHBsYXllciB2aXNpYmxlIG9yIGl0IHdvbid0IGRy
YXcuCisgICAgcmV0dXJuIGNvbnRleHQtPmNvcHlUZXh0dXJlRnJvbU1lZGlhKCpwbGF5ZXIsIHRl
eHR1cmUsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11
bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KIAogYm9vbCBIVE1MVmlkZW9FbGVtZW50OjpoYXNBdmFp
bGFibGVWaWRlb0ZyYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IDAwMjYyNDVlNDc5Ny4uOGM3MWVl
MGNmZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEdMLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJJbWFnZS5oIgog
I2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiTWVk
aWFQbGF5ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMTMwNiw3ICsxMzA3LDcg
QEAgcHVibGljOgogICAgIC8vIFJldHVybnMgaW50ZXJmYWNlIGZvciBDViBpbnRlcmFjdGlvbiBp
ZiB0aGUgZnVuY3Rpb25hbGl0eSBpcyBwcmVzZW50LgogICAgIHZpcnR1YWwgR3JhcGhpY3NDb250
ZXh0R0xDViogYXNDVigpID0gMDsKICNlbmRpZgotCisgICAgdmlydHVhbCBib29sIGNvcHlUZXh0
dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dM
ZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBm
bGlwWSkgPSAwOwogCiAgICAgSW50U2l6ZSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIEludFNpemUobV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCk7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKaW5kZXggYmRkYTc4NWY2MGU1
Li4yYjk0ZGI1MTA4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUJhc2UuaApA
QCAtNzIsNiArNzIsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VO
REFUSU9OKQogICAgIEdyYXBoaWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSBmaW5hbDsKICNlbmRpZgor
CisgICAgdmlydHVhbCBib29sIGNvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxh
eWVySWRlbnRpZmllciwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgPSAwOwor
CiAgICAgLy8gT3RoZXIgRXh0ZW5zaW9uR0wgb3ZlcnJpZGVzLgogICAgIHVzaW5nIEV4dGVuc2lv
bnNHTDo6aXNFbmFibGVkOwogICAgIGJvb2wgc3VwcG9ydHMoY29uc3QgU3RyaW5nJikgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDg3OGQ4ZGYxMWRiYi4uMDBj
YjFiOWZhMGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMzgsNiAr
MzgsNyBAQAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVndWxhckV4cHJlc3Npb24uaD4KQEAgLTI4MzMs
NiArMjgzNCwxMiBAQCBHcmFwaGljc0NvbnRleHRHTENWKiBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6YXNDVigpCiAgICAgICAgIG1fY3YgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEdMQ1ZB
TkdMRT4oKnRoaXMpOwogICAgIHJldHVybiBtX2N2LmdldCgpOwogfQorCitib29sIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjb3B5VGV4dHVyZUZyb21NZWRpYShNZWRpYVBsYXllciYgcGxheWVy
LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQoreworICAgIHJldHVybiBwbGF5
ZXIucGxheWVyUHJpdmF0ZSgpLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUodGhp
cywgdGV4dHVyZSwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwg
cHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOworfQorCiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCA1ODY4NTA4NDk4ZTUuLjllMzFlMGFlODMwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTUwOSw2ICs1MDksNyBAQCBwdWJs
aWM6CiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5EQVRJT04pCiAgICAgR3JhcGhp
Y3NDb250ZXh0R0xDViogYXNDVigpIGZpbmFsOworICAgIGJvb2wgY29weVRleHR1cmVGcm9tTWVk
aWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5h
bDsKICNlbmRpZgogCiAjaWYgIVVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5tZXNzYWdlcy5pbgppbmRleCA3YTE5MjVkYmIyN2EuLjkyNmZiMDY2YjYwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpAQCAtMjg5LDYgKzI4OSw3IEBAIG1l
c3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgewogICAgIHZv
aWQgTXVsdGlEcmF3RWxlbWVudHNBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+IGNvdW50cywgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PiBvZmZzZXRzLCBpbnQzMl90IGRyYXdjb3VudCkKICAgICB2b2lkIE11bHRpRHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxp
bnQzMl90PiBjb3VudHMsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4gb2Zmc2V0cywgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBpbnN0YW5jZUNvdW50cywg
aW50MzJfdCBkcmF3Y291bnQpCiAgICAgdm9pZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdl
RGF0YSgpIC0+IChSZWZQdHI8V2ViQ29yZTo6SW1hZ2VEYXRhPiByZXR1cm5WYWx1ZSkgU3luY2hy
b25vdXMKKyAgICB2b2lkIENvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQs
IGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQs
IHVpbnQzMl90IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgLT4gKGJv
b2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVu
Y3Rpb25zR2VuZXJhdGVkLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaAppbmRleCBlMGQ5MjlkYTRi
NzcuLjczMjM3YmZjOWFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
RnVuY3Rpb25zR2VuZXJhdGVkLmgKQEAgLTExNzgsNCArMTE3OCwxMCBAQAogICAgICAgICByZXR1
cm5WYWx1ZSA9IG1fY29udGV4dC0+cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKTsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXR1cm5WYWx1ZSkpOwogICAgIH0K
KyAgICB2b2lkIGNvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRp
ZmllciYmIGlkZW50aWZpZXIsIHVpbnQzMl90IHRleHR1cmUsIHVpbnQzMl90IHRhcmdldCwgaW50
MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxGb3JtYXQsIHVpbnQzMl90IGZvcm1hdCwgdWlu
dDMyX3QgdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAg
Ym9vbCByZXR1cm5WYWx1ZSA9IHsgfTsKKyAgICAgICAgcmV0dXJuVmFsdWUgPSBtX2NvbnRleHQt
PmNvcHlUZXh0dXJlRnJvbU1lZGlhKGlkZW50aWZpZXIsIHRleHR1cmUsIHRhcmdldCwgbGV2ZWws
IGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmV0dXJuVmFsdWUpOworICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKaW5kZXggZjI5YmUwMDZlYjdiLi43
ZGYxZDJlYTVhZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNw
cApAQCAtMTQwLDYgKzE0MCwxMSBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAorYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5
VGV4dHVyZUZyb21NZWRpYShNZWRpYVBsYXllciYgbWVkaWFQbGF5ZXIsIFBsYXRmb3JtR0xPYmpl
Y3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRl
cm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRp
cGx5QWxwaGEsIGJvb2wgZmxpcFkpCit7CisgICAgcmV0dXJuIGNvcHlUZXh0dXJlRnJvbU1lZGlh
KG1lZGlhUGxheWVyLmlkZW50aWZpZXIoKSwgdGV4dHVyZSwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOworfQorCiB2
b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNpemVHTEVycm9yKEdDR0xl
bnVtIGVycm9yKQogewogICAgIGlmICghaXNDb250ZXh0TG9zdCgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCmluZGV4IDgzMWI0YjBhYjEzNy4uYTUwNzBjOTVhNTFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtNjgsNiArNjgs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikg
ZmluYWw7CiAgICAgR0NHTGVudW0gZ2V0RXJyb3IoKSBmaW5hbDsKIAorICAgIGJvb2wgY29weVRl
eHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRl
eHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxG
b3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFs
cGhhLCBib29sIGZsaXBZKSBmaW5hbDsKKwogICAgIC8vIEZ1bmN0aW9ucyB3aXRoIGEgZ2VuZXJh
dGVkIGltcGxlbWVudGF0aW9uLiBUaGlzIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdl
YmdsIHNjcmlwdC4KICAgICB2b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSBmaW5hbDsK
ICAgICBib29sIG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIGZpbmFsOwpAQCAtMzIx
LDYgKzMyMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzQU5HTEUoR0NH
TGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5
cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xzaXplaSBkcmF3Y291bnQp
IGZpbmFsOwogICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51
bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVp
PiBpbnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkgZmluYWw7CiAgICAgUmVmUHRy
PFdlYkNvcmU6OkltYWdlRGF0YT4gcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKSBm
aW5hbDsKKyAgICBib29sIGNvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZ
KSBmaW5hbDsKICAgICAvLyBFbmQgb2YgbGlzdCB1c2VkIGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wg
c2NyaXB0LgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5l
cmF0ZWQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcAppbmRleCA0NjZkZDA4
YjFiMmIuLmVlZjE2ZDU0ZTI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJh
dGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC0yNDUzLDYg
KzI0NTMsMTcgQEAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG8KICAgICByZXR1cm4gcmV0dXJuVmFs
dWU7CiB9CiAKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleHR1cmVG
cm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBsYXRm
b3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29s
IHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpCit7CisgICAgYm9vbCByZXR1cm5WYWx1ZSA9
IHsgfTsKKyAgICBpZiAoIWlzQ29udGV4dExvc3QoKSkgeworICAgICAgICBhdXRvIHNlbmRSZXN1
bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXh0
dXJlRnJvbU1lZGlhKGlkZW50aWZpZXIsIHRleHR1cmUsIHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Rm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKSwgTWVzc2FnZXM6
OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4dHVyZUZyb21NZWRpYTo6UmVwbHkocmV0
dXJuVmFsdWUpKTsKKyAgICAgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICAgICAgbWFya0Nv
bnRleHRMb3N0KCk7CisgICAgfQorICAgIHJldHVybiByZXR1cm5WYWx1ZTsKK30KKwogfQogCiAj
ZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420912</attachid>
            <date>2021-02-18 20:42:45 -0800</date>
            <delta_ts>2021-02-18 20:58:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218184-20210218204244.patch</filename>
            <type>text/plain</type>
            <size>16141</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDg1NjE5ODc3OTllOGMz
YzlkZmUxNzVhYTA0MWVlZDg2MmM2YTMyYS4uNmY5MjJjZjU4NmVkMTUwYTg2YjA5MzExMmQ1NjJi
MmU3ZDk4NWYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTAyLTE4ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgVmlkZW8gZWxlbWVudHMgZG8g
bm90IHdvcmsgYXMgc291cmNlcyBmb3IgVGV4SW1hZ2UyRCBjYWxscyBpbiBHUFUgUHJvY2Vzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFudWFsbHkg
dGVzdGVkLgorICAgICAgICBXZSBuZWVkIHRvIGVuYWJsZSBib3RoICJHUFUgUHJvY2VzczogTWVk
aWEiIGFuZCAiR1BVIFByb2Nlc3M6IFdlYkdMIiB0byB0ZXN0IHRoZSBmZWF0dXJlLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjppc1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkg
Y29uc3QpOgorCiAyMDIxLTAyLTE3ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAog
ICAgICAgICBsY2goKSBjb2xvcnMgc2hvdWxkIHNlcmlhbGl6ZSBhcyBsY2goKSwgbm90IGxhYigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDc0MzBkYzdlYzA1MGQwZDdlMDNlMTcxMjE0ZTYwNjZlZWIwOWM2OTguLjI3
YjFkNTcwYTYyZDUyMDM3Yzk3NzY3ZDM1NzA0OWFlYmUzNzIzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDUgQEAKKzIwMjEtMDItMTggIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKwor
ICAgICAgICBWaWRlbyBlbGVtZW50cyBkbyBub3Qgd29yayBhcyBzb3VyY2VzIGZvciBUZXhJbWFn
ZTJEIGNhbGxzIGluIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTgxODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgSVBDIG1lc3NhZ2UgYFJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OkNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZWAKKyAgICAgICAgdG8gaW1w
bGVtZW50IGBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRm
b3JtVGV4dHVyZSgpYCBpbiB0aGUKKyAgICAgICAgV2ViIHByb2Nlc3MuCisKKyAgICAgICAgKiBH
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdGVHcmFwaGljc0NvbnRleHRHTCk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAg
IEFkZCB0aGlzIGZ1bmN0aW9uIHRvIGdldCB0aGUgY29ycmVzcG9uZGluZyBSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTCBvYmplY3QgZnJvbQorICAgICAgICBhIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllci4gYFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3Jt
VGV4dHVyZSgpYAorICAgICAgICBuZWVkcyB0aGlzIGZ1bmN0aW9uIHRvIGdldCB0aGUgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wgb2JqZWN0IGZyb20gdGhlIGlkZW50aWZpZXIgaW4KKyAgICAgICAg
YW4gSVBDIG1lc3NhZ2UgYFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZWAuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpncmFwaGljc0NvbnRleHRHTCk6CisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllclByb3h5Ojpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbjoKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OnJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHlDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OnJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlEZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0OjpH
UFVQcm9jZXNzQ29ubmVjdGlvbjo6Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGNvbnN0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAg
ICBBZGQgdGhlIHN1cHBvcnQgdG8gZ2V0IHRoZSBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIg
ZnJvbSB0aGUgcG9pbnRlciBvZgorICAgICAgICBhIEdyYXBoaWNzQ29udGV4dEdMIG9iamVjdCAo
d2hpY2ggd2lsbCBiZSBhIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkgb2JqZWN0IHdoZW4K
KyAgICAgICAgIkdQVSBQcm9jZXNzOiBXZWJHTCIgaXMgZW5hYmxlZC4pCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNvcHlWaWRlb1RleHR1cmVUb1Bs
YXRmb3JtVGV4dHVyZSk6CisKIDIwMjEtMDItMTcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CiAKICAgICAgICAgUGx1bWIgYW4gT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHRocm91Z2ggUGFzdGVib2FyZC1yZWxhdGVkIGNvZGVwYXRocwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGQ1
NzdlNDM0OTlmMTgxNDc5MWM4YTBlZjcxY2IzNGEwMjRhMWZhZTIuLjlmNGE5MDFhODJlYzAwYWNi
ODlmMTFkNzk2OTZhODA4N2MyYjlhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTM1MCw2ICszNTAsMTYg
QEAgdm9pZCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0
R0woR3JhcGhpY3NDb250ZXh0R0xJZGVudGkKICAgICBib29sIGZvdW5kID0gbV9yZW1vdGVHcmFw
aGljc0NvbnRleHRHTE1hcC5yZW1vdmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKICAg
ICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CiB9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMKiBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdGVHcmFwaGljc0NvbnRleHRHTChH
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQor
eworICAgIEFTU0VSVChtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmNvbnRhaW5zKGdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllcikpOworICAgIGlmICghbV9yZW1vdGVHcmFwaGljc0NvbnRl
eHRHTE1hcC5jb250YWlucyhncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFw
LmdldChncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCiAjZW5kaWYKIHZvaWQgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJOb3dQbGF5aW5nSW5mbygpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApp
bmRleCBlYmIwZDAwOGYzZDcxMjkyMTdiOGU5NmVmYTE5YmQ1MWZmYWZhMTY3Li5iZmY1YzQ0ZTNl
MjljOGYzODExODcyYzFlZjFkY2ZkZGZjNzIyYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTExOSw2ICsxMTks
MTAgQEAgcHVibGljOgogICAgIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5JiBpbWFnZURlY29k
ZXJBVkZQcm94eSgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wqIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdM
SWRlbnRpZmllcik7CisjZW5kaWYKKwogICAgIHZvaWQgdGVybWluYXRlV2ViUHJvY2VzcygpOwog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCAwMDE1OWFjOGI1ODZhOGI2MmEz
ZGRhM2E1NzAwNGU4ODNlMTU2ZDA4Li41MDk3ZDNmZmIxNzc1YWViOTU2ODdiMzI0MTliYmZhZDU1
YTA2ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtNjIsNiArNjIsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gY3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOwogICAgIH5S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTCgpIG92ZXJyaWRlOwogCisgICAgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wqIGdyYXBoaWNzQ29udGV4dEdMKCkgeyByZXR1cm4gbV9jb250ZXh0
LnB0cigpOyB9CiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogZ3B1Q29ubmVjdGlvblRv
V2ViUHJvY2VzcygpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKaW5kZXgg
ZTE1NGZjYWFhNzgwYWUwYzMzNmJiZGUzM2ViN2RiNTY4YzI4NzE0OS4uOGQzMDQ2YTBiMzg1YjA4
Mzk4OGFlY2ZiNTQ0MzcyMjc5ODE0MzY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlclByb3h5LmgiCiAjaW5jbHVkZSAiUmVt
b3RlQXVkaW9UcmFja1Byb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
aCIKICNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1GYWN0b3J5UHJveHkuaCIKICNpbmNsdWRlICJS
ZW1vdGVMZWdhY3lDRE1TZXNzaW9uUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXll
ck1hbmFnZXJQcm94eS5oIgpAQCAtMzczLDYgKzM3NCwxNyBAQCB2b2lkIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHk6Om1lZGlhUGxheWVyRW5naW5lRmFpbGVkVG9Mb2FkKCkgY29uc3QKICAgICBtX3dl
YlByb2Nlc3NDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OkVuZ2luZUZhaWxlZFRvTG9hZChtX3BsYXllci0+cGxhdGZvcm1FcnJvckNvZGUoKSksIG1f
aWQpOwogfQogCisjaWYgRU5BQkxFKFdFQkdMKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5
Ojpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIHVpbnQzMl90IHRleHR1cmUsIHVpbnQzMl90IHRhcmdldCwgaW50
MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxGb3JtYXQsIHVpbnQzMl90IGZvcm1hdCwgdWlu
dDMyX3QgdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8qIHJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMID0gbV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoKS5yZW1vdGVHcmFwaGljc0NvbnRleHRHTChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisK
KyAgICBjb21wbGV0aW9uSGFuZGxlcihtX3BsYXllci0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZv
cm1UZXh0dXJlKHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMLT5ncmFwaGljc0NvbnRleHRHTCgpLCB0
ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVt
dWx0aXBseUFscGhhLCBmbGlwWSkpOworfQorI2VuZGlmCisKICNpZiBFTkFCTEUoTEVHQUNZX0VO
Q1JZUFRFRF9NRURJQSkKIFN0cmluZyBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXll
ck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXgg
MTU0MzBlODllMzIwYzQ1MDc4ODg1MDBkYzdiM2RlYjc5MTI2MjdkOS4uMjUxNmVkMmU3YzM1YjQ2
MzNlYWJjZWY5NjRkMmU2ZTBlMWMyMWNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC0yOCw2ICsyOCw3
IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETVNlc3Npb25JZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uLmgiCkBAIC0xNDgs
NiArMTQ5LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFZpZGVvSW5saW5lU2l6ZUZlbmNlZChj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiwgY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0Jik7CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShXRUJHTCkKKyAgICB2b2lkIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRm
b3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIHVpbnQzMl90IHRleHR1cmUs
IHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxGb3JtYXQs
IHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBi
b29sIGZsaXBZLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyNlbmRpZgorCiAj
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB2b2lkIHNldFdpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpOwogICAgIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxh
eWJhY2tUYXJnZXQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IDgzNjdlYzNmYjMyOGE4NWY5NGFmMzNjMzJkN2IxZTAyMzViZTQyYjUuLmU3YjBmM2Y1MzkzNWJh
OTY5Yzk2ZTZjYzhhZjIwNzUxZTEyMzViNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC03Myw2ICs3MywxMCBAQCBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllclBy
b3h5IE5vdFJlZkNvdW50ZWQgewogICAgICMgUGFpbnQKICAgICAjIFBhaW50Q3VycmVudEZyYW1l
SW5Db250ZXh0CiAKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgQ29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKFdlYktpdDo6R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIHVpbnQzMl90IHRleHR1cmUsIHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWlu
dDMyX3QgaW50ZXJuYWxGb3JtYXQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgYm9v
bCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5jaHJv
bm91cworI2VuZGlmCisKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAg
IFNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wgZGlzYWJsZWQpCiAgICAgIyBT
ZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCmluZGV4IDZkZTFkZGMwYWMxYjMwMzEyZTQ1NzdmNmYzZTU5ZjkwYzJkZDI1ZTEuLjg2
ZWY3YTAwYmFhMzlhODMzYzY0Yjk4YjA4NWYxMjQwOWVkMTRhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0z
OSw2ICszOSw3IEBACiAjaW5jbHVkZSAiUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXIu
aCIKICNpbmNsdWRlICJSZW1vdGVDRE1GYWN0b3J5LmgiCiAjaW5jbHVkZSAiUmVtb3RlQ0RNUHJv
eHkuaCIKKyNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgiCiAjaW5jbHVk
ZSAiUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhRW5naW5l
Q29uZmlndXJhdGlvbkZhY3RvcnkuaCIKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllck1hbmFn
ZXIuaCIKQEAgLTE0NSw2ICsxNDYsMjggQEAgUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeSYgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb246OmxlZ2FjeUNETUZhY3RvcnkoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoV0VCR0wpCit2b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpyZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5Q3JlYXRlZChjb25zdCBHcmFwaGljc0NvbnRleHRHTCogZ3JhcGhpY3NDb250ZXh0
R0wsIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIEFTU0VS
VCghbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXJNYXAuY29udGFpbnMoZ3JhcGhpY3NDb250
ZXh0R0wpKTsKKyAgICBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllck1hcC5hZGQoZ3JhcGhp
Y3NDb250ZXh0R0wsIGlkZW50aWZpZXIpOworfQorCit2b2lkIEdQVVByb2Nlc3NDb25uZWN0aW9u
OjpyZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RGVzdHJveWVkKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dEdMKiBncmFwaGljc0NvbnRleHRHTCkKK3sKKyAgICBBU1NFUlQobV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXJNYXAuY29udGFpbnMoZ3JhcGhpY3NDb250ZXh0R0wpKTsKKyAgICBtX2dy
YXBoaWNzQ29udGV4dEdMSWRlbnRpZmllck1hcC5yZW1vdmUoZ3JhcGhpY3NDb250ZXh0R0wpOwor
fQorCitPcHRpb25hbDxHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXI+IEdQVVByb2Nlc3NDb25u
ZWN0aW9uOjpncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0
R0wqIGdyYXBoaWNzQ29udGV4dEdMKSBjb25zdAoreworICAgIGlmICghbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXJNYXAuY29udGFpbnMoZ3JhcGhpY3NDb250ZXh0R0wpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyTWFwLmdldChncmFwaGljc0NvbnRleHRHTCk7Cit9CisjZW5kaWYKKwogUmVtb3RlTWVk
aWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeSYgR1BVUHJvY2Vzc0Nvbm5lY3Rpb246Om1lZGlh
RW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkoKQogewogICAgIHJldHVybiAqV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuc3VwcGxlbWVudDxSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0
b3J5PigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9j
ZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
Q29ubmVjdGlvbi5oCmluZGV4IDBiN2JmOGE5NzFmNjZhZGFiNTFkYzczNTUxYzhhMDEzZDcxZTk0
ZmMuLmE2YmY2Y2UyNTg2YzJiNGVmMzU4NGU1NDM1NjE0MjIxM2YwNzA4OGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmgKQEAg
LTI4LDE0ICsyOCwyMCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJTYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lZGlhU2Vzc2lv
bi5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgR3JhcGhpY3NDb250ZXh0R0w7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBSZW1vdGVBdWRpb1NvdXJjZVByb3ZpZGVyTWFuYWdlcjsKQEAgLTg4LDYgKzk0LDEyIEBA
IHB1YmxpYzoKICAgICBib29sIGlzVlBTV0RlY29kZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9lbmFibGVWUDlTV0RlY29kZXI7IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQkdMKQorICAg
IHZvaWQgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNyZWF0ZWQoY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0wqLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworICAgIHZv
aWQgcmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eURlc3Ryb3llZChjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTCopOworICAgIE9wdGlvbmFsPEdyYXBoaWNzQ29udGV4dEdMSWRlbnRp
Zmllcj4gZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMKikgY29uc3Q7CisjZW5kaWYKKwogICAgIGNsYXNzIENsaWVudCA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxDbGllbnQ+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkNs
aWVudCgpID0gZGVmYXVsdDsKQEAgLTEyOCw2ICsxNDAsOSBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9lbmFibGVWUDhEZWNvZGVyIHsgZmFsc2UgfTsKICAgICBib29sIG1fZW5hYmxlVlA5RGVjb2Rl
ciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2VuYWJsZVZQOVNXRGVjb2RlciB7IGZhbHNlIH07Cisj
ZW5kaWYKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgSGFzaE1hcDxjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTCosIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcj4gbV9ncmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXJNYXA7CiAjZW5kaWYKICAgICBXZWFrSGFzaFNldDxDbGllbnQ+IG1f
Y2xpZW50czsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApp
bmRleCBmMjliZTAwNmViN2I5NzY0Yjc4MmQ5MTYyNWM4MDE2MGZmOGYzNmYzLi4wODVmNTAyZWEw
OWVkYTgwNjIwYTNiNTZkMTM1ZTNiZjBmMjBkZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTU0LDExICs1NCwxMyBAQCBSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5KEdQVVByb2Nlc3NDb25u
ZWN0aW9uJgogewogICAgIGdwdVByb2Nlc3NDb25uZWN0aW9uLmFkZENsaWVudCgqdGhpcyk7CiAg
ICAgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLnRvVUludDY0KCksICp0
aGlzKTsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5yZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5Q3JlYXRlZCh0aGlzLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7CiAgICAg
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNy
ZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGF0dHJzLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
ciksIDAsIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9y
U3luY1JlcGx5KTsKIH0KIAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6flJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkoKQogeworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPnJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlEZXN0cm95ZWQodGhpcyk7CiAgICAgZGlzY29ubmVj
dEdwdVByb2Nlc3NJZk5lZWRlZCgpOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHBsYXRmb3Jt
U3dhcENoYWluKCkucmVjeWNsZUJ1ZmZlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3Bw
CmluZGV4IGEyZjAxNjdlZjljOWQ2ZTNkM2FhYTk1ZDE4NDdlZTkzMGQ0Y2ViZjIuLjFlMGRjMzY5
N2IwZjFlZTg1NGY5MmFmM2NiOWNjZjM3YWE2ODZjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZS5jcHAKQEAgLTg0OCwxMCArODQ4LDIyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NH
TGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKQorYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCog
Y29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKKyNpZiBFTkFC
TEUoV0VCR0wpCisgICAgYXV0byBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgPSBtX21hbmFn
ZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoY29u
dGV4dCk7CisgICAgaWYgKCFncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisgICAgaWYgKCFjb25uZWN0
aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgqZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCB0
ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVt
dWx0aXBseUFscGhhLCBmbGlwWSksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpD
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmU6OlJlcGx5KHJlc3VsdCksIG1faWQpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gcmVzdWx0OworI2Vsc2UKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBSZWZQdHI8
TmF0aXZlSW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420918</attachid>
            <date>2021-02-18 21:21:55 -0800</date>
            <delta_ts>2021-02-19 09:53:03 -0800</delta_ts>
            <desc>Version A</desc>
            <filename>bug-218184-20210218212154.patch</filename>
            <type>text/plain</type>
            <size>16243</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE4YmFiNjNiZjY3Mjdk
ODAwZWVjOTI2MTMyZjVhYmM2YWRkNDdhMC4uODk5YjUyZmNjOWE2NWEzODZiZDI2OTVkY2U1YmNi
ZmJhZjljZTNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTAyLTE4ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgVmlkZW8gZWxlbWVudHMgZG8g
bm90IHdvcmsgYXMgc291cmNlcyBmb3IgVGV4SW1hZ2UyRCBjYWxscyBpbiBHUFUgUHJvY2Vzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFudWFsbHkg
dGVzdGVkLgorICAgICAgICBXZSBuZWVkIHRvIGVuYWJsZSBib3RoICJHUFUgUHJvY2VzczogTWVk
aWEiIGFuZCAiR1BVIFByb2Nlc3M6IFdlYkdMIiB0byB0ZXN0IHRoZSBmZWF0dXJlLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMOjppc1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkg
Y29uc3QpOgorCiAyMDIxLTAyLTE4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBUZW1wb3JhcmlseSBkaXNhYmxlIGRyYXdp
bmcgT1QtU1ZHIGdseXBocyBpbiB0aGUgR1BVIHByb2Nlc3MgdW50aWwgaXQgY2FuIGJlIGltcGxl
bWVudGVkIHByb3Blcmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRlZTZlNDlmMzEzZmJkZjA0Y2NhMzQ3ZmJjMzAz
NWMyMTIzMTQ2ZWYuLjAyOGRlYzYyNjlhZWQ0NGFjMGRkNWJhZDJjZDI2MzZhY2NjOWM1OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjEtMDItMTggIFBlbmcgTGl1ICA8cGVuZy5saXU2
QGFwcGxlLmNvbT4KKworICAgICAgICBWaWRlbyBlbGVtZW50cyBkbyBub3Qgd29yayBhcyBzb3Vy
Y2VzIGZvciBUZXhJbWFnZTJEIGNhbGxzIGluIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxODQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgSVBDIG1lc3NhZ2UgYFJl
bW90ZU1lZGlhUGxheWVyUHJveHk6OkNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZWAK
KyAgICAgICAgdG8gaW1wbGVtZW50IGBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgpYCBpbiB0aGUKKyAgICAgICAgV2ViIHByb2Nlc3Mu
CisKKyAgICAgICAgKiBHUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdGVHcmFwaGlj
c0NvbnRleHRHTCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmg6CisgICAgICAgIEFkZCB0aGlzIGZ1bmN0aW9uIHRvIGdldCB0aGUgY29ycmVzcG9uZGlu
ZyBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBvYmplY3QgZnJvbQorICAgICAgICBhIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllci4gYFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgpYAorICAgICAgICBuZWVkcyB0aGlzIGZ1bmN0aW9uIHRv
IGdldCB0aGUgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgb2JqZWN0IGZyb20gdGhlIGlkZW50aWZp
ZXIgaW4KKyAgICAgICAgYW4gSVBDIG1lc3NhZ2UgYFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkNv
cHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZWAuCisKKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmg6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpncmFwaGljc0NvbnRleHRHTCk6CisKKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5t
ZXNzYWdlcy5pbjoKKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vzc0Nvbm5lY3Rpb246OnJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6R1BVUHJvY2Vz
c0Nvbm5lY3Rpb246OnJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlEZXN0cm95ZWQpOgorICAg
ICAgICAoV2ViS2l0OjpHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Z3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVj
dGlvbi5oOgorICAgICAgICBBZGQgdGhlIHN1cHBvcnQgdG8gZ2V0IHRoZSBHcmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIgZnJvbSB0aGUgcG9pbnRlciBvZgorICAgICAgICBhIEdyYXBoaWNzQ29u
dGV4dEdMIG9iamVjdCAod2hpY2ggd2lsbCBiZSBhIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkgb2JqZWN0IHdoZW4KKyAgICAgICAgIkdQVSBQcm9jZXNzOiBXZWJHTCIgaXMgZW5hYmxlZC4p
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6On5SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNvcHlW
aWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisKIDIwMjEtMDItMTggIFBlciBBcm5lIFZv
bGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFJlbW92ZSBhY2Nlc3Mg
dG8gQXBwbGVKUEVHRHJpdmVyVXNlckNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGUxNjdlYzAyNjQ0
MjA1Njk4N2JlOThlNTQ3OTZjNjMxNjU1OTYxNjcuLmMzMzYyYjljYjU3Y2E0YjVhNjJlYTExZjJl
MjU0N2Q1NjZlM2Q1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9HUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTM1NCw2ICszNTQsMTYgQEAgdm9pZCBH
UFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0R0woR3JhcGhp
Y3NDb250ZXh0R0xJZGVudGkKICAgICBib29sIGZvdW5kID0gbV9yZW1vdGVHcmFwaGljc0NvbnRl
eHRHTE1hcC5yZW1vdmUoZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKICAgICBBU1NFUlRf
VU5VU0VEKGZvdW5kLCBmb3VuZCk7CiB9CisKK1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMKiBHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdGVHcmFwaGljc0NvbnRleHRHTChHcmFwaGljc0Nv
bnRleHRHTElkZW50aWZpZXIgZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKQoreworICAgIEFT
U0VSVChtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmNvbnRhaW5zKGdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllcikpOworICAgIGlmICghbV9yZW1vdGVHcmFwaGljc0NvbnRleHRHTE1hcC5j
b250YWlucyhncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIHJldHVybiBtX3JlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWFwLmdldChncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCiAjZW5kaWYKIHZvaWQgR1BVQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y2xlYXJOb3dQbGF5aW5nSW5mbygpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL0dQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA1ZTgy
MDMzNTdmNzgxZmRjMDUzZTE1ZGNjOGZjOGUxNTk2MDQ0ZTQ2Li44NzdiYTg1NjE3N2MxOTBlMTA1
MzM3MDg3N2I1MzViMDdiZjNkM2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9HUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTExOSw2ICsxMTksMTAgQEAgcHVi
bGljOgogICAgIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5JiBpbWFnZURlY29kZXJBVkZQcm94
eSgpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wqIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmll
cik7CisjZW5kaWYKKwogICAgIHZvaWQgdGVybWluYXRlV2ViUHJvY2VzcygpOwogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCBhYWE1NzQ5ZDBiYzU0NjQ2YjJjMWY4ZjRjMzll
NThiZGE5NjFlODRmLi5iMzAwYWQ3YjE2YTRiYmRhYjc2MGJjMmUyYWM1ZmEzODJmMmNhYjVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlKGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQmKTsKICAgICB+UmVtb3RlR3JhcGhpY3NDb250ZXh0R0woKSBvdmVycmlkZTsKIAorICAg
IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKiBncmFwaGljc0NvbnRleHRHTCgpIHsg
cmV0dXJuIG1fY29udGV4dC5wdHIoKTsgfQogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mq
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdDsKIAogcHJvdGVjdGVkOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuY3BwCmluZGV4IGUxNTRmY2FhYTc4MGFlMGMzMzZiYmRlMzNlYjdkYjU2OGMyODcxNDku
LjhkMzA0NmEwYjM4NWIwODM5ODhhZWNmYjU0NDM3MjI3OTgxNDM2OGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVSZW1v
dGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU291cmNlUHJvdmlkZXJQcm94eS5o
IgogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvVHJhY2tQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLmgiCiAjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNRmFjdG9yeVByb3h5
LmgiCiAjaW5jbHVkZSAiUmVtb3RlTGVnYWN5Q0RNU2Vzc2lvblByb3h5LmgiCiAjaW5jbHVkZSAi
UmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkuaCIKQEAgLTM3Myw2ICszNzQsMTcgQEAgdm9p
ZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckVuZ2luZUZhaWxlZFRvTG9hZCgp
IGNvbnN0CiAgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpFbmdpbmVGYWlsZWRUb0xvYWQobV9wbGF5ZXItPnBsYXRmb3Jt
RXJyb3JDb2RlKCkpLCBtX2lkKTsKIH0KIAorI2lmIEVOQUJMRShXRUJHTCkKK3ZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50
MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50
MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBm
bGlwWSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBhdXRvKiByZW1vdGVHcmFwaGljc0NvbnRleHRHTCA9IG1fbWFuYWdlci5ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCkucmVtb3RlR3JhcGhpY3NDb250ZXh0R0woaWRlbnRpZmllcik7
CisgICAgaWYgKCFyZW1vdGVHcmFwaGljc0NvbnRleHRHTCkKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOworCisgICAgY29tcGxldGlvbkhhbmRsZXIobV9wbGF5ZXItPmNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShyZW1vdGVHcmFwaGljc0NvbnRleHRHTC0+Z3JhcGhp
Y3NDb250ZXh0R0woKSwgdGV4dHVyZSwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZv
cm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpKTsKK30KKyNlbmRpZgorCiAjaWYg
RU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCiBTdHJpbmcgUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6bWVkaWFQbGF5ZXJNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5oCmluZGV4IDE1NDMwZTg5ZTMyMGM0NTA3ODg4NTAwZGM3YjNkZWI3OTEyNjI3ZDku
LjI1MTZlZDJlN2MzNWI0NjMzZWFiY2VmOTY0ZDJlNmUwZTFjMjFjY2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
aApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVMZWdhY3lDRE1T
ZXNzaW9uSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJh
dGlvbi5oIgpAQCAtMTQ4LDYgKzE0OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRWaWRlb0lu
bGluZVNpemVGZW5jZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGNvbnN0IFdURjo6TWFjaFNl
bmRSaWdodCYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgdm9pZCBjb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCB1
aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90
IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CisjZW5kaWYKKwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAg
dm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKTsKICAgICB2b2lkIHNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5t
ZXNzYWdlcy5pbgppbmRleCA4MzY3ZWMzZmIzMjhhODVmOTRhZjMzYzMyZDdiMWUwMjM1YmU0MmI1
Li5lN2IwZjNmNTM5MzViYTk2OWM5NmU2Y2M4YWYyMDc1MWUxMjM1YjU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtNzMsNiArNzMsMTAgQEAgbWVzc2FnZXMgLT4gUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKICAgICAjIFBhaW50CiAgICAgIyBQ
YWludEN1cnJlbnRGcmFtZUluQ29udGV4dAogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIENvcHlW
aWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShXZWJLaXQ6OkdyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllciBpZGVudGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGlu
dDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVp
bnQzMl90IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgLT4gKGJvb2wg
c3VjY2VzcykgU3luY2hyb25vdXMKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKICAgICBTZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sIGRp
c2FibGVkKQogICAgICMgU2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChXZWJDb3JlOjpNZWRpYVBs
YXliYWNrVGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9H
UFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQ
VVByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA2ZGUxZGRjMGFjMWIzMDMxMmU0NTc3ZjZmM2U1
OWY5MGMyZGQyNWUxLi44NmVmN2EwMGJhYTM5YTgzM2M2NGI5OGIwODVmMTI0MDllZDE0YTYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25u
ZWN0aW9uLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIlJlbW90ZUF1ZGlvU291cmNl
UHJvdmlkZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVtb3RlQ0RNRmFjdG9yeS5oIgogI2luY2x1
ZGUgIlJlbW90ZUNETVByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZUxlZ2FjeUNETUZhY3RvcnkuaCIKICNpbmNsdWRlICJS
ZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmgiCiAjaW5jbHVkZSAiUmVtb3Rl
TWVkaWFQbGF5ZXJNYW5hZ2VyLmgiCkBAIC0xNDUsNiArMTQ2LDI4IEBAIFJlbW90ZUxlZ2FjeUNE
TUZhY3RvcnkmIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpsZWdhY3lDRE1GYWN0b3J5KCkKIH0KICNl
bmRpZgogCisjaWYgRU5BQkxFKFdFQkdMKQordm9pZCBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6cmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNyZWF0ZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0R0wq
IGdyYXBoaWNzQ29udGV4dEdMLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgaWRlbnRpZmll
cikKK3sKKyAgICBBU1NFUlQoIW1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyTWFwLmNvbnRh
aW5zKGdyYXBoaWNzQ29udGV4dEdMKSk7CisgICAgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXJNYXAuYWRkKGdyYXBoaWNzQ29udGV4dEdMLCBpZGVudGlmaWVyKTsKK30KKwordm9pZCBHUFVQ
cm9jZXNzQ29ubmVjdGlvbjo6cmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eURlc3Ryb3llZChj
b25zdCBHcmFwaGljc0NvbnRleHRHTCogZ3JhcGhpY3NDb250ZXh0R0wpCit7CisgICAgQVNTRVJU
KG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyTWFwLmNvbnRhaW5zKGdyYXBoaWNzQ29udGV4
dEdMKSk7CisgICAgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXJNYXAucmVtb3ZlKGdyYXBo
aWNzQ29udGV4dEdMKTsKK30KKworT3B0aW9uYWw8R3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVy
PiBHUFVQcm9jZXNzQ29ubmVjdGlvbjo6Z3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKGNvbnN0
IEdyYXBoaWNzQ29udGV4dEdMKiBncmFwaGljc0NvbnRleHRHTCkgY29uc3QKK3sKKyAgICBpZiAo
IW1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyTWFwLmNvbnRhaW5zKGdyYXBoaWNzQ29udGV4
dEdMKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBtX2dyYXBo
aWNzQ29udGV4dEdMSWRlbnRpZmllck1hcC5nZXQoZ3JhcGhpY3NDb250ZXh0R0wpOworfQorI2Vu
ZGlmCisKIFJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkmIEdQVVByb2Nlc3ND
b25uZWN0aW9uOjptZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5KCkKIHsKICAgICByZXR1
cm4gKldlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8UmVtb3RlTWVkaWFFbmdpbmVD
b25maWd1cmF0aW9uRmFjdG9yeT4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCAwYjdiZjhhOTcxZjY2YWRhYjUxZGM3
MzU1MWM4YTAxM2Q3MWU5NGZjLi5hNmJmNmNlMjU4NmMyYjRlZjM1ODRlNTQzNTYxNDIyMTNmMDcw
ODhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3ND
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
Q29ubmVjdGlvbi5oCkBAIC0yOCwxNCArMjgsMjAgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAi
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVyTWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1NZWRpYVNlc3Npb24uaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEdMOworfQorCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgUmVtb3RlQXVkaW9Tb3VyY2VQcm92aWRlck1hbmFnZXI7CkBA
IC04OCw2ICs5NCwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1ZQU1dEZWNvZGVyRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlVlA5U1dEZWNvZGVyOyB9CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShXRUJHTCkKKyAgICB2b2lkIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlDcmVhdGVk
KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMKiwgR3JhcGhpY3NDb250ZXh0R0xJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlEZXN0cm95ZWQo
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0wqKTsKKyAgICBPcHRpb25hbDxHcmFwaGlj
c0NvbnRleHRHTElkZW50aWZpZXI+IGdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcihjb25zdCBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTCopIGNvbnN0OworI2VuZGlmCisKICAgICBjbGFzcyBD
bGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q2xpZW50PiB7CiAgICAgcHVibGljOgogICAg
ICAgICB2aXJ0dWFsIH5DbGllbnQoKSA9IGRlZmF1bHQ7CkBAIC0xMjgsNiArMTQwLDkgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fZW5hYmxlVlA4RGVjb2RlciB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2VuYWJsZVZQOURlY29kZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9lbmFibGVWUDlTV0RlY29k
ZXIgeyBmYWxzZSB9OworI2VuZGlmCisjaWYgRU5BQkxFKFdFQkdMKQorICAgIEhhc2hNYXA8Y29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0wqLCBHcmFwaGljc0NvbnRleHRHTElkZW50aWZp
ZXI+IG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyTWFwOwogI2VuZGlmCiAgICAgV2Vha0hh
c2hTZXQ8Q2xpZW50PiBtX2NsaWVudHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5jcHAKaW5kZXggYzA1MjkyMWUwMTdlOGMzYzYyMTQ4NGUxMzk3YjgzYjNmYmZm
ZDFiMC4uYTFjOGZmODdjOGQzODJlYzYxMjNjNmZkNDMxMTY3OWRhMDc2YzMwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCkBAIC01NSwxMSArNTUsMTMgQEAg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYKIHsKICAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5h
ZGRDbGllbnQoKnRoaXMpOwogICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPm1lc3NhZ2VSZWNl
aXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRl
bnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+
cmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUNyZWF0ZWQodGhpcywgbV9ncmFwaGljc0NvbnRl
eHRHTElkZW50aWZpZXIpOwogICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpHUFVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVHcmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciwgcmVuZGVyaW5nQmFja2VuZCksIDAsIElQQzo6
U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsK
IH0KIAogUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6flJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHkoKQogeworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPnJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHlEZXN0cm95ZWQodGhpcyk7CiAgICAgZGlzY29ubmVjdEdwdVByb2Nlc3NJ
Zk5lZWRlZCgpOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHBsYXRmb3JtU3dhcENoYWluKCku
cmVjeWNsZUJ1ZmZlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IGEyZjAx
NjdlZjljOWQ2ZTNkM2FhYTk1ZDE4NDdlZTkzMGQ0Y2ViZjIuLjFlMGRjMzY5N2IwZjFlZTg1NGY5
MmFmM2NiOWNjZjM3YWE2ODZjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAg
LTg0OCwxMCArODQ4LDIyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAotYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTCosIFBsYXRm
b3JtR0xPYmplY3QsIEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xl
bnVtLCBib29sLCBib29sKQorYm9vbCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgUGxh
dGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdD
R0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKKyNpZiBFTkFCTEUoV0VCR0wpCisg
ICAgYXV0byBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIgPSBtX21hbmFnZXIuZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24oKS5ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoY29udGV4dCk7CisgICAg
aWYgKCFncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisgICAgaWYgKCFjb25uZWN0aW9uKCkuc2VuZFN5
bmMoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkNvcHlWaWRlb1RleHR1cmVUb1Bs
YXRmb3JtVGV4dHVyZSgqZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyLCB0ZXh0dXJlLCB0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhh
LCBmbGlwWSksIE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpDb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmU6OlJlcGx5KHJlc3VsdCksIG1faWQpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXR1cm4gcmVzdWx0OworI2Vsc2UKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBSZWZQdHI8TmF0aXZlSW1hZ2U+
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420924</attachid>
            <date>2021-02-18 22:37:40 -0800</date>
            <delta_ts>2021-02-18 23:09:25 -0800</delta_ts>
            <desc>Version B</desc>
            <filename>bug-218184-20210218223740.patch</filename>
            <type>text/plain</type>
            <size>13961</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE4YmFiNjNiZjY3Mjdk
ODAwZWVjOTI2MTMyZjVhYmM2YWRkNDdhMC4uOGJjYTM3MTlhM2Q4OWRlMjQxNmY1MzMxZDE4MWVk
YmEwODJhZjJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTAyLTE4ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgVmlkZW8gZWxlbWVudHMgZG8g
bm90IHdvcmsgYXMgc291cmNlcyBmb3IgVGV4SW1hZ2UyRCBjYWxscyBpbiBHUFUgUHJvY2Vzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgZnVu
Y3Rpb24gYEdyYXBoaWNzQ29udGV4dEdMOjpjb3B5VGV4dHVyZUZyb21NZWRpYSgpYCB3aGljaCBj
YW4gYmUgdXNlZCBieSB0aGUgZ3JhcGhpY3MgY29udGV4dAorICAgICAgICB0byBjb3B5IHZpZGVv
IHRleHR1cmUgZnJvbSBhIHZpZGVvIGVsZW1lbnQgKHBsYXllcikuCisKKyAgICAgICAgTWFudWFs
bHkgdGVzdGVkLgorICAgICAgICBXZSBuZWVkIHRvIGVuYWJsZSBib3RoICJHUFUgUHJvY2Vzczog
TWVkaWEiIGFuZCAiR1BVIFByb2Nlc3M6IFdlYkdMIiB0byB0ZXN0IHRoZSBmZWF0dXJlLgorCisg
ICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxWaWRlb0VsZW1lbnQ6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5VGV4dHVyZUZyb21NZWRp
YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmg6CisKIDIwMjEtMDItMTggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIFRlbXBvcmFyaWx5IGRpc2FibGUgZHJh
d2luZyBPVC1TVkcgZ2x5cGhzIGluIHRoZSBHUFUgcHJvY2VzcyB1bnRpbCBpdCBjYW4gYmUgaW1w
bGVtZW50ZWQgcHJvcGVybHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNGVlNmU0OWYzMTNmYmRmMDRjY2EzNDdmYmMz
MDM1YzIxMjMxNDZlZi4uYTNhMDIwOWU2YTM0OWMxYzgxNjYyN2RhNWJmZGMxMTk0N2UxNzU3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMS0wMi0xOCAgUGVuZyBMaXUgIDxwZW5nLmxp
dTZAYXBwbGUuY29tPgorCisgICAgICAgIFZpZGVvIGVsZW1lbnRzIGRvIG5vdCB3b3JrIGFzIHNv
dXJjZXMgZm9yIFRleEltYWdlMkQgY2FsbHMgaW4gR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODE4NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbiBJUEMgbWVzc2FnZSBgUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXh0dXJlRnJvbU1lZGlhYCB0byBpbXBsZW1lbnQK
KyAgICAgICAgYFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXh0dXJlRnJvbU1l
ZGlhKClgIGluIHRoZSBXZWIgcHJvY2Vzcy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Y29weVRleHR1cmVGcm9tTWVkaWEpOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpj
b3B5VGV4dHVyZUZyb21NZWRpYSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgorCiAyMDIxLTAyLTE4ICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBSZW1vdmUgYWNjZXNz
IHRvIEFwcGxlSlBFR0RyaXZlclVzZXJDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwCmluZGV4IGQ3NjBlMmI1MGRhOTgzYzVlYTMyYmQ2MGEwZTg5YTRmYWE2M2Q2
YzEuLjUzMGM4MThjYzJkNWNmNTZkZTY3MTNmM2JmZWM4MDVkNmVlMjM0NWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtMzAyLDkgKzMwMiwxMSBAQCB2b2lk
IEhUTUxWaWRlb0VsZW1lbnQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29ucwogCiBib29sIEhUTUxWaWRlb0VsZW1lbnQ6OmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgUGxhdGZv
cm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKLSAgICBpZiAoIXBsYXllcigpKQorICAg
IFJlZlB0cjxNZWRpYVBsYXllcj4gcGxheWVyID0gSFRNTE1lZGlhRWxlbWVudDo6cGxheWVyKCk7
CisgICAgaWYgKCFwbGF5ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gcGxh
eWVyKCktPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJl
LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBs
eUFscGhhLCBmbGlwWSk7CisKKyAgICByZXR1cm4gY29udGV4dC0+Y29weVRleHR1cmVGcm9tTWVk
aWEoKnBsYXllciwgdGV4dHVyZSwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1h
dCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQogCiBib29sIEhUTUxWaWRlb0Vs
ZW1lbnQ6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggZjdkYzhh
ZWMxYjBiMzdmYWJhNTM2Y2Q0N2NjMDI1ZjU5N2YwMzc5MS4uMWZhMTY0OTAzNWVlZjBjODhkYmY5
ZmQxZTM1MjBlMmY3Y2I5NzgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgor
I2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTEz
MDUsOSArMTMwNiw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShBVkZPVU5E
QVRJT04pCiAgICAgLy8gUmV0dXJucyBpbnRlcmZhY2UgZm9yIENWIGludGVyYWN0aW9uIGlmIHRo
ZSBmdW5jdGlvbmFsaXR5IGlzIHByZXNlbnQuCiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHRH
TENWKiBhc0NWKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjb3B5VGV4dHVyZUZyb21NZWRpYShN
ZWRpYVBsYXllciYsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpID0gMDsKICNl
bmRpZgogCi0KICAgICBJbnRTaXplIGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkgY29uc3Qg
eyByZXR1cm4gSW50U2l6ZShtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KTsgfQogCiAg
ICAgc3RhdGljIHVuc2lnbmVkIGdldENsZWFyQml0c0J5QXR0YWNobWVudFR5cGUoR0NHTGVudW0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCA4NzhkOGRmMTFkYmJkZmZh
ZDBiMjhhZGMxNzEzNTNhNDJjYjA0ZmQ3Li4wMGNiMWI5ZmEwZjBjYjgzOTlkM2VhMjQwMWYzZjZh
Njc4NDVkZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtMzgsNiAr
MzgsNyBAQAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVndWxhckV4cHJlc3Npb24uaD4KQEAgLTI4MzMs
NiArMjgzNCwxMiBAQCBHcmFwaGljc0NvbnRleHRHTENWKiBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6YXNDVigpCiAgICAgICAgIG1fY3YgPSBtYWtlVW5pcXVlPEdyYXBoaWNzQ29udGV4dEdMQ1ZB
TkdMRT4oKnRoaXMpOwogICAgIHJldHVybiBtX2N2LmdldCgpOwogfQorCitib29sIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjb3B5VGV4dHVyZUZyb21NZWRpYShNZWRpYVBsYXllciYgcGxheWVy
LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQoreworICAgIHJldHVybiBwbGF5
ZXIucGxheWVyUHJpdmF0ZSgpLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUodGhp
cywgdGV4dHVyZSwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwg
cHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOworfQorCiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCBlNDRiZmQ1ZDlmOGFkOWQ3YzUyNzYwMWEyNTJhNzcw
ZWQ0Zjk3OTU1Li4yZTVmNzQzZDZkZmJjNmY4NzZmZmJkZTNiZTllZWQ4NGFiNzQ5YTczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtNTEyLDYgKzUxMiw3IEBAIHB1Ymxp
YzoKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKICAgICBHcmFwaGlj
c0NvbnRleHRHTENWKiBhc0NWKCkgZmluYWw7CisgICAgYm9vbCBjb3B5VGV4dHVyZUZyb21NZWRp
YShNZWRpYVBsYXllciYsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFs
OwogI2VuZGlmCiAKICNpZiAhVVNFKEFOR0xFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5k
ZXggZWEzMTEzYjNmMWQ5ZDQ0YmEzOGM4OWY1MDMxNTgwNzJhOWY1OGY5MC4uNTNkNWFkZmQ1ZGM3
NmU0MmUwZjZhYjFmZDY0MWU5NGQ0MGQ4NWMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3Bw
CkBAIC0xNzcsNiArMTc3LDIyIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBhaW50
SW1hZ2VEYXRhVG9JbWFnZUJ1ZmZlcihSZWZQdHI8V2ViQ29yZTo6SW1hZ2VECiAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKIH0KIAordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y29weVRl
eHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIG1lZGlhUGxheWVy
SWRlbnRpZmllciwgdWludDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxl
dmVsLCB1aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0
eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFksIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBtZWRpYVBsYXllciA9IG1fZ3B1Q29u
bmVjdGlvblRvV2ViUHJvY2Vzcy0+cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKS5tZWRp
YVBsYXllcihtZWRpYVBsYXllcklkZW50aWZpZXIpOworICAgIGlmICghbWVkaWFQbGF5ZXIpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgY29tcGxldGlvbkhhbmRsZXIobV9jb250ZXh0LT5jb3B5VGV4dHVyZUZyb21NZWRp
YSgqbWVkaWFQbGF5ZXIsIHRleHR1cmUsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBm
b3JtYXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggYWFhNTc0OWQw
YmM1NDY0NmIyYzFmOGY0YzM5ZTU4YmRhOTYxZTg0Zi4uZDhlODExODRiZDEwYWJlMWY0OTZkMTE3
YzQ4NGU3ZWVlMDM3ODA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTk1LDYgKzk1LDcg
QEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IodWludDMyX3QgZXJyb3Ip
OwogICAgIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgcGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lk
IGNvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciwgdWlu
dDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBp
bnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11
bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwogCiAjaW5jbHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQu
aCIgLy8gTk9MSU5UCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpp
bmRleCBkMTUwOTU5YWFhNWU1NGEzZWM1MGI3NGEyMjE5NzA4NGIwMGRhNjg5Li5lNjA2MzNmZmQ1
NzY5MmIxOTc0NzI2ZGExNWVjZDNiMDNlNTllOGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0zNiw5ICszNiw5IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgewogICAgIHZvaWQgTm90aWZ5TWFya0NvbnRl
eHRDaGFuZ2VkKCkKICAgICB2b2lkIFN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9yKQog
ICAgIHZvaWQgR2V0RXJyb3IoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3Vz
Ci0gICAgdm9pZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKCkgU3luY2hyb25vdXMKLSAgICB2
b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKCkgU3luY2hyb25vdXMKLQorICAgIHZvaWQg
UGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91cworICAgIHZvaWQgUGFpbnRD
b21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKKyAgICB2b2lkIENvcHlUZXh0dXJl
RnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50
MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGlu
dGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hyb25vdXMKIAog
ICAgIHZvaWQgU2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCiAgICAgdm9pZCBNb3ZlRXJyb3Jz
VG9TeW50aGV0aWNFcnJvckxpc3QoKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmluZGV4IGMwNTI5MjFl
MDE3ZThjM2M2MjE0ODRlMTM5N2I4M2IzZmJmZmQxYjAuLjlmODI4ZTE0NWY2ZDkzNDZkZGI3Nzli
YTc0NjNiMjE3OTlmMzJkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmNwcApAQCAtMTYxLDYgKzE2MSwxOCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
UHJveHk6OnBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciYgYgogICAg
IH0KIH0KIAorYm9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4dHVyZUZy
b21NZWRpYShNZWRpYVBsYXllciYgbWVkaWFQbGF5ZXIsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVy
ZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1h
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEs
IGJvb2wgZmxpcFkpCit7CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlU
ZXh0dXJlRnJvbU1lZGlhKG1lZGlhUGxheWVyLmlkZW50aWZpZXIoKSwgdGV4dHVyZSwgdGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwg
ZmxpcFkpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXh0dXJlRnJv
bU1lZGlhOjpSZXBseShyZXN1bHQpKTsKKyAgICBpZiAoIXNlbmRSZXN1bHQpIHsKKyAgICAgICAg
bWFya0NvbnRleHRMb3N0KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN5
bnRoZXNpemVHTEVycm9yKEdDR0xlbnVtIGVycm9yKQogewogICAgIGlmICghaXNDb250ZXh0TG9z
dCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCmluZGV4IDVjZTU3
Njc2YjA5MDVhNjU3NDA0MmE5ZjU0MzhhNDcxZmI3ZWY5OTAuLjI2NGY3NDU0NjZmZjczNmQyODM4
NTg2ZmE4NjVhOTk5ZGYxZWViNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5oCkBAIC02OSw2ICs2OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bnRoZXNpemVHTEVy
cm9yKEdDR0xlbnVtIGVycm9yKSBmaW5hbDsKICAgICBHQ0dMZW51bSBnZXRFcnJvcigpIGZpbmFs
OwogCisgICAgYm9vbCBjb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllciYs
IFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVs
LCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOworCiAgICAgLy8gRnVu
Y3Rpb25zIHdpdGggYSBnZW5lcmF0ZWQgaW1wbGVtZW50YXRpb24uIFRoaXMgbGlzdCBpcyB1c2Vk
IGJ5IGdlbmVyYXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgogICAgIHZvaWQgc2V0RmFpbE5leHRHUFVT
dGF0dXNDaGVjaygpIGZpbmFsOwogICAgIGJvb2wgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JM
aXN0KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggMWMwMmUxZDA2NTc5YzUzNTFjOWZjMjFmZjhkNjRhNWE3NDc3MDVkNi4uNWVjNjJj
NDYxN2UzMGQ4ODUyMTc4ODBiOTdiZTY4ZDQwZmE5MjJlNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTAyLTE4
ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgVmlkZW8gZWxlbWVu
dHMgZG8gbm90IHdvcmsgYXMgc291cmNlcyBmb3IgVGV4SW1hZ2UyRCBjYWxscyBpbiBHUFUgUHJv
Y2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4
MTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBT
Y3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2w6CisKIDIwMjEtMDItMTggIExhdXJvIE1vdXJhICA8
bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMSUJdIEdhcmRlbmluZyBkZWJ1ZyBPZmZz
Y3JlZW5DYW52YXMgY3Jhc2hlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1n
cHVwLXdlYmdsIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCmluZGV4IGZlOGZh
OWFlNTE3NDBiZGE2M2Y1MTUzZmRhOGYxNmQ3ZTYyYjVmYmYuLjg3NzQ4NGRmODk4YTQxZjVmMTgx
ZDVmZGUxYmI2MTg3M2FkOWFkNTAgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUt
Z3B1cC13ZWJnbAorKysgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKQEAgLTEw
MywxMiArMTAzLDExIEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJl
ZkNvdW50ZWQge3sKICAgICB2b2lkIEdldEVycm9yKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cwogICAgIHZvaWQgUGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5j
aHJvbm91cwogICAgIHZvaWQgUGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25v
dXMKLQorICAgIHZvaWQgQ29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQzMl90IHRleHR1cmUsIHVpbnQzMl90IHRhcmdldCwg
aW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxGb3JtYXQsIHVpbnQzMl90IGZvcm1hdCwg
dWludDMyX3QgdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSAtPiAoYm9v
bCBzdWNjZXNzKSBTeW5jaHJvbm91cwoge30KIH19CiAKICNlbmRpZgotCiAiIiIKICkKIAo=
</data>
<flag name="commit-queue"
          id="439620"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420926</attachid>
            <date>2021-02-18 23:08:01 -0800</date>
            <delta_ts>2021-02-19 14:36:16 -0800</delta_ts>
            <desc>Version B</desc>
            <filename>bug-218184-20210218230759.patch</filename>
            <type>text/plain</type>
            <size>14086</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE4YmFiNjNiZjY3Mjdk
ODAwZWVjOTI2MTMyZjVhYmM2YWRkNDdhMC4uMTBhZDNiMjBlMjkyMDE3NTJkNGQ2YjdiYTMyYzIy
OWI3NThjYWE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTAyLTE4ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgVmlkZW8gZWxlbWVudHMgZG8g
bm90IHdvcmsgYXMgc291cmNlcyBmb3IgVGV4SW1hZ2UyRCBjYWxscyBpbiBHUFUgUHJvY2Vzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgZnVu
Y3Rpb24gYEdyYXBoaWNzQ29udGV4dEdMOjpjb3B5VGV4dHVyZUZyb21NZWRpYSgpYCB3aGljaCBj
YW4gYmUgdXNlZCBieSB0aGUgZ3JhcGhpY3MgY29udGV4dAorICAgICAgICB0byBjb3B5IHZpZGVv
IHRleHR1cmUgZnJvbSBhIHZpZGVvIGVsZW1lbnQgKHBsYXllcikuCisKKyAgICAgICAgTWFudWFs
bHkgdGVzdGVkLgorICAgICAgICBXZSBuZWVkIHRvIGVuYWJsZSBib3RoICJHUFUgUHJvY2Vzczog
TWVkaWEiIGFuZCAiR1BVIFByb2Nlc3M6IFdlYkdMIiB0byB0ZXN0IHRoZSBmZWF0dXJlLgorCisg
ICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxWaWRlb0VsZW1lbnQ6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvcHlUZXh0dXJlRnJvbU1l
ZGlhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaDoKKwogMjAyMS0wMi0xOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRA
YXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gVGVtcG9yYXJpbHkgZGlzYWJsZSBk
cmF3aW5nIE9ULVNWRyBnbHlwaHMgaW4gdGhlIEdQVSBwcm9jZXNzIHVudGlsIGl0IGNhbiBiZSBp
bXBsZW1lbnRlZCBwcm9wZXJseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0ZWU2ZTQ5ZjMxM2ZiZGYwNGNjYTM0N2Zi
YzMwMzVjMjEyMzE0NmVmLi5hM2EwMjA5ZTZhMzQ5YzFjODE2NjI3ZGE1YmZkYzExOTQ3ZTE3NTcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTAyLTE4ICBQZW5nIExpdSAgPHBlbmcu
bGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgVmlkZW8gZWxlbWVudHMgZG8gbm90IHdvcmsgYXMg
c291cmNlcyBmb3IgVGV4SW1hZ2UyRCBjYWxscyBpbiBHUFUgUHJvY2VzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTg0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFuIElQQyBtZXNzYWdlIGBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleHR1cmVGcm9tTWVkaWFgIHRvIGltcGxlbWVu
dAorICAgICAgICBgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleHR1cmVGcm9t
TWVkaWEoKWAgaW4gdGhlIFdlYiBwcm9jZXNzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjb3B5VGV4dHVyZUZyb21NZWRpYSk6CisgICAgICAgICogR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvcHlUZXh0dXJlRnJvbU1lZGlhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisKIDIwMjEtMDItMTggIFBlciBBcm5l
IFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFJlbW92ZSBhY2Nl
c3MgdG8gQXBwbGVKUEVHRHJpdmVyVXNlckNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHAKaW5kZXggZDc2MGUyYjUwZGE5ODNjNWVhMzJiZDYwYTBlODlhNGZhYTYz
ZDZjMS4uNTMwYzgxOGNjMmQ1Y2Y1NmRlNjcxM2YzYmZlYzgwNWQ2ZWUyMzQ1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0zMDIsOSArMzAyLDExIEBAIHZv
aWQgSFRNTFZpZGVvRWxlbWVudDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zCiAKIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6Y29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0LCBQbGF0
Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NH
TGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9v
bCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQogewotICAgIGlmICghcGxheWVyKCkpCisg
ICAgUmVmUHRyPE1lZGlhUGxheWVyPiBwbGF5ZXIgPSBIVE1MTWVkaWFFbGVtZW50OjpwbGF5ZXIo
KTsKKyAgICBpZiAoIXBsYXllcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBw
bGF5ZXIoKS0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKGNvbnRleHQsIHRleHR1
cmUsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11bHRp
cGx5QWxwaGEsIGZsaXBZKTsKKworICAgIHJldHVybiBjb250ZXh0LT5jb3B5VGV4dHVyZUZyb21N
ZWRpYSgqcGxheWVyLCB0ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9y
bWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CiAKIGJvb2wgSFRNTFZpZGVv
RWxlbWVudDo6aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCBmN2Rj
OGFlYzFiMGIzN2ZhYmE1MzZjZDQ3Y2MwMjVmNTk3ZjAzNzkxLi4wYmNkZjljMGZlYjBhMjk1MWE1
MjBlYWIzZDNlMmRjN2RmNDU2NTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgi
CisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAt
MTMwNiw3ICsxMzA3LDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMgaW50ZXJmYWNlIGZvciBD
ViBpbnRlcmFjdGlvbiBpZiB0aGUgZnVuY3Rpb25hbGl0eSBpcyBwcmVzZW50LgogICAgIHZpcnR1
YWwgR3JhcGhpY3NDb250ZXh0R0xDViogYXNDVigpID0gMDsKICNlbmRpZgotCisgICAgdmlydHVh
bCBib29sIGNvcHlUZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiwgUGxhdGZvcm1HTE9iamVj
dCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVy
bmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlw
bHlBbHBoYSwgYm9vbCBmbGlwWSkgPSAwOwogCiAgICAgSW50U2l6ZSBnZXRJbnRlcm5hbEZyYW1l
YnVmZmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUobV9jdXJyZW50V2lkdGgsIG1fY3Vy
cmVudEhlaWdodCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKaW5k
ZXggNzQ3MTc3ZjI2YTM5YTMwNGQ5ZDlhMGU4MDQ2ZDM2MGVkZjRlZWQwMy4uMDZjMjk3ZGIyOWFj
ZDBiNmNhMjFmMDIxYjk2NTg4ZDc4NDI5OGI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgi
CiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNs
dWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKICNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjUzLDYgKzI1NCwxMSBAQCBSZWZQdHI8SW1hZ2VE
YXRhPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkKIH0K
ICNlbmRpZgogCitib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb3B5VGV4dHVyZUZyb21N
ZWRpYShNZWRpYVBsYXllciYgcGxheWVyLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZs
aXBZKQoreworICAgIHJldHVybiBwbGF5ZXIucGxheWVyUHJpdmF0ZSgpLT5jb3B5VmlkZW9UZXh0
dXJlVG9QbGF0Zm9ybVRleHR1cmUodGhpcywgdGV4dHVyZSwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGU0NGJmZDVkOWY4YWQ5ZDdjNTI3NjAxYTI1
MmE3NzBlZDRmOTc5NTUuLmFiYzM4MGM3M2NhMzkwZmE5N2U2YTRkNDVjZWQyZTJmZDJkMmVjNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC04Niw2ICs4Niw3IEBAIGNs
YXNzIEV4dGVuc2lvbnNHTE9wZW5HTDsKIGNsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBJbWFnZUJ1
ZmZlcjsKIGNsYXNzIEltYWdlRGF0YTsKK2NsYXNzIE1lZGlhUGxheWVyOwogI2lmIFVTRShURVhU
VVJFX01BUFBFUikKIGNsYXNzIFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcjsKICNlbmRp
ZgpAQCAtNDY1LDYgKzQ2Niw4IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiByZWFk
UmVuZGVyaW5nUmVzdWx0c0ZvclBhaW50aW5nKCk7CiAgICAgUmVmUHRyPEltYWdlRGF0YT4gcmVh
ZENvbXBvc2l0ZWRSZXN1bHRzRm9yUGFpbnRpbmcoKTsKIAorICAgIGJvb2wgY29weVRleHR1cmVG
cm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZ
KSBmaW5hbDsKKwogI2lmIFVTRShPUEVOR0wpICYmIEVOQUJMRShXRUJHTDIpCiAgICAgdm9pZCBw
cmltaXRpdmVSZXN0YXJ0SW5kZXgoR0NHTHVpbnQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmNwcAppbmRleCBlYTMxMTNiM2YxZDlkNDRiYTM4Yzg5ZjUwMzE1ODA3MmE5ZjU4ZjkwLi41
M2Q1YWRmZDVkYzc2ZTQyZTBmNmFiMWZkNjQxZTk0ZDQwZDg1YzA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5jcHAKQEAgLTE3Nyw2ICsxNzcsMjIgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6cGFpbnRJbWFnZURhdGFUb0ltYWdlQnVmZmVyKFJlZlB0cjxXZWJDb3JlOjpJbWFnZUQK
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIg
bWVkaWFQbGF5ZXJJZGVudGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQs
IGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQs
IHVpbnQzMl90IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAo
IW1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIG1lZGlhUGxheWVy
ID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQ
cm94eSgpLm1lZGlhUGxheWVyKG1lZGlhUGxheWVySWRlbnRpZmllcik7CisgICAgaWYgKCFtZWRp
YVBsYXllcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX2NvbnRleHQtPmNvcHlUZXh0
dXJlRnJvbU1lZGlhKCptZWRpYVBsYXllciwgdGV4dHVyZSwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAppbmRl
eCBhYWE1NzQ5ZDBiYzU0NjQ2YjJjMWY4ZjRjMzllNThiZGE5NjFlODRmLi5kOGU4MTE4NGJkMTBh
YmUxZjQ5NmQxMTdjNDg0ZTdlZWUwMzc4MDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAt
OTUsNiArOTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcih1aW50
MzJfdCBlcnJvcik7CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworICAgIHZvaWQgY29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVu
dGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IHVpbnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUs
IGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CiAKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oIiAvLyBOT0xJTlQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1l
c3NhZ2VzLmluCmluZGV4IGQxNTA5NTlhYWE1ZTU0YTNlYzUwYjc0YTIyMTk3MDg0YjAwZGE2ODku
LmU2MDYzM2ZmZDU3NjkyYjE5NzQ3MjZkYTE1ZWNkM2IwM2U1OWU4YTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTM2LDkgKzM2LDkgQEAgbWVzc2FnZXMg
LT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7CiAgICAgdm9pZCBOb3Rp
ZnlNYXJrQ29udGV4dENoYW5nZWQoKQogICAgIHZvaWQgU3ludGhlc2l6ZUdMRXJyb3IodWludDMy
X3QgZXJyb3IpCiAgICAgdm9pZCBHZXRFcnJvcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKLSAgICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoKSBTeW5jaHJv
bm91cwotICAgIHZvaWQgUGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoKSBTeW5jaHJvbm91cwot
CisgICAgdm9pZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBQYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91cworICAgIHZvaWQg
Q29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIHVpbnQzMl90IHRleHR1cmUsIHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
dWludDMyX3QgaW50ZXJuYWxGb3JtYXQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
Ym9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5j
aHJvbm91cwogCiAgICAgdm9pZCBTZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKICAgICB2b2lk
IE1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIC0+IChib29sIHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKaW5k
ZXggYzA1MjkyMWUwMTdlOGMzYzYyMTQ4NGUxMzk3YjgzYjNmYmZmZDFiMC4uOWY4MjhlMTQ1ZjZk
OTM0NmRkYjc3OWJhNzQ2M2IyMTc5OWYzMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuY3BwCkBAIC0xNjEsNiArMTYxLDE4IEBAIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVm
ZmVyJiBiCiAgICAgfQogfQogCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNv
cHlUZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiBtZWRpYVBsYXllciwgUGxhdGZvcm1HTE9i
amVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGZhbHNlOworICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q29weVRleHR1cmVGcm9tTWVkaWEobWVkaWFQbGF5ZXIuaWRlbnRpZmllcigpLCB0ZXh0
dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0
aXBseUFscGhhLCBmbGlwWSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29w
eVRleHR1cmVGcm9tTWVkaWE6OlJlcGx5KHJlc3VsdCkpOworICAgIGlmICghc2VuZFJlc3VsdCkg
eworICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3IpCiB7CiAgICAgaWYgKCFp
c0NvbnRleHRMb3N0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgK
aW5kZXggNWNlNTc2NzZiMDkwNWE2NTc0MDQyYTlmNTQzOGE0NzFmYjdlZjk5MC4uMjY0Zjc0NTQ2
NmZmNzM2ZDI4Mzg1ODZmYTg2NWE5OTlkZjFlZWI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmgKQEAgLTY5LDYgKzY5LDggQEAgcHVibGljOgogICAgIHZvaWQgc3lu
dGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3IpIGZpbmFsOwogICAgIEdDR0xlbnVtIGdldEVy
cm9yKCkgZmluYWw7CiAKKyAgICBib29sIGNvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyJiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgZmluYWw7CisK
ICAgICAvLyBGdW5jdGlvbnMgd2l0aCBhIGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBs
aXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCiAgICAgdm9pZCBzZXRG
YWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkgZmluYWw7CiAgICAgYm9vbCBtb3ZlRXJyb3JzVG9TeW50
aGV0aWNFcnJvckxpc3QoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCAxYzAyZTFkMDY1NzljNTM1MWM5ZmMyMWZmOGQ2NGE1YTc0Nzcw
NWQ2Li41ZWM2MmM0NjE3ZTMwZDg4NTIxNzg4MGI5N2JlNjhkNDBmYTkyMmU1IDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMjEtMDItMTggIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKworICAgICAgICBW
aWRlbyBlbGVtZW50cyBkbyBub3Qgd29yayBhcyBzb3VyY2VzIGZvciBUZXhJbWFnZTJEIGNhbGxz
IGluIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTgxODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFNjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbDoKKwogMjAyMS0wMi0xOCAgTGF1
cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR0xJQl0gR2FyZGVuaW5n
IGRlYnVnIE9mZnNjcmVlbkNhbnZhcyBjcmFzaGVzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wK
aW5kZXggZmU4ZmE5YWU1MTc0MGJkYTYzZjUxNTNmZGE4ZjE2ZDdlNjJiNWZiZi4uODc3NDg0ZGY4
OThhNDFmNWYxODFkNWZkZTFiYjYxODczYWQ5YWQ1MCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0
cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13
ZWJnbApAQCAtMTAzLDEyICsxMDMsMTEgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wgTm90UmVmQ291bnRlZCB7ewogICAgIHZvaWQgR2V0RXJyb3IoKSAtPiAodWludDMyX3Qg
cmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNU
b0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIp
IC0+ICgpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBQYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52
YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAo
KSBTeW5jaHJvbm91cwotCisgICAgdm9pZCBDb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpN
ZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDMyX3QgdGV4dHVyZSwgdWludDMy
X3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWludDMy
X3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxp
cFkpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCiB7fQogfX0KIAogI2VuZGlmCi0KICIi
IgogKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421034</attachid>
            <date>2021-02-19 14:36:19 -0800</date>
            <delta_ts>2021-02-19 15:53:38 -0800</delta_ts>
            <desc>WIP, prepare to merge with the patch for bug 219641</desc>
            <filename>bug-218184-20210219143618.patch</filename>
            <type>text/plain</type>
            <size>25503</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE4YmFiNjNiZjY3Mjdk
ODAwZWVjOTI2MTMyZjVhYmM2YWRkNDdhMC4uMTBhZDNiMjBlMjkyMDE3NTJkNGQ2YjdiYTMyYzIy
OWI3NThjYWE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTAyLTE4ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgVmlkZW8gZWxlbWVudHMgZG8g
bm90IHdvcmsgYXMgc291cmNlcyBmb3IgVGV4SW1hZ2UyRCBjYWxscyBpbiBHUFUgUHJvY2Vzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgZnVu
Y3Rpb24gYEdyYXBoaWNzQ29udGV4dEdMOjpjb3B5VGV4dHVyZUZyb21NZWRpYSgpYCB3aGljaCBj
YW4gYmUgdXNlZCBieSB0aGUgZ3JhcGhpY3MgY29udGV4dAorICAgICAgICB0byBjb3B5IHZpZGVv
IHRleHR1cmUgZnJvbSBhIHZpZGVvIGVsZW1lbnQgKHBsYXllcikuCisKKyAgICAgICAgTWFudWFs
bHkgdGVzdGVkLgorICAgICAgICBXZSBuZWVkIHRvIGVuYWJsZSBib3RoICJHUFUgUHJvY2Vzczog
TWVkaWEiIGFuZCAiR1BVIFByb2Nlc3M6IFdlYkdMIiB0byB0ZXN0IHRoZSBmZWF0dXJlLgorCisg
ICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxWaWRlb0VsZW1lbnQ6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvcHlUZXh0dXJlRnJvbU1l
ZGlhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaDoKKwogMjAyMS0wMi0xOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRA
YXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gVGVtcG9yYXJpbHkgZGlzYWJsZSBk
cmF3aW5nIE9ULVNWRyBnbHlwaHMgaW4gdGhlIEdQVSBwcm9jZXNzIHVudGlsIGl0IGNhbiBiZSBp
bXBsZW1lbnRlZCBwcm9wZXJseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0ZWU2ZTQ5ZjMxM2ZiZGYwNGNjYTM0N2Zi
YzMwMzVjMjEyMzE0NmVmLi5hM2EwMjA5ZTZhMzQ5YzFjODE2NjI3ZGE1YmZkYzExOTQ3ZTE3NTcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTAyLTE4ICBQZW5nIExpdSAgPHBlbmcu
bGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgVmlkZW8gZWxlbWVudHMgZG8gbm90IHdvcmsgYXMg
c291cmNlcyBmb3IgVGV4SW1hZ2UyRCBjYWxscyBpbiBHUFUgUHJvY2VzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTg0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFuIElQQyBtZXNzYWdlIGBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleHR1cmVGcm9tTWVkaWFgIHRvIGltcGxlbWVu
dAorICAgICAgICBgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleHR1cmVGcm9t
TWVkaWEoKWAgaW4gdGhlIFdlYiBwcm9jZXNzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUdyYXBoaWNzQ29udGV4dEdMOjpjb3B5VGV4dHVyZUZyb21NZWRpYSk6CisgICAgICAgICogR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6
OmNvcHlUZXh0dXJlRnJvbU1lZGlhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6CisKIDIwMjEtMDItMTggIFBlciBBcm5l
IFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFJlbW92ZSBhY2Nl
c3MgdG8gQXBwbGVKUEVHRHJpdmVyVXNlckNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHAKaW5kZXggZDc2MGUyYjUwZGE5ODNjNWVhMzJiZDYwYTBlODlhNGZhYTYz
ZDZjMS4uYWViZGNmODY1NDIzMjg4YjY5Mjk5ZThlMDE4ODEzMjFiOTcxYjA4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0zMDAsMTMgKzMwMCw2IEBAIHZv
aWQgSFRNTFZpZGVvRWxlbWVudDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zCiAgICAgY29udGV4dC5wYWludEZyYW1lRm9yTWVkaWEoKnBs
YXllciwgZGVzdFJlY3QpOwogfQogCi1ib29sIEhUTUxWaWRlb0VsZW1lbnQ6OmNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgUGxhdGZv
cm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xl
bnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKLXsKLSAgICBpZiAoIXBsYXllcigpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHBsYXllcigpLT5jb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoY29udGV4dCwgdGV4dHVyZSwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwotfQotCiBi
b29sIEhUTUxWaWRlb0VsZW1lbnQ6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdAogewog
ICAgIGlmICghcGxheWVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmlu
ZGV4IGRjYThhYWFiNTc3NzM4NzZhNGU1Mjk2MTZlYjkyZjBiZGVmYWU4ZWUuLjY0NTE4YWZlZmNk
ZDI2OGZkMDIyODZhYjU0M2M1ZDFhYWNlNDAxODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oCkBAIC03NywxMCArNzcsNiBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8TmF0
aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIAotICAgIC8vIFVzZWQgYnkg
V2ViR0wgdG8gZG8gR1BVLUdQVSB0ZXh0dXJlcyBjb3B5IGlmIHBvc3NpYmxlLgotICAgIC8vIFNl
ZSBtb3JlIGRldGFpbHMgYXQgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3Jt
VGV4dHVyZSgpIGRlZmluZWQgaW4gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaC4KLSAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShH
cmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFy
Z2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpOwot
CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSBjb25z
dDsKIAogICAgIFVSTCBwb3N0ZXJJbWFnZVVSTCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRl
eCBkZWE3YzI2ODA4NTZlYmZiNDY5ZWZhOWFkZmI1YWIyNWVhYTNjODRmLi5jMDFjZTM3ZmY4ZWUy
NjRlYmQ5MDJkZTc2NzhiZDZmMGM4ZDQ4NDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNDg4MSw3
ICs0ODgxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dGV4SW1hZ2VTb3VyY2VIZWxwZXIoVGV4SW1hZ2VGdW5jdGkKICAgICAgICAgICAgICYmIChmb3Jt
YXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlJHQiB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0
R0w6OlJHQkEpCiAgICAgICAgICAgICAmJiB0eXBlID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJ
R05FRF9CWVRFCiAgICAgICAgICAgICAmJiAhbGV2ZWwpIHsKLSAgICAgICAgICAgIGlmICh2aWRl
by0+Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKG1fY29udGV4dC5nZXQoKSwgdGV4
dHVyZS0+b2JqZWN0KCksIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBmb3JtYXQsIHR5
cGUsIG1fdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwgbV91bnBhY2tGbGlwWSkpIHsKKyAgICAgICAg
ICAgIGlmICh2aWRlby0+cGxheWVyKCkgJiYgbV9jb250ZXh0LT5jb3B5VGV4dHVyZUZyb21NZWRp
YSgqdmlkZW8tPnBsYXllcigpLCB0ZXh0dXJlLT5vYmplY3QoKSwgdGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxmb3JtYXQsIGZvcm1hdCwgdHlwZSwgbV91bnBhY2tQcmVtdWx0aXBseUFscGhhLCBtX3Vu
cGFja0ZsaXBZKSkgewogI2lmICFVU0UoQU5HTEUpCiAgICAgICAgICAgICAgICAgdGV4dHVyZS0+
c2V0TGV2ZWxJbmZvKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB2aWRlby0+dmlkZW9X
aWR0aCgpLCB2aWRlby0+dmlkZW9IZWlnaHQoKSwgdHlwZSk7CiAjZW5kaWYgLy8gIVVTRShBTkdM
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRHTC5oCmluZGV4IGY3ZGM4YWVjMWIwYjM3ZmFiYTUzNmNkNDdjYzAyNWY1OTdmMDM3OTEu
LjBiY2RmOWMwZmViMGEyOTUxYTUyMGVhYjNkM2UyZGM3ZGY0NTY1MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgog
I2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CkBAIC0xMzA2LDcgKzEzMDcsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0
dXJucyBpbnRlcmZhY2UgZm9yIENWIGludGVyYWN0aW9uIGlmIHRoZSBmdW5jdGlvbmFsaXR5IGlz
IHByZXNlbnQuCiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkgPSAwOwog
I2VuZGlmCi0KKyAgICB2aXJ0dWFsIGJvb2wgY29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5
ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSA9IDA7CiAKICAgICBJbnRT
aXplIGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZSht
X2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggN2VjZjJkMDliMDg1NjYx
NTIyMjYxZGU0MGNlYTc3Mjk2YWVkMzhmZi4uOGYwMDFmMTFlZmM5YTFjMDBlYzUyZjM0MmFjZTNi
MGQxY2Q0YWMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcApAQCAtMTAxMSw2ICsxMDExLDExIEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmNv
cHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCogY29udGV4
dCwKICAgICByZXR1cm4gbV9wcml2YXRlLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUoY29udGV4dCwgdGV4dHVyZSwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1h
dCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQogCitDVlBpeGVsQnVmZmVyUmVm
IE1lZGlhUGxheWVyOjpwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKCkKK3sKKyAgICByZXR1cm4g
bV9wcml2YXRlLT5waXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKCk7Cit9CisKIFJlZlB0cjxOYXRp
dmVJbWFnZT4gTWVkaWFQbGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAg
IHJldHVybiBtX3ByaXZhdGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IGQ1ODk1NzA5
MGU1ZTI4NGI1OWFkOTMwMTk0MTgyYjE3NWVhZGMwMGEuLmJhODRlMDQ3MDIwYWJkNWFjYmUwMzhm
NWE1NTk1MjI0NGQ5ZDAwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaApAQCAtNjIsNiArNjIsOCBAQAogT0JKQ19DTEFTUyBBVlBsYXllcjsK
IE9CSkNfQ0xBU1MgTlNBcnJheTsKIAordHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciogQ1ZQaXhl
bEJ1ZmZlclJlZjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb1NvdXJjZVBy
b3ZpZGVyOwpAQCAtNDM5LDYgKzQ0MSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgY3VycmVudCBy
ZXN0cmljdGlvbnMgcmVxdWlyZSB0aGF0IGZvcm1hdCBzaG91ZCBiZSBSR0Igb3IgUkdCQSwgdHlw
ZSBzaG91bGQgYmUgVU5TSUdORURfQllURSBhbmQgbGV2ZWwgc2hvdWxkIGJlIDAuIEl0IG1heSBi
ZSBsaWZ0ZWQgaW4gdGhlIGZ1dHVyZS4KIAogICAgIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJl
LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwg
Ym9vbCBmbGlwWSk7CisgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZvckN1cnJlbnRU
aW1lKCk7CiAKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRp
bWUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaAppbmRleCBlYThkMzNmMDI4ZTc5MDJmOGRiZGI3NDgxYjNhNTQ3M2Ey
YWZmNzEzLi4zODVmZTE5YTNmNDg5NzIwM2QwYWViZTViNTg0NjU1ZWNjNTgxZjcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZh
dGUuaApAQCAtMTYyLDYgKzE2Miw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGMsIGNvbnN0IEZsb2F0UmVj
dCYgcikgeyBwYWludChjLCByKTsgfQogICAgIHZpcnR1YWwgYm9vbCBjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBH
Q0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9v
bCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxC
dWZmZXJGb3JDdXJyZW50VGltZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIHsgcmV0dXJuIG51
bGxwdHI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpQcmVs
b2FkKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCA2MWM2ZDI0NTcxZjAyYTlhMGU5ZjZj
YTBkMDcxYzk0MGZkZGE4OTQ3Li45NzY0ZWE0OGJiY2VmMDJkOWM4OWY2NDlmOTg5OTBmY2JlNzdh
MjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0yNTUsNiArMjU1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKTsKIAogICAg
IGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdM
KiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dM
ZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29s
IHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOworICAgIENWUGl4ZWxCdWZmZXJS
ZWYgcGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSgpIGZpbmFsOwogCiAjaWYgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpCiAgICAgdm9pZCBrZXlBZGRlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KaW5kZXggYTc5MTM0YTRlN2JlYTZmMDU3N2JhNTIwM2I5NmVlY2MxMGQwMjc1
Yi4uMWRhOTMxYWFkZjc5NzIxZTYxZjFkNDkzNDQ4M2IyNTU1MjU4MDBkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCkBAIC0yNDA0LDYgKzI0MDQsMTUgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3Jh
cGgKICAgICByZXR1cm4gY29udGV4dENWLT5jb3B5UGl4ZWxCdWZmZXJUb1RleHR1cmUobV9sYXN0
UGl4ZWxCdWZmZXIuZ2V0KCksIG91dHB1dFRleHR1cmUsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwg
Zm9ybWF0LCB0eXBlLCBHcmFwaGljc0NvbnRleHRHTDo6RmxpcFkoZmxpcFkpKTsKIH0KIAorQ1ZQ
aXhlbEJ1ZmZlclJlZiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwaXhlbEJ1
ZmZlckZvckN1cnJlbnRUaW1lKCkKK3sKKyAgICB1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKTsKKyAg
ICBpZiAoIW1fbGFzdFBpeGVsQnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IHJldHVybiBtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKTsKK30KKwogUmVmUHRyPE5hdGl2ZUltYWdl
PiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJl
bnRUaW1lKCkKIHsKICAgICB1cGRhdGVMYXN0SW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
LmgKaW5kZXggZjZkN2Q0NDg1YWEwOTY2OThjYjQyMDkwZjI4NjA1MzFlN2ZjOWFmZi4uZDQ0YTAw
NjRlMDcwYjM0MDJlOGM2ODk3OGQ0YTc5OTliMTc4NWI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLmgKQEAgLTIyMiw2ICsyMjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBv
dmVycmlkZTsKICAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFw
aGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGlu
dCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVu
dW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBvdmVycmlkZTsKKyAg
ICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKIAog
ICAgIGJvb2wgc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIC8vIGNhbGxlZCB3aGVuIHRoZSByZW5kZXJpbmcgc3lzdGVtIGZsaXBzIHRoZSBpbnRvIG9y
IG91dCBvZiBhY2NlbGVyYXRlZCByZW5kZXJpbmcgbW9kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbQppbmRleCBkZGU3NWQxYjUxMjc4OThmNmZmODY2NjI2OWM5ZTU4MzY5NzQ1Mjc5Li5jNDlm
MWYyZGRlNTQ1MGRkNDY1NzU5MWVhNjg3MDNhNzE0ZGQzOGIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCkBAIC02NDcsNiArNjQ3LDI0IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhCiAg
ICAgcmV0dXJuIGNvbnRleHRDVi0+Y29weVBpeGVsQnVmZmVyVG9UZXh0dXJlKG1fbGFzdFBpeGVs
QnVmZmVyLmdldCgpLCBvdXRwdXRUZXh0dXJlLCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1h
dCwgdHlwZSwgR3JhcGhpY3NDb250ZXh0R0xDVjo6RmxpcFkoZmxpcFkpKTsKIH0KIAorQ1ZQaXhl
bEJ1ZmZlclJlZiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBpeGVsQnVm
ZmVyRm9yQ3VycmVudFRpbWUoKQoreworICAgIC8vIFdlIGhhdmUgYmVlbiBhc2tlZCB0byBwYWlu
dCBpbnRvIGEgV2ViR0wgY2FudmFzLCBzbyB0YWtlIHRoYXQgYXMgYSBzaWduYWwgdG8gY3JlYXRl
CisgICAgLy8gYSBkZWNvbXByZXNzaW9uIHNlc3Npb24sIGV2ZW4gaWYgdGhhdCBtZWFucyB0aGUg
bmF0aXZlIHZpZGVvIGNhbid0IGFsc28gYmUgZGlzcGxheWVkCisgICAgLy8gaW4gcGFnZS4KKyAg
ICBpZiAoIW1faGFzQmVlbkFza2VkVG9QYWludEdMKSB7CisgICAgICAgIG1faGFzQmVlbkFza2Vk
VG9QYWludEdMID0gdHJ1ZTsKKyAgICAgICAgYWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5n
ZWQoKTsKKyAgICB9CisKKyAgICBpZiAodXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkpIHsKKyAgICAg
ICAgaWYgKCFtX2xhc3RQaXhlbEJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIHJldHVybiBtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKTsKK30KKwogYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Omhhc0F2YWlsYWJsZVZpZGVvRnJh
bWUoKSBjb25zdAogewogICAgIHJldHVybiBtX2hhc0F2YWlsYWJsZVZpZGVvRnJhbWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAppbmRleCA3NDcxNzdmMjZhMzlhMzA0ZDlk
OWEwZTgwNDZkMzYwZWRmNGVlZDAzLi40NzQzYmU5YmI2NjQzNGE2MDQ2NmZkMTFkY2ZjNTI4YTQx
ZTM5NmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTMxLDgg
KzMxLDEwIEBACiAjaWYgRU5BQkxFKFdFQkdMKQogCiAjaW5jbHVkZSAiRXh0ZW5zaW9uc0dMLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0R0xDVi5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVy
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRl
LmgiCiAjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTI1Myw2ICsyNTUsMjEgQEAgUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cygpCiB9CiAjZW5kaWYKIAorYm9vbCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImIHBsYXll
ciwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKK3sKKyAg
ICBhdXRvIHBpeGVsQnVmZmVyID0gcGxheWVyLnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKTsK
KyAgICBpZiAoIXBpeGVsQnVmZmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRv
IGNvbnRleHRDViA9IGFzQ1YoKTsKKyAgICBpZiAoIWNvbnRleHRDVikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgVU5VU0VEX1ZBUklBQkxFKHByZW11bHRpcGx5QWxwaGEpOworICAgIEFT
U0VSVF9VTlVTRUQob3V0cHV0VGFyZ2V0LCBvdXRwdXRUYXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0
R0w6OlRFWFRVUkVfMkQpOworICAgIHJldHVybiBjb250ZXh0Q1YtPmNvcHlQaXhlbEJ1ZmZlclRv
VGV4dHVyZShwaXhlbEJ1ZmZlciwgb3V0cHV0VGV4dHVyZSwgbGV2ZWwsIGludGVybmFsRm9ybWF0
LCBmb3JtYXQsIHR5cGUsIEdyYXBoaWNzQ29udGV4dEdMOjpGbGlwWShmbGlwWSkpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGU0NGJmZDVkOWY4YWQ5ZDdjNTI3NjAxYTI1
MmE3NzBlZDRmOTc5NTUuLmFiYzM4MGM3M2NhMzkwZmE5N2U2YTRkNDVjZWQyZTJmZDJkMmVjNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC04Niw2ICs4Niw3IEBAIGNs
YXNzIEV4dGVuc2lvbnNHTE9wZW5HTDsKIGNsYXNzIEhvc3RXaW5kb3c7CiBjbGFzcyBJbWFnZUJ1
ZmZlcjsKIGNsYXNzIEltYWdlRGF0YTsKK2NsYXNzIE1lZGlhUGxheWVyOwogI2lmIFVTRShURVhU
VVJFX01BUFBFUikKIGNsYXNzIFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcjsKICNlbmRp
ZgpAQCAtNDY1LDYgKzQ2Niw4IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiByZWFk
UmVuZGVyaW5nUmVzdWx0c0ZvclBhaW50aW5nKCk7CiAgICAgUmVmUHRyPEltYWdlRGF0YT4gcmVh
ZENvbXBvc2l0ZWRSZXN1bHRzRm9yUGFpbnRpbmcoKTsKIAorICAgIGJvb2wgY29weVRleHR1cmVG
cm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZ
KSBmaW5hbDsKKwogI2lmIFVTRShPUEVOR0wpICYmIEVOQUJMRShXRUJHTDIpCiAgICAgdm9pZCBw
cmltaXRpdmVSZXN0YXJ0SW5kZXgoR0NHTHVpbnQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLmNwcAppbmRleCBlYTMxMTNiM2YxZDlkNDRiYTM4Yzg5ZjUwMzE1ODA3MmE5ZjU4ZjkwLi4w
MDYxMjZjYjZiZDEyZTBiZjkxNGJmZmJlYTE5OGE5YjAzZGU5NGIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTC5jcHAKQEAgLTMxLDkgKzMxLDEwIEBACiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5TWVzc2FnZXMuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMQ1YuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgotCisjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xNzcsNiArMTc4
LDc3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBhaW50SW1hZ2VEYXRhVG9JbWFn
ZUJ1ZmZlcihSZWZQdHI8V2ViQ29yZTo6SW1hZ2VECiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
IH0KIAordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Y29weVRleHR1cmVGcm9tTWVkaWEo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIG1lZGlhUGxheWVySWRlbnRpZmllciwgdWlu
dDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBp
bnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11
bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgVU5VU0VEX1ZBUklBQkxFKHByZW11bHRpcGx5QWxw
aGEpOworICAgIEFTU0VSVF9VTlVTRUQodGFyZ2V0LCB0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0
R0w6OlRFWFRVUkVfMkQpOworCisgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlciA9IG51
bGxwdHI7CisKKyAgICAvLyAtLS0gVG8gYmUgZGVsZXRlZAorICAgIGlmIChpc01haW5UaHJlYWQo
KSkgeworICAgICAgICBpZiAoIW1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykgeworICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgYXV0byBtZWRpYVBsYXllciA9IG1fZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy0+cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKS5tZWRpYVBsYXllcihtZWRp
YVBsYXllcklkZW50aWZpZXIpOworICAgICAgICBpZiAoIW1lZGlhUGxheWVyKSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBwaXhlbEJ1ZmZlciA9IG1lZGlhUGxheWVyLT5waXhlbEJ1ZmZlckZv
ckN1cnJlbnRUaW1lKCk7CisgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGF1dG8gY29udGV4dENWID0gbV9jb250ZXh0LT5hc0NWKCk7CisgICAgICAg
IGlmICghY29udGV4dENWKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihjb250ZXh0Q1YtPmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShwaXhlbEJ1ZmZlciwgdGV4
dHVyZSwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIEdyYXBoaWNzQ29udGV4
dEdMOjpGbGlwWShmbGlwWSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyAtLS0K
KworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworCisgICAgQmluYXJ5U2VtYXBob3JlIHBp
eGVsQnVmZmVyU2VtYXBob3JlOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIG1lZGlhUGxh
eWVySWRlbnRpZmllciwgJnBpeGVsQnVmZmVyLCAmcGl4ZWxCdWZmZXJTZW1hcGhvcmVdIHsKKyAg
ICAgICAgaWYgKCFtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpIHsKKyAgICAgICAgICAgIHBp
eGVsQnVmZmVyU2VtYXBob3JlLnNpZ25hbCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgYXV0byBtZWRpYVBsYXllciA9IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy0+cmVtb3RlTWVkaWFQbGF5ZXJNYW5hZ2VyUHJveHkoKS5tZWRpYVBsYXllcihtZWRpYVBs
YXllcklkZW50aWZpZXIpOworICAgICAgICBpZiAoIW1lZGlhUGxheWVyKSB7CisgICAgICAgICAg
ICBwaXhlbEJ1ZmZlclNlbWFwaG9yZS5zaWduYWwoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIHBpeGVsQnVmZmVyID0gbWVkaWFQbGF5ZXItPnBpeGVsQnVmZmVy
Rm9yQ3VycmVudFRpbWUoKTsKKyAgICAgICAgcGl4ZWxCdWZmZXJTZW1hcGhvcmUuc2lnbmFsKCk7
CisgICAgfSk7CisKKyAgICBwaXhlbEJ1ZmZlclNlbWFwaG9yZS53YWl0KCk7CisgICAgaWYgKCFw
aXhlbEJ1ZmZlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNvbnRleHRDViA9IG1fY29udGV4dC0+YXNDVigp
OworICAgIGlmICghY29udGV4dENWKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRl
eHRDVi0+Y29weVBpeGVsQnVmZmVyVG9UZXh0dXJlKHBpeGVsQnVmZmVyLCB0ZXh0dXJlLCBsZXZl
bCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgR3JhcGhpY3NDb250ZXh0R0w6OkZsaXBZ
KGZsaXBZKSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5oCmluZGV4IGFhYTU3NDlkMGJjNTQ2NDZiMmMxZjhmNGMzOWU1OGJkYTk2MWU4
NGYuLmQ4ZTgxMTg0YmQxMGFiZTFmNDk2ZDExN2M0ODRlN2VlZTAzNzgwNGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTC5oCkBAIC05NSw2ICs5NSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHN5bnRo
ZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9yKTsKICAgICB2b2lkIHBhaW50UmVuZGVyaW5nUmVz
dWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRlZFJlc3VsdHNU
b0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBjb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3Jl
OjpNZWRpYVBsYXllcklkZW50aWZpZXIsIHVpbnQzMl90IHRleHR1cmUsIHVpbnQzMl90IHRhcmdl
dCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50ZXJuYWxGb3JtYXQsIHVpbnQzMl90IGZvcm1h
dCwgdWludDMyX3QgdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgiIC8vIE5PTElOVAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KaW5kZXggZDE1MDk1OWFhYTVlNTRhM2VjNTBiNzRh
MjIxOTcwODRiMDBkYTY4OS4uZTYwNjMzZmZkNTc2OTJiMTk3NDcyNmRhMTVlY2QzYjAzZTU5ZThh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpAQCAtMzYsOSAr
MzYsOSBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVk
IHsKICAgICB2b2lkIE5vdGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCiAgICAgdm9pZCBTeW50aGVz
aXplR0xFcnJvcih1aW50MzJfdCBlcnJvcikKICAgICB2b2lkIEdldEVycm9yKCkgLT4gKHVpbnQz
Ml90IHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwotICAgIHZvaWQgUGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZp
ZXIpIC0+ICgpIFN5bmNocm9ub3VzCi0gICAgdm9pZCBQYWludENvbXBvc2l0ZWRSZXN1bHRzVG9D
YW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+
ICgpIFN5bmNocm9ub3VzCi0KKyAgICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFz
KFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkg
U3luY2hyb25vdXMKKyAgICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNo
cm9ub3VzCisgICAgdm9pZCBDb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXll
cklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9ybWF0
LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIC0+IChi
b29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCiAKICAgICB2b2lkIFNldEZhaWxOZXh0R1BVU3RhdHVz
Q2hlY2soKQogICAgIHZvaWQgTW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkgLT4gKGJv
b2wgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5LmNwcAppbmRleCBjMDUyOTIxZTAxN2U4YzNjNjIxNDg0ZTEzOTdiODNiM2ZiZmZk
MWIwLi45ZjgyOGUxNDVmNmQ5MzQ2ZGRiNzc5YmE3NDYzYjIxNzk5ZjMyZGE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTE2MSw2ICsxNjEsMTggQEAg
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwYWludENvbXBvc2l0ZWRSZXN1bHRz
VG9DYW52YXMoSW1hZ2VCdWZmZXImIGIKICAgICB9CiB9CiAKK2Jvb2wgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6Y29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImIG1lZGlhUGxh
eWVyLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0g
dHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQoreworICAgIGJvb2wgcmVz
dWx0ID0gZmFsc2U7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpDb3B5VGV4dHVyZUZyb21NZWRpYShtZWRpYVBsYXllci5p
ZGVudGlmaWVyKCksIHRleHR1cmUsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3Jt
YXQsIHR5cGUsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMOjpDb3B5VGV4dHVyZUZyb21NZWRpYTo6UmVwbHkocmVzdWx0KSk7CisgICAg
aWYgKCFzZW5kUmVzdWx0KSB7CisgICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJv
cikKIHsKICAgICBpZiAoIWlzQ29udGV4dExvc3QoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuaAppbmRleCA1Y2U1NzY3NmIwOTA1YTY1NzQwNDJhOWY1NDM4YTQ3MWZi
N2VmOTkwLi4yNjRmNzQ1NDY2ZmY3MzZkMjgzODU4NmZhODY1YTk5OWRmMWVlYjUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtNjksNiArNjksOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikgZmluYWw7CiAg
ICAgR0NHTGVudW0gZ2V0RXJyb3IoKSBmaW5hbDsKIAorICAgIGJvb2wgY29weVRleHR1cmVGcm9t
TWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdD
R0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29s
IGZsaXBZKSBmaW5hbDsKKwogICAgIC8vIEZ1bmN0aW9ucyB3aXRoIGEgZ2VuZXJhdGVkIGltcGxl
bWVudGF0aW9uLiBUaGlzIGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlw
dC4KICAgICB2b2lkIHNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSBmaW5hbDsKICAgICBib29s
IG1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFjMDJlMWQwNjU3OWM1MzUxYzlm
YzIxZmY4ZDY0YTVhNzQ3NzA1ZDYuLjVlYzYyYzQ2MTdlMzBkODg1MjE3ODgwYjk3YmU2OGQ0MGZh
OTIyZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAyMS0wMi0xOCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUu
Y29tPgorCisgICAgICAgIFZpZGVvIGVsZW1lbnRzIGRvIG5vdCB3b3JrIGFzIHNvdXJjZXMgZm9y
IFRleEltYWdlMkQgY2FsbHMgaW4gR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODE4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsOgor
CiAyMDIxLTAyLTE4ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHTElCXSBHYXJkZW5pbmcgZGVidWcgT2Zmc2NyZWVuQ2FudmFzIGNyYXNoZXMKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2Vu
ZXJhdGUtZ3B1cC13ZWJnbAppbmRleCBmZThmYTlhZTUxNzQwYmRhNjNmNTE1M2ZkYThmMTZkN2U2
MmI1ZmJmLi44Nzc0ODRkZjg5OGE0MWY1ZjE4MWQ1ZmRlMWJiNjE4NzNhZDlhZDUwIDEwMDc1NQot
LS0gYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0
cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC0xMDMsMTIgKzEwMywxMSBAQCBtZXNzYWdlcyAtPiBS
ZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHt7CiAgICAgdm9pZCBHZXRFcnJv
cigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKICAgICB2b2lkIFBhaW50
UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2b2lkIFBhaW50Q29tcG9z
aXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
aW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCi0KKyAgICB2b2lkIENvcHlUZXh0dXJlRnJv
bU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50MzJf
dCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVy
bmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIGJvb2wgcHJlbXVsdGlw
bHlBbHBoYSwgYm9vbCBmbGlwWSkgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hyb25vdXMKIHt9CiB9
fQogCiAjZW5kaWYKLQogIiIiCiApCiAK
</data>
<flag name="commit-queue"
          id="439772"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421047</attachid>
            <date>2021-02-19 15:34:02 -0800</date>
            <delta_ts>2021-02-19 16:05:18 -0800</delta_ts>
            <desc>Revise the patch based on Eric&apos;s comments</desc>
            <filename>bug-218184-20210219153400.patch</filename>
            <type>text/plain</type>
            <size>31038</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE4YmFiNjNiZjY3Mjdk
ODAwZWVjOTI2MTMyZjVhYmM2YWRkNDdhMC4uMWU2OTU5MGU4ZTQ2ZTZkMWE3OTMwMTAwMTJhZTky
NjFmZmRkOThkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTAyLTE5ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgVmlkZW8gZWxlbWVudHMgZG8g
bm90IHdvcmsgYXMgc291cmNlcyBmb3IgVGV4SW1hZ2UyRCBjYWxscyBpbiBHUFUgUHJvY2Vzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgZnVu
Y3Rpb24gYEdyYXBoaWNzQ29udGV4dEdMOjpjb3B5VGV4dHVyZUZyb21NZWRpYSgpYCB3aGljaCBj
YW4gYmUgdXNlZCBieSB0aGUgZ3JhcGhpY3MgY29udGV4dAorICAgICAgICB0byBjb3B5IHZpZGVv
IHRleHR1cmUgZnJvbSBhIHZpZGVvIGVsZW1lbnQgKHBsYXllcikuCisKKyAgICAgICAgTWFudWFs
bHkgdGVzdGVkLgorICAgICAgICBXZSBuZWVkIHRvIGVuYWJsZSBib3RoICJHUFUgUHJvY2Vzczog
TWVkaWEiIGFuZCAiR1BVIFByb2Nlc3M6IFdlYkdMIiB0byB0ZXN0IHRoZSBmZWF0dXJlLgorCisg
ICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxWaWRlb0VsZW1lbnQ6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6IERlbGV0
ZWQuCisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZVNvdXJjZUhlbHBlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZTo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1l
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwaXhlbEJ1
ZmZlckZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNvcHlUZXh0dXJlRnJvbU1lZGlhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKwogMjAyMS0wMi0xOCAgTXlsZXMgQy4g
TWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10g
VGVtcG9yYXJpbHkgZGlzYWJsZSBkcmF3aW5nIE9ULVNWRyBnbHlwaHMgaW4gdGhlIEdQVSBwcm9j
ZXNzIHVudGlsIGl0IGNhbiBiZSBpbXBsZW1lbnRlZCBwcm9wZXJseQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0ZWU2
ZTQ5ZjMxM2ZiZGYwNGNjYTM0N2ZiYzMwMzVjMjEyMzE0NmVmLi41YWRjN2VjODQwOGQzNWJkZTBm
MDQzNTdjMTEwMzViYmQ2NzI3ODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTAy
LTE5ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgVmlkZW8gZWxl
bWVudHMgZG8gbm90IHdvcmsgYXMgc291cmNlcyBmb3IgVGV4SW1hZ2UyRCBjYWxscyBpbiBHUFUg
UHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE4MTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIGFuIElQQyBtZXNzYWdlIGBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleHR1cmVG
cm9tTWVkaWFgIHRvIGltcGxlbWVudAorICAgICAgICBgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y29weVRleHR1cmVGcm9tTWVkaWEoKWAgaW4gdGhlIFdlYiBwcm9jZXNzLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjb3B5VGV4dHVyZUZyb21N
ZWRpYSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXh0dXJlRnJvbU1lZGlhKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuaDoKKwogMjAyMS0wMi0xOCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU10gUmVtb3ZlIGFjY2VzcyB0byBBcHBsZUpQRUdEcml2ZXJVc2VyQ2xp
ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBkNzYwZTJi
NTBkYTk4M2M1ZWEzMmJkNjBhMGU4OWE0ZmFhNjNkNmMxLi5hZWJkY2Y4NjU0MjMyODhiNjkyOTll
OGUwMTg4MTMyMWI5NzFiMDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKQEAgLTMwMCwxMyArMzAwLDYgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnMKICAgICBj
b250ZXh0LnBhaW50RnJhbWVGb3JNZWRpYSgqcGxheWVyLCBkZXN0UmVjdCk7CiB9CiAKLWJvb2wg
SFRNTFZpZGVvRWxlbWVudDo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBo
aWNzQ29udGV4dEdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZ
KQotewotICAgIGlmICghcGxheWVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gcGxheWVyKCktPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0
ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVt
dWx0aXBseUFscGhhLCBmbGlwWSk7Ci19Ci0KIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6aGFzQXZh
aWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFwbGF5ZXIoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggZGNhOGFhYWI1Nzc3Mzg3NmE0ZTUyOTYx
NmViOTJmMGJkZWZhZThlZS4uNjQ1MThhZmVmY2RkMjY4ZmQwMjI4NmFiNTQzYzVkMWFhY2U0MDE4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTc3LDEwICs3Nyw2
IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpOwogCi0gICAgLy8gVXNlZCBieSBXZWJHTCB0byBkbyBHUFUtR1BVIHRleHR1cmVz
IGNvcHkgaWYgcG9zc2libGUuCi0gICAgLy8gU2VlIG1vcmUgZGV0YWlscyBhdCBNZWRpYVBsYXll
cjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKCkgZGVmaW5lZCBpbiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oLgotICAgIGJvb2wgY29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1H
TE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNo
b3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpIGNvbnN0OwogCiAgICAgVVJMIHBvc3RlckltYWdlVVJM
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGRlYTdjMjY4MDg1NmViZmI0NjllZmE5YWRm
YjVhYjI1ZWFhM2M4NGYuLmMwMWNlMzdmZjhlZTI2NGViZDkwMmRlNzY3OGJkNmYwYzhkNDg0Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCkBAIC00ODgxLDcgKzQ4ODEsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZVNvdXJjZUhlbHBlcihUZXhJbWFn
ZUZ1bmN0aQogICAgICAgICAgICAgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6UkdC
IHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQSkKICAgICAgICAgICAgICYmIHR5
cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEUKICAgICAgICAgICAgICYmICFs
ZXZlbCkgewotICAgICAgICAgICAgaWYgKHZpZGVvLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUobV9jb250ZXh0LmdldCgpLCB0ZXh0dXJlLT5vYmplY3QoKSwgdGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxmb3JtYXQsIGZvcm1hdCwgdHlwZSwgbV91bnBhY2tQcmVtdWx0aXBseUFscGhh
LCBtX3VucGFja0ZsaXBZKSkgeworICAgICAgICAgICAgaWYgKHZpZGVvLT5wbGF5ZXIoKSAmJiBt
X2NvbnRleHQtPmNvcHlUZXh0dXJlRnJvbU1lZGlhKCp2aWRlby0+cGxheWVyKCksIHRleHR1cmUt
Pm9iamVjdCgpLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgZm9ybWF0LCB0eXBlLCBt
X3VucGFja1ByZW11bHRpcGx5QWxwaGEsIG1fdW5wYWNrRmxpcFkpKSB7CiAjaWYgIVVTRShBTkdM
RSkKICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5zZXRMZXZlbEluZm8odGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHZpZGVvLT52aWRlb1dpZHRoKCksIHZpZGVvLT52aWRlb0hlaWdodCgp
LCB0eXBlKTsKICNlbmRpZiAvLyAhVVNFKEFOR0xFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggZjdkYzhhZWMxYjBi
MzdmYWJhNTM2Y2Q0N2NjMDI1ZjU5N2YwMzc5MS4uMGJjZGY5YzBmZWIwYTI5NTFhNTIwZWFiM2Qz
ZTJkYzdkZjQ1NjUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW1h
Z2UuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1
ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTEzMDYsNyAr
MTMwNyw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIGludGVyZmFjZSBmb3IgQ1YgaW50ZXJh
Y3Rpb24gaWYgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgcHJlc2VudC4KICAgICB2aXJ0dWFsIEdyYXBo
aWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSA9IDA7CiAjZW5kaWYKLQorICAgIHZpcnR1YWwgYm9vbCBj
b3B5VGV4dHVyZUZyb21NZWRpYShNZWRpYVBsYXllciYsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVy
ZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1h
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEs
IGJvb2wgZmxpcFkpID0gMDsKIAogICAgIEludFNpemUgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNp
emUoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWln
aHQpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcAppbmRleCA3ZWNmMmQwOWIwODU2NjE1MjIyNjFkZTQwY2VhNzcyOTZhZWQzOGZmLi40
YjBhY2M3ZGMxMGEwM2ZhZTEwOWY1MjM2OWI2OTYwYWIxNThmMDE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xMDA2LDExICsx
MDA2LDIyIEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgcCwgY29u
c3QgRmxvYXRSZWN0JiByKQogICAgIG1fcHJpdmF0ZS0+cGFpbnQocCwgcik7CiB9CiAKKyNpZiAh
VVNFKEFWRk9VTkRBVElPTikKKwogYm9vbCBNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVyZVRv
UGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2Jq
ZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0
aXBseUFscGhhLCBib29sIGZsaXBZKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPmNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlLCB0YXJnZXQsIGxldmVs
LCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7
CiB9CiAKKyNlbHNlCisKK0NWUGl4ZWxCdWZmZXJSZWYgTWVkaWFQbGF5ZXI6OnBpeGVsQnVmZmVy
Rm9yQ3VycmVudFRpbWUoKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnBpeGVsQnVmZmVyRm9y
Q3VycmVudFRpbWUoKTsKK30KKworI2VuZGlmCisKIFJlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQ
bGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIHJldHVybiBtX3ByaXZh
dGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IGQ1ODk1NzA5MGU1ZTI4NGI1OWFkOTMw
MTk0MTgyYjE3NWVhZGMwMGEuLjZhMWQ5MjdlN2ZlNzFmMjRmNzU1N2IxNTk3NmQ2MWUwMTIxMmUy
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aApAQCAtNjIsNiArNjIsMTAgQEAKIE9CSkNfQ0xBU1MgQVZQbGF5ZXI7CiBPQkpDX0NMQVNTIE5T
QXJyYXk7CiAKKyNpZiBFTkFCTEUoV0VCR0wpICYmIFVTRShBVkZPVU5EQVRJT04pCit0eXBlZGVm
IHN0cnVjdCBfX0NWQnVmZmVyKiBDVlBpeGVsQnVmZmVyUmVmOworI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9Tb3VyY2VQcm92aWRlcjsKQEAgLTQzNyw4ICs0NDEs
MTEgQEAgcHVibGljOgogICAgIC8vIEluIHRoZSBHUFUtR1BVIHRleHR1cmVzIGNvcHksIHRoZSBz
b3VyY2UgdGV4dHVyZShWaWRlbyB0ZXh0dXJlKSBzaG91bGQgaGF2ZSB2YWxpZCB0YXJnZXQsIGlu
dGVybmFsRm9ybWF0IGFuZCBzaXplLCBldGMuCiAgICAgLy8gVGhlIGRlc3RpbmF0aW9uIHRleHR1
cmUgbWF5IG5lZWQgdG8gYmUgcmVzaXplZCB0byB0byB0aGUgZGltZW5zaW9ucyBvZiB0aGUgc291
cmNlIHRleHR1cmUgb3IgcmUtZGVmaW5lZCB0byB0aGUgcmVxdWlyZWQgaW50ZXJuYWxGb3JtYXQu
CiAgICAgLy8gVGhlIGN1cnJlbnQgcmVzdHJpY3Rpb25zIHJlcXVpcmUgdGhhdCBmb3JtYXQgc2hv
dWQgYmUgUkdCIG9yIFJHQkEsIHR5cGUgc2hvdWxkIGJlIFVOU0lHTkVEX0JZVEUgYW5kIGxldmVs
IHNob3VsZCBiZSAwLiBJdCBtYXkgYmUgbGlmdGVkIGluIHRoZSBmdXR1cmUuCi0KKyNpZiAhVVNF
KEFWRk9VTkRBVElPTikKICAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZShHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkp
OworI2Vsc2UKKyAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUo
KTsKKyNlbmRpZgogCiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJl
bnRUaW1lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggZWE4ZDMzZjAyOGU3OTAyZjhkYmRiNzQ4MWIzYTU0
NzNhMmFmZjcxMy4uYzZhN2NjMzg4ZjJmMzRhM2Y0NDEyM2UyZjI1ZDUzNzk3OTlhYTI4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQ
cml2YXRlLmgKQEAgLTE2MSw3ICsxNjEsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBw
YWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjLCBj
b25zdCBGbG9hdFJlY3QmIHIpIHsgcGFpbnQoYywgcik7IH0KKyNpZiAhVVNFKEFWRk9VTkRBVElP
TikKICAgICB2aXJ0dWFsIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdy
YXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdD
R0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9
CisjZWxzZQorICAgIHZpcnR1YWwgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZvckN1cnJl
bnRUaW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCiAgICAgdmlydHVhbCBSZWZQdHI8
TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRy
OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCkg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggNjFjNmQyNDU3MWYwMmE5YTBlOWY2Y2EwZDA3
MWM5NDBmZGRhODk0Ny4uMTQ1MWFjYzM5ZDg3N2Q5OGY3YWE5Njg0NjdkZmJlNzI2MDBkYjhmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtMjU0LDcgKzI1NCw3IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7CiAg
ICAgdm9pZCB3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCk7CiAKLSAgICBi
b29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCos
IFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBw
cmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKKyAgICBDVlBpeGVsQnVmZmVyUmVm
IHBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKIAogI2lmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQogICAgIHZvaWQga2V5QWRkZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCmluZGV4IGE3OTEzNGE0ZTdiZWE2ZjA1NzdiYTUyMDNiOTZlZWNjMTBkMDI3NWIu
LjZiNGEzYzMxZTg2ZjhiYThmMzVlNDhjMGY1ODc5MzU4YTQ5ZWQ2NDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQpAQCAtMjM4OCwyMCArMjM4OCwxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYg
YwogCiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0LCBQ
bGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQorQ1ZQaXhlbEJ1
ZmZlclJlZiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwaXhlbEJ1ZmZlckZv
ckN1cnJlbnRUaW1lKCkKIHsKLSAgICBBU1NFUlQoY29udGV4dCk7Ci0KICAgICB1cGRhdGVMYXN0
UGl4ZWxCdWZmZXIoKTsKICAgICBpZiAoIW1fbGFzdFBpeGVsQnVmZmVyKQotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBjb250ZXh0Q1Yg
PSBjb250ZXh0LT5hc0NWKCk7Ci0gICAgaWYgKCFjb250ZXh0Q1YpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBVTlVTRURfVkFSSUFCTEUocHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgQVNTRVJU
X1VOVVNFRChvdXRwdXRUYXJnZXQsIG91dHB1dFRhcmdldCA9PSBHcmFwaGljc0NvbnRleHRHTDo6
VEVYVFVSRV8yRCk7Ci0gICAgcmV0dXJuIGNvbnRleHRDVi0+Y29weVBpeGVsQnVmZmVyVG9UZXh0
dXJlKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpLCBvdXRwdXRUZXh0dXJlLCBsZXZlbCwgaW50ZXJu
YWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgR3JhcGhpY3NDb250ZXh0R0w6OkZsaXBZKGZsaXBZKSk7
CisgICAgcmV0dXJuIG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpOwogfQogCiBSZWZQdHI8TmF0aXZl
SW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBmNmQ3ZDQ0ODVhYTA5
NjY5OGNiNDIwOTBmMjg2MDUzMWU3ZmM5YWZmLi43YWM1MzJmMGY5OWJmMzQ2MTZhZGE3ZmE2MjJi
NzE4NmRkZDVkN2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMjIxLDcgKzIyMSw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCB1cGRhdGVMYXN0SW1hZ2UoKTsKICAgICB2b2lkIHBhaW50
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQg
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0Jikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUoR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgb3ZlcnJp
ZGU7CisgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKCkgZmlu
YWw7CiAKICAgICBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdCBvdmVy
cmlkZTsKICAgICAvLyBjYWxsZWQgd2hlbiB0aGUgcmVuZGVyaW5nIHN5c3RlbSBmbGlwcyB0aGUg
aW50byBvciBvdXQgb2YgYWNjZWxlcmF0ZWQgcmVuZGVyaW5nIG1vZGUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMubW0KaW5kZXggZGRlNzVkMWI1MTI3ODk4ZjZmZjg2NjYyNjljOWU1ODM2OTc0NTI3
OS4uMzQwNTRiN2JhYTQ5NjY3MjcxYmMzMmVkYmM2NWY1OTA5NzczOGJiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbQpAQCAtNjIzLDcgKzYyMyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGlj
c0NvCiAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBpbWFnZVJlY3Quc2l6ZSgp
LCBvdXRwdXRSZWN0LCBpbWFnZVJlY3QpOwogfQogCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBo
aWNzQ29udGV4dEdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1cmUsIEdD
R0xlbnVtIG91dHB1dFRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3Jt
YXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhh
LCBib29sIGZsaXBZKQorQ1ZQaXhlbEJ1ZmZlclJlZiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKQogewogICAgIC8vIFdlIGhh
dmUgYmVlbiBhc2tlZCB0byBwYWludCBpbnRvIGEgV2ViR0wgY2FudmFzLCBzbyB0YWtlIHRoYXQg
YXMgYSBzaWduYWwgdG8gY3JlYXRlCiAgICAgLy8gYSBkZWNvbXByZXNzaW9uIHNlc3Npb24sIGV2
ZW4gaWYgdGhhdCBtZWFucyB0aGUgbmF0aXZlIHZpZGVvIGNhbid0IGFsc28gYmUgZGlzcGxheWVk
CkBAIC02MzMsMTggKzYzMywxMiBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYQogICAgICAgICBh
Y2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpOwogICAgIH0KIAotICAgIEFTU0VSVChj
b250ZXh0KTsKLQogICAgIGlmICh1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKSkgewogICAgICAgICBp
ZiAoIW1fbGFzdFBpeGVsQnVmZmVyKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGF1dG8gY29udGV4dENWID0gY29udGV4
dC0+YXNDVigpOwotICAgIGlmICghY29udGV4dENWKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgVU5VU0VEX1ZBUklBQkxFKHByZW11bHRpcGx5QWxwaGEpOwotICAgIEFTU0VSVF9VTlVTRUQo
b3V0cHV0VGFyZ2V0LCBvdXRwdXRUYXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVf
MkQpOwotICAgIHJldHVybiBjb250ZXh0Q1YtPmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShtX2xh
c3RQaXhlbEJ1ZmZlci5nZXQoKSwgb3V0cHV0VGV4dHVyZSwgbGV2ZWwsIGludGVybmFsRm9ybWF0
LCBmb3JtYXQsIHR5cGUsIEdyYXBoaWNzQ29udGV4dEdMQ1Y6OkZsaXBZKGZsaXBZKSk7CisKKyAg
ICByZXR1cm4gbV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IDc0NzE3N2YyNmEzOWEz
MDRkOWQ5YTBlODA0NmQzNjBlZGY0ZWVkMDMuLjQxNzBhYzc3M2U3MGYzNTU4OTgxOTc4MTY4ZjE1
ZDBiNDBhOGU5ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApAQCAt
MzMsOCArMzMsMTMgQEAKICNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJJbWFn
ZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVy
UHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCisjaWYgVVNFKEFWRk9V
TkRBVElPTikKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTENWLmgiCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNldEJ1
ZmZlcnNUb0F1dG9DbGVhcigpCkBAIC0yNTMsNiArMjU4LDI1IEBAIFJlZlB0cjxJbWFnZURhdGE+
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogfQogI2Vu
ZGlmCiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvcHlUZXh0dXJlRnJvbU1lZGlh
KE1lZGlhUGxheWVyJiBwbGF5ZXIsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NH
TGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1h
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEs
IGJvb2wgZmxpcFkpCit7CisjaWYgVVNFKEFWRk9VTkRBVElPTikKKyAgICBhdXRvIHBpeGVsQnVm
ZmVyID0gcGxheWVyLnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKTsKKyAgICBpZiAoIXBpeGVs
QnVmZmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGNvbnRleHRDViA9IGFz
Q1YoKTsKKyAgICBpZiAoIWNvbnRleHRDVikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
VU5VU0VEX1ZBUklBQkxFKHByZW11bHRpcGx5QWxwaGEpOworICAgIEFTU0VSVF9VTlVTRUQob3V0
cHV0VGFyZ2V0LCBvdXRwdXRUYXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQp
OworICAgIHJldHVybiBjb250ZXh0Q1YtPmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShwaXhlbEJ1
ZmZlciwgb3V0cHV0VGV4dHVyZSwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUs
IEdyYXBoaWNzQ29udGV4dEdMOjpGbGlwWShmbGlwWSkpOworI2Vsc2UKKyAgICByZXR1cm4gcGxh
eWVyLmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSh0aGlzLCB0ZXh0dXJlLCB0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhh
LCBmbGlwWSk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCBl
NDRiZmQ1ZDlmOGFkOWQ3YzUyNzYwMWEyNTJhNzcwZWQ0Zjk3OTU1Li5hYmMzODBjNzNjYTM5MGZh
OTdlNmE0ZDQ1Y2VkMmUyZmQyZDJlYzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuaApAQCAtODYsNiArODYsNyBAQCBjbGFzcyBFeHRlbnNpb25zR0xPcGVuR0w7CiBjbGFzcyBI
b3N0V2luZG93OwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBJbWFnZURhdGE7CitjbGFzcyBN
ZWRpYVBsYXllcjsKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiBjbGFzcyBUZXh0dXJlTWFwcGVy
R0NHTFBsYXRmb3JtTGF5ZXI7CiAjZW5kaWYKQEAgLTQ2NSw2ICs0NjYsOCBAQCBwdWJsaWM6CiAg
ICAgUmVmUHRyPEltYWdlRGF0YT4gcmVhZFJlbmRlcmluZ1Jlc3VsdHNGb3JQYWludGluZygpOwog
ICAgIFJlZlB0cjxJbWFnZURhdGE+IHJlYWRDb21wb3NpdGVkUmVzdWx0c0ZvclBhaW50aW5nKCk7
CiAKKyAgICBib29sIGNvcHlUZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiwgUGxhdGZvcm1H
TE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgZmluYWw7CisKICNpZiBVU0UoT1BFTkdMKSAmJiBF
TkFCTEUoV0VCR0wyKQogICAgIHZvaWQgcHJpbWl0aXZlUmVzdGFydEluZGV4KEdDR0x1aW50KTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggZWEzMTEzYjNmMWQ5ZDQ0YmEz
OGM4OWY1MDMxNTgwNzJhOWY1OGY5MC4uYzJjZjI2M2JhZjA3YTE0MmE0OGJmMTkxNmNiMjZmZTFi
MzYwYjE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0zMyw3ICszMywxMSBAQAog
I2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdlcy5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3Jl
Lmg+CiAKKyNpZiBVU0UoQVZGT1VOREFUSU9OKQorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0R0xDVi5oPgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CkBAIC0xNzcsNiArMTgxLDkyIEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0w6OnBhaW50SW1hZ2VEYXRhVG9JbWFnZUJ1ZmZlcihSZWZQdHI8V2ViQ29yZTo6SW1hZ2VE
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Y29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVy
IG1lZGlhUGxheWVySWRlbnRpZmllciwgdWludDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0
LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9ybWF0
LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFksIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisjaWYgVVNF
KEFWRk9VTkRBVElPTikKKyAgICBVTlVTRURfVkFSSUFCTEUocHJlbXVsdGlwbHlBbHBoYSk7Cisg
ICAgQVNTRVJUX1VOVVNFRCh0YXJnZXQsIHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHRHTDo6VEVY
VFVSRV8yRCk7CisKKyAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyID0gbnVsbHB0cjsK
KworICAgIC8vIC0tLSBUT0RPOiBUbyBiZSBkZWxldGVkCisgICAgaWYgKGlzTWFpblRocmVhZCgp
KSB7CisgICAgICAgIGlmICghbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBhdXRvIG1lZGlhUGxheWVyID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLT5yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLm1lZGlhUGxheWVyKG1lZGlh
UGxheWVySWRlbnRpZmllcik7CisgICAgICAgIGlmICghbWVkaWFQbGF5ZXIpIHsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIHBpeGVsQnVmZmVyID0gbWVkaWFQbGF5ZXItPnBpeGVsQnVmZmVyRm9y
Q3VycmVudFRpbWUoKTsKKyAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikgeworICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgYXV0byBjb250ZXh0Q1YgPSBtX2NvbnRleHQtPmFzQ1YoKTsKKyAgICAgICAg
aWYgKCFjb250ZXh0Q1YpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGNvbnRleHRDVi0+Y29weVBpeGVsQnVmZmVyVG9UZXh0dXJlKHBpeGVsQnVmZmVyLCB0ZXh0
dXJlLCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgR3JhcGhpY3NDb250ZXh0
R0w6OkZsaXBZKGZsaXBZKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIC0tLQor
CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAgICBCaW5hcnlTZW1hcGhvcmUgcGl4
ZWxCdWZmZXJTZW1hcGhvcmU7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgbWVkaWFQbGF5
ZXJJZGVudGlmaWVyLCAmcGl4ZWxCdWZmZXIsICZwaXhlbEJ1ZmZlclNlbWFwaG9yZV0geworICAg
ICAgICBpZiAoIW1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykgeworICAgICAgICAgICAgcGl4
ZWxCdWZmZXJTZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBhdXRvIG1lZGlhUGxheWVyID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLT5yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLm1lZGlhUGxheWVyKG1lZGlhUGxh
eWVySWRlbnRpZmllcik7CisgICAgICAgIGlmICghbWVkaWFQbGF5ZXIpIHsKKyAgICAgICAgICAg
IHBpeGVsQnVmZmVyU2VtYXBob3JlLnNpZ25hbCgpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgcGl4ZWxCdWZmZXIgPSBtZWRpYVBsYXllci0+cGl4ZWxCdWZmZXJG
b3JDdXJyZW50VGltZSgpOworICAgICAgICBwaXhlbEJ1ZmZlclNlbWFwaG9yZS5zaWduYWwoKTsK
KyAgICB9KTsKKworICAgIHBpeGVsQnVmZmVyU2VtYXBob3JlLndhaXQoKTsKKyAgICBpZiAoIXBp
eGVsQnVmZmVyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY29udGV4dENWID0gbV9jb250ZXh0LT5hc0NWKCk7
CisgICAgaWYgKCFjb250ZXh0Q1YpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2Up
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4
dENWLT5jb3B5UGl4ZWxCdWZmZXJUb1RleHR1cmUocGl4ZWxCdWZmZXIsIHRleHR1cmUsIGxldmVs
LCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBHcmFwaGljc0NvbnRleHRHTDo6RmxpcFko
ZmxpcFkpKSk7CisjZWxzZQorICAgIFVOVVNFRF9WQVJJQUJMRShtZWRpYVBsYXllcklkZW50aWZp
ZXIpOworICAgIFVOVVNFRF9WQVJJQUJMRSh0ZXh0dXJlKTsKKyAgICBVTlVTRURfVkFSSUFCTEUo
dGFyZ2V0KTsKKyAgICBVTlVTRURfVkFSSUFCTEUobGV2ZWwpOworICAgIFVOVVNFRF9WQVJJQUJM
RShpbnRlcm5hbEZvcm1hdCk7CisgICAgVU5VU0VEX1ZBUklBQkxFKGZvcm1hdCk7CisgICAgVU5V
U0VEX1ZBUklBQkxFKHR5cGUpOworICAgIFVOVVNFRF9WQVJJQUJMRShwcmVtdWx0aXBseUFscGhh
KTsKKyAgICBVTlVTRURfVkFSSUFCTEUoZmxpcFkpOworCisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAppbmRleCBhYWE1NzQ5ZDBi
YzU0NjQ2YjJjMWY4ZjRjMzllNThiZGE5NjFlODRmLi5kOGU4MTE4NGJkMTBhYmUxZjQ5NmQxMTdj
NDg0ZTdlZWUwMzc4MDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtOTUsNiArOTUsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcih1aW50MzJfdCBlcnJvcik7
CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQg
Y29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyLCB1aW50
MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGlu
dGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSwgYm9vbCBmbGlwWSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVyYXRlZC5o
IiAvLyBOT0xJTlQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCmlu
ZGV4IGQxNTA5NTlhYWE1ZTU0YTNlYzUwYjc0YTIyMTk3MDg0YjAwZGE2ODkuLmU2MDYzM2ZmZDU3
NjkyYjE5NzQ3MjZkYTE1ZWNkM2IwM2U1OWU4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTM2LDkgKzM2LDkgQEAgbWVzc2FnZXMgLT4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7CiAgICAgdm9pZCBOb3RpZnlNYXJrQ29udGV4
dENoYW5nZWQoKQogICAgIHZvaWQgU3ludGhlc2l6ZUdMRXJyb3IodWludDMyX3QgZXJyb3IpCiAg
ICAgdm9pZCBHZXRFcnJvcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMK
LSAgICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoKSBTeW5jaHJvbm91cwotICAgIHZv
aWQgUGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoKSBTeW5jaHJvbm91cwotCisgICAgdm9pZCBQ
YWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCisgICAgdm9pZCBQYWludENv
bXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91cworICAgIHZvaWQgQ29weVRleHR1cmVG
cm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQz
Ml90IHRleHR1cmUsIHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwgdWludDMyX3QgaW50
ZXJuYWxGb3JtYXQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwgYm9vbCBwcmVtdWx0
aXBseUFscGhhLCBib29sIGZsaXBZKSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5jaHJvbm91cwogCiAg
ICAgdm9pZCBTZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKICAgICB2b2lkIE1vdmVFcnJvcnNU
b1N5bnRoZXRpY0Vycm9yTGlzdCgpIC0+IChib29sIHJldHVyblZhbHVlKSBTeW5jaHJvbm91cwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKaW5kZXggYzA1MjkyMWUw
MTdlOGMzYzYyMTQ4NGUxMzk3YjgzYjNmYmZmZDFiMC4uOWY4MjhlMTQ1ZjZkOTM0NmRkYjc3OWJh
NzQ2M2IyMTc5OWYzMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuY3BwCkBAIC0xNjEsNiArMTYxLDE4IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyJiBiCiAgICAg
fQogfQogCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXh0dXJlRnJv
bU1lZGlhKE1lZGlhUGxheWVyJiBtZWRpYVBsYXllciwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJl
LCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwg
Ym9vbCBmbGlwWSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGZhbHNlOworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRl
eHR1cmVGcm9tTWVkaWEobWVkaWFQbGF5ZXIuaWRlbnRpZmllcigpLCB0ZXh0dXJlLCB0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBm
bGlwWSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleHR1cmVGcm9t
TWVkaWE6OlJlcGx5KHJlc3VsdCkpOworICAgIGlmICghc2VuZFJlc3VsdCkgeworICAgICAgICBt
YXJrQ29udGV4dExvc3QoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6c3lu
dGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3IpCiB7CiAgICAgaWYgKCFpc0NvbnRleHRMb3N0
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKaW5kZXggNWNlNTc2
NzZiMDkwNWE2NTc0MDQyYTlmNTQzOGE0NzFmYjdlZjk5MC4uMjY0Zjc0NTQ2NmZmNzM2ZDI4Mzg1
ODZmYTg2NWE5OTlkZjFlZWI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5LmgKQEAgLTY5LDYgKzY5LDggQEAgcHVibGljOgogICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJy
b3IoR0NHTGVudW0gZXJyb3IpIGZpbmFsOwogICAgIEdDR0xlbnVtIGdldEVycm9yKCkgZmluYWw7
CiAKKyAgICBib29sIGNvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVyJiwg
UGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgZmluYWw7CisKICAgICAvLyBGdW5j
dGlvbnMgd2l0aCBhIGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBsaXN0IGlzIHVzZWQg
YnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCiAgICAgdm9pZCBzZXRGYWlsTmV4dEdQVVN0
YXR1c0NoZWNrKCkgZmluYWw7CiAgICAgYm9vbCBtb3ZlRXJyb3JzVG9TeW50aGV0aWNFcnJvckxp
c3QoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCBhMmYwMTY3ZWY5
YzlkNmUzZDNhYWE5NWQxODQ3ZWU5MzBkNGNlYmYyLi44Y2I0NjE4MjVjYzY0MTk1ODFiMzdkZGEx
YzQ2NjkzNjIyNTdjOWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC04NDgs
MTEgKzg0OCwxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29ucwogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKKyNpZiAhVVNFKEFWRk9VTkRBVElPTikKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVu
dW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KKyNlbmRpZgogCiBSZWZQdHI8TmF0aXZlSW1hZ2U+
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9N
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRleCBhMTU0YWY4NjhiZWQyNmIyNDU3YjMzNjUw
MGYzYmY4MGI3ZDI0YTVlLi5mMjhlYTkzMmZjYzE1M2Q4YjcwMzNkZjExMDIyMjU5NWMxZDVkODc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTI4MSw3ICsyODEsOSBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmKSBmaW5hbDsKICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYp
IGZpbmFsOworI2lmICFVU0UoQVZGT1VOREFUSU9OKQogICAgIGJvb2wgY29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1H
TE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0s
IGJvb2wsIGJvb2wpIGZpbmFsOworI2VuZGlmCiAgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7CiAKICAgICBXZWJDb3JlOjpN
ZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFjMDJlMWQwNjU3OWM1
MzUxYzlmYzIxZmY4ZDY0YTVhNzQ3NzA1ZDYuLjA1ZWMyODNjOWIyZjkyODI2NGZkNTNlZDJkZWIz
ZDhiMmVlNDBhNjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wMi0xOSAgUGVuZyBMaXUgIDxwZW5nLmxpdTZA
YXBwbGUuY29tPgorCisgICAgICAgIFZpZGVvIGVsZW1lbnRzIGRvIG5vdCB3b3JrIGFzIHNvdXJj
ZXMgZm9yIFRleEltYWdlMkQgY2FsbHMgaW4gR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODE4NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdl
YmdsOgorCiAyMDIxLTAyLTE4ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHTElCXSBHYXJkZW5pbmcgZGVidWcgT2Zmc2NyZWVuQ2FudmFzIGNyYXNoZXMKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1Njcmlw
dHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRleCBmZThmYTlhZTUxNzQwYmRhNjNmNTE1M2ZkYThm
MTZkN2U2MmI1ZmJmLi44Nzc0ODRkZjg5OGE0MWY1ZjE4MWQ1ZmRlMWJiNjE4NzNhZDlhZDUwIDEw
MDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9vbHMv
U2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC0xMDMsMTIgKzEwMywxMSBAQCBtZXNzYWdl
cyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHt7CiAgICAgdm9pZCBH
ZXRFcnJvcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKICAgICB2b2lk
IFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAgICB2b2lkIFBhaW50
Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCi0KKyAgICB2b2lkIENvcHlUZXh0
dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1
aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90
IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hyb25vdXMK
IHt9CiB9fQogCiAjZW5kaWYKLQogIiIiCiApCiAK
</data>
<flag name="commit-queue"
          id="439778"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421051</attachid>
            <date>2021-02-19 15:59:15 -0800</date>
            <delta_ts>2021-02-19 19:37:51 -0800</delta_ts>
            <desc>WIP, fix build failures on gtk/wpe ports</desc>
            <filename>bug-218184-20210219155914.patch</filename>
            <type>text/plain</type>
            <size>31050</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE4YmFiNjNiZjY3Mjdk
ODAwZWVjOTI2MTMyZjVhYmM2YWRkNDdhMC4uMWU2OTU5MGU4ZTQ2ZTZkMWE3OTMwMTAwMTJhZTky
NjFmZmRkOThkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTAyLTE5ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgVmlkZW8gZWxlbWVudHMgZG8g
bm90IHdvcmsgYXMgc291cmNlcyBmb3IgVGV4SW1hZ2UyRCBjYWxscyBpbiBHUFUgUHJvY2Vzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgZnVu
Y3Rpb24gYEdyYXBoaWNzQ29udGV4dEdMOjpjb3B5VGV4dHVyZUZyb21NZWRpYSgpYCB3aGljaCBj
YW4gYmUgdXNlZCBieSB0aGUgZ3JhcGhpY3MgY29udGV4dAorICAgICAgICB0byBjb3B5IHZpZGVv
IHRleHR1cmUgZnJvbSBhIHZpZGVvIGVsZW1lbnQgKHBsYXllcikuCisKKyAgICAgICAgTWFudWFs
bHkgdGVzdGVkLgorICAgICAgICBXZSBuZWVkIHRvIGVuYWJsZSBib3RoICJHUFUgUHJvY2Vzczog
TWVkaWEiIGFuZCAiR1BVIFByb2Nlc3M6IFdlYkdMIiB0byB0ZXN0IHRoZSBmZWF0dXJlLgorCisg
ICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxWaWRlb0VsZW1lbnQ6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6IERlbGV0
ZWQuCisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZVNvdXJjZUhlbHBlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZTo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1l
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwaXhlbEJ1
ZmZlckZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNvcHlUZXh0dXJlRnJvbU1lZGlhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKwogMjAyMS0wMi0xOCAgTXlsZXMgQy4g
TWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10g
VGVtcG9yYXJpbHkgZGlzYWJsZSBkcmF3aW5nIE9ULVNWRyBnbHlwaHMgaW4gdGhlIEdQVSBwcm9j
ZXNzIHVudGlsIGl0IGNhbiBiZSBpbXBsZW1lbnRlZCBwcm9wZXJseQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0ZWU2
ZTQ5ZjMxM2ZiZGYwNGNjYTM0N2ZiYzMwMzVjMjEyMzE0NmVmLi41YWRjN2VjODQwOGQzNWJkZTBm
MDQzNTdjMTEwMzViYmQ2NzI3ODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTAy
LTE5ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgVmlkZW8gZWxl
bWVudHMgZG8gbm90IHdvcmsgYXMgc291cmNlcyBmb3IgVGV4SW1hZ2UyRCBjYWxscyBpbiBHUFUg
UHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE4MTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIGFuIElQQyBtZXNzYWdlIGBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleHR1cmVG
cm9tTWVkaWFgIHRvIGltcGxlbWVudAorICAgICAgICBgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y29weVRleHR1cmVGcm9tTWVkaWEoKWAgaW4gdGhlIFdlYiBwcm9jZXNzLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjb3B5VGV4dHVyZUZyb21N
ZWRpYSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXh0dXJlRnJvbU1lZGlhKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuaDoKKwogMjAyMS0wMi0xOCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU10gUmVtb3ZlIGFjY2VzcyB0byBBcHBsZUpQRUdEcml2ZXJVc2VyQ2xp
ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBkNzYwZTJi
NTBkYTk4M2M1ZWEzMmJkNjBhMGU4OWE0ZmFhNjNkNmMxLi5hZWJkY2Y4NjU0MjMyODhiNjkyOTll
OGUwMTg4MTMyMWI5NzFiMDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKQEAgLTMwMCwxMyArMzAwLDYgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnMKICAgICBj
b250ZXh0LnBhaW50RnJhbWVGb3JNZWRpYSgqcGxheWVyLCBkZXN0UmVjdCk7CiB9CiAKLWJvb2wg
SFRNTFZpZGVvRWxlbWVudDo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBo
aWNzQ29udGV4dEdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZ
KQotewotICAgIGlmICghcGxheWVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gcGxheWVyKCktPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0
ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVt
dWx0aXBseUFscGhhLCBmbGlwWSk7Ci19Ci0KIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6aGFzQXZh
aWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFwbGF5ZXIoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggZGNhOGFhYWI1Nzc3Mzg3NmE0ZTUyOTYx
NmViOTJmMGJkZWZhZThlZS4uNjQ1MThhZmVmY2RkMjY4ZmQwMjI4NmFiNTQzYzVkMWFhY2U0MDE4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTc3LDEwICs3Nyw2
IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpOwogCi0gICAgLy8gVXNlZCBieSBXZWJHTCB0byBkbyBHUFUtR1BVIHRleHR1cmVz
IGNvcHkgaWYgcG9zc2libGUuCi0gICAgLy8gU2VlIG1vcmUgZGV0YWlscyBhdCBNZWRpYVBsYXll
cjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKCkgZGVmaW5lZCBpbiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oLgotICAgIGJvb2wgY29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1H
TE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNo
b3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpIGNvbnN0OwogCiAgICAgVVJMIHBvc3RlckltYWdlVVJM
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGRlYTdjMjY4MDg1NmViZmI0NjllZmE5YWRm
YjVhYjI1ZWFhM2M4NGYuLmMwMWNlMzdmZjhlZTI2NGViZDkwMmRlNzY3OGJkNmYwYzhkNDg0Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCkBAIC00ODgxLDcgKzQ4ODEsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZVNvdXJjZUhlbHBlcihUZXhJbWFn
ZUZ1bmN0aQogICAgICAgICAgICAgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6UkdC
IHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQSkKICAgICAgICAgICAgICYmIHR5
cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEUKICAgICAgICAgICAgICYmICFs
ZXZlbCkgewotICAgICAgICAgICAgaWYgKHZpZGVvLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUobV9jb250ZXh0LmdldCgpLCB0ZXh0dXJlLT5vYmplY3QoKSwgdGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxmb3JtYXQsIGZvcm1hdCwgdHlwZSwgbV91bnBhY2tQcmVtdWx0aXBseUFscGhh
LCBtX3VucGFja0ZsaXBZKSkgeworICAgICAgICAgICAgaWYgKHZpZGVvLT5wbGF5ZXIoKSAmJiBt
X2NvbnRleHQtPmNvcHlUZXh0dXJlRnJvbU1lZGlhKCp2aWRlby0+cGxheWVyKCksIHRleHR1cmUt
Pm9iamVjdCgpLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgZm9ybWF0LCB0eXBlLCBt
X3VucGFja1ByZW11bHRpcGx5QWxwaGEsIG1fdW5wYWNrRmxpcFkpKSB7CiAjaWYgIVVTRShBTkdM
RSkKICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5zZXRMZXZlbEluZm8odGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHZpZGVvLT52aWRlb1dpZHRoKCksIHZpZGVvLT52aWRlb0hlaWdodCgp
LCB0eXBlKTsKICNlbmRpZiAvLyAhVVNFKEFOR0xFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggZjdkYzhhZWMxYjBi
MzdmYWJhNTM2Y2Q0N2NjMDI1ZjU5N2YwMzc5MS4uMGJjZGY5YzBmZWIwYTI5NTFhNTIwZWFiM2Qz
ZTJkYzdkZjQ1NjUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW1h
Z2UuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1
ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTEzMDYsNyAr
MTMwNyw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIGludGVyZmFjZSBmb3IgQ1YgaW50ZXJh
Y3Rpb24gaWYgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgcHJlc2VudC4KICAgICB2aXJ0dWFsIEdyYXBo
aWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSA9IDA7CiAjZW5kaWYKLQorICAgIHZpcnR1YWwgYm9vbCBj
b3B5VGV4dHVyZUZyb21NZWRpYShNZWRpYVBsYXllciYsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVy
ZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1h
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEs
IGJvb2wgZmxpcFkpID0gMDsKIAogICAgIEludFNpemUgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNp
emUoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWln
aHQpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcAppbmRleCA3ZWNmMmQwOWIwODU2NjE1MjIyNjFkZTQwY2VhNzcyOTZhZWQzOGZmLi40
YjBhY2M3ZGMxMGEwM2ZhZTEwOWY1MjM2OWI2OTYwYWIxNThmMDE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xMDA2LDExICsx
MDA2LDIyIEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgcCwgY29u
c3QgRmxvYXRSZWN0JiByKQogICAgIG1fcHJpdmF0ZS0+cGFpbnQocCwgcik7CiB9CiAKKyNpZiAh
VVNFKEFWRk9VTkRBVElPTikKKwogYm9vbCBNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVyZVRv
UGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2Jq
ZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0
aXBseUFscGhhLCBib29sIGZsaXBZKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPmNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlLCB0YXJnZXQsIGxldmVs
LCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7
CiB9CiAKKyNlbHNlCisKK0NWUGl4ZWxCdWZmZXJSZWYgTWVkaWFQbGF5ZXI6OnBpeGVsQnVmZmVy
Rm9yQ3VycmVudFRpbWUoKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnBpeGVsQnVmZmVyRm9y
Q3VycmVudFRpbWUoKTsKK30KKworI2VuZGlmCisKIFJlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQ
bGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIHJldHVybiBtX3ByaXZh
dGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IGQ1ODk1NzA5MGU1ZTI4NGI1OWFkOTMw
MTk0MTgyYjE3NWVhZGMwMGEuLjZhMWQ5MjdlN2ZlNzFmMjRmNzU1N2IxNTk3NmQ2MWUwMTIxMmUy
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aApAQCAtNjIsNiArNjIsMTAgQEAKIE9CSkNfQ0xBU1MgQVZQbGF5ZXI7CiBPQkpDX0NMQVNTIE5T
QXJyYXk7CiAKKyNpZiBFTkFCTEUoV0VCR0wpICYmIFVTRShBVkZPVU5EQVRJT04pCit0eXBlZGVm
IHN0cnVjdCBfX0NWQnVmZmVyKiBDVlBpeGVsQnVmZmVyUmVmOworI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9Tb3VyY2VQcm92aWRlcjsKQEAgLTQzNyw4ICs0NDEs
MTEgQEAgcHVibGljOgogICAgIC8vIEluIHRoZSBHUFUtR1BVIHRleHR1cmVzIGNvcHksIHRoZSBz
b3VyY2UgdGV4dHVyZShWaWRlbyB0ZXh0dXJlKSBzaG91bGQgaGF2ZSB2YWxpZCB0YXJnZXQsIGlu
dGVybmFsRm9ybWF0IGFuZCBzaXplLCBldGMuCiAgICAgLy8gVGhlIGRlc3RpbmF0aW9uIHRleHR1
cmUgbWF5IG5lZWQgdG8gYmUgcmVzaXplZCB0byB0byB0aGUgZGltZW5zaW9ucyBvZiB0aGUgc291
cmNlIHRleHR1cmUgb3IgcmUtZGVmaW5lZCB0byB0aGUgcmVxdWlyZWQgaW50ZXJuYWxGb3JtYXQu
CiAgICAgLy8gVGhlIGN1cnJlbnQgcmVzdHJpY3Rpb25zIHJlcXVpcmUgdGhhdCBmb3JtYXQgc2hv
dWQgYmUgUkdCIG9yIFJHQkEsIHR5cGUgc2hvdWxkIGJlIFVOU0lHTkVEX0JZVEUgYW5kIGxldmVs
IHNob3VsZCBiZSAwLiBJdCBtYXkgYmUgbGlmdGVkIGluIHRoZSBmdXR1cmUuCi0KKyNpZiAhVVNF
KEFWRk9VTkRBVElPTikKICAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZShHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkp
OworI2Vsc2UKKyAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUo
KTsKKyNlbmRpZgogCiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJl
bnRUaW1lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggZWE4ZDMzZjAyOGU3OTAyZjhkYmRiNzQ4MWIzYTU0
NzNhMmFmZjcxMy4uYzZhN2NjMzg4ZjJmMzRhM2Y0NDEyM2UyZjI1ZDUzNzk3OTlhYTI4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQ
cml2YXRlLmgKQEAgLTE2MSw3ICsxNjEsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBw
YWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjLCBj
b25zdCBGbG9hdFJlY3QmIHIpIHsgcGFpbnQoYywgcik7IH0KKyNpZiAhVVNFKEFWRk9VTkRBVElP
TikKICAgICB2aXJ0dWFsIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdy
YXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdD
R0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9
CisjZWxzZQorICAgIHZpcnR1YWwgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZvckN1cnJl
bnRUaW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCiAgICAgdmlydHVhbCBSZWZQdHI8
TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRy
OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCkg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggNjFjNmQyNDU3MWYwMmE5YTBlOWY2Y2EwZDA3
MWM5NDBmZGRhODk0Ny4uMTQ1MWFjYzM5ZDg3N2Q5OGY3YWE5Njg0NjdkZmJlNzI2MDBkYjhmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtMjU0LDcgKzI1NCw3IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7CiAg
ICAgdm9pZCB3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCk7CiAKLSAgICBi
b29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCos
IFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBw
cmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKKyAgICBDVlBpeGVsQnVmZmVyUmVm
IHBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKIAogI2lmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQogICAgIHZvaWQga2V5QWRkZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCmluZGV4IGE3OTEzNGE0ZTdiZWE2ZjA1NzdiYTUyMDNiOTZlZWNjMTBkMDI3NWIu
LjZiNGEzYzMxZTg2ZjhiYThmMzVlNDhjMGY1ODc5MzU4YTQ5ZWQ2NDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQpAQCAtMjM4OCwyMCArMjM4OCwxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYg
YwogCiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0LCBQ
bGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQorQ1ZQaXhlbEJ1
ZmZlclJlZiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwaXhlbEJ1ZmZlckZv
ckN1cnJlbnRUaW1lKCkKIHsKLSAgICBBU1NFUlQoY29udGV4dCk7Ci0KICAgICB1cGRhdGVMYXN0
UGl4ZWxCdWZmZXIoKTsKICAgICBpZiAoIW1fbGFzdFBpeGVsQnVmZmVyKQotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBjb250ZXh0Q1Yg
PSBjb250ZXh0LT5hc0NWKCk7Ci0gICAgaWYgKCFjb250ZXh0Q1YpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBVTlVTRURfVkFSSUFCTEUocHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgQVNTRVJU
X1VOVVNFRChvdXRwdXRUYXJnZXQsIG91dHB1dFRhcmdldCA9PSBHcmFwaGljc0NvbnRleHRHTDo6
VEVYVFVSRV8yRCk7Ci0gICAgcmV0dXJuIGNvbnRleHRDVi0+Y29weVBpeGVsQnVmZmVyVG9UZXh0
dXJlKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpLCBvdXRwdXRUZXh0dXJlLCBsZXZlbCwgaW50ZXJu
YWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgR3JhcGhpY3NDb250ZXh0R0w6OkZsaXBZKGZsaXBZKSk7
CisgICAgcmV0dXJuIG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpOwogfQogCiBSZWZQdHI8TmF0aXZl
SW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBmNmQ3ZDQ0ODVhYTA5
NjY5OGNiNDIwOTBmMjg2MDUzMWU3ZmM5YWZmLi43YWM1MzJmMGY5OWJmMzQ2MTZhZGE3ZmE2MjJi
NzE4NmRkZDVkN2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMjIxLDcgKzIyMSw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCB1cGRhdGVMYXN0SW1hZ2UoKTsKICAgICB2b2lkIHBhaW50
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQg
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0Jikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUoR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgb3ZlcnJp
ZGU7CisgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKCkgZmlu
YWw7CiAKICAgICBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdCBvdmVy
cmlkZTsKICAgICAvLyBjYWxsZWQgd2hlbiB0aGUgcmVuZGVyaW5nIHN5c3RlbSBmbGlwcyB0aGUg
aW50byBvciBvdXQgb2YgYWNjZWxlcmF0ZWQgcmVuZGVyaW5nIG1vZGUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMubW0KaW5kZXggZGRlNzVkMWI1MTI3ODk4ZjZmZjg2NjYyNjljOWU1ODM2OTc0NTI3
OS4uMzQwNTRiN2JhYTQ5NjY3MjcxYmMzMmVkYmM2NWY1OTA5NzczOGJiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbQpAQCAtNjIzLDcgKzYyMyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGlj
c0NvCiAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBpbWFnZVJlY3Quc2l6ZSgp
LCBvdXRwdXRSZWN0LCBpbWFnZVJlY3QpOwogfQogCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBo
aWNzQ29udGV4dEdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1cmUsIEdD
R0xlbnVtIG91dHB1dFRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3Jt
YXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhh
LCBib29sIGZsaXBZKQorQ1ZQaXhlbEJ1ZmZlclJlZiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKQogewogICAgIC8vIFdlIGhh
dmUgYmVlbiBhc2tlZCB0byBwYWludCBpbnRvIGEgV2ViR0wgY2FudmFzLCBzbyB0YWtlIHRoYXQg
YXMgYSBzaWduYWwgdG8gY3JlYXRlCiAgICAgLy8gYSBkZWNvbXByZXNzaW9uIHNlc3Npb24sIGV2
ZW4gaWYgdGhhdCBtZWFucyB0aGUgbmF0aXZlIHZpZGVvIGNhbid0IGFsc28gYmUgZGlzcGxheWVk
CkBAIC02MzMsMTggKzYzMywxMiBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYQogICAgICAgICBh
Y2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpOwogICAgIH0KIAotICAgIEFTU0VSVChj
b250ZXh0KTsKLQogICAgIGlmICh1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKSkgewogICAgICAgICBp
ZiAoIW1fbGFzdFBpeGVsQnVmZmVyKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGF1dG8gY29udGV4dENWID0gY29udGV4
dC0+YXNDVigpOwotICAgIGlmICghY29udGV4dENWKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgVU5VU0VEX1ZBUklBQkxFKHByZW11bHRpcGx5QWxwaGEpOwotICAgIEFTU0VSVF9VTlVTRUQo
b3V0cHV0VGFyZ2V0LCBvdXRwdXRUYXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVf
MkQpOwotICAgIHJldHVybiBjb250ZXh0Q1YtPmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShtX2xh
c3RQaXhlbEJ1ZmZlci5nZXQoKSwgb3V0cHV0VGV4dHVyZSwgbGV2ZWwsIGludGVybmFsRm9ybWF0
LCBmb3JtYXQsIHR5cGUsIEdyYXBoaWNzQ29udGV4dEdMQ1Y6OkZsaXBZKGZsaXBZKSk7CisKKyAg
ICByZXR1cm4gbV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IDc0NzE3N2YyNmEzOWEz
MDRkOWQ5YTBlODA0NmQzNjBlZGY0ZWVkMDMuLmFmOTkxYjE3NWU5NWQ2Yzg0NmJiYTZlZDk0NWRi
NTIzMWQ3Y2Q1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApAQCAt
MzMsOCArMzMsMTMgQEAKICNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJJbWFn
ZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVy
UHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCisjaWYgVVNFKEFWRk9V
TkRBVElPTikKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTENWLmgiCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNldEJ1
ZmZlcnNUb0F1dG9DbGVhcigpCkBAIC0yNTMsNiArMjU4LDI1IEBAIFJlZlB0cjxJbWFnZURhdGE+
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogfQogI2Vu
ZGlmCiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvcHlUZXh0dXJlRnJvbU1lZGlh
KE1lZGlhUGxheWVyJiBwbGF5ZXIsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NH
TGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1h
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEs
IGJvb2wgZmxpcFkpCit7CisjaWYgVVNFKEFWRk9VTkRBVElPTikKKyAgICBhdXRvIHBpeGVsQnVm
ZmVyID0gcGxheWVyLnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKTsKKyAgICBpZiAoIXBpeGVs
QnVmZmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGNvbnRleHRDViA9IGFz
Q1YoKTsKKyAgICBpZiAoIWNvbnRleHRDVikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
VU5VU0VEX1ZBUklBQkxFKHByZW11bHRpcGx5QWxwaGEpOworICAgIEFTU0VSVF9VTlVTRUQob3V0
cHV0VGFyZ2V0LCBvdXRwdXRUYXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQp
OworICAgIHJldHVybiBjb250ZXh0Q1YtPmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShwaXhlbEJ1
ZmZlciwgb3V0cHV0VGV4dHVyZSwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUs
IEdyYXBoaWNzQ29udGV4dEdMOjpGbGlwWShmbGlwWSkpOworI2Vsc2UKKyAgICByZXR1cm4gcGxh
eWVyLmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSh0aGlzLCBvdXRwdXRUZXh0dXJl
LCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVt
dWx0aXBseUFscGhhLCBmbGlwWSk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuaAppbmRleCBlNDRiZmQ1ZDlmOGFkOWQ3YzUyNzYwMWEyNTJhNzcwZWQ0Zjk3OTU1Li5hYmMz
ODBjNzNjYTM5MGZhOTdlNmE0ZDQ1Y2VkMmUyZmQyZDJlYzU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaApAQCAtODYsNiArODYsNyBAQCBjbGFzcyBFeHRlbnNpb25zR0xPcGVu
R0w7CiBjbGFzcyBIb3N0V2luZG93OwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBJbWFnZURh
dGE7CitjbGFzcyBNZWRpYVBsYXllcjsKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiBjbGFzcyBU
ZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI7CiAjZW5kaWYKQEAgLTQ2NSw2ICs0NjYsOCBA
QCBwdWJsaWM6CiAgICAgUmVmUHRyPEltYWdlRGF0YT4gcmVhZFJlbmRlcmluZ1Jlc3VsdHNGb3JQ
YWludGluZygpOwogICAgIFJlZlB0cjxJbWFnZURhdGE+IHJlYWRDb21wb3NpdGVkUmVzdWx0c0Zv
clBhaW50aW5nKCk7CiAKKyAgICBib29sIGNvcHlUZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVy
JiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgZmluYWw7CisKICNpZiBVU0Uo
T1BFTkdMKSAmJiBFTkFCTEUoV0VCR0wyKQogICAgIHZvaWQgcHJpbWl0aXZlUmVzdGFydEluZGV4
KEdDR0x1aW50KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggZWEzMTEz
YjNmMWQ5ZDQ0YmEzOGM4OWY1MDMxNTgwNzJhOWY1OGY5MC4uYzJjZjI2M2JhZjA3YTE0MmE0OGJm
MTkxNmNiMjZmZTFiMzYwYjE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0zMyw3
ICszMywxMSBAQAogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmlu
YXJ5U2VtYXBob3JlLmg+CiAKKyNpZiBVU0UoQVZGT1VOREFUSU9OKQorI2luY2x1ZGUgPFdlYkNv
cmUvR3JhcGhpY3NDb250ZXh0R0xDVi5oPgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0xNzcsNiArMTgxLDkyIEBAIHZvaWQgUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0w6OnBhaW50SW1hZ2VEYXRhVG9JbWFnZUJ1ZmZlcihSZWZQdHI8V2Vi
Q29yZTo6SW1hZ2VECiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTDo6Y29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJJZGVudGlmaWVyIG1lZGlhUGxheWVySWRlbnRpZmllciwgdWludDMyX3QgdGV4dHVyZSwgdWlu
dDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWlu
dDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wg
ZmxpcFksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisjaWYgVVNFKEFWRk9VTkRBVElPTikKKyAgICBVTlVTRURfVkFSSUFCTEUocHJlbXVsdGlw
bHlBbHBoYSk7CisgICAgQVNTRVJUX1VOVVNFRCh0YXJnZXQsIHRhcmdldCA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6VEVYVFVSRV8yRCk7CisKKyAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVy
ID0gbnVsbHB0cjsKKworICAgIC8vIC0tLSBUT0RPOiBUbyBiZSBkZWxldGVkCisgICAgaWYgKGlz
TWFpblRocmVhZCgpKSB7CisgICAgICAgIGlmICghbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIG1lZGlhUGxheWVyID0gbV9ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLT5yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLm1lZGlh
UGxheWVyKG1lZGlhUGxheWVySWRlbnRpZmllcik7CisgICAgICAgIGlmICghbWVkaWFQbGF5ZXIp
IHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHBpeGVsQnVmZmVyID0gbWVkaWFQbGF5ZXItPnBp
eGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKTsKKyAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikgewor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgYXV0byBjb250ZXh0Q1YgPSBtX2NvbnRleHQtPmFzQ1Yo
KTsKKyAgICAgICAgaWYgKCFjb250ZXh0Q1YpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGNvbnRleHRDVi0+Y29weVBpeGVsQnVmZmVyVG9UZXh0dXJlKHBpeGVs
QnVmZmVyLCB0ZXh0dXJlLCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgR3Jh
cGhpY3NDb250ZXh0R0w6OkZsaXBZKGZsaXBZKSkpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIC8vIC0tLQorCisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKKyAgICBCaW5hcnlT
ZW1hcGhvcmUgcGl4ZWxCdWZmZXJTZW1hcGhvcmU7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhp
cywgbWVkaWFQbGF5ZXJJZGVudGlmaWVyLCAmcGl4ZWxCdWZmZXIsICZwaXhlbEJ1ZmZlclNlbWFw
aG9yZV0geworICAgICAgICBpZiAoIW1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykgeworICAg
ICAgICAgICAgcGl4ZWxCdWZmZXJTZW1hcGhvcmUuc2lnbmFsKCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIG1lZGlhUGxheWVyID0gbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT5yZW1vdGVNZWRpYVBsYXllck1hbmFnZXJQcm94eSgpLm1lZGlhUGxh
eWVyKG1lZGlhUGxheWVySWRlbnRpZmllcik7CisgICAgICAgIGlmICghbWVkaWFQbGF5ZXIpIHsK
KyAgICAgICAgICAgIHBpeGVsQnVmZmVyU2VtYXBob3JlLnNpZ25hbCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgcGl4ZWxCdWZmZXIgPSBtZWRpYVBsYXllci0+
cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSgpOworICAgICAgICBwaXhlbEJ1ZmZlclNlbWFwaG9y
ZS5zaWduYWwoKTsKKyAgICB9KTsKKworICAgIHBpeGVsQnVmZmVyU2VtYXBob3JlLndhaXQoKTsK
KyAgICBpZiAoIXBpeGVsQnVmZmVyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY29udGV4dENWID0gbV9jb250
ZXh0LT5hc0NWKCk7CisgICAgaWYgKCFjb250ZXh0Q1YpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29tcGxldGlvbkhh
bmRsZXIoY29udGV4dENWLT5jb3B5UGl4ZWxCdWZmZXJUb1RleHR1cmUocGl4ZWxCdWZmZXIsIHRl
eHR1cmUsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBHcmFwaGljc0NvbnRl
eHRHTDo6RmxpcFkoZmxpcFkpKSk7CisjZWxzZQorICAgIFVOVVNFRF9WQVJJQUJMRShtZWRpYVBs
YXllcklkZW50aWZpZXIpOworICAgIFVOVVNFRF9WQVJJQUJMRSh0ZXh0dXJlKTsKKyAgICBVTlVT
RURfVkFSSUFCTEUodGFyZ2V0KTsKKyAgICBVTlVTRURfVkFSSUFCTEUobGV2ZWwpOworICAgIFVO
VVNFRF9WQVJJQUJMRShpbnRlcm5hbEZvcm1hdCk7CisgICAgVU5VU0VEX1ZBUklBQkxFKGZvcm1h
dCk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHR5cGUpOworICAgIFVOVVNFRF9WQVJJQUJMRShwcmVt
dWx0aXBseUFscGhhKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoZmxpcFkpOworCisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisjZW5kaWYKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAppbmRl
eCBhYWE1NzQ5ZDBiYzU0NjQ2YjJjMWY4ZjRjMzllNThiZGE5NjFlODRmLi5kOGU4MTE4NGJkMTBh
YmUxZjQ5NmQxMTdjNDg0ZTdlZWUwMzc4MDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaApAQCAt
OTUsNiArOTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzeW50aGVzaXplR0xFcnJvcih1aW50
MzJfdCBlcnJvcik7CiAgICAgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworICAgIHZvaWQgY29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVu
dGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWws
IHVpbnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUs
IGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CiAKICNpbmNsdWRlICJSZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9u
c0dlbmVyYXRlZC5oIiAvLyBOT0xJTlQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1l
c3NhZ2VzLmluCmluZGV4IGQxNTA5NTlhYWE1ZTU0YTNlYzUwYjc0YTIyMTk3MDg0YjAwZGE2ODku
LmU2MDYzM2ZmZDU3NjkyYjE5NzQ3MjZkYTE1ZWNkM2IwM2U1OWU4YTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KQEAgLTM2LDkgKzM2LDkgQEAgbWVzc2FnZXMg
LT4gUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7CiAgICAgdm9pZCBOb3Rp
ZnlNYXJrQ29udGV4dENoYW5nZWQoKQogICAgIHZvaWQgU3ludGhlc2l6ZUdMRXJyb3IodWludDMy
X3QgZXJyb3IpCiAgICAgdm9pZCBHZXRFcnJvcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkg
U3luY2hyb25vdXMKLSAgICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoKSBTeW5jaHJv
bm91cwotICAgIHZvaWQgUGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoKSBTeW5jaHJvbm91cwot
CisgICAgdm9pZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCisgICAg
dm9pZCBQYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIGltYWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91cworICAgIHZvaWQg
Q29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIHVpbnQzMl90IHRleHR1cmUsIHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBsZXZlbCwg
dWludDMyX3QgaW50ZXJuYWxGb3JtYXQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdHlwZSwg
Ym9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSAtPiAoYm9vbCBzdWNjZXNzKSBTeW5j
aHJvbm91cwogCiAgICAgdm9pZCBTZXRGYWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkKICAgICB2b2lk
IE1vdmVFcnJvcnNUb1N5bnRoZXRpY0Vycm9yTGlzdCgpIC0+IChib29sIHJldHVyblZhbHVlKSBT
eW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKaW5k
ZXggYzA1MjkyMWUwMTdlOGMzYzYyMTQ4NGUxMzk3YjgzYjNmYmZmZDFiMC4uOWY4MjhlMTQ1ZjZk
OTM0NmRkYjc3OWJhNzQ2M2IyMTc5OWYzMmRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuY3BwCkBAIC0xNjEsNiArMTYxLDE4IEBAIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cGFpbnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVm
ZmVyJiBiCiAgICAgfQogfQogCitib29sIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmNv
cHlUZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiBtZWRpYVBsYXllciwgUGxhdGZvcm1HTE9i
amVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGZhbHNlOworICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6Q29weVRleHR1cmVGcm9tTWVkaWEobWVkaWFQbGF5ZXIuaWRlbnRpZmllcigpLCB0ZXh0
dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0
aXBseUFscGhhLCBmbGlwWSksIE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29w
eVRleHR1cmVGcm9tTWVkaWE6OlJlcGx5KHJlc3VsdCkpOworICAgIGlmICghc2VuZFJlc3VsdCkg
eworICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6c3ludGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3IpCiB7CiAgICAgaWYgKCFp
c0NvbnRleHRMb3N0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgK
aW5kZXggNWNlNTc2NzZiMDkwNWE2NTc0MDQyYTlmNTQzOGE0NzFmYjdlZjk5MC4uMjY0Zjc0NTQ2
NmZmNzM2ZDI4Mzg1ODZmYTg2NWE5OTlkZjFlZWI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5LmgKQEAgLTY5LDYgKzY5LDggQEAgcHVibGljOgogICAgIHZvaWQgc3lu
dGhlc2l6ZUdMRXJyb3IoR0NHTGVudW0gZXJyb3IpIGZpbmFsOwogICAgIEdDR0xlbnVtIGdldEVy
cm9yKCkgZmluYWw7CiAKKyAgICBib29sIGNvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyJiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdD
R0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgZmluYWw7CisK
ICAgICAvLyBGdW5jdGlvbnMgd2l0aCBhIGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBs
aXN0IGlzIHVzZWQgYnkgZ2VuZXJhdGUtZ3B1cC13ZWJnbCBzY3JpcHQuCiAgICAgdm9pZCBzZXRG
YWlsTmV4dEdQVVN0YXR1c0NoZWNrKCkgZmluYWw7CiAgICAgYm9vbCBtb3ZlRXJyb3JzVG9TeW50
aGV0aWNFcnJvckxpc3QoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRl
eCBhMmYwMTY3ZWY5YzlkNmUzZDNhYWE5NWQxODQ3ZWU5MzBkNGNlYmYyLi44Y2I0NjE4MjVjYzY0
MTk1ODFiMzdkZGExYzQ2NjkzNjIyNTdjOWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
Y3BwCkBAIC04NDgsMTEgKzg0OCwxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29ucwogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKKyNpZiAhVVNFKEFWRk9VTkRBVElPTikKIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NH
TGludCwgR0NHTGVudW0sIEdDR0xlbnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KKyNlbmRpZgogCiBSZWZQdHI8
TmF0aXZlSW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAppbmRleCBhMTU0YWY4NjhiZWQy
NmIyNDU3YjMzNjUwMGYzYmY4MGI3ZDI0YTVlLi5mMjhlYTkzMmZjYzE1M2Q4YjcwMzNkZjExMDIy
MjU5NWMxZDVkODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTI4MSw3ICsyODEs
OSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5hbDsKICAgICB2b2lkIHBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYpIGZpbmFsOworI2lmICFVU0UoQVZGT1VOREFUSU9OKQogICAgIGJvb2wgY29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
KiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dMZW51
bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGZpbmFsOworI2VuZGlmCiAgICAgUmVmUHRyPFdlYkNv
cmU6Ok5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7CiAKICAg
ICBXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IGZpbmFs
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFj
MDJlMWQwNjU3OWM1MzUxYzlmYzIxZmY4ZDY0YTVhNzQ3NzA1ZDYuLjA1ZWMyODNjOWIyZjkyODI2
NGZkNTNlZDJkZWIzZDhiMmVlNDBhNjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0wMi0xOSAgUGVuZyBMaXUg
IDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFZpZGVvIGVsZW1lbnRzIGRvIG5vdCB3
b3JrIGFzIHNvdXJjZXMgZm9yIFRleEltYWdlMkQgY2FsbHMgaW4gR1BVIFByb2Nlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODE4NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9nZW5l
cmF0ZS1ncHVwLXdlYmdsOgorCiAyMDIxLTAyLTE4ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHTElCXSBHYXJkZW5pbmcgZGVidWcgT2Zmc2NyZWVuQ2FudmFz
IGNyYXNoZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBi
L1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbAppbmRleCBmZThmYTlhZTUxNzQwYmRh
NjNmNTE1M2ZkYThmMTZkN2U2MmI1ZmJmLi44Nzc0ODRkZjg5OGE0MWY1ZjE4MWQ1ZmRlMWJiNjE4
NzNhZDlhZDUwIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wK
KysrIGIvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCkBAIC0xMDMsMTIgKzEwMywx
MSBAQCBtZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHt7
CiAgICAgdm9pZCBHZXRFcnJvcigpIC0+ICh1aW50MzJfdCByZXR1cm5WYWx1ZSkgU3luY2hyb25v
dXMKICAgICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKICAg
ICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCi0KKyAgICB2
b2lkIENvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2
ZWwsIHVpbnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5
cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgLT4gKGJvb2wgc3VjY2Vzcykg
U3luY2hyb25vdXMKIHt9CiB9fQogCiAjZW5kaWYKLQogIiIiCiApCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421073</attachid>
            <date>2021-02-19 19:37:54 -0800</date>
            <delta_ts>2021-02-19 19:37:54 -0800</delta_ts>
            <desc>Revise the patch based on Jer&apos;s suggestion</desc>
            <filename>bug-218184-20210219193753.patch</filename>
            <type>text/plain</type>
            <size>29890</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE4YmFiNjNiZjY3Mjdk
ODAwZWVjOTI2MTMyZjVhYmM2YWRkNDdhMC4uMWU2OTU5MGU4ZTQ2ZTZkMWE3OTMwMTAwMTJhZTky
NjFmZmRkOThkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTAyLTE5ICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgVmlkZW8gZWxlbWVudHMgZG8g
bm90IHdvcmsgYXMgc291cmNlcyBmb3IgVGV4SW1hZ2UyRCBjYWxscyBpbiBHUFUgUHJvY2Vzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgZnVu
Y3Rpb24gYEdyYXBoaWNzQ29udGV4dEdMOjpjb3B5VGV4dHVyZUZyb21NZWRpYSgpYCB3aGljaCBj
YW4gYmUgdXNlZCBieSB0aGUgZ3JhcGhpY3MgY29udGV4dAorICAgICAgICB0byBjb3B5IHZpZGVv
IHRleHR1cmUgZnJvbSBhIHZpZGVvIGVsZW1lbnQgKHBsYXllcikuCisKKyAgICAgICAgTWFudWFs
bHkgdGVzdGVkLgorICAgICAgICBXZSBuZWVkIHRvIGVuYWJsZSBib3RoICJHUFUgUHJvY2Vzczog
TWVkaWEiIGFuZCAiR1BVIFByb2Nlc3M6IFdlYkdMIiB0byB0ZXN0IHRoZSBmZWF0dXJlLgorCisg
ICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxWaWRlb0VsZW1lbnQ6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6IERlbGV0
ZWQuCisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZVNvdXJjZUhlbHBlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZTo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1l
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwaXhlbEJ1
ZmZlckZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNvcHlUZXh0dXJlRnJvbU1lZGlhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKwogMjAyMS0wMi0xOCAgTXlsZXMgQy4g
TWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10g
VGVtcG9yYXJpbHkgZGlzYWJsZSBkcmF3aW5nIE9ULVNWRyBnbHlwaHMgaW4gdGhlIEdQVSBwcm9j
ZXNzIHVudGlsIGl0IGNhbiBiZSBpbXBsZW1lbnRlZCBwcm9wZXJseQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0ZWU2
ZTQ5ZjMxM2ZiZGYwNGNjYTM0N2ZiYzMwMzVjMjEyMzE0NmVmLi41YWRjN2VjODQwOGQzNWJkZTBm
MDQzNTdjMTEwMzViYmQ2NzI3ODZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTAy
LTE5ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgVmlkZW8gZWxl
bWVudHMgZG8gbm90IHdvcmsgYXMgc291cmNlcyBmb3IgVGV4SW1hZ2UyRCBjYWxscyBpbiBHUFUg
UHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE4MTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIGFuIElQQyBtZXNzYWdlIGBSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6Q29weVRleHR1cmVG
cm9tTWVkaWFgIHRvIGltcGxlbWVudAorICAgICAgICBgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6Y29weVRleHR1cmVGcm9tTWVkaWEoKWAgaW4gdGhlIFdlYiBwcm9jZXNzLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjb3B5VGV4dHVyZUZyb21N
ZWRpYSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRl
eHRHTC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHk6OmNvcHlUZXh0dXJlRnJvbU1lZGlhKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuaDoKKwogMjAyMS0wMi0xOCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU10gUmVtb3ZlIGFjY2VzcyB0byBBcHBsZUpQRUdEcml2ZXJVc2VyQ2xp
ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBkNzYwZTJi
NTBkYTk4M2M1ZWEzMmJkNjBhMGU4OWE0ZmFhNjNkNmMxLi5hZWJkY2Y4NjU0MjMyODhiNjkyOTll
OGUwMTg4MTMyMWI5NzFiMDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKQEAgLTMwMCwxMyArMzAwLDYgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnMKICAgICBj
b250ZXh0LnBhaW50RnJhbWVGb3JNZWRpYSgqcGxheWVyLCBkZXN0UmVjdCk7CiB9CiAKLWJvb2wg
SFRNTFZpZGVvRWxlbWVudDo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBo
aWNzQ29udGV4dEdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVt
IHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVt
IGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZ
KQotewotICAgIGlmICghcGxheWVyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gcGxheWVyKCktPmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0
ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVt
dWx0aXBseUFscGhhLCBmbGlwWSk7Ci19Ci0KIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6aGFzQXZh
aWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFwbGF5ZXIoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggZGNhOGFhYWI1Nzc3Mzg3NmE0ZTUyOTYx
NmViOTJmMGJkZWZhZThlZS4uNjQ1MThhZmVmY2RkMjY4ZmQwMjI4NmFiNTQzYzVkMWFhY2U0MDE4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTc3LDEwICs3Nyw2
IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JDdXJy
ZW50VGltZSgpOwogCi0gICAgLy8gVXNlZCBieSBXZWJHTCB0byBkbyBHUFUtR1BVIHRleHR1cmVz
IGNvcHkgaWYgcG9zc2libGUuCi0gICAgLy8gU2VlIG1vcmUgZGV0YWlscyBhdCBNZWRpYVBsYXll
cjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKCkgZGVmaW5lZCBpbiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oLgotICAgIGJvb2wgY29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1H
TE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVt
IGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJl
bXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSk7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNo
b3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpIGNvbnN0OwogCiAgICAgVVJMIHBvc3RlckltYWdlVVJM
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGRlYTdjMjY4MDg1NmViZmI0NjllZmE5YWRm
YjVhYjI1ZWFhM2M4NGYuLmMwMWNlMzdmZjhlZTI2NGViZDkwMmRlNzY3OGJkNmYwYzhkNDg0Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCkBAIC00ODgxLDcgKzQ4ODEsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZVNvdXJjZUhlbHBlcihUZXhJbWFn
ZUZ1bmN0aQogICAgICAgICAgICAgJiYgKGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6UkdC
IHx8IGZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHRHTDo6UkdCQSkKICAgICAgICAgICAgICYmIHR5
cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlVOU0lHTkVEX0JZVEUKICAgICAgICAgICAgICYmICFs
ZXZlbCkgewotICAgICAgICAgICAgaWYgKHZpZGVvLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUobV9jb250ZXh0LmdldCgpLCB0ZXh0dXJlLT5vYmplY3QoKSwgdGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxmb3JtYXQsIGZvcm1hdCwgdHlwZSwgbV91bnBhY2tQcmVtdWx0aXBseUFscGhh
LCBtX3VucGFja0ZsaXBZKSkgeworICAgICAgICAgICAgaWYgKHZpZGVvLT5wbGF5ZXIoKSAmJiBt
X2NvbnRleHQtPmNvcHlUZXh0dXJlRnJvbU1lZGlhKCp2aWRlby0+cGxheWVyKCksIHRleHR1cmUt
Pm9iamVjdCgpLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgZm9ybWF0LCB0eXBlLCBt
X3VucGFja1ByZW11bHRpcGx5QWxwaGEsIG1fdW5wYWNrRmxpcFkpKSB7CiAjaWYgIVVTRShBTkdM
RSkKICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5zZXRMZXZlbEluZm8odGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHZpZGVvLT52aWRlb1dpZHRoKCksIHZpZGVvLT52aWRlb0hlaWdodCgp
LCB0eXBlKTsKICNlbmRpZiAvLyAhVVNFKEFOR0xFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggZjdkYzhhZWMxYjBi
MzdmYWJhNTM2Y2Q0N2NjMDI1ZjU5N2YwMzc5MS4uMGJjZGY5YzBmZWIwYTI5NTFhNTIwZWFiM2Qz
ZTJkYzdkZjQ1NjUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0R0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSW1h
Z2UuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1
ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTEzMDYsNyAr
MTMwNyw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIGludGVyZmFjZSBmb3IgQ1YgaW50ZXJh
Y3Rpb24gaWYgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgcHJlc2VudC4KICAgICB2aXJ0dWFsIEdyYXBo
aWNzQ29udGV4dEdMQ1YqIGFzQ1YoKSA9IDA7CiAjZW5kaWYKLQorICAgIHZpcnR1YWwgYm9vbCBj
b3B5VGV4dHVyZUZyb21NZWRpYShNZWRpYVBsYXllciYsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVy
ZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1h
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEs
IGJvb2wgZmxpcFkpID0gMDsKIAogICAgIEludFNpemUgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNp
emUoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWln
aHQpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcAppbmRleCA3ZWNmMmQwOWIwODU2NjE1MjIyNjFkZTQwY2VhNzcyOTZhZWQzOGZmLi40
YjBhY2M3ZGMxMGEwM2ZhZTEwOWY1MjM2OWI2OTYwYWIxNThmMDE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xMDA2LDExICsx
MDA2LDIyIEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgcCwgY29u
c3QgRmxvYXRSZWN0JiByKQogICAgIG1fcHJpdmF0ZS0+cGFpbnQocCwgcik7CiB9CiAKKyNpZiAh
VVNFKEFWRk9VTkRBVElPTikKKwogYm9vbCBNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVyZVRv
UGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2Jq
ZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0
aXBseUFscGhhLCBib29sIGZsaXBZKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPmNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlLCB0YXJnZXQsIGxldmVs
LCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7
CiB9CiAKKyNlbHNlCisKK0NWUGl4ZWxCdWZmZXJSZWYgTWVkaWFQbGF5ZXI6OnBpeGVsQnVmZmVy
Rm9yQ3VycmVudFRpbWUoKQoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnBpeGVsQnVmZmVyRm9y
Q3VycmVudFRpbWUoKTsKK30KKworI2VuZGlmCisKIFJlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQ
bGF5ZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewogICAgIHJldHVybiBtX3ByaXZh
dGUtPm5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IGQ1ODk1NzA5MGU1ZTI4NGI1OWFkOTMw
MTk0MTgyYjE3NWVhZGMwMGEuLjZhMWQ5MjdlN2ZlNzFmMjRmNzU1N2IxNTk3NmQ2MWUwMTIxMmUy
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aApAQCAtNjIsNiArNjIsMTAgQEAKIE9CSkNfQ0xBU1MgQVZQbGF5ZXI7CiBPQkpDX0NMQVNTIE5T
QXJyYXk7CiAKKyNpZiBFTkFCTEUoV0VCR0wpICYmIFVTRShBVkZPVU5EQVRJT04pCit0eXBlZGVm
IHN0cnVjdCBfX0NWQnVmZmVyKiBDVlBpeGVsQnVmZmVyUmVmOworI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9Tb3VyY2VQcm92aWRlcjsKQEAgLTQzNyw4ICs0NDEs
MTEgQEAgcHVibGljOgogICAgIC8vIEluIHRoZSBHUFUtR1BVIHRleHR1cmVzIGNvcHksIHRoZSBz
b3VyY2UgdGV4dHVyZShWaWRlbyB0ZXh0dXJlKSBzaG91bGQgaGF2ZSB2YWxpZCB0YXJnZXQsIGlu
dGVybmFsRm9ybWF0IGFuZCBzaXplLCBldGMuCiAgICAgLy8gVGhlIGRlc3RpbmF0aW9uIHRleHR1
cmUgbWF5IG5lZWQgdG8gYmUgcmVzaXplZCB0byB0byB0aGUgZGltZW5zaW9ucyBvZiB0aGUgc291
cmNlIHRleHR1cmUgb3IgcmUtZGVmaW5lZCB0byB0aGUgcmVxdWlyZWQgaW50ZXJuYWxGb3JtYXQu
CiAgICAgLy8gVGhlIGN1cnJlbnQgcmVzdHJpY3Rpb25zIHJlcXVpcmUgdGhhdCBmb3JtYXQgc2hv
dWQgYmUgUkdCIG9yIFJHQkEsIHR5cGUgc2hvdWxkIGJlIFVOU0lHTkVEX0JZVEUgYW5kIGxldmVs
IHNob3VsZCBiZSAwLiBJdCBtYXkgYmUgbGlmdGVkIGluIHRoZSBmdXR1cmUuCi0KKyNpZiAhVVNF
KEFWRk9VTkRBVElPTikKICAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZShHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0g
dGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkp
OworI2Vsc2UKKyAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUo
KTsKKyNlbmRpZgogCiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJl
bnRUaW1lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggZWE4ZDMzZjAyOGU3OTAyZjhkYmRiNzQ4MWIzYTU0
NzNhMmFmZjcxMy4uYzZhN2NjMzg4ZjJmMzRhM2Y0NDEyM2UyZjI1ZDUzNzk3OTlhYTI4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQ
cml2YXRlLmgKQEAgLTE2MSw3ICsxNjEsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBw
YWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjLCBj
b25zdCBGbG9hdFJlY3QmIHIpIHsgcGFpbnQoYywgcik7IH0KKyNpZiAhVVNFKEFWRk9VTkRBVElP
TikKICAgICB2aXJ0dWFsIGJvb2wgY29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdy
YXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdD
R0xlbnVtLCBHQ0dMZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIHsgcmV0dXJuIGZhbHNlOyB9
CisjZWxzZQorICAgIHZpcnR1YWwgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZvckN1cnJl
bnRUaW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQorI2VuZGlmCiAgICAgdmlydHVhbCBSZWZQdHI8
TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSB7IHJldHVybiBudWxscHRy
OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbG9hZChNZWRpYVBsYXllcjo6UHJlbG9hZCkg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggNjFjNmQyNDU3MWYwMmE5YTBlOWY2Y2EwZDA3
MWM5NDBmZGRhODk0Ny4uMTQ1MWFjYzM5ZDg3N2Q5OGY3YWE5Njg0NjdkZmJlNzI2MDBkYjhmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtMjU0LDcgKzI1NCw3IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgZmluYWw7CiAg
ICAgdm9pZCB3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCk7CiAKLSAgICBi
b29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCos
IFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBw
cmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsKKyAgICBDVlBpeGVsQnVmZmVyUmVm
IHBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKIAogI2lmIEVOQUJMRShMRUdBQ1lf
RU5DUllQVEVEX01FRElBKQogICAgIHZvaWQga2V5QWRkZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCmluZGV4IGE3OTEzNGE0ZTdiZWE2ZjA1NzdiYTUyMDNiOTZlZWNjMTBkMDI3NWIu
LjZiNGEzYzMxZTg2ZjhiYThmMzVlNDhjMGY1ODc5MzU4YTQ5ZWQ2NDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQpAQCAtMjM4OCwyMCArMjM4OCwxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYg
YwogCiB9CiAKLWJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29weVZp
ZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiBjb250ZXh0LCBQ
bGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NH
TGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQorQ1ZQaXhlbEJ1
ZmZlclJlZiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwaXhlbEJ1ZmZlckZv
ckN1cnJlbnRUaW1lKCkKIHsKLSAgICBBU1NFUlQoY29udGV4dCk7Ci0KICAgICB1cGRhdGVMYXN0
UGl4ZWxCdWZmZXIoKTsKICAgICBpZiAoIW1fbGFzdFBpeGVsQnVmZmVyKQotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBjb250ZXh0Q1Yg
PSBjb250ZXh0LT5hc0NWKCk7Ci0gICAgaWYgKCFjb250ZXh0Q1YpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBVTlVTRURfVkFSSUFCTEUocHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgQVNTRVJU
X1VOVVNFRChvdXRwdXRUYXJnZXQsIG91dHB1dFRhcmdldCA9PSBHcmFwaGljc0NvbnRleHRHTDo6
VEVYVFVSRV8yRCk7Ci0gICAgcmV0dXJuIGNvbnRleHRDVi0+Y29weVBpeGVsQnVmZmVyVG9UZXh0
dXJlKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpLCBvdXRwdXRUZXh0dXJlLCBsZXZlbCwgaW50ZXJu
YWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgR3JhcGhpY3NDb250ZXh0R0w6OkZsaXBZKGZsaXBZKSk7
CisgICAgcmV0dXJuIG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpOwogfQogCiBSZWZQdHI8TmF0aXZl
SW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBmNmQ3ZDQ0ODVhYTA5
NjY5OGNiNDIwOTBmMjg2MDUzMWU3ZmM5YWZmLi43YWM1MzJmMGY5OWJmMzQ2MTZhZGE3ZmE2MjJi
NzE4NmRkZDVkN2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMjIxLDcgKzIyMSw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCB1cGRhdGVMYXN0SW1hZ2UoKTsKICAgICB2b2lkIHBhaW50
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQg
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0Jikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUoR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgb3ZlcnJp
ZGU7CisgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKCkgZmlu
YWw7CiAKICAgICBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdCBvdmVy
cmlkZTsKICAgICAvLyBjYWxsZWQgd2hlbiB0aGUgcmVuZGVyaW5nIHN5c3RlbSBmbGlwcyB0aGUg
aW50byBvciBvdXQgb2YgYWNjZWxlcmF0ZWQgcmVuZGVyaW5nIG1vZGUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMubW0KaW5kZXggZGRlNzVkMWI1MTI3ODk4ZjZmZjg2NjYyNjljOWU1ODM2OTc0NTI3
OS4uMzQwNTRiN2JhYTQ5NjY3MjcxYmMzMmVkYmM2NWY1OTA5NzczOGJiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbQpAQCAtNjIzLDcgKzYyMyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGlj
c0NvCiAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBpbWFnZVJlY3Quc2l6ZSgp
LCBvdXRwdXRSZWN0LCBpbWFnZVJlY3QpOwogfQogCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBo
aWNzQ29udGV4dEdMKiBjb250ZXh0LCBQbGF0Zm9ybUdMT2JqZWN0IG91dHB1dFRleHR1cmUsIEdD
R0xlbnVtIG91dHB1dFRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3Jt
YXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhh
LCBib29sIGZsaXBZKQorQ1ZQaXhlbEJ1ZmZlclJlZiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakM6OnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKQogewogICAgIC8vIFdlIGhh
dmUgYmVlbiBhc2tlZCB0byBwYWludCBpbnRvIGEgV2ViR0wgY2FudmFzLCBzbyB0YWtlIHRoYXQg
YXMgYSBzaWduYWwgdG8gY3JlYXRlCiAgICAgLy8gYSBkZWNvbXByZXNzaW9uIHNlc3Npb24sIGV2
ZW4gaWYgdGhhdCBtZWFucyB0aGUgbmF0aXZlIHZpZGVvIGNhbid0IGFsc28gYmUgZGlzcGxheWVk
CkBAIC02MzMsMTggKzYzMywxMiBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQzo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYQogICAgICAgICBh
Y2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpOwogICAgIH0KIAotICAgIEFTU0VSVChj
b250ZXh0KTsKLQogICAgIGlmICh1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKSkgewogICAgICAgICBp
ZiAoIW1fbGFzdFBpeGVsQnVmZmVyKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGF1dG8gY29udGV4dENWID0gY29udGV4
dC0+YXNDVigpOwotICAgIGlmICghY29udGV4dENWKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgVU5VU0VEX1ZBUklBQkxFKHByZW11bHRpcGx5QWxwaGEpOwotICAgIEFTU0VSVF9VTlVTRUQo
b3V0cHV0VGFyZ2V0LCBvdXRwdXRUYXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVf
MkQpOwotICAgIHJldHVybiBjb250ZXh0Q1YtPmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShtX2xh
c3RQaXhlbEJ1ZmZlci5nZXQoKSwgb3V0cHV0VGV4dHVyZSwgbGV2ZWwsIGludGVybmFsRm9ybWF0
LCBmb3JtYXQsIHR5cGUsIEdyYXBoaWNzQ29udGV4dEdMQ1Y6OkZsaXBZKGZsaXBZKSk7CisKKyAg
ICByZXR1cm4gbV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IDc0NzE3N2YyNmEzOWEz
MDRkOWQ5YTBlODA0NmQzNjBlZGY0ZWVkMDMuLmFmOTkxYjE3NWU5NWQ2Yzg0NmJiYTZlZDk0NWRi
NTIzMWQ3Y2Q1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApAQCAt
MzMsOCArMzMsMTMgQEAKICNpbmNsdWRlICJFeHRlbnNpb25zR0wuaCIKICNpbmNsdWRlICJJbWFn
ZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVy
UHJpdmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCisjaWYgVVNFKEFWRk9V
TkRBVElPTikKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTENWLmgiCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNldEJ1
ZmZlcnNUb0F1dG9DbGVhcigpCkBAIC0yNTMsNiArMjU4LDI1IEBAIFJlZlB0cjxJbWFnZURhdGE+
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogfQogI2Vu
ZGlmCiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmNvcHlUZXh0dXJlRnJvbU1lZGlh
KE1lZGlhUGxheWVyJiBwbGF5ZXIsIFBsYXRmb3JtR0xPYmplY3Qgb3V0cHV0VGV4dHVyZSwgR0NH
TGVudW0gb3V0cHV0VGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1h
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEs
IGJvb2wgZmxpcFkpCit7CisjaWYgVVNFKEFWRk9VTkRBVElPTikKKyAgICBhdXRvIHBpeGVsQnVm
ZmVyID0gcGxheWVyLnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKTsKKyAgICBpZiAoIXBpeGVs
QnVmZmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGNvbnRleHRDViA9IGFz
Q1YoKTsKKyAgICBpZiAoIWNvbnRleHRDVikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
VU5VU0VEX1ZBUklBQkxFKHByZW11bHRpcGx5QWxwaGEpOworICAgIEFTU0VSVF9VTlVTRUQob3V0
cHV0VGFyZ2V0LCBvdXRwdXRUYXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQp
OworICAgIHJldHVybiBjb250ZXh0Q1YtPmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShwaXhlbEJ1
ZmZlciwgb3V0cHV0VGV4dHVyZSwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUs
IEdyYXBoaWNzQ29udGV4dEdMOjpGbGlwWShmbGlwWSkpOworI2Vsc2UKKyAgICByZXR1cm4gcGxh
eWVyLmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSh0aGlzLCBvdXRwdXRUZXh0dXJl
LCBvdXRwdXRUYXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBwcmVt
dWx0aXBseUFscGhhLCBmbGlwWSk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuaAppbmRleCBlNDRiZmQ1ZDlmOGFkOWQ3YzUyNzYwMWEyNTJhNzcwZWQ0Zjk3OTU1Li5hYmMz
ODBjNzNjYTM5MGZhOTdlNmE0ZDQ1Y2VkMmUyZmQyZDJlYzU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaApAQCAtODYsNiArODYsNyBAQCBjbGFzcyBFeHRlbnNpb25zR0xPcGVu
R0w7CiBjbGFzcyBIb3N0V2luZG93OwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBJbWFnZURh
dGE7CitjbGFzcyBNZWRpYVBsYXllcjsKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiBjbGFzcyBU
ZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI7CiAjZW5kaWYKQEAgLTQ2NSw2ICs0NjYsOCBA
QCBwdWJsaWM6CiAgICAgUmVmUHRyPEltYWdlRGF0YT4gcmVhZFJlbmRlcmluZ1Jlc3VsdHNGb3JQ
YWludGluZygpOwogICAgIFJlZlB0cjxJbWFnZURhdGE+IHJlYWRDb21wb3NpdGVkUmVzdWx0c0Zv
clBhaW50aW5nKCk7CiAKKyAgICBib29sIGNvcHlUZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVy
JiwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2
ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgZmluYWw7CisKICNpZiBVU0Uo
T1BFTkdMKSAmJiBFTkFCTEUoV0VCR0wyKQogICAgIHZvaWQgcHJpbWl0aXZlUmVzdGFydEluZGV4
KEdDR0x1aW50KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggZWEzMTEz
YjNmMWQ5ZDQ0YmEzOGM4OWY1MDMxNTgwNzJhOWY1OGY5MC4uYWM1ZGZhNjlhNGU1NTAwNGRlMjUw
NWI2NDRhNzliYzhmYWYwYWU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0zMyw3
ICszMywxMSBAQAogI2luY2x1ZGUgIlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KIAorI2lmIFVTRShBVkZPVU5EQVRJT04pCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0Nv
bnRleHRHTENWLmg+CisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKQEAgLTE3Nyw2ICsxODEsNTQgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTDo6cGFpbnRJbWFnZURhdGFUb0ltYWdlQnVmZmVyKFJlZlB0cjxXZWJDb3JlOjpJbWFnZUQK
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMOjpjb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIg
bWVkaWFQbGF5ZXJJZGVudGlmaWVyLCB1aW50MzJfdCB0ZXh0dXJlLCB1aW50MzJfdCB0YXJnZXQs
IGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsRm9ybWF0LCB1aW50MzJfdCBmb3JtYXQs
IHVpbnQzMl90IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyNpZiBVU0Uo
QVZGT1VOREFUSU9OKQorICAgIFVOVVNFRF9WQVJJQUJMRShwcmVtdWx0aXBseUFscGhhKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHRhcmdldCwgdGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dEdMOjpURVhU
VVJFXzJEKTsKKworICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBwaXhlbEJ1ZmZlcjsK
KyAgICBhdXRvIGdldFBpeGVsQnVmZmVyID0gWyZdIHsKKyAgICAgICAgaWYgKCFtX2dwdUNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKGF1
dG8gbWVkaWFQbGF5ZXIgPSBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPnJlbW90ZU1lZGlh
UGxheWVyTWFuYWdlclByb3h5KCkubWVkaWFQbGF5ZXIobWVkaWFQbGF5ZXJJZGVudGlmaWVyKSkK
KyAgICAgICAgICAgIHBpeGVsQnVmZmVyID0gbWVkaWFQbGF5ZXItPnBpeGVsQnVmZmVyRm9yQ3Vy
cmVudFRpbWUoKTsKKyAgICB9OworCisgICAgaWYgKGlzTWFpblRocmVhZCgpKQorICAgICAgICBn
ZXRQaXhlbEJ1ZmZlcigpOworICAgIGVsc2UKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZEFuZFdh
aXQoV1RGTW92ZShnZXRQaXhlbEJ1ZmZlcikpOworCisgICAgaWYgKCFwaXhlbEJ1ZmZlcikgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBhdXRvIGNvbnRleHRDViA9IG1fY29udGV4dC0+YXNDVigpOworICAgIGlmICghY29u
dGV4dENWKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHRDVi0+Y29weVBpeGVs
QnVmZmVyVG9UZXh0dXJlKHBpeGVsQnVmZmVyLmdldCgpLCB0ZXh0dXJlLCBsZXZlbCwgaW50ZXJu
YWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgR3JhcGhpY3NDb250ZXh0R0w6OkZsaXBZKGZsaXBZKSkp
OworI2Vsc2UKKyAgICBVTlVTRURfVkFSSUFCTEUobWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKKyAg
ICBVTlVTRURfVkFSSUFCTEUodGV4dHVyZSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHRhcmdldCk7
CisgICAgVU5VU0VEX1ZBUklBQkxFKGxldmVsKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoaW50ZXJu
YWxGb3JtYXQpOworICAgIFVOVVNFRF9WQVJJQUJMRShmb3JtYXQpOworICAgIFVOVVNFRF9WQVJJ
QUJMRSh0eXBlKTsKKyAgICBVTlVTRURfVkFSSUFCTEUocHJlbXVsdGlwbHlBbHBoYSk7CisgICAg
VU5VU0VEX1ZBUklBQkxFKGZsaXBZKTsKKworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIoZmFsc2UpOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKaW5kZXggYWFhNTc0OWQwYmM1NDY0NmIy
YzFmOGY0YzM5ZTU4YmRhOTYxZTg0Zi4uZDhlODExODRiZDEwYWJlMWY0OTZkMTE3YzQ4NGU3ZWVl
MDM3ODA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTk1LDYgKzk1LDcgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IodWludDMyX3QgZXJyb3IpOwogICAgIHZv
aWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcGFp
bnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNvcHlUZXh0
dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciwgdWludDMyX3QgdGV4
dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbEZv
cm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5QWxw
aGEsIGJvb2wgZmxpcFksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAjaW5j
bHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCIgLy8gTk9M
SU5UCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCBkMTUw
OTU5YWFhNWU1NGEzZWM1MGI3NGEyMjE5NzA4NGIwMGRhNjg5Li5lNjA2MzNmZmQ1NzY5MmIxOTc0
NzI2ZGExNWVjZDNiMDNlNTllOGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1l
c3NhZ2VzLmluCkBAIC0zNiw5ICszNiw5IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMIE5vdFJlZkNvdW50ZWQgewogICAgIHZvaWQgTm90aWZ5TWFya0NvbnRleHRDaGFuZ2Vk
KCkKICAgICB2b2lkIFN5bnRoZXNpemVHTEVycm9yKHVpbnQzMl90IGVycm9yKQogICAgIHZvaWQg
R2V0RXJyb3IoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCi0gICAgdm9p
ZCBQYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKCkgU3luY2hyb25vdXMKLSAgICB2b2lkIFBhaW50
Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgaWRlbnRpZmllcikgLT4gKCkgU3luY2hyb25vdXMKLQorICAgIHZvaWQgUGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGltYWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91cworICAgIHZvaWQgUGFpbnRDb21wb3NpdGVk
UmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFn
ZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKKyAgICB2b2lkIENvcHlUZXh0dXJlRnJvbU1lZGlh
KFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50MzJfdCB0ZXh0
dXJlLCB1aW50MzJfdCB0YXJnZXQsIGludDMyX3QgbGV2ZWwsIHVpbnQzMl90IGludGVybmFsRm9y
bWF0LCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBo
YSwgYm9vbCBmbGlwWSkgLT4gKGJvb2wgc3VjY2VzcykgU3luY2hyb25vdXMKIAogICAgIHZvaWQg
U2V0RmFpbE5leHRHUFVTdGF0dXNDaGVjaygpCiAgICAgdm9pZCBNb3ZlRXJyb3JzVG9TeW50aGV0
aWNFcnJvckxpc3QoKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgU3luY2hyb25vdXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCmluZGV4IGMwNTI5MjFlMDE3ZThjM2M2
MjE0ODRlMTM5N2I4M2IzZmJmZmQxYjAuLjlmODI4ZTE0NWY2ZDkzNDZkZGI3NzliYTc0NjNiMjE3
OTlmMzJkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApA
QCAtMTYxLDYgKzE2MSwxOCBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnBh
aW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciYgYgogICAgIH0KIH0KIAor
Ym9vbCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4dHVyZUZyb21NZWRpYShN
ZWRpYVBsYXllciYgbWVkaWFQbGF5ZXIsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxp
cFkpCit7CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXh0dXJlRnJv
bU1lZGlhKG1lZGlhUGxheWVyLmlkZW50aWZpZXIoKSwgdGV4dHVyZSwgdGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpLCBN
ZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OkNvcHlUZXh0dXJlRnJvbU1lZGlhOjpS
ZXBseShyZXN1bHQpKTsKKyAgICBpZiAoIXNlbmRSZXN1bHQpIHsKKyAgICAgICAgbWFya0NvbnRl
eHRMb3N0KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnN5bnRoZXNpemVH
TEVycm9yKEdDR0xlbnVtIGVycm9yKQogewogICAgIGlmICghaXNDb250ZXh0TG9zdCgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCmluZGV4IDVjZTU3Njc2YjA5MDVh
NjU3NDA0MmE5ZjU0MzhhNDcxZmI3ZWY5OTAuLjI2NGY3NDU0NjZmZjczNmQyODM4NTg2ZmE4NjVh
OTk5ZGYxZWViNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oCkBA
IC02OSw2ICs2OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bnRoZXNpemVHTEVycm9yKEdDR0xl
bnVtIGVycm9yKSBmaW5hbDsKICAgICBHQ0dMZW51bSBnZXRFcnJvcigpIGZpbmFsOwogCisgICAg
Ym9vbCBjb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllciYsIFBsYXRmb3Jt
R0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51
bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHBy
ZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIGZpbmFsOworCiAgICAgLy8gRnVuY3Rpb25zIHdp
dGggYSBnZW5lcmF0ZWQgaW1wbGVtZW50YXRpb24uIFRoaXMgbGlzdCBpcyB1c2VkIGJ5IGdlbmVy
YXRlLWdwdXAtd2ViZ2wgc2NyaXB0LgogICAgIHZvaWQgc2V0RmFpbE5leHRHUFVTdGF0dXNDaGVj
aygpIGZpbmFsOwogICAgIGJvb2wgbW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggYTJmMDE2N2VmOWM5ZDZlM2Qz
YWFhOTVkMTg0N2VlOTMwZDRjZWJmMi4uOGNiNDYxODI1Y2M2NDE5NTgxYjM3ZGRhMWM0NjY5MzYy
MjU3YzljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9N
ZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtODQ4LDExICs4NDgs
MTMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBhaW50Q3VycmVudEZyYW1lSW5D
b250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnMKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
CisjaWYgIVVTRShBVkZPVU5EQVRJT04pCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMKiwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIEdDR0xpbnQsIEdDR0xlbnVtLCBHQ0dM
ZW51bSwgR0NHTGVudW0sIGJvb2wsIGJvb2wpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CisjZW5kaWYKIAogUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggYTE1NGFmODY4YmVkMjZiMjQ1N2IzMzY1MDBmM2JmODBi
N2QyNGE1ZS4uZjI4ZWE5MzJmY2MxNTNkOGI3MDMzZGYxMTAyMjI1OTVjMWQ1ZDg3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZS5oCkBAIC0yODEsNyArMjgxLDkgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JikgZmluYWw7CiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5hbDsK
KyNpZiAhVVNFKEFWRk9VTkRBVElPTikKICAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRm
b3JtVGV4dHVyZShXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3Qs
IEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBi
b29sKSBmaW5hbDsKKyNlbmRpZgogICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gbmF0
aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIGZpbmFsOwogCiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxYzAyZTFkMDY1NzljNTM1MWM5ZmMy
MWZmOGQ2NGE1YTc0NzcwNWQ2Li4wNWVjMjgzYzliMmY5MjgyNjRmZDUzZWQyZGViM2Q4YjJlZTQw
YTY0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMjEtMDItMTkgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNv
bT4KKworICAgICAgICBWaWRlbyBlbGVtZW50cyBkbyBub3Qgd29yayBhcyBzb3VyY2VzIGZvciBU
ZXhJbWFnZTJEIGNhbGxzIGluIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgxODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbDoKKwog
MjAyMS0wMi0xOCAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R0xJQl0gR2FyZGVuaW5nIGRlYnVnIE9mZnNjcmVlbkNhbnZhcyBjcmFzaGVzCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wgYi9Ub29scy9TY3JpcHRzL2dlbmVy
YXRlLWdwdXAtd2ViZ2wKaW5kZXggZmU4ZmE5YWU1MTc0MGJkYTYzZjUxNTNmZGE4ZjE2ZDdlNjJi
NWZiZi4uODc3NDg0ZGY4OThhNDFmNWYxODFkNWZkZTFiYjYxODczYWQ5YWQ1MCAxMDA3NTUKLS0t
IGEvVG9vbHMvU2NyaXB0cy9nZW5lcmF0ZS1ncHVwLXdlYmdsCisrKyBiL1Rvb2xzL1NjcmlwdHMv
Z2VuZXJhdGUtZ3B1cC13ZWJnbApAQCAtMTAzLDEyICsxMDMsMTEgQEAgbWVzc2FnZXMgLT4gUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0wgTm90UmVmQ291bnRlZCB7ewogICAgIHZvaWQgR2V0RXJyb3Io
KSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBQYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBQYWludENvbXBvc2l0
ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGlt
YWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91cwotCisgICAgdm9pZCBDb3B5VGV4dHVyZUZyb21N
ZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDMyX3Qg
dGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5h
bEZvcm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5
QWxwaGEsIGJvb2wgZmxpcFkpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCiB7fQogfX0K
IAogI2VuZGlmCi0KICIiIgogKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421109</attachid>
            <date>2021-02-20 13:50:59 -0800</date>
            <delta_ts>2021-02-20 18:05:47 -0800</delta_ts>
            <desc>Rebase the patch</desc>
            <filename>bug-218184-20210220135058.patch</filename>
            <type>text/plain</type>
            <size>31945</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWYyMGJiYjhiY2I5YjYw
OGU0NjIzOTFhZWZiYWRlZTNkNDlkZDU3Zi4uMWY5ZDJhYmI5NDAwOTZmYTAxMDU1YjkwM2EwNzIz
OTNlNzczNTAzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIxLTAyLTIwICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgVmlkZW8gZWxlbWVudHMgZG8g
bm90IHdvcmsgYXMgc291cmNlcyBmb3IgVGV4SW1hZ2UyRCBjYWxscyBpbiBHUFUgUHJvY2Vzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgZnVu
Y3Rpb24gYEdyYXBoaWNzQ29udGV4dEdMOjpjb3B5VGV4dHVyZUZyb21NZWRpYSgpYCB3aGljaCBj
YW4gYmUgdXNlZCBieSB0aGUgZ3JhcGhpY3MKKyAgICAgICAgY29udGV4dCB0byBjb3B5IHZpZGVv
IHRleHR1cmUgZnJvbSBhIHZpZGVvIGVsZW1lbnQgKHBsYXllcikuCisgICAgICAgIAorICAgICAg
ICBUaGlzIHBhdGNoIGFsc28gcmVwbGFjZXMgYE1lZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoKWAgd2l0aAorICAgICAgICBgTWVkaWFQbGF5ZXI6OnBpeGVsQnVm
ZmVyRm9yQ3VycmVudFRpbWUoKWAgb24gQ29jb2EgcG9ydHMuIFRoZSBtb3RpdmF0aW9uIGlzIHRo
YXQKKyAgICAgICAgYFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjb3B5VGV4dHVyZUZyb21NZWRp
YSgpYCB3aWxsIHJ1biBpbiBhIGJhY2tncm91bmQgdGhyZWFkCisgICAgICAgICgiUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0wgd29yayBxdWV1ZSIpIGFuZCBpdCBpcyBkaWZmaWN1bHQgdG8gbWFrZQor
ICAgICAgICBgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgp
YCB0aHJlYWQtc2FmZS4gSW4gYWRkaXRpb24sIHdlIGNhbm5vdAorICAgICAgICBzaW1wbHkgcnVu
IGl0IG9uIHRoZSBtYWluIHRocmVhZCBiZWNhdXNlIGl0IHVzZXMgZ3JhcGhpYyBjb250ZXh0IGlu
dGVybmFsbHkuIEFkZGluZyBhCisgICAgICAgIGZ1bmN0aW9uIGBNZWRpYVBsYXllcjo6cGl4ZWxC
dWZmZXJGb3JDdXJyZW50VGltZSgpYCBzb2x2ZXMgdGhlIHByb2JsZW0uCisKKyAgICAgICAgTWFu
dWFsbHkgdGVzdGVkLgorICAgICAgICBXZSBuZWVkIHRvIGVuYWJsZSBib3RoICJHUFUgUHJvY2Vz
czogTWVkaWEiIGFuZCAiR1BVIFByb2Nlc3M6IFdlYkdMIiB0byB0ZXN0IHRoZSBmZWF0dXJlLgor
CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxWaWRlb0VsZW1lbnQ6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSk6IERl
bGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlU291cmNlSGVscGVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oOgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXI6OnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVJbnRlcmZhY2U6OnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGl4ZWxCdWZmZXJGb3JDdXJy
ZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4
dHVyZSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNvcHlUZXh0dXJlRnJvbU1lZGlhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaDoKKwogMjAyMS0wMi0xOSAg
WXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIEpTIE1vZHVsZXMg
aW4gV29ya2VycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA0MWJkY2M1ZDgzODU2ZTA0MDA3ZmZhODA0Mjc3YTUzOGMy
YjczZjAxLi5iYTM4Mzg4NTE5YjA1ZTI5OTQyMTEyZDU5OWQ2OTY5MWVmYWQ0OGRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTAyLTIwICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBs
ZS5jb20+CisKKyAgICAgICAgVmlkZW8gZWxlbWVudHMgZG8gbm90IHdvcmsgYXMgc291cmNlcyBm
b3IgVGV4SW1hZ2UyRCBjYWxscyBpbiBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFuIElQQyBtZXNzYWdlIGBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTDo6Q29weVRleHR1cmVGcm9tTWVkaWFgIHRvIGltcGxlbWVudAorICAgICAg
ICBgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6Y29weVRleHR1cmVGcm9tTWVkaWEoKWAg
aW4gdGhlIFdlYiBwcm9jZXNzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMOjpjb3B5VGV4dHVyZUZyb21NZWRpYSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oOgorICAgICAgICBXZSBzaG91bGQgdXNl
IGBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NgIGluIHRoZSBtYWluIHRocmVhZCBvbmx5Lgor
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5t
ZXNzYWdlcy5pbjoKKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGlj
c0NvbnRleHRHTFByb3h5Ojpjb3B5VGV4dHVyZUZyb21NZWRpYSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5oOgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
aDoKKwogMjAyMS0wMi0yMCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYkdMIEdQVSBwcm9jZXNzIElQQyBzaG91bGQgdXNlIHNoYXJlZCBtZW1vcnkg
Zm9yIGFzeW5jaHJvbm91cyBtZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHAKaW5kZXggZDc2MGUyYjUwZGE5ODNjNWVhMzJiZDYwYTBlODlhNGZhYTYzZDZjMS4u
YWViZGNmODY1NDIzMjg4YjY5Mjk5ZThlMDE4ODEzMjFiOTcxYjA4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0zMDAsMTMgKzMwMCw2IEBAIHZvaWQgSFRN
TFZpZGVvRWxlbWVudDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zCiAgICAgY29udGV4dC5wYWludEZyYW1lRm9yTWVkaWEoKnBsYXllciwg
ZGVzdFJlY3QpOwogfQogCi1ib29sIEhUTUxWaWRlb0VsZW1lbnQ6OmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgUGxhdGZvcm1HTE9i
amVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGlu
dGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKLXsKLSAgICBpZiAoIXBsYXllcigpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHBsYXllcigpLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0
Zm9ybVRleHR1cmUoY29udGV4dCwgdGV4dHVyZSwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3Jt
YXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwotfQotCiBib29sIEhU
TUxWaWRlb0VsZW1lbnQ6Omhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdAogewogICAgIGlm
ICghcGxheWVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4IGRj
YThhYWFiNTc3NzM4NzZhNGU1Mjk2MTZlYjkyZjBiZGVmYWU4ZWUuLjY0NTE4YWZlZmNkZDI2OGZk
MDIyODZhYjU0M2M1ZDFhYWNlNDAxODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxl
bWVudC5oCkBAIC03NywxMCArNzcsNiBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8TmF0aXZlSW1h
Z2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKTsKIAotICAgIC8vIFVzZWQgYnkgV2ViR0wg
dG8gZG8gR1BVLUdQVSB0ZXh0dXJlcyBjb3B5IGlmIHBvc3NpYmxlLgotICAgIC8vIFNlZSBtb3Jl
IGRldGFpbHMgYXQgTWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZSgpIGRlZmluZWQgaW4gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaC4KLSAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGlj
c0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVudW0gdGFyZ2V0LCBH
Q0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVudW0gZm9ybWF0LCBH
Q0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpOwotCiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSBjb25zdDsKIAog
ICAgIFVSTCBwb3N0ZXJJbWFnZVVSTCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAyODg3
YjNhZDZlZWEzNzQ3ODI4MGMzMGY1MGViNGY1MzM4ZTU4YWU4Li5mYThhMmMzMTVkZTUwNDE3Y2Uz
YmQyZTljMTk2ZDg3OTQwYTFjNGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNDg4MSw3ICs0ODgx
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1h
Z2VTb3VyY2VIZWxwZXIoVGV4SW1hZ2VGdW5jdGkKICAgICAgICAgICAgICYmIChmb3JtYXQgPT0g
R3JhcGhpY3NDb250ZXh0R0w6OlJHQiB8fCBmb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlJH
QkEpCiAgICAgICAgICAgICAmJiB0eXBlID09IEdyYXBoaWNzQ29udGV4dEdMOjpVTlNJR05FRF9C
WVRFCiAgICAgICAgICAgICAmJiAhbGV2ZWwpIHsKLSAgICAgICAgICAgIGlmICh2aWRlby0+Y29w
eVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKG1fY29udGV4dC5nZXQoKSwgdGV4dHVyZS0+
b2JqZWN0KCksIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBmb3JtYXQsIHR5cGUsIG1f
dW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwgbV91bnBhY2tGbGlwWSkpIHsKKyAgICAgICAgICAgIGlm
ICh2aWRlby0+cGxheWVyKCkgJiYgbV9jb250ZXh0LT5jb3B5VGV4dHVyZUZyb21NZWRpYSgqdmlk
ZW8tPnBsYXllcigpLCB0ZXh0dXJlLT5vYmplY3QoKSwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxm
b3JtYXQsIGZvcm1hdCwgdHlwZSwgbV91bnBhY2tQcmVtdWx0aXBseUFscGhhLCBtX3VucGFja0Zs
aXBZKSkgewogI2lmICFVU0UoQU5HTEUpCiAgICAgICAgICAgICAgICAgdGV4dHVyZS0+c2V0TGV2
ZWxJbmZvKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB2aWRlby0+dmlkZW9XaWR0aCgp
LCB2aWRlby0+dmlkZW9IZWlnaHQoKSwgdHlwZSk7CiAjZW5kaWYgLy8gIVVTRShBTkdMRSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5oCmluZGV4IGY3ZGM4YWVjMWIwYjM3ZmFiYTUzNmNkNDdjYzAyNWY1OTdmMDM3OTEuLjBiY2Rm
OWMwZmViMGEyOTUxYTUyMGVhYjNkM2UyZGM3ZGY0NTY1MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuaApAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1
ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CkBAIC0xMzA2LDcgKzEzMDcsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyBp
bnRlcmZhY2UgZm9yIENWIGludGVyYWN0aW9uIGlmIHRoZSBmdW5jdGlvbmFsaXR5IGlzIHByZXNl
bnQuCiAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHRHTENWKiBhc0NWKCkgPSAwOwogI2VuZGlm
Ci0KKyAgICB2aXJ0dWFsIGJvb2wgY29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImLCBQ
bGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
Ym9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSA9IDA7CiAKICAgICBJbnRTaXplIGdl
dEludGVybmFsRnJhbWVidWZmZXJTaXplKCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZShtX2N1cnJl
bnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggN2VjZjJkMDliMDg1NjYxNTIyMjYx
ZGU0MGNlYTc3Mjk2YWVkMzhmZi4uNGIwYWNjN2RjMTBhMDNmYWUxMDlmNTIzNjliNjk2MGFiMTU4
ZjAxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcApAQCAtMTAwNiwxMSArMTAwNiwyMiBAQCB2b2lkIE1lZGlhUGxheWVyOjpwYWludChH
cmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEZsb2F0UmVjdCYgcikKICAgICBtX3ByaXZhdGUtPnBh
aW50KHAsIHIpOwogfQogCisjaWYgIVVTRShBVkZPVU5EQVRJT04pCisKIGJvb2wgTWVkaWFQbGF5
ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCog
Y29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCB0ZXh0dXJlLCBHQ0dMZW51bSB0YXJnZXQsIEdDR0xp
bnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKIHsKICAgICByZXR1
cm4gbV9wcml2YXRlLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoY29udGV4dCwg
dGV4dHVyZSwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSwgcHJl
bXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQogCisjZWxzZQorCitDVlBpeGVsQnVmZmVyUmVmIE1l
ZGlhUGxheWVyOjpwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKCkKK3sKKyAgICByZXR1cm4gbV9w
cml2YXRlLT5waXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKCk7Cit9CisKKyNlbmRpZgorCiBSZWZQ
dHI8TmF0aXZlSW1hZ2U+IE1lZGlhUGxheWVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkK
IHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCBk
NTg5NTcwOTBlNWUyODRiNTlhZDkzMDE5NDE4MmIxNzVlYWRjMDBhLi42YTFkOTI3ZTdmZTcxZjI0
Zjc1NTdiMTU5NzZkNjFlMDEyMTJlMjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTYyLDYgKzYyLDEwIEBACiBPQkpDX0NMQVNTIEFW
UGxheWVyOwogT0JKQ19DTEFTUyBOU0FycmF5OwogCisjaWYgRU5BQkxFKFdFQkdMKSAmJiBVU0Uo
QVZGT1VOREFUSU9OKQordHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciogQ1ZQaXhlbEJ1ZmZlclJl
ZjsKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1ZGlvU291cmNlUHJv
dmlkZXI7CkBAIC00MzcsOCArNDQxLDExIEBAIHB1YmxpYzoKICAgICAvLyBJbiB0aGUgR1BVLUdQ
VSB0ZXh0dXJlcyBjb3B5LCB0aGUgc291cmNlIHRleHR1cmUoVmlkZW8gdGV4dHVyZSkgc2hvdWxk
IGhhdmUgdmFsaWQgdGFyZ2V0LCBpbnRlcm5hbEZvcm1hdCBhbmQgc2l6ZSwgZXRjLgogICAgIC8v
IFRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJlIG1heSBuZWVkIHRvIGJlIHJlc2l6ZWQgdG8gdG8gdGhl
IGRpbWVuc2lvbnMgb2YgdGhlIHNvdXJjZSB0ZXh0dXJlIG9yIHJlLWRlZmluZWQgdG8gdGhlIHJl
cXVpcmVkIGludGVybmFsRm9ybWF0LgogICAgIC8vIFRoZSBjdXJyZW50IHJlc3RyaWN0aW9ucyBy
ZXF1aXJlIHRoYXQgZm9ybWF0IHNob3VkIGJlIFJHQiBvciBSR0JBLCB0eXBlIHNob3VsZCBiZSBV
TlNJR05FRF9CWVRFIGFuZCBsZXZlbCBzaG91bGQgYmUgMC4gSXQgbWF5IGJlIGxpZnRlZCBpbiB0
aGUgZnV0dXJlLgotCisjaWYgIVVTRShBVkZPVU5EQVRJT04pCiAgICAgYm9vbCBjb3B5VmlkZW9U
ZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2Jq
ZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50
ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0
aXBseUFscGhhLCBib29sIGZsaXBZKTsKKyNlbHNlCisgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhl
bEJ1ZmZlckZvckN1cnJlbnRUaW1lKCk7CisjZW5kaWYKIAogICAgIFJlZlB0cjxOYXRpdmVJbWFn
ZT4gbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IGVhOGQzM2Yw
MjhlNzkwMmY4ZGJkYjc0ODFiM2E1NDczYTJhZmY3MTMuLmM2YTdjYzM4OGYyZjM0YTNmNDQxMjNl
MmYyNWQ1Mzc5Nzk5YWEyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCkBAIC0xNjEsNyArMTYxLDExIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0
KEdyYXBoaWNzQ29udGV4dCYgYywgY29uc3QgRmxvYXRSZWN0JiByKSB7IHBhaW50KGMsIHIpOyB9
CisjaWYgIVVTRShBVkZPVU5EQVRJT04pCiAgICAgdmlydHVhbCBib29sIGNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3Qs
IEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBi
b29sKSB7IHJldHVybiBmYWxzZTsgfQorI2Vsc2UKKyAgICB2aXJ0dWFsIENWUGl4ZWxCdWZmZXJS
ZWYgcGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyNlbmRp
ZgogICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZvckN1cnJlbnRU
aW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldFByZWxvYWQo
TWVkaWFQbGF5ZXI6OlByZWxvYWQpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDYxYzZk
MjQ1NzFmMDJhOWEwZTlmNmNhMGQwNzFjOTQwZmRkYTg5NDcuLjE0NTFhY2MzOWQ4NzdkOThmN2Fh
OTY4NDY3ZGZiZTcyNjAwZGI4ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTI1NCw3ICsy
NTQsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gbmF0aXZlSW1hZ2VGb3JD
dXJyZW50VGltZSgpIGZpbmFsOwogICAgIHZvaWQgd2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRh
V2lsbENoYW5nZSgpOwogCi0gICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUoR3JhcGhpY3NDb250ZXh0R0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSB0YXJnZXQs
IEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQs
IEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkgZmluYWw7
CisgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKCkgZmluYWw7
CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKICAgICB2b2lkIGtleUFkZGVk
KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCAzZDg5ZDA5MWY0YTJmYjA2ZWZm
Njg4ZTNjNmZmZTgxZTJlNDlmNjllLi4xMzlmMjljMDFlYjE0MjRjZTNiZTk2MjdmZmE2NjQ0NjY5
NjhlYWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTIzODgsMjAgKzIzODgsMTMgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091
dHB1dChHcmFwaGljc0NvbnRleHQmIGMKIAogfQogCi1ib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGlj
c0NvbnRleHRHTCogY29udGV4dCwgUGxhdGZvcm1HTE9iamVjdCBvdXRwdXRUZXh0dXJlLCBHQ0dM
ZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnVtIGludGVybmFsRm9ybWF0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwg
Ym9vbCBmbGlwWSkKK0NWUGl4ZWxCdWZmZXJSZWYgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSgpCiB7Ci0gICAgQVNTRVJUKGNvbnRl
eHQpOwotCiAgICAgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CiAgICAgaWYgKCFtX2xhc3RQaXhl
bEJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIGF1dG8gY29udGV4dENWID0gY29udGV4dC0+YXNDVigpOwotICAgIGlmICghY29udGV4
dENWKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgVU5VU0VEX1ZBUklBQkxFKHByZW11bHRp
cGx5QWxwaGEpOwotICAgIEFTU0VSVF9VTlVTRUQob3V0cHV0VGFyZ2V0LCBvdXRwdXRUYXJnZXQg
PT0gR3JhcGhpY3NDb250ZXh0R0w6OlRFWFRVUkVfMkQpOwotICAgIHJldHVybiBjb250ZXh0Q1Yt
PmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSwgb3V0cHV0
VGV4dHVyZSwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIEdyYXBoaWNzQ29u
dGV4dEdMOjpGbGlwWShmbGlwWSkpOworICAgIHJldHVybiBtX2xhc3RQaXhlbEJ1ZmZlci5nZXQo
KTsKIH0KIAogUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
LmgKaW5kZXggZjZkN2Q0NDg1YWEwOTY2OThjYjQyMDkwZjI4NjA1MzFlN2ZjOWFmZi4uN2FjNTMy
ZjBmOTliZjM0NjE2YWRhN2ZhNjIyYjcxODZkZGQ1ZDdhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLmgKQEAgLTIyMSw3ICsyMjEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdXBkYXRlTGFzdElt
YWdlKCk7CiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
KSBvdmVycmlkZTsKICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIGJvb2wgY29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dEdMKiwgUGxhdGZvcm1HTE9i
amVjdCwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZv
cm1hdCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxw
aGEsIGJvb2wgZmxpcFkpIG92ZXJyaWRlOworICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxCdWZm
ZXJGb3JDdXJyZW50VGltZSgpIGZpbmFsOwogCiAgICAgYm9vbCBzdXBwb3J0c0FjY2VsZXJhdGVk
UmVuZGVyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgLy8gY2FsbGVkIHdoZW4gdGhlIHJlbmRl
cmluZyBzeXN0ZW0gZmxpcHMgdGhlIGludG8gb3Igb3V0IG9mIGFjY2VsZXJhdGVkIHJlbmRlcmlu
ZyBtb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IGRkZTc1ZDFiNTEyNzg5OGY2
ZmY4NjY2MjY5YzllNTgzNjk3NDUyNzkuLjM0MDU0YjdiYWE0OTY2NzI3MWJjMzJlZGJjNjVmNTkw
OTc3MzhiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTYyMyw3ICs2MjMsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDbwogICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKCpp
bWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgb3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKIH0KIAotYm9v
bCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNvcHlWaWRlb1RleHR1cmVU
b1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHRHTCogY29udGV4dCwgUGxhdGZvcm1HTE9i
amVjdCBvdXRwdXRUZXh0dXJlLCBHQ0dMZW51bSBvdXRwdXRUYXJnZXQsIEdDR0xpbnQgbGV2ZWws
IEdDR0xlbnVtIGludGVybmFsRm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUs
IGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgYm9vbCBmbGlwWSkKK0NWUGl4ZWxCdWZmZXJSZWYgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwaXhlbEJ1ZmZlckZvckN1cnJlbnRU
aW1lKCkKIHsKICAgICAvLyBXZSBoYXZlIGJlZW4gYXNrZWQgdG8gcGFpbnQgaW50byBhIFdlYkdM
IGNhbnZhcywgc28gdGFrZSB0aGF0IGFzIGEgc2lnbmFsIHRvIGNyZWF0ZQogICAgIC8vIGEgZGVj
b21wcmVzc2lvbiBzZXNzaW9uLCBldmVuIGlmIHRoYXQgbWVhbnMgdGhlIG5hdGl2ZSB2aWRlbyBj
YW4ndCBhbHNvIGJlIGRpc3BsYXllZApAQCAtNjMzLDE4ICs2MzMsMTIgQEAgYm9vbCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3Jt
VGV4dHVyZShHcmEKICAgICAgICAgYWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKTsK
ICAgICB9CiAKLSAgICBBU1NFUlQoY29udGV4dCk7Ci0KICAgICBpZiAodXBkYXRlTGFzdFBpeGVs
QnVmZmVyKCkpIHsKICAgICAgICAgaWYgKCFtX2xhc3RQaXhlbEJ1ZmZlcikKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBh
dXRvIGNvbnRleHRDViA9IGNvbnRleHQtPmFzQ1YoKTsKLSAgICBpZiAoIWNvbnRleHRDVikKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFVOVVNFRF9WQVJJQUJMRShwcmVtdWx0aXBseUFscGhh
KTsKLSAgICBBU1NFUlRfVU5VU0VEKG91dHB1dFRhcmdldCwgb3V0cHV0VGFyZ2V0ID09IEdyYXBo
aWNzQ29udGV4dEdMOjpURVhUVVJFXzJEKTsKLSAgICByZXR1cm4gY29udGV4dENWLT5jb3B5UGl4
ZWxCdWZmZXJUb1RleHR1cmUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCksIG91dHB1dFRleHR1cmUs
IGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBHcmFwaGljc0NvbnRleHRHTENW
OjpGbGlwWShmbGlwWSkpOworCisgICAgcmV0dXJuIG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpOwog
fQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6aGFzQXZhaWxh
YmxlVmlkZW9GcmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNw
cAppbmRleCA3NDcxNzdmMjZhMzlhMzA0ZDlkOWEwZTgwNDZkMzYwZWRmNGVlZDAzLi5hZjk5MWIx
NzVlOTVkNmM4NDZiYmE2ZWQ5NDVkYjUyMzFkN2NkNThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5jcHAKQEAgLTMzLDggKzMzLDEzIEBACiAjaW5jbHVkZSAiRXh0ZW5zaW9u
c0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIK
KyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKICNpbmNsdWRlIDx3dGYvVW5pcXVlQXJy
YXkuaD4KIAorI2lmIFVTRShBVkZPVU5EQVRJT04pCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
R0xDVi5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzZXRCdWZmZXJzVG9BdXRvQ2xlYXIoKQpAQCAtMjUzLDYgKzI1OCwy
NSBAQCBSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBv
c2l0ZWRSZXN1bHRzKCkKIH0KICNlbmRpZgogCitib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojpjb3B5VGV4dHVyZUZyb21NZWRpYShNZWRpYVBsYXllciYgcGxheWVyLCBQbGF0Zm9ybUdMT2Jq
ZWN0IG91dHB1dFRleHR1cmUsIEdDR0xlbnVtIG91dHB1dFRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
Ym9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKQoreworI2lmIFVTRShBVkZPVU5EQVRJ
T04pCisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHBsYXllci5waXhlbEJ1ZmZlckZvckN1cnJlbnRU
aW1lKCk7CisgICAgaWYgKCFwaXhlbEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgYXV0byBjb250ZXh0Q1YgPSBhc0NWKCk7CisgICAgaWYgKCFjb250ZXh0Q1YpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIFVOVVNFRF9WQVJJQUJMRShwcmVtdWx0aXBseUFscGhhKTsK
KyAgICBBU1NFUlRfVU5VU0VEKG91dHB1dFRhcmdldCwgb3V0cHV0VGFyZ2V0ID09IEdyYXBoaWNz
Q29udGV4dEdMOjpURVhUVVJFXzJEKTsKKyAgICByZXR1cm4gY29udGV4dENWLT5jb3B5UGl4ZWxC
dWZmZXJUb1RleHR1cmUocGl4ZWxCdWZmZXIsIG91dHB1dFRleHR1cmUsIGxldmVsLCBpbnRlcm5h
bEZvcm1hdCwgZm9ybWF0LCB0eXBlLCBHcmFwaGljc0NvbnRleHRHTDo6RmxpcFkoZmxpcFkpKTsK
KyNlbHNlCisgICAgcmV0dXJuIHBsYXllci5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUodGhpcywgb3V0cHV0VGV4dHVyZSwgb3V0cHV0VGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3Jt
YXQsIGZvcm1hdCwgdHlwZSwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOworI2VuZGlmCit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggZTQ0YmZkNWQ5ZjhhZDlkN2M1Mjc2MDFh
MjUyYTc3MGVkNGY5Nzk1NS4uYWJjMzgwYzczY2EzOTBmYTk3ZTZhNGQ0NWNlZDJlMmZkMmQyZWM1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTg2LDYgKzg2LDcgQEAg
Y2xhc3MgRXh0ZW5zaW9uc0dMT3BlbkdMOwogY2xhc3MgSG9zdFdpbmRvdzsKIGNsYXNzIEltYWdl
QnVmZmVyOwogY2xhc3MgSW1hZ2VEYXRhOworY2xhc3MgTWVkaWFQbGF5ZXI7CiAjaWYgVVNFKFRF
WFRVUkVfTUFQUEVSKQogY2xhc3MgVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyOwogI2Vu
ZGlmCkBAIC00NjUsNiArNDY2LDggQEAgcHVibGljOgogICAgIFJlZlB0cjxJbWFnZURhdGE+IHJl
YWRSZW5kZXJpbmdSZXN1bHRzRm9yUGFpbnRpbmcoKTsKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBy
ZWFkQ29tcG9zaXRlZFJlc3VsdHNGb3JQYWludGluZygpOwogCisgICAgYm9vbCBjb3B5VGV4dHVy
ZUZyb21NZWRpYShNZWRpYVBsYXllciYsIFBsYXRmb3JtR0xPYmplY3QgdGV4dHVyZSwgR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxp
cFkpIGZpbmFsOworCiAjaWYgVVNFKE9QRU5HTCkgJiYgRU5BQkxFKFdFQkdMMikKICAgICB2b2lk
IHByaW1pdGl2ZVJlc3RhcnRJbmRleChHQ0dMdWludCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0wuY3BwCmluZGV4IGJmYmU3MjU1MzI3MmUxYmVmNmM0YzU5NGZhNmRmNzVmOWMwMmZiZTcu
LmM1YzdkZWFkMjZlZTdmYTRlNGYxZTRkZGY3NDFjMzViYzYyZmRlZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMLmNwcApAQCAtMzQsOCArMzQsMTMgQEAKICNpbmNsdWRlICJTdHJlYW1Db25uZWN0
aW9uV29ya1F1ZXVlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCisjaWYgVVNF
KEFWRk9VTkRBVElPTikKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dEdMQ1YuaD4K
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC01OCw3ICs2Myw4IEBAIFJlZjxSZW1vdGVHcmFwaGljc0NvbnRleHRHTD4gUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0w6OmNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQCiAjZW5kaWYKIAogUmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMKEdQVUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MsIEdyYXBoaWNzQ29udGV4
dEdMSWRlbnRpZmllciBncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIsIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQmIHJlbmRlcmluZ0JhY2tlbmQsIElQQzo6U3RyZWFtQ29ubmVjdGlvbkJ1ZmZlciYm
IHN0cmVhbSkKLSAgICA6IG1fc3RyZWFtQ29ubmVjdGlvbihJUEM6OlN0cmVhbVNlcnZlckNvbm5l
Y3Rpb248UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w+OjpjcmVhdGUoZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jb25uZWN0aW9uKCksIFdURk1vdmUoc3RyZWFtKSwgcmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xTdHJlYW1Xb3JrUXVldWUoKSkpCisgICAgOiBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MobWFrZVdlYWtQdHIoZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcykpCisgICAgLCBtX3N0cmVh
bUNvbm5lY3Rpb24oSVBDOjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMPjo6Y3JlYXRlKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLCBX
VEZNb3ZlKHN0cmVhbSksIHJlbW90ZUdyYXBoaWNzQ29udGV4dEdMU3RyZWFtV29ya1F1ZXVlKCkp
KQogICAgICwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIoZ3JhcGhpY3NDb250ZXh0R0xJ
ZGVudGlmaWVyKQogICAgICwgbV9yZW5kZXJpbmdCYWNrZW5kKG1ha2VSZWYocmVuZGVyaW5nQmFj
a2VuZCkpCiB7CkBAIC0yMDEsNiArMjA3LDU0IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OnBhaW50SW1hZ2VEYXRhVG9JbWFnZUJ1ZmZlcihSZWZQdHI8V2ViQ29yZTo6SW1hZ2VECiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TDo6Y29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXJJZGVudGlmaWVyIG1l
ZGlhUGxheWVySWRlbnRpZmllciwgdWludDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBp
bnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9ybWF0LCB1
aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFksIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisjaWYgVVNFKEFW
Rk9VTkRBVElPTikKKyAgICBVTlVTRURfVkFSSUFCTEUocHJlbXVsdGlwbHlBbHBoYSk7CisgICAg
QVNTRVJUX1VOVVNFRCh0YXJnZXQsIHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVS
RV8yRCk7CisKKyAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXI7Cisg
ICAgYXV0byBnZXRQaXhlbEJ1ZmZlciA9IFsmXSB7CisgICAgICAgIGlmICghbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChhdXRv
IG1lZGlhUGxheWVyID0gbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5yZW1vdGVNZWRpYVBs
YXllck1hbmFnZXJQcm94eSgpLm1lZGlhUGxheWVyKG1lZGlhUGxheWVySWRlbnRpZmllcikpCisg
ICAgICAgICAgICBwaXhlbEJ1ZmZlciA9IG1lZGlhUGxheWVyLT5waXhlbEJ1ZmZlckZvckN1cnJl
bnRUaW1lKCk7CisgICAgfTsKKworICAgIGlmIChpc01haW5UaHJlYWQoKSkKKyAgICAgICAgZ2V0
UGl4ZWxCdWZmZXIoKTsKKyAgICBlbHNlCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0
KFdURk1vdmUoZ2V0UGl4ZWxCdWZmZXIpKTsKKworICAgIGlmICghcGl4ZWxCdWZmZXIpIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgYXV0byBjb250ZXh0Q1YgPSBtX2NvbnRleHQtPmFzQ1YoKTsKKyAgICBpZiAoIWNvbnRl
eHRDVikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0Q1YtPmNvcHlQaXhlbEJ1
ZmZlclRvVGV4dHVyZShwaXhlbEJ1ZmZlci5nZXQoKSwgdGV4dHVyZSwgbGV2ZWwsIGludGVybmFs
Rm9ybWF0LCBmb3JtYXQsIHR5cGUsIEdyYXBoaWNzQ29udGV4dEdMOjpGbGlwWShmbGlwWSkpKTsK
KyNlbHNlCisgICAgVU5VU0VEX1ZBUklBQkxFKG1lZGlhUGxheWVySWRlbnRpZmllcik7CisgICAg
VU5VU0VEX1ZBUklBQkxFKHRleHR1cmUpOworICAgIFVOVVNFRF9WQVJJQUJMRSh0YXJnZXQpOwor
ICAgIFVOVVNFRF9WQVJJQUJMRShsZXZlbCk7CisgICAgVU5VU0VEX1ZBUklBQkxFKGludGVybmFs
Rm9ybWF0KTsKKyAgICBVTlVTRURfVkFSSUFCTEUoZm9ybWF0KTsKKyAgICBVTlVTRURfVkFSSUFC
TEUodHlwZSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHByZW11bHRpcGx5QWxwaGEpOworICAgIFVO
VVNFRF9WQVJJQUJMRShmbGlwWSk7CisKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCmluZGV4IGY4ZjViNzMzMWFhZTg5MDUwZjkw
N2E5NjBiYWJmZDI1MGQzZWRjMGEuLjJiYjc0YWFjYjA3OWEwNDBmOThhZThjYmY1YmZhNzc0ODRm
MWY1NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5oCkBAIC05MSwxMSArOTEsMTMgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IodWludDMyX3QgZXJyb3IpOwogICAgIHZv
aWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcGFp
bnRDb21wb3NpdGVkUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNvcHlUZXh0
dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciwgdWludDMyX3QgdGV4
dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRlcm5hbEZv
cm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRpcGx5QWxw
aGEsIGJvb2wgZmxpcFksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAjaW5j
bHVkZSAiUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaCIgLy8gTk9M
SU5UCiAKICAgICB2b2lkIHBhaW50SW1hZ2VEYXRhVG9JbWFnZUJ1ZmZlcihSZWZQdHI8V2ViQ29y
ZTo6SW1hZ2VEYXRhPiYmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKKyAgICBXZWFrUHRyPEdQVUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M+IG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzczsKICAgICBSZWZQdHI8SVBD
OjpTdHJlYW1TZXJ2ZXJDb25uZWN0aW9uPFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMPj4gbV9zdHJl
YW1Db25uZWN0aW9uOwogICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TD4gbV9jb250ZXh0OwogICAgIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllciBtX2dyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdl
cy5pbgppbmRleCBmN2Q1MjkwMzU0MzQ0MmFiZjNiYjE0MTllMWM5ZDQyNTE5NWMyYTE2Li43NDIx
YWIwMTlkMTFjNTI1NGNkOTIyNDQzNGNiMTM0OTQxOWNjZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0zNiw5ICszNiw5IEBAIG1lc3NhZ2VzIC0+IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICB2b2lkIE5v
dGlmeU1hcmtDb250ZXh0Q2hhbmdlZCgpCiAgICAgdm9pZCBTeW50aGVzaXplR0xFcnJvcih1aW50
MzJfdCBlcnJvcikKICAgICB2b2lkIEdldEVycm9yKCkgLT4gKHVpbnQzMl90IHJldHVyblZhbHVl
KSBTeW5jaHJvbm91cwotICAgIHZvaWQgUGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+ICgpIFN5bmNo
cm9ub3VzCi0gICAgdm9pZCBQYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+ICgpIFN5bmNocm9ub3Vz
Ci0KKyAgICB2b2lkIFBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcikgLT4gKCkgU3luY2hyb25vdXMKKyAg
ICB2b2lkIFBhaW50Q29tcG9zaXRlZFJlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCisgICAgdm9p
ZCBDb3B5VGV4dHVyZUZyb21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRl
bnRpZmllciwgdWludDMyX3QgdGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVs
LCB1aW50MzJfdCBpbnRlcm5hbEZvcm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBl
LCBib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wgZmxpcFkpIC0+IChib29sIHN1Y2Nlc3MpIFN5
bmNocm9ub3VzCiAKICAgICB2b2lkIFNldEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKQogICAgIHZv
aWQgTW92ZUVycm9yc1RvU3ludGhldGljRXJyb3JMaXN0KCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUp
IFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcApp
bmRleCBmODllZmM0MjYwMmNhNGE3NDNlNDI2YjY3Y2I4YTRiOTEyODc0MDIxLi5lOTFiYjk3NjVj
YWI0YzQ2ZDdmNzJmYzZlZTg4MjRjYzg3NjRiNWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5jcHAKQEAgLTE2NCw2ICsxNjQsMTggQEAgdm9pZCBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjpwYWludENvbXBvc2l0ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VC
dWZmZXImIGIKICAgICB9CiB9CiAKK2Jvb2wgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6
Y29weVRleHR1cmVGcm9tTWVkaWEoTWVkaWFQbGF5ZXImIG1lZGlhUGxheWVyLCBQbGF0Zm9ybUdM
T2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudW0g
aW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgYm9vbCBwcmVt
dWx0aXBseUFscGhhLCBib29sIGZsaXBZKQoreworICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Cisg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpDb3B5VGV4dHVyZUZyb21NZWRpYShtZWRpYVBsYXllci5pZGVudGlmaWVyKCksIHRl
eHR1cmUsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQsIHR5cGUsIHByZW11
bHRpcGx5QWxwaGEsIGZsaXBZKSwgTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpD
b3B5VGV4dHVyZUZyb21NZWRpYTo6UmVwbHkocmVzdWx0KSk7CisgICAgaWYgKCFzZW5kUmVzdWx0
KSB7CisgICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRl
eHRHTFByb3h5OjpzeW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikKIHsKICAgICBpZiAo
IWlzQ29udGV4dExvc3QoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
aAppbmRleCAzMzJiNDQwNWZiNmM3NDBiM2VkNGRiYTU4NWNiYWQyMWI2NDA1YTMyLi5lZDBmZjg2
OTJlZjdhZDg0NTcxOWUxZjBhODI1NjYyYzM2NWU1MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuaApAQCAtNzAsNiArNzAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
eW50aGVzaXplR0xFcnJvcihHQ0dMZW51bSBlcnJvcikgZmluYWw7CiAgICAgR0NHTGVudW0gZ2V0
RXJyb3IoKSBmaW5hbDsKIAorICAgIGJvb2wgY29weVRleHR1cmVGcm9tTWVkaWEoV2ViQ29yZTo6
TWVkaWFQbGF5ZXImLCBQbGF0Zm9ybUdMT2JqZWN0IHRleHR1cmUsIEdDR0xlbnVtIHRhcmdldCwg
R0NHTGludCBsZXZlbCwgR0NHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZKSBmaW5hbDsK
KwogICAgIC8vIEZ1bmN0aW9ucyB3aXRoIGEgZ2VuZXJhdGVkIGltcGxlbWVudGF0aW9uLiBUaGlz
IGxpc3QgaXMgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KICAgICB2b2lkIHNl
dEZhaWxOZXh0R1BVU3RhdHVzQ2hlY2soKSBmaW5hbDsKICAgICBib29sIG1vdmVFcnJvcnNUb1N5
bnRoZXRpY0Vycm9yTGlzdCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmlu
ZGV4IGEyZjAxNjdlZjljOWQ2ZTNkM2FhYTk1ZDE4NDdlZTkzMGQ0Y2ViZjIuLjhjYjQ2MTgyNWNj
NjQxOTU4MWIzN2RkYTFjNDY2OTM2MjI1N2M5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZS5jcHAKQEAgLTg0OCwxMSArODQ4LDEzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIAorI2lmICFVU0UoQVZGT1VOREFUSU9OKQogYm9vbCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTCosIFBsYXRmb3JtR0xPYmplY3QsIEdDR0xlbnVtLCBH
Q0dMaW50LCBHQ0dMZW51bSwgR0NHTGVudW0sIEdDR0xlbnVtLCBib29sLCBib29sKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQorI2VuZGlmCiAKIFJlZlB0
cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRUaW1lKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IGExNTRhZjg2OGJl
ZDI2YjI0NTdiMzM2NTAwZjNiZjgwYjdkMjRhNWUuLmYyOGVhOTMyZmNjMTUzZDhiNzAzM2RmMTEw
MjIyNTk1YzFkNWQ4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaApAQCAtMjgxLDcgKzI4
MSw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIGZpbmFsOwogICAgIHZvaWQgcGFpbnRDdXJy
ZW50RnJhbWVJbkNvbnRleHQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JikgZmluYWw7CisjaWYgIVVTRShBVkZPVU5EQVRJT04pCiAgICAgYm9vbCBj
b3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
R0wqLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwgR0NHTGludCwgR0NHTGVudW0sIEdDR0xl
bnVtLCBHQ0dMZW51bSwgYm9vbCwgYm9vbCkgZmluYWw7CisjZW5kaWYKICAgICBSZWZQdHI8V2Vi
Q29yZTo6TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKIAog
ICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgZmlu
YWw7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
OTllNGEwYmZiMzM1MTUxMTlhZmI0M2NjYWIwMWJlNTQxMzMzOWQ1Yi4uMWE3NThhNWY2NTJlNjc1
MzI1NzcwMTY3YzBmMzYyY2U0ZTY4NTE4YSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTAyLTIwICBQZW5nIExp
dSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgVmlkZW8gZWxlbWVudHMgZG8gbm90
IHdvcmsgYXMgc291cmNlcyBmb3IgVGV4SW1hZ2UyRCBjYWxscyBpbiBHUFUgUHJvY2VzcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTg0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2dl
bmVyYXRlLWdwdXAtd2ViZ2w6CisKIDIwMjEtMDItMjAgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51
bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJHTCBHUFUgcHJvY2VzcyBJUEMgc2hvdWxkIHVz
ZSBzaGFyZWQgbWVtb3J5IGZvciBhc3luY2hyb25vdXMgbWVzc2FnZXMKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvZ2VuZXJhdGUtZ3B1cC13ZWJnbCBiL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUt
Z3B1cC13ZWJnbAppbmRleCAwZmFmMmNkZmEwOWY0NzdiZmNkNWU0MjE2ODE4YzBjZWQ5NWRlYzI1
Li5kMzUwMmJjMjY2NThkZmI5YzMwZjZmMmNlNzZkZDg2NTg1NzMyYjA4IDEwMDc1NQotLS0gYS9U
b29scy9TY3JpcHRzL2dlbmVyYXRlLWdwdXAtd2ViZ2wKKysrIGIvVG9vbHMvU2NyaXB0cy9nZW5l
cmF0ZS1ncHVwLXdlYmdsCkBAIC0xMDMsMTIgKzEwMywxMSBAQCBtZXNzYWdlcyAtPiBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7ewogICAgIHZvaWQgR2V0RXJy
b3IoKSAtPiAodWludDMyX3QgcmV0dXJuVmFsdWUpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBQYWlu
dFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgaW1hZ2VCdWZmZXIpIC0+ICgpIFN5bmNocm9ub3VzCiAgICAgdm9pZCBQYWludENvbXBv
c2l0ZWRSZXN1bHRzVG9DYW52YXMoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGltYWdlQnVmZmVyKSAtPiAoKSBTeW5jaHJvbm91cwotCisgICAgdm9pZCBDb3B5VGV4dHVyZUZy
b21NZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDMy
X3QgdGV4dHVyZSwgdWludDMyX3QgdGFyZ2V0LCBpbnQzMl90IGxldmVsLCB1aW50MzJfdCBpbnRl
cm5hbEZvcm1hdCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB0eXBlLCBib29sIHByZW11bHRp
cGx5QWxwaGEsIGJvb2wgZmxpcFkpIC0+IChib29sIHN1Y2Nlc3MpIFN5bmNocm9ub3VzCiB7fQog
fX0KIAogI2VuZGlmCi0KICIiIgogKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421207</attachid>
            <date>2021-02-22 09:58:48 -0800</date>
            <delta_ts>2021-02-22 13:09:34 -0800</delta_ts>
            <desc>A follow-up patch to fix build failures on the windows port</desc>
            <filename>bug-218184-20210222095848.patch</filename>
            <type>text/plain</type>
            <size>1242</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmMzOGY3OGY2ZTcyMGI1
ODYwZTZjZDliYmMyZDA5NjkwNGEyNTQ4Yy4uNjExZDRlMmZkNTQ4NmQwZTAwMGVjMTdhYjY2YzI0
MDJjNGE0YWQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAyLTIyICBQZW5n
IExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgVmlkZW8gZWxlbWVudHMgZG8g
bm90IHdvcmsgYXMgc291cmNlcyBmb3IgVGV4SW1hZ2UyRCBjYWxscyBpbiBHUFUgUHJvY2Vzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MTg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBmb2xsb3ct
dXAgcGF0Y2ggb2YgcjI3MzIxMyB0byBmaXggYnVpbGQgZmFpbHVyZXMgb24gdGhlIHdpbmRvd3Mg
cG9ydC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisKIDIw
MjEtMDItMjIgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtM
RkNdW0ludGVncmF0aW9uXSBTd2l0Y2ggb3V0IGlmIGxhcmdlIHRyZWVzIGFyZSBiZWluZyBpbnZh
bGlkYXRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKaW5kZXggNmExZDkyN2U3ZmU3MWYyNGY3NTU3YjE1OTc2ZDYxZTAxMjEyZTIxOC4uNGRiOWQ3
MjU4NjMzZjFiZDRjMGY2OWI2MjJlN2FiMDMyMmZjMjA4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC02Miw3ICs2Miw3IEBACiBPQkpD
X0NMQVNTIEFWUGxheWVyOwogT0JKQ19DTEFTUyBOU0FycmF5OwogCi0jaWYgRU5BQkxFKFdFQkdM
KSAmJiBVU0UoQVZGT1VOREFUSU9OKQorI2lmIFVTRShBVkZPVU5EQVRJT04pCiB0eXBlZGVmIHN0
cnVjdCBfX0NWQnVmZmVyKiBDVlBpeGVsQnVmZmVyUmVmOwogI2VuZGlmCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>