<?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>219421</bug_id>
          
          <creation_ts>2020-12-01 23:12:18 -0800</creation_ts>
          <short_desc>[WinCairo] Enable USE_ANGLE</short_desc>
          <delta_ts>2020-12-16 12:06:19 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>219475</dependson>
          <blocked>192314</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Fujii Hironori">fujii</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1711261</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-12-01 23:12:18 -0800</bug_when>
    <thetext>[WinCairo] Enable USE_ANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711262</commentid>
    <comment_count>1</comment_count>
      <attachid>415192</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-12-01 23:18:05 -0800</bug_when>
    <thetext>Created attachment 415192
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711272</commentid>
    <comment_count>2</comment_count>
      <attachid>415192</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-02 00:56:48 -0800</bug_when>
    <thetext>Comment on attachment 415192
WIP patch

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

some ideas, but I&apos;m not a reviewer

&gt; Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp:250
&gt; +#elif PLATFORM(WIN)

To clarify the code, you could consider to do following:
- make the above elif an #else
- change IOSurfaceTextureTarget to &quot;drawingBufferTextureTarget()&quot;

so your code would be 

#else 
 GLenum textureTarget = drawingBufferTexture();
 gl::BindTexture(textureTarget, m_texture);   
 gl::TexImage2D(textureTarget, 0, m_internalColorFormat, width, height, 0, colorFormat, GL_UNSIGNED_BYTE, 0);
 #If USE(COORDINATED_GRAPHICS)
 if (m_compositorTexture) {
    ...
 }
 #endif
#endif

&gt; Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp:1077
&gt; +#endif

GL_TEXTURE_RECTANGLE_ANGLE might still be supported on Windows, so this could be turned into a runtime check if you like. Granted, it&apos;d only apply if ANGLE would run on top of GL for Windows.

 if (m_supportsTextureRectangle) 
   gl::Disable(GL_TEXTURE_RECTANGLE_ANGLE);

check for texture rectangle might be
GL_ARB_texture_rectangle or EGL_ANGLE_iosurface_client_buffer (not sure if how ANGLE advertises the ARB_texture_rectangle).

&gt; Source/WebCore/platform/graphics/texmap/ANGLEContext.h:42
&gt; +class ANGLEContext {

There&apos;s quite a proliferation of &quot;Context&quot; classes already.
If only possible, I&apos;d suggest to make this similar to the GLContext, e.g a subclass or instance or something.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGCGLPlatformLayer.cpp:107
&gt;          ::glBindFramebuffer(GraphicsContextGLOpenGL::FRAMEBUFFER, m_context.m_state.boundDrawFBO);

This depicts some sort of mixup. This function is probably calling directly OpenGL ES or OpenGL, where as the context above is angle context.
I&apos;d suggest making the includes such that compiler catches this..

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGCGLPlatformLayer.cpp:109
&gt; +        GLContext* ativeContext = GLContext::current();

If the GLContext is really useful and does something, such as makes real OpenGL or OpenGL ES context current, then it will confuse the angle context in cases where ANGLE is using OpenGL.
In this light, it&apos;d be maybe simpler if the ANGLE context would participate in the GLContext::current() tracking. One way to do this might be that case where ANGLEContext : public GLContext or something similar.

There&apos;s a typo, ativeContext</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711564</commentid>
    <comment_count>3</comment_count>
      <attachid>415192</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-12-02 19:21:12 -0800</bug_when>
    <thetext>Comment on attachment 415192
WIP patch

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

Thank you very much for the review. I will check and add my comments later.

&gt;&gt; Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp:250
&gt;&gt; +#elif PLATFORM(WIN)
&gt; 
&gt; To clarify the code, you could consider to do following:
&gt; - make the above elif an #else
&gt; - change IOSurfaceTextureTarget to &quot;drawingBufferTextureTarget()&quot;
&gt; 
&gt; so your code would be 
&gt; 
&gt; #else 
&gt;  GLenum textureTarget = drawingBufferTexture();
&gt;  gl::BindTexture(textureTarget, m_texture);   
&gt;  gl::TexImage2D(textureTarget, 0, m_internalColorFormat, width, height, 0, colorFormat, GL_UNSIGNED_BYTE, 0);
&gt;  #If USE(COORDINATED_GRAPHICS)
&gt;  if (m_compositorTexture) {
&gt;     ...
&gt;  }
&gt;  #endif
&gt; #endif

Sounds nice. 
Filed: Bug 219475 – GraphicsContextGLOpenGL: Rename IOSurfaceTextureTarget to drawingBufferTextureTarget</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712985</commentid>
    <comment_count>4</comment_count>
      <attachid>415192</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-12-08 17:23:50 -0800</bug_when>
    <thetext>Comment on attachment 415192
WIP patch

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

&gt;&gt; Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp:1077
&gt;&gt; +#endif
&gt; 
&gt; GL_TEXTURE_RECTANGLE_ANGLE might still be supported on Windows, so this could be turned into a runtime check if you like. Granted, it&apos;d only apply if ANGLE would run on top of GL for Windows.
&gt; 
&gt;  if (m_supportsTextureRectangle) 
&gt;    gl::Disable(GL_TEXTURE_RECTANGLE_ANGLE);
&gt; 
&gt; check for texture rectangle might be
&gt; GL_ARB_texture_rectangle or EGL_ANGLE_iosurface_client_buffer (not sure if how ANGLE advertises the ARB_texture_rectangle).

WebKit enables only ANGLE D3D backend on Windows at the moment.
https://trac.webkit.org/browser/webkit/trunk/Source/ThirdParty/ANGLE/PlatformWin.cmake
I tried to enable ANGLE OpenGL backend, and it turned out it&apos;s not simple task, and I gave up.

&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGCGLPlatformLayer.cpp:107
&gt;&gt;          ::glBindFramebuffer(GraphicsContextGLOpenGL::FRAMEBUFFER, m_context.m_state.boundDrawFBO);
&gt; 
&gt; This depicts some sort of mixup. This function is probably calling directly OpenGL ES or OpenGL, where as the context above is angle context.
&gt; I&apos;d suggest making the includes such that compiler catches this..

Good catch.
However, because WinCairo is using both ANGLE&apos;s EGL API and ANGLE&apos;s direct API (gl::*), I think I can&apos;t do so.

&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGCGLPlatformLayer.cpp:109
&gt;&gt; +        GLContext* ativeContext = GLContext::current();
&gt; 
&gt; If the GLContext is really useful and does something, such as makes real OpenGL or OpenGL ES context current, then it will confuse the angle context in cases where ANGLE is using OpenGL.
&gt; In this light, it&apos;d be maybe simpler if the ANGLE context would participate in the GLContext::current() tracking. One way to do this might be that case where ANGLEContext : public GLContext or something similar.
&gt; 
&gt; There&apos;s a typo, ativeContext

It should be possible. But, I don&apos;t like the idea tracking the current GL context in WebCore duplicately.
I prefer the idea deprecating GLContext::current().
ANGLEContext is a copy of Nicosia::GCGLANGLELayer::ANGLEContext.
https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/platform/graphics/nicosia/texmap/NicosiaGCGLANGLELayer.cpp#L54
I don&apos;t want to copy the code. Unfortunately, GTK port&apos;s USE_ANGLE build is broken now.
I will merge both ANGLEContext after someone restore GTK port&apos;s USE_ANGLE build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712992</commentid>
    <comment_count>5</comment_count>
      <attachid>415696</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-12-08 18:16:32 -0800</bug_when>
    <thetext>Created attachment 415696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712993</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-12-08 18:17:20 -0800</bug_when>
    <thetext>Note that there are important steps to take when updating ANGLE. See https://trac.webkit.org/wiki/UpdatingANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712995</commentid>
    <comment_count>7</comment_count>
      <attachid>415698</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-12-08 18:25:07 -0800</bug_when>
    <thetext>Created attachment 415698
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713044</commentid>
    <comment_count>8</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-12-08 23:47:03 -0800</bug_when>
    <thetext>OMG, I found severe regressions by browsing some WebGL pages. Nothing is shown in the following page with this patch.

https://threejs.org/examples/

https://domenicobrz.github.io/webgl/projects/SSRefractionDepthPeeling/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713257</commentid>
    <comment_count>9</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-12-09 12:01:31 -0800</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #8)
&gt; OMG, I found severe regressions by browsing some WebGL pages. Nothing is
&gt; shown in the following page with this patch.
&gt; 
&gt; https://threejs.org/examples/

It reports no message in inspector console.

&gt; https://domenicobrz.github.io/webgl/projects/SSRefractionDepthPeeling/

It reports two warning messages:

[Warning] THREE.WebGLRenderer: WEBGL_depth_texture extension not supported. (three.module.js, line 16023)
[Warning] THREE.WebGLRenderer: Texture has been resized from (1500x750) to (1024x512). (three.module.js, line 21359)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713424</commentid>
    <comment_count>10</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-12-09 22:10:57 -0800</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #8)

* Should pass a sharing context to EGL_CreateContext to share a texture between compositor&apos;s EGL context and WebGL&apos; one
* GPUBasedCanvasRenderingContext::isAccelerated should return true</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713426</commentid>
    <comment_count>11</comment_count>
      <attachid>415833</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-12-09 22:11:48 -0800</bug_when>
    <thetext>Created attachment 415833
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714054</commentid>
    <comment_count>12</comment_count>
      <attachid>416037</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-12-11 12:50:35 -0800</bug_when>
    <thetext>Created attachment 416037
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714335</commentid>
    <comment_count>13</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-12-13 11:48:59 -0800</bug_when>
    <thetext>Could anyone review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714385</commentid>
    <comment_count>14</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-13 23:47:31 -0800</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #13)
&gt; Could anyone review?

Nice. Looks fine to me, but I&apos;m not a reviewer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714386</commentid>
    <comment_count>15</comment_count>
      <attachid>416037</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2020-12-13 23:58:07 -0800</bug_when>
    <thetext>Comment on attachment 416037
Patch

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

&gt; Source/WebCore/PlatformWin.cmake:41
&gt; +    platform/graphics/angle/ExtensionsGLANGLE.cpp

You add angle-related code here, but not the angle sources themselves.
This seems to indicate that there&apos;s a place where ANGLE sources are added based on a ANGLE related flag.
Some time maybe you could refactor the build system to add the angle support code at the same location as where the angle code itself is being added to the build.
This way when somebody, for example I, adds a ANGLE related support file, I don&apos;t need to edit PlatformWin.cmake as well as PlatformGTK or so. So I&apos;d edit something where the ANGLE sources are being declared.

&gt; Source/WebCore/PlatformWin.cmake:47
&gt;      platform/graphics/opengl/TemporaryOpenGLSetting.cpp

This TemporaryOpenGLSetting seems to indicate either you have a missing #ifdef excluding its usage, or then you might be able to remove this one too.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGCGLPlatformLayer.cpp:-108
&gt; -        ::glBindFramebuffer(GraphicsContextGLOpenGL::FRAMEBUFFER, m_context.m_state.boundDrawFBO);

This seems to indicate that following never fires
#If USE(TEXTURE_MAPPER)
#If !USE(COORDINATED_GRAPHICS)
#If !USE(ANGLE)
#error this never fires
#endif
#endif
#endif

If this is the case, maybe it&apos;d be possible to put this assertion in the CMake system, so it&apos;d not come as surprise for somebody doing related work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714549</commentid>
    <comment_count>16</comment_count>
      <attachid>416037</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-12-14 12:38:04 -0800</bug_when>
    <thetext>Comment on attachment 416037
Patch

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

Thank you for the review.

&gt;&gt; Source/WebCore/PlatformWin.cmake:41
&gt;&gt; +    platform/graphics/angle/ExtensionsGLANGLE.cpp
&gt; 
&gt; You add angle-related code here, but not the angle sources themselves.
&gt; This seems to indicate that there&apos;s a place where ANGLE sources are added based on a ANGLE related flag.
&gt; Some time maybe you could refactor the build system to add the angle support code at the same location as where the angle code itself is being added to the build.
&gt; This way when somebody, for example I, adds a ANGLE related support file, I don&apos;t need to edit PlatformWin.cmake as well as PlatformGTK or so. So I&apos;d edit something where the ANGLE sources are being declared.

ANGLE sources are built in CMakeLists under Source/ThirdParty/ANGLE directory.
They are in a different module of a different layer.
I can&apos;t add those files into it.

I can merge WinCairo and GTK&apos;s CMake code into the comon CMakeLists.txt.
However, because WinCairo WebKit1 is using TemporaryOpenGLSetting.cpp, TemporaryOpenGLSetting.cpp will remain in PlatformGTK.cmake.

if (NOT USE_ANGLE_WEBGL)
    list(APPEND WebCore_SOURCES
        platform/graphics/opengl/TemporaryOpenGLSetting.cpp
    )
endif ()

This is a unfortunate situation for GTK port because their OpenGL related sources are in both the common CMakeLists.txt and PlatformGTK.cmake.
If all ports migrate to USE_ANGLE or WinCairo deprecates WebKit1, the code can be simplified.

&gt;&gt; Source/WebCore/PlatformWin.cmake:47
&gt;&gt;      platform/graphics/opengl/TemporaryOpenGLSetting.cpp
&gt; 
&gt; This TemporaryOpenGLSetting seems to indicate either you have a missing #ifdef excluding its usage, or then you might be able to remove this one too.

I can&apos;t remove it until WinCairo deprecate WebKit1.
WinCairo is using ANGLE EGL and OpenGL ES public API for TextureMapper.
And, WinCairo WebKit1 is using  TemporaryOpenGLSetting.
https://trac.webkit.org/browser/webkit/trunk/Source/WebKitLegacy/win/WebCoreSupport/AcceleratedCompositingContext.cpp?rev=270071#L179
However, WinCairo WebKit2&apos;s corresponding code doesn&apos;t use TemporaryOpenGLSetting.
https://trac.webkit.org/browser/webkit/trunk/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/LayerTreeHostTextureMapper.cpp#L65
I don&apos;t know why the code is needed for WinCairo WebKit1.

&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGCGLPlatformLayer.cpp:-108
&gt;&gt; -        ::glBindFramebuffer(GraphicsContextGLOpenGL::FRAMEBUFFER, m_context.m_state.boundDrawFBO);
&gt; 
&gt; This seems to indicate that following never fires
&gt; #If USE(TEXTURE_MAPPER)
&gt; #If !USE(COORDINATED_GRAPHICS)
&gt; #If !USE(ANGLE)
&gt; #error this never fires
&gt; #endif
&gt; #endif
&gt; #endif
&gt; 
&gt; If this is the case, maybe it&apos;d be possible to put this assertion in the CMake system, so it&apos;d not come as surprise for somebody doing related work.

I don&apos;t think this can cause a surprise.
USE_ANGLE is a switch to use the new WebGL implementation.
After all port will migrate to the new one, we can remove the old code and USE_ANGLE macro.

All non-cocoa ports are using TextureMapper as the compositor if they enable Accelerated Compositing.
And, only WinCairo port isn&apos;t using Coordinated Graphics.
USE(TEXTURE_MAPPER) &amp;&amp; !USE(COORDINATED_GRAPHICS) is used only by WinCairo port.
After this patch will land, WinCairo won&apos;t swich back to !USE(ANGLE).
WinCairo won&apos;t support !USE(ANGLE) build configuration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714699</commentid>
    <comment_count>17</comment_count>
      <attachid>416037</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-12-15 02:44:06 -0800</bug_when>
    <thetext>Comment on attachment 416037
Patch

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

&gt;&gt;&gt; Source/WebCore/PlatformWin.cmake:41
&gt;&gt;&gt; +    platform/graphics/angle/ExtensionsGLANGLE.cpp
&gt;&gt; 
&gt;&gt; You add angle-related code here, but not the angle sources themselves.
&gt;&gt; This seems to indicate that there&apos;s a place where ANGLE sources are added based on a ANGLE related flag.
&gt;&gt; Some time maybe you could refactor the build system to add the angle support code at the same location as where the angle code itself is being added to the build.
&gt;&gt; This way when somebody, for example I, adds a ANGLE related support file, I don&apos;t need to edit PlatformWin.cmake as well as PlatformGTK or so. So I&apos;d edit something where the ANGLE sources are being declared.
&gt; 
&gt; ANGLE sources are built in CMakeLists under Source/ThirdParty/ANGLE directory.
&gt; They are in a different module of a different layer.
&gt; I can&apos;t add those files into it.
&gt; 
&gt; I can merge WinCairo and GTK&apos;s CMake code into the comon CMakeLists.txt.
&gt; However, because WinCairo WebKit1 is using TemporaryOpenGLSetting.cpp, TemporaryOpenGLSetting.cpp will remain in PlatformGTK.cmake.
&gt; 
&gt; if (NOT USE_ANGLE_WEBGL)
&gt;     list(APPEND WebCore_SOURCES
&gt;         platform/graphics/opengl/TemporaryOpenGLSetting.cpp
&gt;     )
&gt; endif ()
&gt; 
&gt; This is a unfortunate situation for GTK port because their OpenGL related sources are in both the common CMakeLists.txt and PlatformGTK.cmake.
&gt; If all ports migrate to USE_ANGLE or WinCairo deprecates WebKit1, the code can be simplified.

I was wrong. PlatformGTK.cmake doesn’t need to have the code snippet. I will fix it in a follow up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714898</commentid>
    <comment_count>18</comment_count>
      <attachid>416037</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2020-12-15 13:24:16 -0800</bug_when>
    <thetext>Comment on attachment 416037
Patch

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

I&apos;m fine with the changes just wondering what to do about the TextureMapperGCGLPlatformLayer files.

&gt;&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGCGLPlatformLayer.cpp:-108
&gt;&gt;&gt; -        ::glBindFramebuffer(GraphicsContextGLOpenGL::FRAMEBUFFER, m_context.m_state.boundDrawFBO);
&gt;&gt; 
&gt;&gt; This seems to indicate that following never fires
&gt;&gt; #If USE(TEXTURE_MAPPER)
&gt;&gt; #If !USE(COORDINATED_GRAPHICS)
&gt;&gt; #If !USE(ANGLE)
&gt;&gt; #error this never fires
&gt;&gt; #endif
&gt;&gt; #endif
&gt;&gt; #endif
&gt;&gt; 
&gt;&gt; If this is the case, maybe it&apos;d be possible to put this assertion in the CMake system, so it&apos;d not come as surprise for somebody doing related work.
&gt; 
&gt; I don&apos;t think this can cause a surprise.
&gt; USE_ANGLE is a switch to use the new WebGL implementation.
&gt; After all port will migrate to the new one, we can remove the old code and USE_ANGLE macro.
&gt; 
&gt; All non-cocoa ports are using TextureMapper as the compositor if they enable Accelerated Compositing.
&gt; And, only WinCairo port isn&apos;t using Coordinated Graphics.
&gt; USE(TEXTURE_MAPPER) &amp;&amp; !USE(COORDINATED_GRAPHICS) is used only by WinCairo port.
&gt; After this patch will land, WinCairo won&apos;t swich back to !USE(ANGLE).
&gt; WinCairo won&apos;t support !USE(ANGLE) build configuration.

If WinCairo is the only one who can potentially build this file would it be more appropriate to rename or rewrite it, to get rid of LGPL parts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714960</commentid>
    <comment_count>19</comment_count>
      <attachid>416037</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-12-15 16:09:40 -0800</bug_when>
    <thetext>Comment on attachment 416037
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGCGLPlatformLayer.cpp:-108
&gt;&gt;&gt;&gt; -        ::glBindFramebuffer(GraphicsContextGLOpenGL::FRAMEBUFFER, m_context.m_state.boundDrawFBO);
&gt;&gt;&gt; 
&gt;&gt;&gt; This seems to indicate that following never fires
&gt;&gt;&gt; #If USE(TEXTURE_MAPPER)
&gt;&gt;&gt; #If !USE(COORDINATED_GRAPHICS)
&gt;&gt;&gt; #If !USE(ANGLE)
&gt;&gt;&gt; #error this never fires
&gt;&gt;&gt; #endif
&gt;&gt;&gt; #endif
&gt;&gt;&gt; #endif
&gt;&gt;&gt; 
&gt;&gt;&gt; If this is the case, maybe it&apos;d be possible to put this assertion in the CMake system, so it&apos;d not come as surprise for somebody doing related work.
&gt;&gt; 
&gt;&gt; I don&apos;t think this can cause a surprise.
&gt;&gt; USE_ANGLE is a switch to use the new WebGL implementation.
&gt;&gt; After all port will migrate to the new one, we can remove the old code and USE_ANGLE macro.
&gt;&gt; 
&gt;&gt; All non-cocoa ports are using TextureMapper as the compositor if they enable Accelerated Compositing.
&gt;&gt; And, only WinCairo port isn&apos;t using Coordinated Graphics.
&gt;&gt; USE(TEXTURE_MAPPER) &amp;&amp; !USE(COORDINATED_GRAPHICS) is used only by WinCairo port.
&gt;&gt; After this patch will land, WinCairo won&apos;t swich back to !USE(ANGLE).
&gt;&gt; WinCairo won&apos;t support !USE(ANGLE) build configuration.
&gt; 
&gt; If WinCairo is the only one who can potentially build this file would it be more appropriate to rename or rewrite it, to get rid of LGPL parts?

Umm, I don&apos;t understand your opinion. I don&apos;t know what is confusing.
TextureMapperGCGLPlatformLayer sounds a natural name for me. It means TextureMapper&apos;s PlatformLayer for WebGL context.
Can you suggest any other better name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714962</commentid>
    <comment_count>20</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-12-15 16:14:02 -0800</bug_when>
    <thetext>It seems that GTK port no longer uses !USE(NICOSIA) code. I will remove unsued code in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715143</commentid>
    <comment_count>21</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2020-12-16 09:50:42 -0800</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #19)
&gt; Comment on attachment 416037 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=416037&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGCGLPlatformLayer.cpp:-108
&gt; &gt;&gt;&gt;&gt; -        ::glBindFramebuffer(GraphicsContextGLOpenGL::FRAMEBUFFER, m_context.m_state.boundDrawFBO);
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; This seems to indicate that following never fires
&gt; &gt;&gt;&gt; #If USE(TEXTURE_MAPPER)
&gt; &gt;&gt;&gt; #If !USE(COORDINATED_GRAPHICS)
&gt; &gt;&gt;&gt; #If !USE(ANGLE)
&gt; &gt;&gt;&gt; #error this never fires
&gt; &gt;&gt;&gt; #endif
&gt; &gt;&gt;&gt; #endif
&gt; &gt;&gt;&gt; #endif
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; If this is the case, maybe it&apos;d be possible to put this assertion in the CMake system, so it&apos;d not come as surprise for somebody doing related work.
&gt; &gt;&gt; 
&gt; &gt;&gt; I don&apos;t think this can cause a surprise.
&gt; &gt;&gt; USE_ANGLE is a switch to use the new WebGL implementation.
&gt; &gt;&gt; After all port will migrate to the new one, we can remove the old code and USE_ANGLE macro.
&gt; &gt;&gt; 
&gt; &gt;&gt; All non-cocoa ports are using TextureMapper as the compositor if they enable Accelerated Compositing.
&gt; &gt;&gt; And, only WinCairo port isn&apos;t using Coordinated Graphics.
&gt; &gt;&gt; USE(TEXTURE_MAPPER) &amp;&amp; !USE(COORDINATED_GRAPHICS) is used only by WinCairo port.
&gt; &gt;&gt; After this patch will land, WinCairo won&apos;t swich back to !USE(ANGLE).
&gt; &gt;&gt; WinCairo won&apos;t support !USE(ANGLE) build configuration.
&gt; &gt; 
&gt; &gt; If WinCairo is the only one who can potentially build this file would it be more appropriate to rename or rewrite it, to get rid of LGPL parts?
&gt; 
&gt; Umm, I don&apos;t understand your opinion. I don&apos;t know what is confusing.
&gt; TextureMapperGCGLPlatformLayer sounds a natural name for me. It means
&gt; TextureMapper&apos;s PlatformLayer for WebGL context.
&gt; Can you suggest any other better name?

The confusing part is that this is now a file that requires USE_ANGLE to be enabled. Its not going to be used by GTK/WPE since that is always USE_NICOSIA. It sounds like its WinCairo/ANGLE specific so maybe it should go into `Source/WebCore/platform/graphics/texmap/wincairo` or `Source/WebCore/platform/graphics/angle`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715144</commentid>
    <comment_count>22</comment_count>
      <attachid>416037</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2020-12-16 09:51:24 -0800</bug_when>
    <thetext>Comment on attachment 416037
Patch

Think there should be some renaming or moving around of the file but its not essential</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715181</commentid>
    <comment_count>23</comment_count>
      <attachid>416037</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-12-16 11:59:34 -0800</bug_when>
    <thetext>Comment on attachment 416037
Patch

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

Thank you for the review.

&gt;&gt;&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGCGLPlatformLayer.cpp:-108
&gt;&gt;&gt;&gt;&gt;&gt; -        ::glBindFramebuffer(GraphicsContextGLOpenGL::FRAMEBUFFER, m_context.m_state.boundDrawFBO);
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; This seems to indicate that following never fires
&gt;&gt;&gt;&gt;&gt; #If USE(TEXTURE_MAPPER)
&gt;&gt;&gt;&gt;&gt; #If !USE(COORDINATED_GRAPHICS)
&gt;&gt;&gt;&gt;&gt; #If !USE(ANGLE)
&gt;&gt;&gt;&gt;&gt; #error this never fires
&gt;&gt;&gt;&gt;&gt; #endif
&gt;&gt;&gt;&gt;&gt; #endif
&gt;&gt;&gt;&gt;&gt; #endif
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; If this is the case, maybe it&apos;d be possible to put this assertion in the CMake system, so it&apos;d not come as surprise for somebody doing related work.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I don&apos;t think this can cause a surprise.
&gt;&gt;&gt;&gt; USE_ANGLE is a switch to use the new WebGL implementation.
&gt;&gt;&gt;&gt; After all port will migrate to the new one, we can remove the old code and USE_ANGLE macro.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; All non-cocoa ports are using TextureMapper as the compositor if they enable Accelerated Compositing.
&gt;&gt;&gt;&gt; And, only WinCairo port isn&apos;t using Coordinated Graphics.
&gt;&gt;&gt;&gt; USE(TEXTURE_MAPPER) &amp;&amp; !USE(COORDINATED_GRAPHICS) is used only by WinCairo port.
&gt;&gt;&gt;&gt; After this patch will land, WinCairo won&apos;t swich back to !USE(ANGLE).
&gt;&gt;&gt;&gt; WinCairo won&apos;t support !USE(ANGLE) build configuration.
&gt;&gt;&gt; 
&gt;&gt;&gt; If WinCairo is the only one who can potentially build this file would it be more appropriate to rename or rewrite it, to get rid of LGPL parts?
&gt;&gt; 
&gt;&gt; Umm, I don&apos;t understand your opinion. I don&apos;t know what is confusing.
&gt;&gt; TextureMapperGCGLPlatformLayer sounds a natural name for me. It means TextureMapper&apos;s PlatformLayer for WebGL context.
&gt;&gt; Can you suggest any other better name?
&gt; 
&gt; The confusing part is that this is now a file that requires USE_ANGLE to be enabled. Its not going to be used by GTK/WPE since that is always USE_NICOSIA. It sounds like its WinCairo/ANGLE specific so maybe it should go into `Source/WebCore/platform/graphics/texmap/wincairo` or `Source/WebCore/platform/graphics/angle`?

Yes, GraphicsLayerTextureMapper is used only by WinCairo, but TextureMapperGCGLPlatformLayer is a part of TextureMapper.
It&apos;d be sad if TextureMapper related source files are separated into multiple directories.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715185</commentid>
    <comment_count>24</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-12-16 12:05:18 -0800</bug_when>
    <thetext>Committed r270899: &lt;https://trac.webkit.org/changeset/270899&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715187</commentid>
    <comment_count>25</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-16 12:06:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/72394320&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415192</attachid>
            <date>2020-12-01 23:18:05 -0800</date>
            <delta_ts>2020-12-08 18:16:26 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>a.diff</filename>
            <type>text/plain</type>
            <size>23318</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IGE2ZjFkYjNmNzU0ZS4uMDg5YzgyM2JiNjhmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIxMTQsMzAgKzIxMTQsMjggQEAgcGVyZm9y
bWFuY2UtYXBpL3BhaW50LXRpbWluZy9wYWludC10aW1pbmctd2l0aC13b3JrZXIuaHRtbCBbIEZh
aWx1cmUgXQogcGVyZm9ybWFuY2UtYXBpL3BhaW50LXRpbWluZy9wZXJmb3JtYW5jZS1vYnNlcnZl
ci1maXJzdC1jb250ZW50ZnVsLXBhaW50Lmh0bWwgWyBUaW1lb3V0IF0KIHN0b3JhZ2UvaW5kZXhl
ZGRiL3N0b3JhZ2UtbGltaXQtd2l0aC1pbmRpY2VzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEu
MC4zL2NvbmZvcm1hbmNlL2NhbnZhcy9kcmF3aW5nYnVmZmVyLXRlc3QuaHRtbCBbIFNraXAgXSAj
IFRpbWVvdXQKLXdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2NvbnRleHQvY29udGV4dC1sb3N0LXJl
c3RvcmVkLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2NvbnRleHQv
cHJlbXVsdGlwbHlhbHBoYS10ZXN0Lmh0bWwgWyBGYWlsdXJlIF0KK3dlYmdsLzEuMC4zL2NvbmZv
cm1hbmNlL2V4dGVuc2lvbnMvb2VzLWVsZW1lbnQtaW5kZXgtdWludC5odG1sIFsgRmFpbHVyZSBd
CiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LXdp
dGgtdmlkZW8uaHRtbCBbIFNraXAgXSAjIFRpbWVvdXQKLXdlYmdsLzEuMC4zL2NvbmZvcm1hbmNl
L2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtZmxvYXQuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4w
LjMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1oYWxmLWZsb2F0LXdpdGgtdmlk
ZW8uaHRtbCBbIFNraXAgXSAjIFRpbWVvdXQKLXdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVu
c2lvbnMvb2VzLXRleHR1cmUtaGFsZi1mbG9hdC5odG1sIFsgRmFpbHVyZSBdCi13ZWJnbC8xLjAu
My9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLWNvbXByZXNzZWQtdGV4dHVyZS1zaXplLWxp
bWl0Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9s
b25nLWV4cHJlc3Npb25zLXNob3VsZC1ub3QtY3Jhc2guaHRtbCBbIFNraXAgXSAjIFRpbWVvdXQK
K3dlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL21pc2MvdW5pbml0aWFsaXplZC10ZXN0Lmh0bWwgWyBG
YWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25zL2NvcHlUZXhJ
bWFnZTJEQmFkQXJncy5odG1sIFsgU2tpcCBdICMgVGltZW91dAogd2ViZ2wvMS4wLjMvY29uZm9y
bWFuY2UvbW9yZS9mdW5jdGlvbnMvcmVhZFBpeGVsc0JhZEFyZ3MuaHRtbCBbIEZhaWx1cmUgXQog
d2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvdGV4SW1hZ2UyREhUTUwuaHRt
bCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvdGV4
U3ViSW1hZ2UyREhUTUwuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2Uv
bW9yZS9mdW5jdGlvbnMvdGV4U3ViSW1hZ2UyREhUTUxCYWRBcmdzLmh0bWwgWyBTa2lwIF0gIyBD
cmFzaAotd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvcmVuZGVyYnVmZmVycy9mZWVkYmFjay1sb29w
Lmh0bWwgWyBGYWlsdXJlIF0KK3dlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3Byb2dyYW1zL3Byb2dy
YW0tdGVzdC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9yZW5kZXJi
dWZmZXJzL2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRhY2htZW50Lmh0bWwgWyBGYWlsdXJlIF0KLXdl
YmdsLzEuMC4zL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9wb2ludC1uby1hdHRyaWJ1dGVzLmh0bWwg
WyBGYWlsdXJlIF0KK3dlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3JlbmRlcmJ1ZmZlcnMvZnJhbWVi
dWZmZXItc3RhdGUtcmVzdG9yYXRpb24uaHRtbCBbIEZhaWx1cmUgXQord2ViZ2wvMS4wLjMvY29u
Zm9ybWFuY2UvcmVuZGVyYnVmZmVycy9yZW5kZXJidWZmZXItaW5pdGlhbGl6YXRpb24uaHRtbCBb
IEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvZGVmYXVsdC10ZXh0
dXJlLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3Rl
eC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtdmlkZW8tcmdiNTY1Lmh0bWwgWyBTa2lwIF0g
IyBUaW1lb3V0CiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXgtaW1hZ2UtYW5k
LXN1Yi1pbWFnZS0yZC13aXRoLXZpZGVvLXJnYmE0NDQ0Lmh0bWwgWyBTa2lwIF0gIyBUaW1lb3V0
CiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFn
ZS0yZC13aXRoLXZpZGVvLXJnYmE1NTUxLmh0bWwgWyBTa2lwIF0gIyBUaW1lb3V0CiB3ZWJnbC8x
LjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRo
LXZpZGVvLmh0bWwgWyBTa2lwIF0gIyBUaW1lb3V0CiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90
ZXh0dXJlcy90ZXgtc3ViLWltYWdlLTJkLWJhZC1hcmdzLmh0bWwgWyBTa2lwIF0gIyBDcmFzaAot
d2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4dHVyZS1jb3B5aW5nLWZlZWRiYWNr
LWxvb3BzLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVz
L3RleHR1cmUtYXR0YWNobWVudC1mb3JtYXRzLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmdsLzEuMC4z
L2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHR1cmUtbWlwcy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJn
bC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLXVwbG9hZC1zaXplLmh0bWwgWyBT
a2lwIF0gIyBUaW1lb3V0Ci13ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC10ZXh0dXJl
LWNvbXByZXNzaW9uLXJndGMuaHRtbCBbIEZhaWx1cmUgXQotd2ViZ2wvY29uZm9ybWFuY2UvZXh0
ZW5zaW9ucy9zM3RjLWFuZC1yZ3RjLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsL3dlYmdsLXZlcnRl
eC1hcnJheS1vYmplY3QtZGVmaW5lZC5odG1sIFsgRmFpbHVyZSBdCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2lu
LmNtYWtlCmluZGV4IDU5ZTA0MzQ4NWI4MS4uZjViYTZmYmIxMjdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bVdpbi5jbWFrZQpAQCAtNiw2ICs2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0lO
Q0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vYWNjZXNzaWJpbGl0eS93aW4i
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2Uvd2luIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0
Zm9ybS9ncmFwaGljcy9lZ2wiCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wiCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlIgogICAgICIke1dF
QkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy93aW4iCkBAIC0zNywxMyArMzgsMTIgQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCiAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRl
bnNpb25zR0xBTkdMRS5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL1RlbXBvcmFyeUFO
R0xFU2V0dGluZy5jcHAKKwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wu
Y3BwCiAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xF
Uy5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xDb21tb24uY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMRVMuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMUHJpdmF0ZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGVt
cG9yYXJ5T3BlbkdMU2V0dGluZy5jcHAKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBl
L09wZW5UeXBlVXRpbGl0aWVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVGV4dHVyZU1hcHBlci5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVN
YXBwZXIuY21ha2UKaW5kZXggNGQ1M2Q5OTllYjU5Li5kMmJjZDlhZjA4MmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQpAQCAtNSw2ICs1LDggQEAgbGlz
dChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJRVMKIAogbGlzdChBUFBF
TkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lh
QW5pbWF0aW9uLmNwcAorCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0FOR0xFQ29udGV4
dC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZVBvb2wuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAK
QEAgLTE4LDYgKzIwLDggQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvTmljb3NpYUFuaW1hdGlvbi5oCisKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvQU5HTEVDb250ZXh0LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0NsaXBTdGFjay5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggMTI3YTNiOGRiYTNjLi4xMzBhMjRj
MGFjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC0yNDcsNiArMjQ3
LDEwIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IElu
dFNpemUmIHNpemUpCiAgICAgICAgIGdsOjpUZXhJbWFnZTJEKEdMX1RFWFRVUkVfUkVDVEFOR0xF
X0FOR0xFLCAwLCBtX2ludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9y
Rm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKICAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCAwKTsKICAgICB9CisjZWxpZiBQTEFURk9STShXSU4p
CisgICAgZ2w6OkJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZSk7CisgICAgZ2w6
OlRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgY29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKKyAgICBnbDo6RnJhbWVidWZm
ZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhU
VVJFXzJELCBtX3RleHR1cmUsIDApOwogI2Vsc2UKICNlcnJvciBGSVhNRTogUG9ydCB0byBub24t
Q29jb2EgcGxhdGZvcm1zLgogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpAQCAtMTA2NSwxMiAr
MTA2OSwxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjb21waWxlU2hhZGVyKFBs
YXRmb3JtR0xPYmplY3Qgc2hhZGVyKQogICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCiAg
ICAgICAgIHJldHVybjsKIAorI2lmICFQTEFURk9STShXSU4pCiAgICAgLy8gV2UgbmVlZCB0aGUg
QU5HTEVfdGV4dHVyZV9yZWN0YW5nbGUgZXh0ZW5zaW9uIHRvIHN1cHBvcnQgSU9TdXJmYWNlCiAg
ICAgLy8gYmFja2J1ZmZlcnMsIGJ1dCB3ZSBkb24ndCB3YW50IGl0IGV4cG9zZWQgdG8gV2ViR0wg
dXNlciBzaGFkZXJzLgogICAgIC8vIFRlbXBvcmFyaWx5IGRpc2FibGUgaXQgZHVyaW5nIHNoYWRl
ciBjb21waWxhdGlvbi4KICAgICBnbDo6RGlzYWJsZShHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdM
RSk7CisjZW5kaWYKICAgICBnbDo6Q29tcGlsZVNoYWRlcihzaGFkZXIpOworI2lmICFQTEFURk9S
TShXSU4pCiAgICAgZ2w6OkVuYWJsZShHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSk7CisjZW5k
aWYKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Y29tcGlsZVNoYWRlckRpcmVj
dChQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9BTkdMRUNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0FOR0xFQ29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zY2U3MzRmNDJiMjIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQU5HTEVDb250ZXh0LmNw
cApAQCAtMCwwICsxLDE5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBNZXRyb2xvZ2lj
YWwgR3JvdXAgQi5WLgorICogQ29weXJpZ2h0IChDKSAyMDE4LCAyMDE5IElnYWxpYSBTLkwuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBTkdMRUNvbnRl
eHQuaCIKKworI2lmIFVTRShURVhUVVJFX01BUFBFUikgJiYgVVNFKEFOR0xFKSAmJiAhVVNFKE5J
Q09TSUEpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
CisjaWYgVVNFKEFOR0xFKQorI2RlZmluZSBFR0xfRUdMX1BST1RPVFlQRVMgMAorLy8gU2tpcCB0
aGUgaW5jbHVzaW9uIG9mIEFOR0xFJ3MgZXhwbGljaXQgY29udGV4dCBlbnRyeSBwb2ludHMgZm9y
IG5vdy4KKyNkZWZpbmUgR0xfQU5HTEVfZXhwbGljaXRfY29udGV4dAorI2RlZmluZSBHTF9BTkdM
RV9leHBsaWNpdF9jb250ZXh0X2dsZXMxCit0eXBlZGVmIHZvaWQqIEdMZWdsQ29udGV4dDsKKyNp
bmNsdWRlIDxBTkdMRS9lZ2wuaD4KKyNpbmNsdWRlIDxBTkdMRS9lZ2xleHQuaD4KKyNpbmNsdWRl
IDxBTkdMRS9lZ2xleHRfYW5nbGUuaD4KKyNpbmNsdWRlIDxBTkdMRS9lbnRyeV9wb2ludHNfZWds
Lmg+CisjaW5jbHVkZSA8QU5HTEUvZW50cnlfcG9pbnRzX2dsZXNfMl8wX2F1dG9nZW4uaD4KKyNp
bmNsdWRlIDxBTkdMRS9lbnRyeV9wb2ludHNfZ2xlc19leHRfYXV0b2dlbi5oPgorI2luY2x1ZGUg
PEFOR0xFL2dsMmV4dC5oPgorI2luY2x1ZGUgPEFOR0xFL2dsMmV4dF9hbmdsZS5oPgorI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgY2hhciogQU5HTEVDb250ZXh0OjplcnJv
clN0cmluZyhpbnQgc3RhdHVzQ29kZSkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihpbnQp
ID49IHNpemVvZihFR0xpbnQpLCAiRUdMaW50IG11c3Qgbm90IGJlIHdpZGVyIHRoYW4gaW50Iik7
CisgICAgc3dpdGNoIChzdGF0dXNDb2RlKSB7CisjZGVmaW5lIENBU0VfUkVUVVJOX1NUUklORyhu
YW1lKSBjYXNlIG5hbWU6IHJldHVybiAjbmFtZQorICAgICAgICAvLyBodHRwczovL3d3dy5raHJv
bm9zLm9yZy9yZWdpc3RyeS9FR0wvc2RrL2RvY3MvbWFuL2h0bWwvZWdsR2V0RXJyb3IueGh0bWwK
KyAgICAgICAgQ0FTRV9SRVRVUk5fU1RSSU5HKEVHTF9TVUNDRVNTKTsKKyAgICAgICAgQ0FTRV9S
RVRVUk5fU1RSSU5HKEVHTF9OT1RfSU5JVElBTElaRUQpOworICAgICAgICBDQVNFX1JFVFVSTl9T
VFJJTkcoRUdMX0JBRF9BQ0NFU1MpOworICAgICAgICBDQVNFX1JFVFVSTl9TVFJJTkcoRUdMX0JB
RF9BTExPQyk7CisgICAgICAgIENBU0VfUkVUVVJOX1NUUklORyhFR0xfQkFEX0FUVFJJQlVURSk7
CisgICAgICAgIENBU0VfUkVUVVJOX1NUUklORyhFR0xfQkFEX0NPTlRFWFQpOworICAgICAgICBD
QVNFX1JFVFVSTl9TVFJJTkcoRUdMX0JBRF9DT05GSUcpOworICAgICAgICBDQVNFX1JFVFVSTl9T
VFJJTkcoRUdMX0JBRF9DVVJSRU5UX1NVUkZBQ0UpOworICAgICAgICBDQVNFX1JFVFVSTl9TVFJJ
TkcoRUdMX0JBRF9ESVNQTEFZKTsKKyAgICAgICAgQ0FTRV9SRVRVUk5fU1RSSU5HKEVHTF9CQURf
U1VSRkFDRSk7CisgICAgICAgIENBU0VfUkVUVVJOX1NUUklORyhFR0xfQkFEX01BVENIKTsKKyAg
ICAgICAgQ0FTRV9SRVRVUk5fU1RSSU5HKEVHTF9CQURfUEFSQU1FVEVSKTsKKyAgICAgICAgQ0FT
RV9SRVRVUk5fU1RSSU5HKEVHTF9CQURfTkFUSVZFX1BJWE1BUCk7CisgICAgICAgIENBU0VfUkVU
VVJOX1NUUklORyhFR0xfQkFEX05BVElWRV9XSU5ET1cpOworICAgICAgICBDQVNFX1JFVFVSTl9T
VFJJTkcoRUdMX0NPTlRFWFRfTE9TVCk7CisjdW5kZWYgQ0FTRV9SRVRVUk5fU1RSSU5HCisgICAg
ZGVmYXVsdDogcmV0dXJuICJVbmtub3duIEVHTCBlcnJvciI7CisgICAgfQorfQorCitjb25zdCBj
aGFyKiBBTkdMRUNvbnRleHQ6Omxhc3RFcnJvclN0cmluZygpCit7CisgICAgcmV0dXJuIGVycm9y
U3RyaW5nKEVHTF9HZXRFcnJvcigpKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEFOR0xFQ29udGV4
dD4gQU5HTEVDb250ZXh0OjpjcmVhdGVDb250ZXh0KGJvb2wgaXNGb3JXZWJHTDIpCit7CisgICAg
RUdMRGlzcGxheSBkaXNwbGF5ID0gRUdMX0dldERpc3BsYXkoRUdMX0RFRkFVTFRfRElTUExBWSk7
CisgICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgRUdMaW50IG1ham9yVmVyc2lvbiwgbWlub3JWZXJzaW9uOworICAgIGlmIChF
R0xfSW5pdGlhbGl6ZShkaXNwbGF5LCAmbWFqb3JWZXJzaW9uLCAmbWlub3JWZXJzaW9uKSA9PSBF
R0xfRkFMU0UpIHsKKyAgICAgICAgTE9HKFdlYkdMLCAiRUdMRGlzcGxheSBJbml0aWFsaXphdGlv
biBmYWlsZWQuIik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBMT0coV2Vi
R0wsICJBTkdMRSBpbml0aWFsaXNlZCBNYWpvcjogJWQgTWlub3I6ICVkIiwgbWFqb3JWZXJzaW9u
LCBtaW5vclZlcnNpb24pOworCisgICAgY29uc3QgY2hhciogZGlzcGxheUV4dGVuc2lvbnMgPSBF
R0xfUXVlcnlTdHJpbmcoZGlzcGxheSwgRUdMX0VYVEVOU0lPTlMpOworICAgIExPRyhXZWJHTCwg
IkV4dGVuc2lvbnM6ICVzIiwgZGlzcGxheUV4dGVuc2lvbnMpOworCisgICAgRUdMQ29uZmlnIGNv
bmZpZzsKKyAgICBFR0xpbnQgY29uZmlnQXR0cmlidXRlc1tdID0geworICAgICAgICBFR0xfUkVO
REVSQUJMRV9UWVBFLCBFR0xfT1BFTkdMX0VTMl9CSVQsCisgICAgICAgIEVHTF9SRURfU0laRSwg
OCwKKyAgICAgICAgRUdMX0dSRUVOX1NJWkUsIDgsCisgICAgICAgIEVHTF9CTFVFX1NJWkUsIDgs
CisgICAgICAgIEVHTF9BTFBIQV9TSVpFLCA4LAorICAgICAgICBFR0xfTk9ORQorICAgIH07Cisg
ICAgRUdMaW50IG51bWJlckNvbmZpZ3NSZXR1cm5lZCA9IDA7CisgICAgRUdMX0Nob29zZUNvbmZp
ZyhkaXNwbGF5LCBjb25maWdBdHRyaWJ1dGVzLCAmY29uZmlnLCAxLCAmbnVtYmVyQ29uZmlnc1Jl
dHVybmVkKTsKKyAgICBpZiAobnVtYmVyQ29uZmlnc1JldHVybmVkICE9IDEpIHsKKyAgICAgICAg
TE9HKFdlYkdMLCAiRUdMQ29uZmlnIEluaXRpYWxpemF0aW9uIGZhaWxlZC4iKTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIExPRyhXZWJHTCwgIkdvdCBFR0xDb25maWciKTsK
KworICAgIEVHTF9CaW5kQVBJKEVHTF9PUEVOR0xfRVNfQVBJKTsKKyAgICBpZiAoRUdMX0dldEVy
cm9yKCkgIT0gRUdMX1NVQ0NFU1MpIHsKKyAgICAgICAgTE9HKFdlYkdMLCAiVW5hYmxlIHRvIGJp
bmQgdG8gT1BFTkdMX0VTX0FQSSIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
KyAgICBWZWN0b3I8RUdMaW50PiBjb250ZXh0QXR0cmlidXRlczsKKyAgICBpZiAoaXNGb3JXZWJH
TDIpIHsKKyAgICAgICAgY29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9DT05URVhUX0NMSUVO
VF9WRVJTSU9OKTsKKyAgICAgICAgY29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKDMpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGNvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xfQ09OVEVYVF9DTElF
TlRfVkVSU0lPTik7CisgICAgICAgIGNvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZCgyKTsKKyAgICAg
ICAgLy8gQU5HTEUgd2lsbCB1cGdyYWRlIHRoZSBjb250ZXh0IHRvIEVTMyBhdXRvbWF0aWNhbGx5
IHVubGVzcyB0aGlzIGlzIHNwZWNpZmllZC4KKyAgICAgICAgY29udGV4dEF0dHJpYnV0ZXMuYXBw
ZW5kKEVHTF9DT05URVhUX09QRU5HTF9CQUNLV0FSRFNfQ09NUEFUSUJMRV9BTkdMRSk7CisgICAg
ICAgIGNvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xfRkFMU0UpOworICAgIH0KKyAgICBjb250
ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX0NPTlRFWFRfV0VCR0xfQ09NUEFUSUJJTElUWV9BTkdM
RSk7CisgICAgY29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9UUlVFKTsKKyAgICBpZiAoc3Ry
c3RyKGRpc3BsYXlFeHRlbnNpb25zLCAiRUdMX0FOR0xFX3Bvd2VyX3ByZWZlcmVuY2UiKSkgewor
ICAgICAgICBjb250ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX1BPV0VSX1BSRUZFUkVOQ0VfQU5H
TEUpOworICAgICAgICAvLyBFR0xfTE9XX1BPV0VSX0FOR0xFIGlzIHRoZSBkZWZhdWx0LiBDaGFu
Z2UgdG8KKyAgICAgICAgLy8gRUdMX0hJR0hfUE9XRVJfQU5HTEUgaWYgZGVzaXJlZC4KKyAgICAg
ICAgY29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9MT1dfUE9XRVJfQU5HTEUpOworICAgIH0K
KyAgICBjb250ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX05PTkUpOworCisgICAgRUdMQ29udGV4
dCBjb250ZXh0ID0gRUdMX0NyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBFR0xfTk9fQ09O
VEVYVCwgY29udGV4dEF0dHJpYnV0ZXMuZGF0YSgpKTsKKyAgICBpZiAoY29udGV4dCA9PSBFR0xf
Tk9fQ09OVEVYVCkgeworICAgICAgICBMT0coV2ViR0wsICJFR0xDb250ZXh0IEluaXRpYWxpemF0
aW9uIGZhaWxlZC4iKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIExPRyhX
ZWJHTCwgIkdvdCBFR0xDb250ZXh0Iik7CisKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFO
R0xFQ29udGV4dD4obmV3IEFOR0xFQ29udGV4dChkaXNwbGF5LCBjb250ZXh0LCBFR0xfTk9fU1VS
RkFDRSkpOworfQorCitBTkdMRUNvbnRleHQ6OkFOR0xFQ29udGV4dChFR0xEaXNwbGF5IGRpc3Bs
YXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlKQorICAgIDogbV9kaXNw
bGF5KGRpc3BsYXkpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fc3VyZmFjZShz
dXJmYWNlKQoreworfQorCitBTkdMRUNvbnRleHQ6On5BTkdMRUNvbnRleHQoKQoreworICAgIGlm
IChtX2NvbnRleHQpIHsKKyAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgMCk7CisgICAgICAgIEVHTF9NYWtlQ3VycmVudChtX2Rpc3BsYXksIEVHTF9OT19TVVJGQUNF
LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOworICAgICAgICBFR0xfRGVzdHJveUNv
bnRleHQobV9kaXNwbGF5LCBtX2NvbnRleHQpOworICAgIH0KKworICAgIGlmIChtX3N1cmZhY2Up
CisgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXksIG1fc3VyZmFjZSk7Cit9CisK
K2Jvb2wgQU5HTEVDb250ZXh0OjptYWtlQ29udGV4dEN1cnJlbnQoKQoreworICAgIEFTU0VSVCht
X2NvbnRleHQpOworCisgICAgaWYgKEVHTF9HZXRDdXJyZW50Q29udGV4dCgpICE9IG1fY29udGV4
dCkKKyAgICAgICAgcmV0dXJuIEVHTF9NYWtlQ3VycmVudChtX2Rpc3BsYXksIG1fc3VyZmFjZSwg
bV9zdXJmYWNlLCBtX2NvbnRleHQpOworICAgIHJldHVybiB0cnVlOworfQorCitQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dEdMIEFOR0xFQ29udGV4dDo6cGxhdGZvcm1Db250ZXh0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9jb250ZXh0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0FOR0xFQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0FOR0xFQ29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
OWFhYzNkMjFmZjdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0FOR0xFQ29udGV4dC5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdodCAo
QykgMjAxOCwgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpICYmIFVTRShBTkdMRSkg
JiYgIVVTRShOSUNPU0lBKQorCisjaW5jbHVkZSAiR0xDb250ZXh0LmgiCisKK3R5cGVkZWYgdm9p
ZCAqRUdMQ29uZmlnOwordHlwZWRlZiB2b2lkICpFR0xDb250ZXh0OwordHlwZWRlZiB2b2lkICpF
R0xEaXNwbGF5OwordHlwZWRlZiB2b2lkICpFR0xTdXJmYWNlOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEFOR0xFQ29udGV4dCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQU5H
TEVDb250ZXh0KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgY2hhciogZXJyb3JTdHJpbmco
aW50IHN0YXR1c0NvZGUpOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBsYXN0RXJyb3JTdHJpbmco
KTsKKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8QU5HTEVDb250ZXh0PiBjcmVhdGVDb250
ZXh0KGJvb2wgaXNGb3JXZWJHTDIpOworICAgIH5BTkdMRUNvbnRleHQoKTsKKworICAgIGJvb2wg
bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBwbGF0
Zm9ybUNvbnRleHQoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBBTkdMRUNvbnRleHQoRUdMRGlz
cGxheSwgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSk7CisKKyAgICBFR0xEaXNwbGF5IG1fZGlzcGxh
eSB7IG51bGxwdHIgfTsKKyAgICBFR0xDb250ZXh0IG1fY29udGV4dCB7IG51bGxwdHIgfTsKKyAg
ICBFR0xTdXJmYWNlIG1fc3VyZmFjZSB7IG51bGxwdHIgfTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1
cmVNYXBwZXIuY3BwCmluZGV4IDY4MGE1MjlkNjc1ZC4uMjU0YjJmOGJiYmMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcApAQCAtMTM0LDYgKzEz
NCw3IEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChH
cmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0CiAgICAgOiBHcmFwaGljc0NvbnRleHRHTChh
dHRyaWJ1dGVzLCBkZXN0aW5hdGlvbiwgc2hhcmVkQ29udGV4dCkKIHsKICAgICBBU1NFUlRfVU5V
U0VEKHNoYXJlZENvbnRleHQsICFzaGFyZWRDb250ZXh0KTsKKyAgICBtX2lzRm9yV2ViR0wyID0g
YXR0cmlidXRlcy5pc1dlYkdMMjsKICNpZiBVU0UoTklDT1NJQSkKICAgICBtX25pY29zaWFMYXll
ciA9IFdURjo6bWFrZVVuaXF1ZTxOaWNvc2lhOjpHQ0dMQU5HTEVMYXllcj4oKnRoaXMsIGRlc3Rp
bmF0aW9uKTsKICNlbHNlCkBAIC0xNDYsMTQgKzE0NywxOSBAQCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVz
IGF0dAogICAgIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOyAvLyBUaGV5IG1heSBo
YXZlIGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRpb24uCiAKICAgICBpZiAoZGVzdGluYXRpb24gPT0g
RGVzdGluYXRpb246Ok9mZnNjcmVlbikgeworI2lmIFBMQVRGT1JNKFdJTikKKyAgICAgICAgY29u
c3QgR0xlbnVtIHRleHVyZVR5cGUgPSBHTF9URVhUVVJFXzJEOworI2Vsc2UKKyAgICAgICAgY29u
c3QgR0xlbnVtIHRleHVyZVR5cGUgPSBHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRTsKKyNlbmRp
ZgogICAgICAgICAvLyBDcmVhdGUgYSB0ZXh0dXJlIHRvIHJlbmRlciBpbnRvLgogICAgICAgICBn
bDo6R2VuVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7Ci0gICAgICAgIGdsOjpCaW5kVGV4dHVyZShH
TF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwgbV90ZXh0dXJlKTsKLSAgICAgICAgZ2w6OlRleFBh
cmFtZXRlcmYoR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsIEdMX1RFWFRVUkVfTUFHX0ZJTFRF
UiwgR0xfTElORUFSKTsKLSAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV9SRUNU
QU5HTEVfQU5HTEUsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICAgICAg
Z2w6OlRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsIEdMX1RFWFRVUkVf
V1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19F
REdFKTsKLSAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xF
LCAwKTsKKyAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHVyZVR5cGUsIG1fdGV4dHVyZSk7Cisg
ICAgICAgIGdsOjpUZXhQYXJhbWV0ZXJmKHRleHVyZVR5cGUsIEdMX1RFWFRVUkVfTUFHX0ZJTFRF
UiwgR0xfTElORUFSKTsKKyAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmYodGV4dXJlVHlwZSwgR0xf
VEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAgICAgICBnbDo6VGV4UGFyYW1ldGVy
aSh0ZXh1cmVUeXBlLCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAg
ICAgIGdsOjpUZXhQYXJhbWV0ZXJpKHRleHVyZVR5cGUsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9D
TEFNUF9UT19FREdFKTsKKyAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHVyZVR5cGUsIDApOwog
CiAgICAgICAgIC8vIENyZWF0ZSBhbiBGQk8uCiAgICAgICAgIGdsOjpHZW5GcmFtZWJ1ZmZlcnMo
MSwgJm1fZmJvKTsKQEAgLTE5MCwxMiArMTk2LDYgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQK
ICAgICAgICAgICAgIC8vIEJpbmQgY2FudmFzIEZCTy4KICAgICAgICAgICAgIGdsOjpCaW5kRnJh
bWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fZmJvKTsKICAgICAgICAgICAgIG1fc3RhdGUuYm91
bmREcmF3RkJPID0gbV9zdGF0ZS5ib3VuZFJlYWRGQk8gPSBtX2ZibzsKLSNpZiBVU0UoT1BFTkdM
X0VTKQotICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuZGVwdGgpCi0gICAgICAgICAgICAgICAg
Z2w6OkdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1fZGVwdGhCdWZmZXIpOwotICAgICAgICAgICAgaWYg
KGF0dHJpYnV0ZXMuc3RlbmNpbCkKLSAgICAgICAgICAgICAgICBnbDo6R2VuUmVuZGVyYnVmZmVy
cygxLCAmbV9zdGVuY2lsQnVmZmVyKTsKLSNlbmRpZgogICAgICAgICAgICAgaWYgKGF0dHJpYnV0
ZXMuc3RlbmNpbCB8fCBhdHRyaWJ1dGVzLmRlcHRoKQogICAgICAgICAgICAgICAgIGdsOjpHZW5S
ZW5kZXJidWZmZXJzKDEsICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CiAgICAgICAgIH0KQEAgLTQ1
Myw3ICs0NTMsOSBAQCBQbGF0Zm9ybUdMT2JqZWN0IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpw
bGF0Zm9ybVRleHR1cmUoKSBjb25zdAogCiBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpp
c0dMRVMyQ29tcGxpYW50KCkgY29uc3QKIHsKLSNpZiBVU0UoT1BFTkdMX0VTKQorI2lmIFVTRShB
TkdMRSkKKyAgICByZXR1cm4gbV9pc0ZvcldlYkdMMjsKKyNlbGlmIFVTRShPUEVOR0xfRVMpCiAg
ICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBs
YXRmb3JtTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllci5jcHAKaW5kZXggOTA4MDVmYjU5N2I5Li43
ZjFlZWViMzUwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3Jt
TGF5ZXIuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpZiBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVY
VF9HTCkgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiAhVVNFKE5JQ09TSUEpCiAKKyNpbmNsdWRl
ICJBTkdMRUNvbnRleHQuaCIKICNpbmNsdWRlICJCaXRtYXBUZXh0dXJlR0wuaCIKICNpbmNsdWRl
ICJHTENvbnRleHQuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0xIZWFkZXJzLmgiCkBAIC0z
NSw3ICszNiw3IEBAIFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcjo6VGV4dHVyZU1hcHBl
ckdDR0xQbGF0Zm9ybUxheWVyKEdyYXBoaWNzQ29udGV4dEdMCiB7CiAgICAgc3dpdGNoIChkZXN0
aW5hdGlvbikgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkRlc3RpbmF0aW9u
OjpPZmZzY3JlZW46Ci0gICAgICAgIG1fZ2xDb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVPZmZz
Y3JlZW5Db250ZXh0KCZQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGlu
ZygpKTsKKyAgICAgICAgbV9nbENvbnRleHQgPSBBTkdMRUNvbnRleHQ6OmNyZWF0ZUNvbnRleHQo
Y29udGV4dC5jb250ZXh0QXR0cmlidXRlcygpLmlzV2ViR0wyKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6RGVzdGluYXRpb246OkRpcmVjdGx5VG9I
b3N0V2luZG93OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEwMCwxNSArMTAx
LDE0IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyOjpwYWludFRvVGV4dHVy
ZU1hcHBlcihUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlCiAgICAgYXV0byBhdHRycyA9IG1fY29udGV4
dC5jb250ZXh0QXR0cmlidXRlcygpOwogICAgIEFTU0VSVChtX2NvbnRleHQubV9zdGF0ZS5ib3Vu
ZFJlYWRGQk8gPT0gbV9jb250ZXh0Lm1fc3RhdGUuYm91bmREcmF3RkJPKTsKICAgICBpZiAoYXR0
cnMuYW50aWFsaWFzICYmIG1fY29udGV4dC5tX3N0YXRlLmJvdW5kRHJhd0ZCTyA9PSBtX2NvbnRl
eHQubV9tdWx0aXNhbXBsZUZCTykgewotICAgICAgICBHTENvbnRleHQqIHByZXZpb3VzQWN0aXZl
Q29udGV4dCA9IEdMQ29udGV4dDo6Y3VycmVudCgpOwotICAgICAgICBpZiAocHJldmlvdXNBY3Rp
dmVDb250ZXh0ICE9IG1fZ2xDb250ZXh0LmdldCgpKQotICAgICAgICAgICAgbV9jb250ZXh0Lm1h
a2VDb250ZXh0Q3VycmVudCgpOworICAgICAgICBtX2NvbnRleHQubWFrZUNvbnRleHRDdXJyZW50
KCk7CiAKICAgICAgICAgbV9jb250ZXh0LnJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3Nhcnko
KTsKICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
RlJBTUVCVUZGRVIsIG1fY29udGV4dC5tX3N0YXRlLmJvdW5kRHJhd0ZCTyk7CiAKLSAgICAgICAg
aWYgKHByZXZpb3VzQWN0aXZlQ29udGV4dCAmJiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgIT0gbV9n
bENvbnRleHQuZ2V0KCkpCi0gICAgICAgICAgICBwcmV2aW91c0FjdGl2ZUNvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpOworICAgICAgICBHTENvbnRleHQqIGF0aXZlQ29udGV4dCA9IEdMQ29u
dGV4dDo6Y3VycmVudCgpOworICAgICAgICBpZiAoYXRpdmVDb250ZXh0KQorICAgICAgICAgICAg
YXRpdmVDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICB9CiAKICAgICBUZXh0dXJl
TWFwcGVyR0wmIHRleG1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMJj4odGV4dHVy
ZU1hcHBlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmgK
aW5kZXggNWEwNjIzM2YzMjc4Li5lN2ZiODM4ZmMzZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBHTENvbnRleHQ7CitjbGFzcyBBTkdMRUNvbnRleHQ7CiBjbGFz
cyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OwogCiBjbGFzcyBUZXh0dXJlTWFwcGVy
R0NHTFBsYXRmb3JtTGF5ZXIgOiBwdWJsaWMgUGxhdGZvcm1MYXllciB7CkBAIC00OSw3ICs0OSw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYgbV9j
b250ZXh0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IG1fZ2xDb250ZXh0OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxBTkdMRUNvbnRleHQ+IG1fZ2xDb250ZXh0OwogCiAjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
clByb3h5PiBtX3BsYXRmb3JtTGF5ZXJQcm94eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9P
cHRpb25zV2luQ2Fpcm8uY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtl
CmluZGV4IGJjNzA1OWI4NjQwZC4uNzUyZWE1OGIyZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21h
a2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fp
cm8uY21ha2UKQEAgLTQ1LDcgKzQ1LDkgQEAgZW5kaWYgKCkKICMgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjYzNQogCiBzZXQoVVNFX0FOR0xFX0VHTCBPTikKK3Nl
dChVU0VfQU5HTEVfV0VCR0wgT04pCiAKK1NFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9BTkdM
RSBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DQUlSTyBPTikKIFNFVF9BTkRfRVhQ
T1NFX1RPX0JVSUxEKFVTRV9DRiBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9DVVJM
IE9OKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415696</attachid>
            <date>2020-12-08 18:16:32 -0800</date>
            <delta_ts>2020-12-08 18:25:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219421-20201209111630.patch</filename>
            <type>text/plain</type>
            <size>32784</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggNTM0MzA3Y2YxZTdhOGVjZGRjNDFkZTBjN2E2MjdlMThmMjRjZmI1YS4uODQyZmJmMzE5YTBi
ZTUyM2MyMzMwZTU1YzA2MDI4Mzg0ZjNlNjYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTEyLTA4ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3Jp
LkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIFtXaW5DYWlyb10gRW5hYmxlIFVTRV9BTkdMRQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NDIxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKwogMjAyMC0xMi0wNCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgTW9yZSBGQUxMQkFDS19QTEFURk9STSBhZG9wdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGEw
NDljZjQ2ZTk0MDBmMWQyNmJhZDU2NTQ2MzMzZjQxNzVkMGM1ZWQuLmVlNzk0NzU5NDI2MTBmNGUy
ZWU4NzY1MzA3Mjk4ZTM5MmYzZWFjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAy
MC0xMi0wOCAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KKworICAg
ICAgICBbV2luQ2Fpcm9dIEVuYWJsZSBVU0VfQU5HTEUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBp
bXBsZW1lbnRhdGlvbiBmcm9tIG9sZCBvbmUKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmNwcCkgdG8gbmV3IG9uZQorICAgICAgICAoR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAp
LCB3aGljaCBpcyB1c2luZyBBTkdMRSdzIGludGVybmFsIEFQSQorICAgICAgICBhbmQgdmVyaWZp
Y2F0aW9uIGNvZGUsIGZvciBXaW5DYWlybyBwb3J0LiBJIHdpbGwgZW5hYmxlIFdlYkdMMiBmb3IK
KyAgICAgICAgV2luQ2Fpcm8gaW4gYSBmb2xsb3ctdXAgcGF0Y2guCisKKyAgICAgICAgR0xfVEVY
VFVSRV9SRUNUQU5HTEVfQU5HTEUgaXMgbm90IGF2YWlsYWJsZSBmb3IgQU5HTEUgRDNEIGJhY2tl
bmQuCisgICAgICAgIFVzZSBHTF9URVhUVVJFXzJEIGluc3RlYWQuCisKKyAgICAgICAgQWRkIGEg
bmV3IGNsYXNzIFdlYkNvcmU6OkFOR0xFQ29udGV4dCBieSBjb3B5aW5nCisgICAgICAgIE5pY29z
aWE6OkdDR0xBTkdMRUxheWVyOjpBTkdMRUNvbnRleHQuIEl0J2QgYmUgYmV0dGVyIHRvIG1lcmdl
CisgICAgICAgIHRoZW0gYWZ0ZXIgR1RLIGFuZCBXUEUgd2lsbCBhbHNvIHN3aXRjaC4KKworICAg
ICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHBsYXRmb3JtL1RleHR1cmVNYXBw
ZXIuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cmVzaGFwZUZCT3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9BTkdMRUNvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFQ29u
dGV4dDo6ZXJyb3JTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVDb250ZXh0OjpsYXN0
RXJyb3JTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVDb250ZXh0OjpjcmVhdGVDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFQ29udGV4dDo6QU5HTEVDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFOR0xFQ29udGV4dDo6fkFOR0xFQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpBTkdMRUNvbnRleHQ6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpBTkdMRUNvbnRleHQ6OnBsYXRmb3JtQ29udGV4dCBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0FOR0xFQ29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6ZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyOjpUZXh0
dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckdDR0xQbGF0Zm9ybUxheWVyOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllci5o
OgorCiAyMDIwLTEyLTA4ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29t
PgogCiAgICAgICAgIEFkZCBBTkdMRUhlYWRlcnMuaCB0byBpbmNsdWRlIGFsbCBBTkdMRSBoZWFk
ZXJzIGZvciBXZWJHTApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DTWFrZUxpc3RzLnR4dAppbmRleCBi
NmYyY2M4MzBmMzk5MjhmYzU2MmYzY2VlOTljODY1MDU1M2Q5NGRjLi42YThmYTJiMmFjMDBmNWJh
YWNiMjFhNjBmODQ5OGQ5YTMxODRlNWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DTWFrZUxp
c3RzLnR4dApAQCAtMTcwLDYgKzE3MCw3IEBAIGVuZGlmICgpCiBpZiAoVVNFX0FOR0xFX1dFQkdM
KQogICAgIHNldChsaWJnbGVzdjJfZW50cnlfcG9pbnRzX2hlYWRlcnMKICAgICAgICAgc3JjL2xp
YkdMRVN2Mi9lbnRyeV9wb2ludHNfZWdsLmgKKyAgICAgICAgc3JjL2xpYkdMRVN2Mi9lbnRyeV9w
b2ludHNfZWdsX2V4dC5oCiAgICAgICAgIHNyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNf
Ml8wX2F1dG9nZW4uaAogICAgICAgICBzcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNf
MF9hdXRvZ2VuLmgKICAgICAgICAgc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc19leHRf
YXV0b2dlbi5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDU5ZTA0MzQ4NWI4MWQ5ZTA0
MzYwN2JkNmJhMGEyYzM2ZDNiNDcwZTAuLmY1YmE2ZmJiMTI3ZjU1MWE1NWQ2Zjc1NDEzYWQ2ZTY4
MTk0OGI4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCkBAIC02LDYgKzYsNyBAQCBsaXN0
KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNP
UkVfRElSfS9hY2Nlc3NpYmlsaXR5L3dpbiIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGFnZS93aW4i
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2VnbCIKKyAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3dp
biIKQEAgLTM3LDEzICszOCwxMiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAg
IHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKIAorICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcAorCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKIAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKLSAgICBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKLSAgICBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xQcml2YXRlLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZW1wb3JhcnlPcGVuR0xTZXR0aW5nLmNwcAogCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQppbmRleCA0ZDUzZDk5OWViNTlm
NmRjZjk0ZTViZDk1NTFkZDZhZmRkYjVlOGUxLi5kMmJjZDlhZjA4MmQyYjdlNjZhOTI2YjIxOGYy
NDA4NTBiNmE5OTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJl
TWFwcGVyLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIu
Y21ha2UKQEAgLTUsNiArNSw4IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9JTkNMVURF
X0RJUkVDVE9SSUVTCiAKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUFuaW1hdGlvbi5jcHAKKworICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9BTkdMRUNvbnRleHQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0JpdG1hcFRleHR1cmUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1h
cFRleHR1cmVQb29sLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCkBAIC0xOCw2ICsyMCw4IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogCiBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hF
QURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFBbmltYXRpb24uaAor
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0FOR0xFQ29udGV4dC5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9DbGlwU3RhY2suaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmlu
ZGV4IDMwOWE1MzA5YjY0MGEzZDZhMjgxNDFjYTdiMWE3NWRiNDZlOWY5NTEuLjZkOWRiM2RkMDUz
ZDM3NTI3YjI1OWE5M2MzNzFjNGRiMzM5MzVhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdM
QU5HTEUuY3BwCkBAIC0yMjMsMjAgKzIyMywyMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICBnbDo6QmluZEZy
YW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX2Zibyk7CiAgICAgfSBlbHNlCiAgICAgICAgIGds
OjpGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVO
VDAsIGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCksIG1fdGV4dHVyZSwgMCk7Ci0jZWxpZiBQ
TEFURk9STShHVEspCi0gICAgZ2w6OkJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FO
R0xFLCBtX3RleHR1cmUpOwotICAgIGdsOjpUZXhJbWFnZTJEKEdMX1RFWFRVUkVfUkVDVEFOR0xF
X0FOR0xFLCAwLCBtX2ludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9y
Rm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKLSAgICBnbDo6RnJhbWVidWZmZXJUZXh0dXJl
MkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFX1JFQ1RB
TkdMRV9BTkdMRSwgbV90ZXh0dXJlLCAwKTsKKyNlbHNlCisgICAgR0xlbnVtIHRleHR1cmVUYXJn
ZXQgPSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOworICAgIEdMdWludCBpbnRlcm5hbENv
bG9yRm9ybWF0ID0gdGV4dHVyZVRhcmdldCA9PSBHTF9URVhUVVJFXzJEID8gY29sb3JGb3JtYXQg
OiBtX2ludGVybmFsQ29sb3JGb3JtYXQ7CisgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJn
ZXQsIG1fdGV4dHVyZSk7CisgICAgZ2w6OlRleEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwgaW50
ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lH
TkVEX0JZVEUsIDApOworICAgIGdsOjpGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZF
UiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZSwgMCk7Cisj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChtX2NvbXBvc2l0b3JUZXh0dXJl
KSB7Ci0gICAgICAgIGdsOjpCaW5kVGV4dHVyZShHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwg
bV9jb21wb3NpdG9yVGV4dHVyZSk7Ci0gICAgICAgIGdsOjpUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
UkVDVEFOR0xFX0FOR0xFLCAwLCBtX2ludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKLSAgICAgICAgZ2w6OkJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCAwKTsKLSAgICAgICAgZ2w6OkJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCBtX2ludGVybWVkaWF0ZVRleHR1cmUp
OwotICAgICAgICBnbDo6VGV4SW1hZ2UyRChHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwgMCwg
bV9pbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xf
VU5TSUdORURfQllURSwgMCk7Ci0gICAgICAgIGdsOjpCaW5kVGV4dHVyZShHTF9URVhUVVJFX1JF
Q1RBTkdMRV9BTkdMRSwgMCk7CisgICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0
LCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKKyAgICAgICAgZ2w6OlRleEltYWdlMkQodGV4dHVyZVRh
cmdldCwgMCwgbV9pbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZv
cm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7CisgICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0
dXJlVGFyZ2V0LCAwKTsKKyAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1f
aW50ZXJtZWRpYXRlVGV4dHVyZSk7CisgICAgICAgIGdsOjpUZXhJbWFnZTJEKHRleHR1cmVUYXJn
ZXQsIDAsIG1faW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3Jt
YXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOworICAgICAgICBnbDo6QmluZFRleHR1cmUodGV4dHVy
ZVRhcmdldCwgMCk7CiAgICAgfQotI2Vsc2UKLSNlcnJvciBGSVhNRTogUG9ydCB0byBub24tQ29j
b2EgcGxhdGZvcm1zLgorI2VuZGlmCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKICAgICBh
dHRhY2hEZXB0aEFuZFN0ZW5jaWxCdWZmZXJJZk5lZWRlZChpbnRlcm5hbERlcHRoU3RlbmNpbEZv
cm1hdCwgd2lkdGgsIGhlaWdodCk7CkBAIC0xMDcwLDEyICsxMDcyLDE2IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIp
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCisjaWYg
IVBMQVRGT1JNKFdJTikKICAgICAvLyBXZSBuZWVkIHRoZSBBTkdMRV90ZXh0dXJlX3JlY3Rhbmds
ZSBleHRlbnNpb24gdG8gc3VwcG9ydCBJT1N1cmZhY2UKICAgICAvLyBiYWNrYnVmZmVycywgYnV0
IHdlIGRvbid0IHdhbnQgaXQgZXhwb3NlZCB0byBXZWJHTCB1c2VyIHNoYWRlcnMuCiAgICAgLy8g
VGVtcG9yYXJpbHkgZGlzYWJsZSBpdCBkdXJpbmcgc2hhZGVyIGNvbXBpbGF0aW9uLgogICAgIGds
OjpEaXNhYmxlKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFKTsKKyNlbmRpZgogICAgIGdsOjpD
b21waWxlU2hhZGVyKHNoYWRlcik7CisjaWYgIVBMQVRGT1JNKFdJTikKICAgICBnbDo6RW5hYmxl
KEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFKTsKKyNlbmRpZgogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjb21waWxlU2hhZGVyRGlyZWN0KFBsYXRmb3JtR0xPYmplY3Qgc2hh
ZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCAyNzA2ZTdiMzBhYjli
MzdhMjEyNzhjNTE3ZWRiZGYxNTJiYzBmYTcwLi42NTU4OTc3MjAzMjI5ZWIwNzg4ODI2MjdhMzVm
MzkwNDRkMDMwY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtOTcs
MTIgKzk3LDEyIEBAIHB1YmxpYzoKICAgICBDQUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDQUxheWVyKj4obV93ZWJHTExheWVyLmdl
dCgpKTsgfQogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5IHBsYXRmb3JtRGlz
cGxheSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheU9iajsgfQogICAgIFBsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0R0xDb25maWcgcGxhdGZvcm1Db25maWcoKSBjb25zdCB7IHJldHVybiBtX2NvbmZp
Z09iajsgfQotICAgIHN0YXRpYyBHQ0dMZW51bSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgp
OwogICAgIHN0YXRpYyBHQ0dMZW51bSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5KCk7
CiAgICAgc3RhdGljIEdDR0xpbnQgRUdMRHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKTsKICNl
bHNlCiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwogI2Vu
ZGlmCisgICAgc3RhdGljIEdDR0xlbnVtIGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVudW0gY2xhc3MgUmVsZWFzZUJlaGF2aW9y
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9B
TkdMRUNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0FOR0xFQ29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTBjODkyNDkzNDk0MmY2ZGI2MzlhYmU1YWU3
ZWE2YmIyZjg4OTE0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9BTkdMRUNvbnRleHQuY3BwCkBAIC0wLDAgKzEsMTc4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTgsIDIwMTkgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE4
IEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVy
dGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlz
Y2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkFOR0xFQ29udGV4dC5oIgorCisjaWYgVVNFKFRFWFRVUkVf
TUFQUEVSKSAmJiBVU0UoQU5HTEUpICYmICFVU0UoTklDT1NJQSkKKworI2luY2x1ZGUgIkFOR0xF
SGVhZGVycy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgY2hhciogQU5HTEVDb250ZXh0OjplcnJv
clN0cmluZyhpbnQgc3RhdHVzQ29kZSkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihpbnQp
ID49IHNpemVvZihFR0xpbnQpLCAiRUdMaW50IG11c3Qgbm90IGJlIHdpZGVyIHRoYW4gaW50Iik7
CisgICAgc3dpdGNoIChzdGF0dXNDb2RlKSB7CisjZGVmaW5lIENBU0VfUkVUVVJOX1NUUklORyhu
YW1lKSBjYXNlIG5hbWU6IHJldHVybiAjbmFtZQorICAgICAgICAvLyBodHRwczovL3d3dy5raHJv
bm9zLm9yZy9yZWdpc3RyeS9FR0wvc2RrL2RvY3MvbWFuL2h0bWwvZWdsR2V0RXJyb3IueGh0bWwK
KyAgICAgICAgQ0FTRV9SRVRVUk5fU1RSSU5HKEVHTF9TVUNDRVNTKTsKKyAgICAgICAgQ0FTRV9S
RVRVUk5fU1RSSU5HKEVHTF9OT1RfSU5JVElBTElaRUQpOworICAgICAgICBDQVNFX1JFVFVSTl9T
VFJJTkcoRUdMX0JBRF9BQ0NFU1MpOworICAgICAgICBDQVNFX1JFVFVSTl9TVFJJTkcoRUdMX0JB
RF9BTExPQyk7CisgICAgICAgIENBU0VfUkVUVVJOX1NUUklORyhFR0xfQkFEX0FUVFJJQlVURSk7
CisgICAgICAgIENBU0VfUkVUVVJOX1NUUklORyhFR0xfQkFEX0NPTlRFWFQpOworICAgICAgICBD
QVNFX1JFVFVSTl9TVFJJTkcoRUdMX0JBRF9DT05GSUcpOworICAgICAgICBDQVNFX1JFVFVSTl9T
VFJJTkcoRUdMX0JBRF9DVVJSRU5UX1NVUkZBQ0UpOworICAgICAgICBDQVNFX1JFVFVSTl9TVFJJ
TkcoRUdMX0JBRF9ESVNQTEFZKTsKKyAgICAgICAgQ0FTRV9SRVRVUk5fU1RSSU5HKEVHTF9CQURf
U1VSRkFDRSk7CisgICAgICAgIENBU0VfUkVUVVJOX1NUUklORyhFR0xfQkFEX01BVENIKTsKKyAg
ICAgICAgQ0FTRV9SRVRVUk5fU1RSSU5HKEVHTF9CQURfUEFSQU1FVEVSKTsKKyAgICAgICAgQ0FT
RV9SRVRVUk5fU1RSSU5HKEVHTF9CQURfTkFUSVZFX1BJWE1BUCk7CisgICAgICAgIENBU0VfUkVU
VVJOX1NUUklORyhFR0xfQkFEX05BVElWRV9XSU5ET1cpOworICAgICAgICBDQVNFX1JFVFVSTl9T
VFJJTkcoRUdMX0NPTlRFWFRfTE9TVCk7CisjdW5kZWYgQ0FTRV9SRVRVUk5fU1RSSU5HCisgICAg
ZGVmYXVsdDogcmV0dXJuICJVbmtub3duIEVHTCBlcnJvciI7CisgICAgfQorfQorCitjb25zdCBj
aGFyKiBBTkdMRUNvbnRleHQ6Omxhc3RFcnJvclN0cmluZygpCit7CisgICAgcmV0dXJuIGVycm9y
U3RyaW5nKEVHTF9HZXRFcnJvcigpKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEFOR0xFQ29udGV4
dD4gQU5HTEVDb250ZXh0OjpjcmVhdGVDb250ZXh0KGJvb2wgaXNGb3JXZWJHTDIpCit7CisgICAg
RUdMRGlzcGxheSBkaXNwbGF5ID0gRUdMX0dldERpc3BsYXkoRUdMX0RFRkFVTFRfRElTUExBWSk7
CisgICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgRUdMaW50IG1ham9yVmVyc2lvbiwgbWlub3JWZXJzaW9uOworICAgIGlmIChF
R0xfSW5pdGlhbGl6ZShkaXNwbGF5LCAmbWFqb3JWZXJzaW9uLCAmbWlub3JWZXJzaW9uKSA9PSBF
R0xfRkFMU0UpIHsKKyAgICAgICAgTE9HKFdlYkdMLCAiRUdMRGlzcGxheSBJbml0aWFsaXphdGlv
biBmYWlsZWQuIik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBMT0coV2Vi
R0wsICJBTkdMRSBpbml0aWFsaXNlZCBNYWpvcjogJWQgTWlub3I6ICVkIiwgbWFqb3JWZXJzaW9u
LCBtaW5vclZlcnNpb24pOworCisgICAgY29uc3QgY2hhciogZGlzcGxheUV4dGVuc2lvbnMgPSBF
R0xfUXVlcnlTdHJpbmcoZGlzcGxheSwgRUdMX0VYVEVOU0lPTlMpOworICAgIExPRyhXZWJHTCwg
IkV4dGVuc2lvbnM6ICVzIiwgZGlzcGxheUV4dGVuc2lvbnMpOworCisgICAgRUdMQ29uZmlnIGNv
bmZpZzsKKyAgICBFR0xpbnQgY29uZmlnQXR0cmlidXRlc1tdID0geworICAgICAgICBFR0xfUkVO
REVSQUJMRV9UWVBFLCBFR0xfT1BFTkdMX0VTMl9CSVQsCisgICAgICAgIEVHTF9SRURfU0laRSwg
OCwKKyAgICAgICAgRUdMX0dSRUVOX1NJWkUsIDgsCisgICAgICAgIEVHTF9CTFVFX1NJWkUsIDgs
CisgICAgICAgIEVHTF9BTFBIQV9TSVpFLCA4LAorICAgICAgICBFR0xfTk9ORQorICAgIH07Cisg
ICAgRUdMaW50IG51bWJlckNvbmZpZ3NSZXR1cm5lZCA9IDA7CisgICAgRUdMX0Nob29zZUNvbmZp
ZyhkaXNwbGF5LCBjb25maWdBdHRyaWJ1dGVzLCAmY29uZmlnLCAxLCAmbnVtYmVyQ29uZmlnc1Jl
dHVybmVkKTsKKyAgICBpZiAobnVtYmVyQ29uZmlnc1JldHVybmVkICE9IDEpIHsKKyAgICAgICAg
TE9HKFdlYkdMLCAiRUdMQ29uZmlnIEluaXRpYWxpemF0aW9uIGZhaWxlZC4iKTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIExPRyhXZWJHTCwgIkdvdCBFR0xDb25maWciKTsK
KworICAgIEVHTF9CaW5kQVBJKEVHTF9PUEVOR0xfRVNfQVBJKTsKKyAgICBpZiAoRUdMX0dldEVy
cm9yKCkgIT0gRUdMX1NVQ0NFU1MpIHsKKyAgICAgICAgTE9HKFdlYkdMLCAiVW5hYmxlIHRvIGJp
bmQgdG8gT1BFTkdMX0VTX0FQSSIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
KyAgICBWZWN0b3I8RUdMaW50PiBjb250ZXh0QXR0cmlidXRlczsKKyAgICBpZiAoaXNGb3JXZWJH
TDIpIHsKKyAgICAgICAgY29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9DT05URVhUX0NMSUVO
VF9WRVJTSU9OKTsKKyAgICAgICAgY29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKDMpOworICAgIH0g
ZWxzZSB7CisgICAgICAgIGNvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xfQ09OVEVYVF9DTElF
TlRfVkVSU0lPTik7CisgICAgICAgIGNvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZCgyKTsKKyAgICAg
ICAgLy8gQU5HTEUgd2lsbCB1cGdyYWRlIHRoZSBjb250ZXh0IHRvIEVTMyBhdXRvbWF0aWNhbGx5
IHVubGVzcyB0aGlzIGlzIHNwZWNpZmllZC4KKyAgICAgICAgY29udGV4dEF0dHJpYnV0ZXMuYXBw
ZW5kKEVHTF9DT05URVhUX09QRU5HTF9CQUNLV0FSRFNfQ09NUEFUSUJMRV9BTkdMRSk7CisgICAg
ICAgIGNvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xfRkFMU0UpOworICAgIH0KKyAgICBjb250
ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX0NPTlRFWFRfV0VCR0xfQ09NUEFUSUJJTElUWV9BTkdM
RSk7CisgICAgY29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9UUlVFKTsKKyAgICBpZiAoc3Ry
c3RyKGRpc3BsYXlFeHRlbnNpb25zLCAiRUdMX0FOR0xFX3Bvd2VyX3ByZWZlcmVuY2UiKSkgewor
ICAgICAgICBjb250ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX1BPV0VSX1BSRUZFUkVOQ0VfQU5H
TEUpOworICAgICAgICAvLyBFR0xfTE9XX1BPV0VSX0FOR0xFIGlzIHRoZSBkZWZhdWx0LiBDaGFu
Z2UgdG8KKyAgICAgICAgLy8gRUdMX0hJR0hfUE9XRVJfQU5HTEUgaWYgZGVzaXJlZC4KKyAgICAg
ICAgY29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9MT1dfUE9XRVJfQU5HTEUpOworICAgIH0K
KyAgICBjb250ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX05PTkUpOworCisgICAgRUdMQ29udGV4
dCBjb250ZXh0ID0gRUdMX0NyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBFR0xfTk9fQ09O
VEVYVCwgY29udGV4dEF0dHJpYnV0ZXMuZGF0YSgpKTsKKyAgICBpZiAoY29udGV4dCA9PSBFR0xf
Tk9fQ09OVEVYVCkgeworICAgICAgICBMT0coV2ViR0wsICJFR0xDb250ZXh0IEluaXRpYWxpemF0
aW9uIGZhaWxlZC4iKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIExPRyhX
ZWJHTCwgIkdvdCBFR0xDb250ZXh0Iik7CisKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFO
R0xFQ29udGV4dD4obmV3IEFOR0xFQ29udGV4dChkaXNwbGF5LCBjb250ZXh0LCBFR0xfTk9fU1VS
RkFDRSkpOworfQorCitBTkdMRUNvbnRleHQ6OkFOR0xFQ29udGV4dChFR0xEaXNwbGF5IGRpc3Bs
YXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJmYWNlKQorICAgIDogbV9kaXNw
bGF5KGRpc3BsYXkpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fc3VyZmFjZShz
dXJmYWNlKQoreworfQorCitBTkdMRUNvbnRleHQ6On5BTkdMRUNvbnRleHQoKQoreworICAgIGlm
IChtX2NvbnRleHQpIHsKKyAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgMCk7CisgICAgICAgIEVHTF9NYWtlQ3VycmVudChtX2Rpc3BsYXksIEVHTF9OT19TVVJGQUNF
LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOworICAgICAgICBFR0xfRGVzdHJveUNv
bnRleHQobV9kaXNwbGF5LCBtX2NvbnRleHQpOworICAgIH0KKworICAgIGlmIChtX3N1cmZhY2Up
CisgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXksIG1fc3VyZmFjZSk7Cit9CisK
K2Jvb2wgQU5HTEVDb250ZXh0OjptYWtlQ29udGV4dEN1cnJlbnQoKQoreworICAgIEFTU0VSVCht
X2NvbnRleHQpOworCisgICAgaWYgKEVHTF9HZXRDdXJyZW50Q29udGV4dCgpICE9IG1fY29udGV4
dCkKKyAgICAgICAgcmV0dXJuIEVHTF9NYWtlQ3VycmVudChtX2Rpc3BsYXksIG1fc3VyZmFjZSwg
bV9zdXJmYWNlLCBtX2NvbnRleHQpOworICAgIHJldHVybiB0cnVlOworfQorCitQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dEdMIEFOR0xFQ29udGV4dDo6cGxhdGZvcm1Db250ZXh0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9jb250ZXh0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0FOR0xFQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0FOR0xFQ29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhYWMzZDIxZmY3ZWNiMDc3N2U5MzliODA3Zjc4
YjdmMTFmMTEyODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQU5HTEVDb250ZXh0LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICogQ29weXJpZ2h0IChD
KSAyMDE4LCAyMDE5IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
CisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
SE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShURVhUVVJFX01BUFBFUikgJiYgVVNFKEFOR0xFKSAm
JiAhVVNFKE5JQ09TSUEpCisKKyNpbmNsdWRlICJHTENvbnRleHQuaCIKKwordHlwZWRlZiB2b2lk
ICpFR0xDb25maWc7Cit0eXBlZGVmIHZvaWQgKkVHTENvbnRleHQ7Cit0eXBlZGVmIHZvaWQgKkVH
TERpc3BsYXk7Cit0eXBlZGVmIHZvaWQgKkVHTFN1cmZhY2U7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgQU5HTEVDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBTkdM
RUNvbnRleHQpOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBlcnJvclN0cmluZyhp
bnQgc3RhdHVzQ29kZSk7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGxhc3RFcnJvclN0cmluZygp
OworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBTkdMRUNvbnRleHQ+IGNyZWF0ZUNvbnRl
eHQoYm9vbCBpc0ZvcldlYkdMMik7CisgICAgfkFOR0xFQ29udGV4dCgpOworCisgICAgYm9vbCBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIHBsYXRm
b3JtQ29udGV4dCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIEFOR0xFQ29udGV4dChFR0xEaXNw
bGF5LCBFR0xDb250ZXh0LCBFR0xTdXJmYWNlKTsKKworICAgIEVHTERpc3BsYXkgbV9kaXNwbGF5
IHsgbnVsbHB0ciB9OworICAgIEVHTENvbnRleHQgbV9jb250ZXh0IHsgbnVsbHB0ciB9OworICAg
IEVHTFN1cmZhY2UgbV9zdXJmYWNlIHsgbnVsbHB0ciB9OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlci5jcHAKaW5kZXggODczMTQwYjBkOTUyNDc0NzhhMjFmMTRjYTk5OGY2NzE2ZWU3YWQ3
YS4uM2VmOTA3MTgzOWQ0ZjUyMjY1MTczZTBjZTNkMTFkNTU0NmRjYzY5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKQEAgLTExMyw2ICsxMTMs
NyBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAgIDogR3JhcGhpY3NDb250ZXh0R0woYXR0
cmlidXRlcywgZGVzdGluYXRpb24sIHNoYXJlZENvbnRleHQpCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChzaGFyZWRDb250ZXh0LCAhc2hhcmVkQ29udGV4dCk7CisgICAgbV9pc0ZvcldlYkdMMiA9IGF0
dHJpYnV0ZXMuaXNXZWJHTDI7CiAjaWYgVVNFKE5JQ09TSUEpCiAgICAgbV9uaWNvc2lhTGF5ZXIg
PSBXVEY6Om1ha2VVbmlxdWU8Tmljb3NpYTo6R0NHTEFOR0xFTGF5ZXI+KCp0aGlzLCBkZXN0aW5h
dGlvbik7CiAjZWxzZQpAQCAtMTI1LDE0ICsxMjYsMTUgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBh
dHQKICAgICBhdHRyaWJ1dGVzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsgLy8gVGhleSBtYXkgaGF2
ZSBjaGFuZ2VkIGR1cmluZyB2YWxpZGF0aW9uLgogCiAgICAgaWYgKGRlc3RpbmF0aW9uID09IERl
c3RpbmF0aW9uOjpPZmZzY3JlZW4pIHsKKyAgICAgICAgR0xlbnVtIHRleHR1cmVUYXJnZXQgPSBk
cmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOwogICAgICAgICAvLyBDcmVhdGUgYSB0ZXh0dXJl
IHRvIHJlbmRlciBpbnRvLgogICAgICAgICBnbDo6R2VuVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7
Ci0gICAgICAgIGdsOjpCaW5kVGV4dHVyZShHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwgbV90
ZXh0dXJlKTsKLSAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV9SRUNUQU5HTEVf
QU5HTEUsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICAgICAgZ2w6OlRl
eFBhcmFtZXRlcmYoR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsIEdMX1RFWFRVUkVfTUlOX0ZJ
TFRFUiwgR0xfTElORUFSKTsKLSAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9S
RUNUQU5HTEVfQU5HTEUsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAg
ICAgICAgZ2w6OlRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsIEdMX1RF
WFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAgICAgZ2w6OkJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCAwKTsKKyAgICAgICAgZ2w6OkJpbmRUZXh0dXJl
KHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZSk7CisgICAgICAgIGdsOjpUZXhQYXJhbWV0ZXJmKHRl
eHR1cmVUYXJnZXQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICAgICAg
Z2w6OlRleFBhcmFtZXRlcmYodGV4dHVyZVRhcmdldCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBH
TF9MSU5FQVIpOworICAgICAgICBnbDo6VGV4UGFyYW1ldGVyaSh0ZXh0dXJlVGFyZ2V0LCBHTF9U
RVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIGdsOjpUZXhQYXJhbWV0
ZXJpKHRleHR1cmVUYXJnZXQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsK
KyAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIDApOwogCiAgICAgICAgIC8v
IENyZWF0ZSBhbiBGQk8uCiAgICAgICAgIGdsOjpHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fZmJvKTsK
QEAgLTE0MCwyMCArMTQyLDIwIEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0CiAKICNpZiBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgICAgIGdsOjpHZW5UZXh0dXJlcygxLCAmbV9jb21w
b3NpdG9yVGV4dHVyZSk7Ci0gICAgICAgIGdsOjpCaW5kVGV4dHVyZShHTF9URVhUVVJFX1JFQ1RB
TkdMRV9BTkdMRSwgbV9jb21wb3NpdG9yVGV4dHVyZSk7Ci0gICAgICAgIGdsOjpUZXhQYXJhbWV0
ZXJmKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdM
X0xJTkVBUik7Ci0gICAgICAgIGdsOjpUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfUkVDVEFOR0xF
X0FOR0xFLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgICAgIGdsOjpU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCBHTF9URVhUVVJFX1dSQVBf
UywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgICAgIGdsOjpUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfUkVDVEFOR0xFX0FOR0xFLCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7
CisgICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh1cmVUeXBlLCBtX2NvbXBvc2l0b3JUZXh0dXJl
KTsKKyAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmYodGV4dXJlVHlwZSwgR0xfVEVYVFVSRV9NQUdf
RklMVEVSLCBHTF9MSU5FQVIpOworICAgICAgICBnbDo6VGV4UGFyYW1ldGVyZih0ZXh1cmVUeXBl
LCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgICAgIGdsOjpUZXhQYXJh
bWV0ZXJpKHRleHVyZVR5cGUsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsK
KyAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmkodGV4dXJlVHlwZSwgR0xfVEVYVFVSRV9XUkFQX1Qs
IEdMX0NMQU1QX1RPX0VER0UpOwogCiAgICAgICAgIGdsOjpHZW5UZXh0dXJlcygxLCAmbV9pbnRl
cm1lZGlhdGVUZXh0dXJlKTsKLSAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfUkVD
VEFOR0xFX0FOR0xFLCBtX2ludGVybWVkaWF0ZVRleHR1cmUpOwotICAgICAgICBnbDo6VGV4UGFy
YW1ldGVyZihHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwgR0xfVEVYVFVSRV9NQUdfRklMVEVS
LCBHTF9MSU5FQVIpOwotICAgICAgICBnbDo6VGV4UGFyYW1ldGVyZihHTF9URVhUVVJFX1JFQ1RB
TkdMRV9BTkdMRSwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOwotICAgICAgICBn
bDo6VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwgR0xfVEVYVFVSRV9X
UkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgICAgICBnbDo6VGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VE
R0UpOworICAgICAgICBnbDo6QmluZFRleHR1cmUodGV4dXJlVHlwZSwgbV9pbnRlcm1lZGlhdGVU
ZXh0dXJlKTsKKyAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmYodGV4dXJlVHlwZSwgR0xfVEVYVFVS
RV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOworICAgICAgICBnbDo6VGV4UGFyYW1ldGVyZih0ZXh1
cmVUeXBlLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgICAgIGdsOjpU
ZXhQYXJhbWV0ZXJpKHRleHVyZVR5cGUsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19F
REdFKTsKKyAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmkodGV4dXJlVHlwZSwgR0xfVEVYVFVSRV9X
UkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwogCi0gICAgICAgIGdsOjpCaW5kVGV4dHVyZShHTF9U
RVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwgMCk7CisgICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh1
cmVUeXBlLCAwKTsKICNlbmRpZgogCiAgICAgICAgIC8vIENyZWF0ZSBhIG11bHRpc2FtcGxlIEZC
Ty4KQEAgLTQxMiw3ICs0MTQsOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjaGVj
a0dQVVN0YXR1cygpCiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmlzR0xFUzJDb21w
bGlhbnQoKSBjb25zdAogewotI2lmIFVTRShPUEVOR0xfRVMpCisjaWYgVVNFKEFOR0xFKQorICAg
IHJldHVybiBtX2lzRm9yV2ViR0wyOworI2VsaWYgVVNFKE9QRU5HTF9FUykKICAgICByZXR1cm4g
dHJ1ZTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDI4LDYgKzQzMiwxNSBAQCBQbGF0
Zm9ybUxheWVyKiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1MYXllcigpIGNvbnN0
CiAjZW5kaWYKIH0KIAorR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdpbmdC
dWZmZXJUZXh0dXJlVGFyZ2V0KCkKK3sKKyNpZiBQTEFURk9STShXSU4pCisgICAgcmV0dXJuIEdM
X1RFWFRVUkVfMkQ7CisjZWxzZQorICAgIHJldHVybiBHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdM
RTsKKyNlbmRpZgorfQorCiAjaWYgUExBVEZPUk0oR1RLKSAmJiAhVVNFKEFOR0xFKQogRXh0ZW5z
aW9uc0dMJiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckdDR0xQbGF0Zm9ybUxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuY3BwCmluZGV4IDNhNjAy
NzMzOWQ3YWU4NjA4MWM1NmQ0ZmY3ZmVhMzI3MjRiZWUyMWUuLjhkYjUwMWI5OWVmYWRiZTU0ODYz
MDkxMDA5MjFiNDM3YjQzNTI5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0NH
TFBsYXRmb3JtTGF5ZXIuY3BwCkBAIC0yMiw2ICsyMiw4IEBACiAKICNpZiBFTkFCTEUoV0VCR0wp
ICYmIFVTRShURVhUVVJFX01BUFBFUikgJiYgIVVTRShOSUNPU0lBKQogCisjaW5jbHVkZSAiQU5H
TEVDb250ZXh0LmgiCisjaW5jbHVkZSAiQU5HTEVIZWFkZXJzLmgiCiAjaW5jbHVkZSAiQml0bWFw
VGV4dHVyZUdMLmgiCiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1h
cHBlckdMSGVhZGVycy5oIgpAQCAtMzUsNyArMzcsNyBAQCBUZXh0dXJlTWFwcGVyR0NHTFBsYXRm
b3JtTGF5ZXI6OlRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcihHcmFwaGljc0NvbnRleHRH
TAogewogICAgIHN3aXRjaCAoZGVzdGluYXRpb24pIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuOgotICAgICAgICBtX2dsQ29udGV4dCA9
IEdMQ29udGV4dDo6Y3JlYXRlT2Zmc2NyZWVuQ29udGV4dCgmUGxhdGZvcm1EaXNwbGF5OjpzaGFy
ZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKSk7CisgICAgICAgIG1fZ2xDb250ZXh0ID0gQU5HTEVD
b250ZXh0OjpjcmVhdGVDb250ZXh0KGNvbnRleHQuY29udGV4dEF0dHJpYnV0ZXMoKS5pc1dlYkdM
Mik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkRl
c3RpbmF0aW9uOjpEaXJlY3RseVRvSG9zdFdpbmRvdzoKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CkBAIC0xMDAsMTUgKzEwMiwxNCBAQCB2b2lkIFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZv
cm1MYXllcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4dHVyZQogICAg
IGF1dG8gYXR0cnMgPSBtX2NvbnRleHQuY29udGV4dEF0dHJpYnV0ZXMoKTsKICAgICBBU1NFUlQo
bV9jb250ZXh0Lm1fc3RhdGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC5tX3N0YXRlLmJvdW5k
RHJhd0ZCTyk7CiAgICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBtX2NvbnRleHQubV9zdGF0ZS5i
b3VuZERyYXdGQk8gPT0gbV9jb250ZXh0Lm1fbXVsdGlzYW1wbGVGQk8pIHsKLSAgICAgICAgR0xD
b250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmN1cnJlbnQoKTsKLSAg
ICAgICAgaWYgKHByZXZpb3VzQWN0aXZlQ29udGV4dCAhPSBtX2dsQ29udGV4dC5nZXQoKSkKLSAg
ICAgICAgICAgIG1fY29udGV4dC5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICAgICAgbV9jb250
ZXh0Lm1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgICAgIG1fY29udGV4dC5yZXNvbHZlTXVs
dGlzYW1wbGluZ0lmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXIoR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQubV9zdGF0ZS5ib3Vu
ZERyYXdGQk8pOworICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBt
X2NvbnRleHQubV9zdGF0ZS5ib3VuZERyYXdGQk8pOwogCi0gICAgICAgIGlmIChwcmV2aW91c0Fj
dGl2ZUNvbnRleHQgJiYgcHJldmlvdXNBY3RpdmVDb250ZXh0ICE9IG1fZ2xDb250ZXh0LmdldCgp
KQotICAgICAgICAgICAgcHJldmlvdXNBY3RpdmVDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICAgICAgR0xDb250ZXh0KiBhY3RpdmVDb250ZXh0ID0gR0xDb250ZXh0OjpjdXJyZW50
KCk7CisgICAgICAgIGlmIChhY3RpdmVDb250ZXh0KQorICAgICAgICAgICAgYWN0aXZlQ29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgfQogCiAgICAgVGV4dHVyZU1hcHBlckdMJiB0
ZXhtYXBHTCA9IHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCY+KHRleHR1cmVNYXBwZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllci5oCmluZGV4IGU5NmNm
MmUyMWRkNTI4OWY2Y2Q5NjNiYzViZTgwNzM0ZTMwMTM2ZTkuLjZkYzBmZjJjYWQ4YTA2NTFjYmNk
YmFkZTRlM2NlNzhmYjJmNTExNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDR0xQ
bGF0Zm9ybUxheWVyLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBHTENvbnRleHQ7CitjbGFzcyBBTkdMRUNvbnRleHQ7CiBjbGFzcyBUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5OwogCiBjbGFzcyBUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3Jt
TGF5ZXIgOiBwdWJsaWMgUGxhdGZvcm1MYXllciB7CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYgbV9jb250ZXh0OwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IG1fZ2xDb250ZXh0OworICAgIHN0ZDo6dW5pcXVl
X3B0cjxBTkdMRUNvbnRleHQ+IG1fZ2xDb250ZXh0OwogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQogICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBtX3Bs
YXRmb3JtTGF5ZXJQcm94eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fp
cm8uY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlCmluZGV4IDA2YTk3
MDU5YmJjZTVhN2JhNjgyZmE0YzVkOGJlYjY5NGJjMzQ2YTkuLjViYjA0MmU1MzZhZThiMWFhOGZi
Njk3ZTQ3YjNiMjIzMGRhOTQwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2lu
Q2Fpcm8uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZQpAQCAt
NDUsNyArNDUsOSBAQCBlbmRpZiAoKQogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA2NjM1CiAKIHNldChVU0VfQU5HTEVfRUdMIE9OKQorc2V0KFVTRV9BTkdMRV9X
RUJHTCBPTikKIAorU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0FOR0xFIE9OKQogU0VUX0FO
RF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NBSVJPIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQo
VVNFX0NGIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NVUkwgT04pCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
OGIwMjQyOGQzZjVjNzQ3ZTc2NWY5ZTdmN2E0YWVjMDVjMjNmNDRkMi4uOTgwZDgwYmZjN2E3ZGZk
OGM2ZWM3MGYxODVlYWIzODE0ZTM1N2VlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTEy
LTA4ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAg
IFtXaW5DYWlyb10gRW5hYmxlIFVTRV9BTkdMRQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NDIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25z
OgorCiAyMDIwLTEyLTA4ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAg
U3VwcG9ydCBhc3BlY3QtcmF0aW8gb24gbm9uLXJlcGxhY2VkIGVsZW1lbnRzCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhNmYxZGIzZjc1
NGU0ZjIxYWIzMDYwZDQ2OTM4MmY5Yzk0ZDM1YzU1Li42ZWQ2ZDhiNDZkYTE4OTQ1ZGZhYzkzYmIx
NWZhYzRjYTQ3Nzc0OTY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWly
by9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTIxMTQsMzAgKzIxMTQsMjkgQEAgcGVyZm9ybWFuY2UtYXBpL3Bh
aW50LXRpbWluZy9wYWludC10aW1pbmctd2l0aC13b3JrZXIuaHRtbCBbIEZhaWx1cmUgXQogcGVy
Zm9ybWFuY2UtYXBpL3BhaW50LXRpbWluZy9wZXJmb3JtYW5jZS1vYnNlcnZlci1maXJzdC1jb250
ZW50ZnVsLXBhaW50Lmh0bWwgWyBUaW1lb3V0IF0KIHN0b3JhZ2UvaW5kZXhlZGRiL3N0b3JhZ2Ut
bGltaXQtd2l0aC1pbmRpY2VzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1h
bmNlL2NhbnZhcy9kcmF3aW5nYnVmZmVyLXRlc3QuaHRtbCBbIFNraXAgXSAjIFRpbWVvdXQKLXdl
YmdsLzEuMC4zL2NvbmZvcm1hbmNlL2NvbnRleHQvY29udGV4dC1sb3N0LXJlc3RvcmVkLmh0bWwg
WyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2NvbnRleHQvcHJlbXVsdGlwbHlh
bHBoYS10ZXN0Lmh0bWwgWyBGYWlsdXJlIF0KK3dlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVu
c2lvbnMvb2VzLWVsZW1lbnQtaW5kZXgtdWludC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAu
My9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LXdpdGgtdmlkZW8uaHRt
bCBbIFNraXAgXSAjIFRpbWVvdXQKLXdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMv
b2VzLXRleHR1cmUtZmxvYXQuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFu
Y2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1oYWxmLWZsb2F0LXdpdGgtdmlkZW8uaHRtbCBbIFNr
aXAgXSAjIFRpbWVvdXQKLXdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRl
eHR1cmUtaGFsZi1mbG9hdC5odG1sIFsgRmFpbHVyZSBdCi13ZWJnbC8xLjAuMy9jb25mb3JtYW5j
ZS9leHRlbnNpb25zL3dlYmdsLWNvbXByZXNzZWQtdGV4dHVyZS1zaXplLWxpbWl0Lmh0bWwgWyBG
YWlsdXJlIF0KK3dlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9hcnJheS1vZi1zdHJ1
Y3Qtd2l0aC1pbnQtZmlyc3QtcG9zaXRpb24uaHRtbCBbIFNraXAgXSAjIFRoaXMgdGVzdCBtYWtl
cyBEdW1wUmVuZGVyVHJlZSBwcm9jZXNzIHVuYWJsZSB0byBleGl0CiB3ZWJnbC8xLjAuMy9jb25m
b3JtYW5jZS9nbHNsL2J1Z3MvbG9uZy1leHByZXNzaW9ucy1zaG91bGQtbm90LWNyYXNoLmh0bWwg
WyBTa2lwIF0gIyBUaW1lb3V0Cit3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9taXNjL3VuaW5pdGlh
bGl6ZWQtdGVzdC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9tb3Jl
L2Z1bmN0aW9ucy9jb3B5VGV4SW1hZ2UyREJhZEFyZ3MuaHRtbCBbIFNraXAgXSAjIFRpbWVvdXQK
IHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25zL3JlYWRQaXhlbHNCYWRBcmdz
Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25z
L3RleEltYWdlMkRIVE1MLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNl
L21vcmUvZnVuY3Rpb25zL3RleFN1YkltYWdlMkRIVE1MLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmds
LzEuMC4zL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25zL3RleFN1YkltYWdlMkRIVE1MQmFkQXJn
cy5odG1sIFsgU2tpcCBdICMgQ3Jhc2gKLXdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3JlbmRlcmJ1
ZmZlcnMvZmVlZGJhY2stbG9vcC5odG1sIFsgRmFpbHVyZSBdCit3ZWJnbC8xLjAuMy9jb25mb3Jt
YW5jZS9wcm9ncmFtcy9wcm9ncmFtLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMv
Y29uZm9ybWFuY2UvcmVuZGVyYnVmZmVycy9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC5o
dG1sIFsgRmFpbHVyZSBdCi13ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvcG9pbnQt
bm8tYXR0cmlidXRlcy5odG1sIFsgRmFpbHVyZSBdCit3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9y
ZW5kZXJidWZmZXJzL2ZyYW1lYnVmZmVyLXN0YXRlLXJlc3RvcmF0aW9uLmh0bWwgWyBGYWlsdXJl
IF0KK3dlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3JlbmRlcmJ1ZmZlcnMvcmVuZGVyYnVmZmVyLWlu
aXRpYWxpemF0aW9uLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3Rl
eHR1cmVzL2RlZmF1bHQtdGV4dHVyZS5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25m
b3JtYW5jZS90ZXh0dXJlcy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXZpZGVvLXJn
YjU2NS5odG1sIFsgU2tpcCBdICMgVGltZW91dAogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4
dHVyZXMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC12aWRlby1yZ2JhNDQ0NC5odG1s
IFsgU2tpcCBdICMgVGltZW91dAogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC12aWRlby1yZ2JhNTU1MS5odG1sIFsgU2tpcCBd
ICMgVGltZW91dAogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtMmQtd2l0aC12aWRlby5odG1sIFsgU2tpcCBdICMgVGltZW91dAogd2ViZ2wv
MS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4LXN1Yi1pbWFnZS0yZC1iYWQtYXJncy5odG1s
IFsgU2tpcCBdICMgQ3Jhc2gKLXdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHR1
cmUtY29weWluZy1mZWVkYmFjay1sb29wcy5odG1sIFsgRmFpbHVyZSBdCit3ZWJnbC8xLjAuMy9j
b25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLWF0dGFjaG1lbnQtZm9ybWF0cy5odG1sIFsgRmFp
bHVyZSBdCit3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLW1pcHMuaHRt
bCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4dHVyZS11
cGxvYWQtc2l6ZS5odG1sIFsgU2tpcCBdICMgVGltZW91dAotd2ViZ2wvY29uZm9ybWFuY2UvZXh0
ZW5zaW9ucy9leHQtdGV4dHVyZS1jb21wcmVzc2lvbi1yZ3RjLmh0bWwgWyBGYWlsdXJlIF0KLXdl
YmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy5odG1sIFsgRmFpbHVyZSBd
CiB3ZWJnbC93ZWJnbC12ZXJ0ZXgtYXJyYXktb2JqZWN0LWRlZmluZWQuaHRtbCBbIEZhaWx1cmUg
XQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDM4OTUxMGQ1YjE4OTAx
Mjg4ZTIzMWM5YzAzYWQ0MGMxMjliNTcwYTQuLmFkZDZiY2IxNTYyNWJkMTdhMGFiNDdhMGYxYjI3
YmFlMmZkODM3YTEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAyMC0xMi0wOCAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBz
b255LmNvbT4KKworICAgICAgICBbV2luQ2Fpcm9dIEVuYWJsZSBVU0VfQU5HTEUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQyMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09w
dGlvbnNXaW5DYWlyby5jbWFrZToKKwogMjAyMC0xMi0wNyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9s
bXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFrZV0gUmVtb3ZlIFdFQktJVF9XUkFQX1NP
VVJDRUxJU1QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415698</attachid>
            <date>2020-12-08 18:25:07 -0800</date>
            <delta_ts>2020-12-09 22:11:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219421-20201209112503.patch</filename>
            <type>text/plain</type>
            <size>32832</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggNTM0MzA3Y2YxZTdhOGVjZGRjNDFkZTBjN2E2MjdlMThmMjRjZmI1YS4uODQyZmJmMzE5YTBi
ZTUyM2MyMzMwZTU1YzA2MDI4Mzg0ZjNlNjYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTEyLTA4ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3Jp
LkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIFtXaW5DYWlyb10gRW5hYmxlIFVTRV9BTkdMRQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NDIxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKwogMjAyMC0xMi0wNCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgTW9yZSBGQUxMQkFDS19QTEFURk9STSBhZG9wdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGEw
NDljZjQ2ZTk0MDBmMWQyNmJhZDU2NTQ2MzMzZjQxNzVkMGM1ZWQuLmVlNzk0NzU5NDI2MTBmNGUy
ZWU4NzY1MzA3Mjk4ZTM5MmYzZWFjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAy
MC0xMi0wOCAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KKworICAg
ICAgICBbV2luQ2Fpcm9dIEVuYWJsZSBVU0VfQU5HTEUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQyMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBp
bXBsZW1lbnRhdGlvbiBmcm9tIG9sZCBvbmUKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmNwcCkgdG8gbmV3IG9uZQorICAgICAgICAoR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAp
LCB3aGljaCBpcyB1c2luZyBBTkdMRSdzIGludGVybmFsIEFQSQorICAgICAgICBhbmQgdmVyaWZp
Y2F0aW9uIGNvZGUsIGZvciBXaW5DYWlybyBwb3J0LiBJIHdpbGwgZW5hYmxlIFdlYkdMMiBmb3IK
KyAgICAgICAgV2luQ2Fpcm8gaW4gYSBmb2xsb3ctdXAgcGF0Y2guCisKKyAgICAgICAgR0xfVEVY
VFVSRV9SRUNUQU5HTEVfQU5HTEUgaXMgbm90IGF2YWlsYWJsZSBmb3IgQU5HTEUgRDNEIGJhY2tl
bmQuCisgICAgICAgIFVzZSBHTF9URVhUVVJFXzJEIGluc3RlYWQuCisKKyAgICAgICAgQWRkIGEg
bmV3IGNsYXNzIFdlYkNvcmU6OkFOR0xFQ29udGV4dCBieSBjb3B5aW5nCisgICAgICAgIE5pY29z
aWE6OkdDR0xBTkdMRUxheWVyOjpBTkdMRUNvbnRleHQuIEl0J2QgYmUgYmV0dGVyIHRvIG1lcmdl
CisgICAgICAgIHRoZW0gYWZ0ZXIgR1RLIGFuZCBXUEUgd2lsbCBhbHNvIHN3aXRjaC4KKworICAg
ICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHBsYXRmb3JtL1RleHR1cmVNYXBw
ZXIuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cmVzaGFwZUZCT3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9BTkdMRUNvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFQ29u
dGV4dDo6ZXJyb3JTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVDb250ZXh0OjpsYXN0
RXJyb3JTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVDb250ZXh0OjpjcmVhdGVDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFQ29udGV4dDo6QU5HTEVDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFOR0xFQ29udGV4dDo6fkFOR0xFQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpBTkdMRUNvbnRleHQ6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpBTkdMRUNvbnRleHQ6OnBsYXRmb3JtQ29udGV4dCBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0FOR0xFQ29udGV4dC5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6ZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyOjpUZXh0
dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckdDR0xQbGF0Zm9ybUxheWVyOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllci5o
OgorCiAyMDIwLTEyLTA4ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29t
PgogCiAgICAgICAgIEFkZCBBTkdMRUhlYWRlcnMuaCB0byBpbmNsdWRlIGFsbCBBTkdMRSBoZWFk
ZXJzIGZvciBXZWJHTApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DTWFrZUxpc3RzLnR4dAppbmRleCBi
NmYyY2M4MzBmMzk5MjhmYzU2MmYzY2VlOTljODY1MDU1M2Q5NGRjLi42YThmYTJiMmFjMDBmNWJh
YWNiMjFhNjBmODQ5OGQ5YTMxODRlNWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DTWFrZUxp
c3RzLnR4dApAQCAtMTcwLDYgKzE3MCw3IEBAIGVuZGlmICgpCiBpZiAoVVNFX0FOR0xFX1dFQkdM
KQogICAgIHNldChsaWJnbGVzdjJfZW50cnlfcG9pbnRzX2hlYWRlcnMKICAgICAgICAgc3JjL2xp
YkdMRVN2Mi9lbnRyeV9wb2ludHNfZWdsLmgKKyAgICAgICAgc3JjL2xpYkdMRVN2Mi9lbnRyeV9w
b2ludHNfZWdsX2V4dC5oCiAgICAgICAgIHNyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNf
Ml8wX2F1dG9nZW4uaAogICAgICAgICBzcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNf
MF9hdXRvZ2VuLmgKICAgICAgICAgc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc19leHRf
YXV0b2dlbi5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDU5ZTA0MzQ4NWI4MWQ5ZTA0
MzYwN2JkNmJhMGEyYzM2ZDNiNDcwZTAuLmY1YmE2ZmJiMTI3ZjU1MWE1NWQ2Zjc1NDEzYWQ2ZTY4
MTk0OGI4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCkBAIC02LDYgKzYsNyBAQCBsaXN0
KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNP
UkVfRElSfS9hY2Nlc3NpYmlsaXR5L3dpbiIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGFnZS93aW4i
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2VnbCIKKyAgICAiJHtXRUJD
T1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3dp
biIKQEAgLTM3LDEzICszOCwxMiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAg
IHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKIAorICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcAorCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKIAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKLSAgICBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKLSAgICBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xQcml2YXRlLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZW1wb3JhcnlPcGVuR0xTZXR0aW5nLmNwcAogCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQppbmRleCA0ZDUzZDk5OWViNTlm
NmRjZjk0ZTViZDk1NTFkZDZhZmRkYjVlOGUxLi5kMmJjZDlhZjA4MmQyYjdlNjZhOTI2YjIxOGYy
NDA4NTBiNmE5OTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJl
TWFwcGVyLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIu
Y21ha2UKQEAgLTUsNiArNSw4IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9JTkNMVURF
X0RJUkVDVE9SSUVTCiAKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUFuaW1hdGlvbi5jcHAKKworICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9BTkdMRUNvbnRleHQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0JpdG1hcFRleHR1cmUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1h
cFRleHR1cmVQb29sLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCkBAIC0xOCw2ICsyMCw4IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfU09VUkNFUwogCiBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hF
QURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFBbmltYXRpb24uaAor
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0FOR0xFQ29udGV4dC5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9DbGlwU3RhY2suaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmlu
ZGV4IDMwOWE1MzA5YjY0MGEzZDZhMjgxNDFjYTdiMWE3NWRiNDZlOWY5NTEuLjZkOWRiM2RkMDUz
ZDM3NTI3YjI1OWE5M2MzNzFjNGRiMzM5MzVhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdM
QU5HTEUuY3BwCkBAIC0yMjMsMjAgKzIyMywyMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICBnbDo6QmluZEZy
YW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX2Zibyk7CiAgICAgfSBlbHNlCiAgICAgICAgIGds
OjpGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVO
VDAsIGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCksIG1fdGV4dHVyZSwgMCk7Ci0jZWxpZiBQ
TEFURk9STShHVEspCi0gICAgZ2w6OkJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FO
R0xFLCBtX3RleHR1cmUpOwotICAgIGdsOjpUZXhJbWFnZTJEKEdMX1RFWFRVUkVfUkVDVEFOR0xF
X0FOR0xFLCAwLCBtX2ludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9y
Rm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKLSAgICBnbDo6RnJhbWVidWZmZXJUZXh0dXJl
MkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFX1JFQ1RB
TkdMRV9BTkdMRSwgbV90ZXh0dXJlLCAwKTsKKyNlbHNlCisgICAgR0xlbnVtIHRleHR1cmVUYXJn
ZXQgPSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOworICAgIEdMdWludCBpbnRlcm5hbENv
bG9yRm9ybWF0ID0gdGV4dHVyZVRhcmdldCA9PSBHTF9URVhUVVJFXzJEID8gY29sb3JGb3JtYXQg
OiBtX2ludGVybmFsQ29sb3JGb3JtYXQ7CisgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJn
ZXQsIG1fdGV4dHVyZSk7CisgICAgZ2w6OlRleEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwgaW50
ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lH
TkVEX0JZVEUsIDApOworICAgIGdsOjpGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZF
UiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZSwgMCk7Cisj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChtX2NvbXBvc2l0b3JUZXh0dXJl
KSB7Ci0gICAgICAgIGdsOjpCaW5kVGV4dHVyZShHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwg
bV9jb21wb3NpdG9yVGV4dHVyZSk7Ci0gICAgICAgIGdsOjpUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
UkVDVEFOR0xFX0FOR0xFLCAwLCBtX2ludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKLSAgICAgICAgZ2w6OkJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCAwKTsKLSAgICAgICAgZ2w6OkJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCBtX2ludGVybWVkaWF0ZVRleHR1cmUp
OwotICAgICAgICBnbDo6VGV4SW1hZ2UyRChHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwgMCwg
bV9pbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xf
VU5TSUdORURfQllURSwgMCk7Ci0gICAgICAgIGdsOjpCaW5kVGV4dHVyZShHTF9URVhUVVJFX1JF
Q1RBTkdMRV9BTkdMRSwgMCk7CisgICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0
LCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKKyAgICAgICAgZ2w6OlRleEltYWdlMkQodGV4dHVyZVRh
cmdldCwgMCwgbV9pbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZv
cm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7CisgICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0
dXJlVGFyZ2V0LCAwKTsKKyAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1f
aW50ZXJtZWRpYXRlVGV4dHVyZSk7CisgICAgICAgIGdsOjpUZXhJbWFnZTJEKHRleHR1cmVUYXJn
ZXQsIDAsIG1faW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3Jt
YXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOworICAgICAgICBnbDo6QmluZFRleHR1cmUodGV4dHVy
ZVRhcmdldCwgMCk7CiAgICAgfQotI2Vsc2UKLSNlcnJvciBGSVhNRTogUG9ydCB0byBub24tQ29j
b2EgcGxhdGZvcm1zLgorI2VuZGlmCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKICAgICBh
dHRhY2hEZXB0aEFuZFN0ZW5jaWxCdWZmZXJJZk5lZWRlZChpbnRlcm5hbERlcHRoU3RlbmNpbEZv
cm1hdCwgd2lkdGgsIGhlaWdodCk7CkBAIC0xMDcwLDEyICsxMDcyLDE2IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIp
CiAgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCisjaWYg
IVBMQVRGT1JNKFdJTikKICAgICAvLyBXZSBuZWVkIHRoZSBBTkdMRV90ZXh0dXJlX3JlY3Rhbmds
ZSBleHRlbnNpb24gdG8gc3VwcG9ydCBJT1N1cmZhY2UKICAgICAvLyBiYWNrYnVmZmVycywgYnV0
IHdlIGRvbid0IHdhbnQgaXQgZXhwb3NlZCB0byBXZWJHTCB1c2VyIHNoYWRlcnMuCiAgICAgLy8g
VGVtcG9yYXJpbHkgZGlzYWJsZSBpdCBkdXJpbmcgc2hhZGVyIGNvbXBpbGF0aW9uLgogICAgIGds
OjpEaXNhYmxlKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFKTsKKyNlbmRpZgogICAgIGdsOjpD
b21waWxlU2hhZGVyKHNoYWRlcik7CisjaWYgIVBMQVRGT1JNKFdJTikKICAgICBnbDo6RW5hYmxl
KEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFKTsKKyNlbmRpZgogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpjb21waWxlU2hhZGVyRGlyZWN0KFBsYXRmb3JtR0xPYmplY3Qgc2hh
ZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCAyNzA2ZTdiMzBhYjli
MzdhMjEyNzhjNTE3ZWRiZGYxNTJiYzBmYTcwLi5iZDgyODdjMGNkZjY0MzMxYzE5NDQ3ZTg0NmI3
NDEyNWFiODBjYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtOTcs
MTIgKzk3LDE0IEBAIHB1YmxpYzoKICAgICBDQUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDQUxheWVyKj4obV93ZWJHTExheWVyLmdl
dCgpKTsgfQogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5IHBsYXRmb3JtRGlz
cGxheSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheU9iajsgfQogICAgIFBsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0R0xDb25maWcgcGxhdGZvcm1Db25maWcoKSBjb25zdCB7IHJldHVybiBtX2NvbmZp
Z09iajsgfQotICAgIHN0YXRpYyBHQ0dMZW51bSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgp
OwogICAgIHN0YXRpYyBHQ0dMZW51bSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5KCk7
CiAgICAgc3RhdGljIEdDR0xpbnQgRUdMRHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKTsKICNl
bHNlCiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZpbmFsOwogI2Vu
ZGlmCisjaWYgVVNFKEFOR0xFKQorICAgIHN0YXRpYyBHQ0dMZW51bSBkcmF3aW5nQnVmZmVyVGV4
dHVyZVRhcmdldCgpOworI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVu
dW0gY2xhc3MgUmVsZWFzZUJlaGF2aW9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9BTkdMRUNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0FOR0xFQ29udGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTBj
ODkyNDkzNDk0MmY2ZGI2MzlhYmU1YWU3ZWE2YmIyZjg4OTE0MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9BTkdMRUNvbnRleHQuY3Bw
CkBAIC0wLDAgKzEsMTc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IE1ldHJvbG9naWNh
bCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgsIDIwMTkgSWdhbGlhIFMuTC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDE4IEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAy
MCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFOR0xFQ29udGV4
dC5oIgorCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiBVU0UoQU5HTEUpICYmICFVU0UoTklD
T1NJQSkKKworI2luY2x1ZGUgIkFOR0xFSGVhZGVycy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3Qg
Y2hhciogQU5HTEVDb250ZXh0OjplcnJvclN0cmluZyhpbnQgc3RhdHVzQ29kZSkKK3sKKyAgICBz
dGF0aWNfYXNzZXJ0KHNpemVvZihpbnQpID49IHNpemVvZihFR0xpbnQpLCAiRUdMaW50IG11c3Qg
bm90IGJlIHdpZGVyIHRoYW4gaW50Iik7CisgICAgc3dpdGNoIChzdGF0dXNDb2RlKSB7CisjZGVm
aW5lIENBU0VfUkVUVVJOX1NUUklORyhuYW1lKSBjYXNlIG5hbWU6IHJldHVybiAjbmFtZQorICAg
ICAgICAvLyBodHRwczovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS9FR0wvc2RrL2RvY3MvbWFu
L2h0bWwvZWdsR2V0RXJyb3IueGh0bWwKKyAgICAgICAgQ0FTRV9SRVRVUk5fU1RSSU5HKEVHTF9T
VUNDRVNTKTsKKyAgICAgICAgQ0FTRV9SRVRVUk5fU1RSSU5HKEVHTF9OT1RfSU5JVElBTElaRUQp
OworICAgICAgICBDQVNFX1JFVFVSTl9TVFJJTkcoRUdMX0JBRF9BQ0NFU1MpOworICAgICAgICBD
QVNFX1JFVFVSTl9TVFJJTkcoRUdMX0JBRF9BTExPQyk7CisgICAgICAgIENBU0VfUkVUVVJOX1NU
UklORyhFR0xfQkFEX0FUVFJJQlVURSk7CisgICAgICAgIENBU0VfUkVUVVJOX1NUUklORyhFR0xf
QkFEX0NPTlRFWFQpOworICAgICAgICBDQVNFX1JFVFVSTl9TVFJJTkcoRUdMX0JBRF9DT05GSUcp
OworICAgICAgICBDQVNFX1JFVFVSTl9TVFJJTkcoRUdMX0JBRF9DVVJSRU5UX1NVUkZBQ0UpOwor
ICAgICAgICBDQVNFX1JFVFVSTl9TVFJJTkcoRUdMX0JBRF9ESVNQTEFZKTsKKyAgICAgICAgQ0FT
RV9SRVRVUk5fU1RSSU5HKEVHTF9CQURfU1VSRkFDRSk7CisgICAgICAgIENBU0VfUkVUVVJOX1NU
UklORyhFR0xfQkFEX01BVENIKTsKKyAgICAgICAgQ0FTRV9SRVRVUk5fU1RSSU5HKEVHTF9CQURf
UEFSQU1FVEVSKTsKKyAgICAgICAgQ0FTRV9SRVRVUk5fU1RSSU5HKEVHTF9CQURfTkFUSVZFX1BJ
WE1BUCk7CisgICAgICAgIENBU0VfUkVUVVJOX1NUUklORyhFR0xfQkFEX05BVElWRV9XSU5ET1cp
OworICAgICAgICBDQVNFX1JFVFVSTl9TVFJJTkcoRUdMX0NPTlRFWFRfTE9TVCk7CisjdW5kZWYg
Q0FTRV9SRVRVUk5fU1RSSU5HCisgICAgZGVmYXVsdDogcmV0dXJuICJVbmtub3duIEVHTCBlcnJv
ciI7CisgICAgfQorfQorCitjb25zdCBjaGFyKiBBTkdMRUNvbnRleHQ6Omxhc3RFcnJvclN0cmlu
ZygpCit7CisgICAgcmV0dXJuIGVycm9yU3RyaW5nKEVHTF9HZXRFcnJvcigpKTsKK30KKworc3Rk
Ojp1bmlxdWVfcHRyPEFOR0xFQ29udGV4dD4gQU5HTEVDb250ZXh0OjpjcmVhdGVDb250ZXh0KGJv
b2wgaXNGb3JXZWJHTDIpCit7CisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gRUdMX0dldERpc3Bs
YXkoRUdMX0RFRkFVTFRfRElTUExBWSk7CisgICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BM
QVkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgRUdMaW50IG1ham9yVmVyc2lvbiwg
bWlub3JWZXJzaW9uOworICAgIGlmIChFR0xfSW5pdGlhbGl6ZShkaXNwbGF5LCAmbWFqb3JWZXJz
aW9uLCAmbWlub3JWZXJzaW9uKSA9PSBFR0xfRkFMU0UpIHsKKyAgICAgICAgTE9HKFdlYkdMLCAi
RUdMRGlzcGxheSBJbml0aWFsaXphdGlvbiBmYWlsZWQuIik7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKyAgICBMT0coV2ViR0wsICJBTkdMRSBpbml0aWFsaXNlZCBNYWpvcjogJWQg
TWlub3I6ICVkIiwgbWFqb3JWZXJzaW9uLCBtaW5vclZlcnNpb24pOworCisgICAgY29uc3QgY2hh
ciogZGlzcGxheUV4dGVuc2lvbnMgPSBFR0xfUXVlcnlTdHJpbmcoZGlzcGxheSwgRUdMX0VYVEVO
U0lPTlMpOworICAgIExPRyhXZWJHTCwgIkV4dGVuc2lvbnM6ICVzIiwgZGlzcGxheUV4dGVuc2lv
bnMpOworCisgICAgRUdMQ29uZmlnIGNvbmZpZzsKKyAgICBFR0xpbnQgY29uZmlnQXR0cmlidXRl
c1tdID0geworICAgICAgICBFR0xfUkVOREVSQUJMRV9UWVBFLCBFR0xfT1BFTkdMX0VTMl9CSVQs
CisgICAgICAgIEVHTF9SRURfU0laRSwgOCwKKyAgICAgICAgRUdMX0dSRUVOX1NJWkUsIDgsCisg
ICAgICAgIEVHTF9CTFVFX1NJWkUsIDgsCisgICAgICAgIEVHTF9BTFBIQV9TSVpFLCA4LAorICAg
ICAgICBFR0xfTk9ORQorICAgIH07CisgICAgRUdMaW50IG51bWJlckNvbmZpZ3NSZXR1cm5lZCA9
IDA7CisgICAgRUdMX0Nob29zZUNvbmZpZyhkaXNwbGF5LCBjb25maWdBdHRyaWJ1dGVzLCAmY29u
ZmlnLCAxLCAmbnVtYmVyQ29uZmlnc1JldHVybmVkKTsKKyAgICBpZiAobnVtYmVyQ29uZmlnc1Jl
dHVybmVkICE9IDEpIHsKKyAgICAgICAgTE9HKFdlYkdMLCAiRUdMQ29uZmlnIEluaXRpYWxpemF0
aW9uIGZhaWxlZC4iKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIExPRyhX
ZWJHTCwgIkdvdCBFR0xDb25maWciKTsKKworICAgIEVHTF9CaW5kQVBJKEVHTF9PUEVOR0xfRVNf
QVBJKTsKKyAgICBpZiAoRUdMX0dldEVycm9yKCkgIT0gRUdMX1NVQ0NFU1MpIHsKKyAgICAgICAg
TE9HKFdlYkdMLCAiVW5hYmxlIHRvIGJpbmQgdG8gT1BFTkdMX0VTX0FQSSIpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBWZWN0b3I8RUdMaW50PiBjb250ZXh0QXR0cmli
dXRlczsKKyAgICBpZiAoaXNGb3JXZWJHTDIpIHsKKyAgICAgICAgY29udGV4dEF0dHJpYnV0ZXMu
YXBwZW5kKEVHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9OKTsKKyAgICAgICAgY29udGV4dEF0dHJp
YnV0ZXMuYXBwZW5kKDMpOworICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnRleHRBdHRyaWJ1dGVz
LmFwcGVuZChFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTik7CisgICAgICAgIGNvbnRleHRBdHRy
aWJ1dGVzLmFwcGVuZCgyKTsKKyAgICAgICAgLy8gQU5HTEUgd2lsbCB1cGdyYWRlIHRoZSBjb250
ZXh0IHRvIEVTMyBhdXRvbWF0aWNhbGx5IHVubGVzcyB0aGlzIGlzIHNwZWNpZmllZC4KKyAgICAg
ICAgY29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9DT05URVhUX09QRU5HTF9CQUNLV0FSRFNf
Q09NUEFUSUJMRV9BTkdMRSk7CisgICAgICAgIGNvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xf
RkFMU0UpOworICAgIH0KKyAgICBjb250ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX0NPTlRFWFRf
V0VCR0xfQ09NUEFUSUJJTElUWV9BTkdMRSk7CisgICAgY29udGV4dEF0dHJpYnV0ZXMuYXBwZW5k
KEVHTF9UUlVFKTsKKyAgICBpZiAoc3Ryc3RyKGRpc3BsYXlFeHRlbnNpb25zLCAiRUdMX0FOR0xF
X3Bvd2VyX3ByZWZlcmVuY2UiKSkgeworICAgICAgICBjb250ZXh0QXR0cmlidXRlcy5hcHBlbmQo
RUdMX1BPV0VSX1BSRUZFUkVOQ0VfQU5HTEUpOworICAgICAgICAvLyBFR0xfTE9XX1BPV0VSX0FO
R0xFIGlzIHRoZSBkZWZhdWx0LiBDaGFuZ2UgdG8KKyAgICAgICAgLy8gRUdMX0hJR0hfUE9XRVJf
QU5HTEUgaWYgZGVzaXJlZC4KKyAgICAgICAgY29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9M
T1dfUE9XRVJfQU5HTEUpOworICAgIH0KKyAgICBjb250ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdM
X05PTkUpOworCisgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gRUdMX0NyZWF0ZUNvbnRleHQoZGlz
cGxheSwgY29uZmlnLCBFR0xfTk9fQ09OVEVYVCwgY29udGV4dEF0dHJpYnV0ZXMuZGF0YSgpKTsK
KyAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCkgeworICAgICAgICBMT0coV2ViR0ws
ICJFR0xDb250ZXh0IEluaXRpYWxpemF0aW9uIGZhaWxlZC4iKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorICAgIExPRyhXZWJHTCwgIkdvdCBFR0xDb250ZXh0Iik7CisKKyAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPEFOR0xFQ29udGV4dD4obmV3IEFOR0xFQ29udGV4dChkaXNw
bGF5LCBjb250ZXh0LCBFR0xfTk9fU1VSRkFDRSkpOworfQorCitBTkdMRUNvbnRleHQ6OkFOR0xF
Q29udGV4dChFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFj
ZSBzdXJmYWNlKQorICAgIDogbV9kaXNwbGF5KGRpc3BsYXkpCisgICAgLCBtX2NvbnRleHQoY29u
dGV4dCkKKyAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQoreworfQorCitBTkdMRUNvbnRleHQ6On5B
TkdMRUNvbnRleHQoKQoreworICAgIGlmIChtX2NvbnRleHQpIHsKKyAgICAgICAgZ2w6OkJpbmRG
cmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7CisgICAgICAgIEVHTF9NYWtlQ3VycmVudCht
X2Rpc3BsYXksIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQp
OworICAgICAgICBFR0xfRGVzdHJveUNvbnRleHQobV9kaXNwbGF5LCBtX2NvbnRleHQpOworICAg
IH0KKworICAgIGlmIChtX3N1cmZhY2UpCisgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rp
c3BsYXksIG1fc3VyZmFjZSk7Cit9CisKK2Jvb2wgQU5HTEVDb250ZXh0OjptYWtlQ29udGV4dEN1
cnJlbnQoKQoreworICAgIEFTU0VSVChtX2NvbnRleHQpOworCisgICAgaWYgKEVHTF9HZXRDdXJy
ZW50Q29udGV4dCgpICE9IG1fY29udGV4dCkKKyAgICAgICAgcmV0dXJuIEVHTF9NYWtlQ3VycmVu
dChtX2Rpc3BsYXksIG1fc3VyZmFjZSwgbV9zdXJmYWNlLCBtX2NvbnRleHQpOworICAgIHJldHVy
biB0cnVlOworfQorCitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIEFOR0xFQ29udGV4dDo6cGxh
dGZvcm1Db250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0OworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0FOR0xFQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0FOR0xFQ29udGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhYWMz
ZDIxZmY3ZWNiMDc3N2U5MzliODA3Zjc4YjdmMTFmMTEyODIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQU5HTEVDb250ZXh0LmgKQEAg
LTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBNZXRyb2xvZ2ljYWwgR3Jv
dXAgQi5WLgorICogQ29weXJpZ2h0IChDKSAyMDE4LCAyMDE5IElnYWxpYSBTLkwuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShURVhUVVJF
X01BUFBFUikgJiYgVVNFKEFOR0xFKSAmJiAhVVNFKE5JQ09TSUEpCisKKyNpbmNsdWRlICJHTENv
bnRleHQuaCIKKwordHlwZWRlZiB2b2lkICpFR0xDb25maWc7Cit0eXBlZGVmIHZvaWQgKkVHTENv
bnRleHQ7Cit0eXBlZGVmIHZvaWQgKkVHTERpc3BsYXk7Cit0eXBlZGVmIHZvaWQgKkVHTFN1cmZh
Y2U7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQU5HTEVDb250ZXh0IHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShBTkdMRUNvbnRleHQpOworcHVibGljOgorICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBlcnJvclN0cmluZyhpbnQgc3RhdHVzQ29kZSk7CisgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGxhc3RFcnJvclN0cmluZygpOworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxB
TkdMRUNvbnRleHQ+IGNyZWF0ZUNvbnRleHQoYm9vbCBpc0ZvcldlYkdMMik7CisgICAgfkFOR0xF
Q29udGV4dCgpOworCisgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBQbGF0Zm9y
bUdyYXBoaWNzQ29udGV4dEdMIHBsYXRmb3JtQ29udGV4dCgpIGNvbnN0OworCitwcml2YXRlOgor
ICAgIEFOR0xFQ29udGV4dChFR0xEaXNwbGF5LCBFR0xDb250ZXh0LCBFR0xTdXJmYWNlKTsKKwor
ICAgIEVHTERpc3BsYXkgbV9kaXNwbGF5IHsgbnVsbHB0ciB9OworICAgIEVHTENvbnRleHQgbV9j
b250ZXh0IHsgbnVsbHB0ciB9OworICAgIEVHTFN1cmZhY2UgbV9zdXJmYWNlIHsgbnVsbHB0ciB9
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggODczMTQwYjBkOTUyNDc0
NzhhMjFmMTRjYTk5OGY2NzE2ZWU3YWQ3YS4uYTdjODE0MTFlNDA2NTc3NmQyN2Y5YjUzZjUwMzYw
YzRjN2YzNWU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlci5jcHAKQEAgLTExMyw2ICsxMTMsNyBAQCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAg
IDogR3JhcGhpY3NDb250ZXh0R0woYXR0cmlidXRlcywgZGVzdGluYXRpb24sIHNoYXJlZENvbnRl
eHQpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzaGFyZWRDb250ZXh0LCAhc2hhcmVkQ29udGV4dCk7
CisgICAgbV9pc0ZvcldlYkdMMiA9IGF0dHJpYnV0ZXMuaXNXZWJHTDI7CiAjaWYgVVNFKE5JQ09T
SUEpCiAgICAgbV9uaWNvc2lhTGF5ZXIgPSBXVEY6Om1ha2VVbmlxdWU8Tmljb3NpYTo6R0NHTEFO
R0xFTGF5ZXI+KCp0aGlzLCBkZXN0aW5hdGlvbik7CiAjZWxzZQpAQCAtMTI1LDE0ICsxMjYsMTUg
QEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICBhdHRyaWJ1dGVzID0gY29udGV4dEF0dHJp
YnV0ZXMoKTsgLy8gVGhleSBtYXkgaGF2ZSBjaGFuZ2VkIGR1cmluZyB2YWxpZGF0aW9uLgogCiAg
ICAgaWYgKGRlc3RpbmF0aW9uID09IERlc3RpbmF0aW9uOjpPZmZzY3JlZW4pIHsKKyAgICAgICAg
R0xlbnVtIHRleHR1cmVUYXJnZXQgPSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOwogICAg
ICAgICAvLyBDcmVhdGUgYSB0ZXh0dXJlIHRvIHJlbmRlciBpbnRvLgogICAgICAgICBnbDo6R2Vu
VGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7Ci0gICAgICAgIGdsOjpCaW5kVGV4dHVyZShHTF9URVhU
VVJFX1JFQ1RBTkdMRV9BTkdMRSwgbV90ZXh0dXJlKTsKLSAgICAgICAgZ2w6OlRleFBhcmFtZXRl
cmYoR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xf
TElORUFSKTsKLSAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV9SRUNUQU5HTEVf
QU5HTEUsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICAgICAgZ2w6OlRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsIEdMX1RFWFRVUkVfV1JBUF9T
LCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV9SRUNUQU5HTEVfQU5HTEUsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsK
LSAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCAwKTsK
KyAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZSk7CisgICAg
ICAgIGdsOjpUZXhQYXJhbWV0ZXJmKHRleHR1cmVUYXJnZXQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRF
UiwgR0xfTElORUFSKTsKKyAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmYodGV4dHVyZVRhcmdldCwg
R0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAgICAgICBnbDo6VGV4UGFyYW1l
dGVyaSh0ZXh0dXJlVGFyZ2V0LCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7
CisgICAgICAgIGdsOjpUZXhQYXJhbWV0ZXJpKHRleHR1cmVUYXJnZXQsIEdMX1RFWFRVUkVfV1JB
UF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVU
YXJnZXQsIDApOwogCiAgICAgICAgIC8vIENyZWF0ZSBhbiBGQk8uCiAgICAgICAgIGdsOjpHZW5G
cmFtZWJ1ZmZlcnMoMSwgJm1fZmJvKTsKQEAgLTE0MCwyMCArMTQyLDIwIEBAIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMgYXR0CiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgICAgIGds
OjpHZW5UZXh0dXJlcygxLCAmbV9jb21wb3NpdG9yVGV4dHVyZSk7Ci0gICAgICAgIGdsOjpCaW5k
VGV4dHVyZShHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwgbV9jb21wb3NpdG9yVGV4dHVyZSk7
Ci0gICAgICAgIGdsOjpUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCBH
TF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgICAgIGdsOjpUZXhQYXJhbWV0
ZXJmKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdM
X0xJTkVBUik7Ci0gICAgICAgIGdsOjpUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfUkVDVEFOR0xF
X0FOR0xFLCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgICAgIGds
OjpUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCBHTF9URVhUVVJFX1dS
QVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh1cmVU
eXBlLCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKKyAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmYodGV4
dXJlVHlwZSwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOworICAgICAgICBnbDo6
VGV4UGFyYW1ldGVyZih0ZXh1cmVUeXBlLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVB
Uik7CisgICAgICAgIGdsOjpUZXhQYXJhbWV0ZXJpKHRleHVyZVR5cGUsIEdMX1RFWFRVUkVfV1JB
UF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmkodGV4dXJl
VHlwZSwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwogCiAgICAgICAgIGds
OjpHZW5UZXh0dXJlcygxLCAmbV9pbnRlcm1lZGlhdGVUZXh0dXJlKTsKLSAgICAgICAgZ2w6OkJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCBtX2ludGVybWVkaWF0ZVRleHR1
cmUpOwotICAgICAgICBnbDo6VGV4UGFyYW1ldGVyZihHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdM
RSwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOwotICAgICAgICBnbDo6VGV4UGFy
YW1ldGVyZihHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwgR0xfVEVYVFVSRV9NSU5fRklMVEVS
LCBHTF9MSU5FQVIpOwotICAgICAgICBnbDo6VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX1JFQ1RB
TkdMRV9BTkdMRSwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgICAg
ICBnbDo6VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwgR0xfVEVYVFVS
RV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICBnbDo6QmluZFRleHR1cmUodGV4
dXJlVHlwZSwgbV9pbnRlcm1lZGlhdGVUZXh0dXJlKTsKKyAgICAgICAgZ2w6OlRleFBhcmFtZXRl
cmYodGV4dXJlVHlwZSwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOworICAgICAg
ICBnbDo6VGV4UGFyYW1ldGVyZih0ZXh1cmVUeXBlLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdM
X0xJTkVBUik7CisgICAgICAgIGdsOjpUZXhQYXJhbWV0ZXJpKHRleHVyZVR5cGUsIEdMX1RFWFRV
UkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmko
dGV4dXJlVHlwZSwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwogCi0gICAg
ICAgIGdsOjpCaW5kVGV4dHVyZShHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwgMCk7CisgICAg
ICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh1cmVUeXBlLCAwKTsKICNlbmRpZgogCiAgICAgICAgIC8v
IENyZWF0ZSBhIG11bHRpc2FtcGxlIEZCTy4KQEAgLTQxMiw3ICs0MTQsOSBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpjaGVja0dQVVN0YXR1cygpCiAKIGJvb2wgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogewotI2lmIFVTRShPUEVOR0xf
RVMpCisjaWYgVVNFKEFOR0xFKQorICAgIHJldHVybiBtX2lzRm9yV2ViR0wyOworI2VsaWYgVVNF
KE9QRU5HTF9FUykKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNDI4LDYgKzQzMiwxNyBAQCBQbGF0Zm9ybUxheWVyKiBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiAjZW5kaWYKIH0KIAorI2lmIFVTRShBTkdMRSkKK0dD
R0xlbnVtIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdl
dCgpCit7CisjaWYgUExBVEZPUk0oV0lOKQorICAgIHJldHVybiBHTF9URVhUVVJFXzJEOworI2Vs
c2UKKyAgICByZXR1cm4gR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEU7CisjZW5kaWYKK30KKyNl
bmRpZgorCiAjaWYgUExBVEZPUk0oR1RLKSAmJiAhVVNFKEFOR0xFKQogRXh0ZW5zaW9uc0dMJiBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDR0xQ
bGF0Zm9ybUxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuY3BwCmluZGV4IDNhNjAyNzMzOWQ3YWU4
NjA4MWM1NmQ0ZmY3ZmVhMzI3MjRiZWUyMWUuLjhkYjUwMWI5OWVmYWRiZTU0ODYzMDkxMDA5MjFi
NDM3YjQzNTI5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3Jt
TGF5ZXIuY3BwCkBAIC0yMiw2ICsyMiw4IEBACiAKICNpZiBFTkFCTEUoV0VCR0wpICYmIFVTRShU
RVhUVVJFX01BUFBFUikgJiYgIVVTRShOSUNPU0lBKQogCisjaW5jbHVkZSAiQU5HTEVDb250ZXh0
LmgiCisjaW5jbHVkZSAiQU5HTEVIZWFkZXJzLmgiCiAjaW5jbHVkZSAiQml0bWFwVGV4dHVyZUdM
LmgiCiAjaW5jbHVkZSAiR0xDb250ZXh0LmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMSGVh
ZGVycy5oIgpAQCAtMzUsNyArMzcsNyBAQCBUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI6
OlRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcihHcmFwaGljc0NvbnRleHRHTAogewogICAg
IHN3aXRjaCAoZGVzdGluYXRpb24pIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuOgotICAgICAgICBtX2dsQ29udGV4dCA9IEdMQ29udGV4
dDo6Y3JlYXRlT2Zmc2NyZWVuQ29udGV4dCgmUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5
Rm9yQ29tcG9zaXRpbmcoKSk7CisgICAgICAgIG1fZ2xDb250ZXh0ID0gQU5HTEVDb250ZXh0Ojpj
cmVhdGVDb250ZXh0KGNvbnRleHQuY29udGV4dEF0dHJpYnV0ZXMoKS5pc1dlYkdMMik7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkRlc3RpbmF0aW9u
OjpEaXJlY3RseVRvSG9zdFdpbmRvdzoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC0xMDAsMTUgKzEwMiwxNCBAQCB2b2lkIFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcjo6
cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4dHVyZQogICAgIGF1dG8gYXR0
cnMgPSBtX2NvbnRleHQuY29udGV4dEF0dHJpYnV0ZXMoKTsKICAgICBBU1NFUlQobV9jb250ZXh0
Lm1fc3RhdGUuYm91bmRSZWFkRkJPID09IG1fY29udGV4dC5tX3N0YXRlLmJvdW5kRHJhd0ZCTyk7
CiAgICAgaWYgKGF0dHJzLmFudGlhbGlhcyAmJiBtX2NvbnRleHQubV9zdGF0ZS5ib3VuZERyYXdG
Qk8gPT0gbV9jb250ZXh0Lm1fbXVsdGlzYW1wbGVGQk8pIHsKLSAgICAgICAgR0xDb250ZXh0KiBw
cmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmN1cnJlbnQoKTsKLSAgICAgICAgaWYg
KHByZXZpb3VzQWN0aXZlQ29udGV4dCAhPSBtX2dsQ29udGV4dC5nZXQoKSkKLSAgICAgICAgICAg
IG1fY29udGV4dC5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICAgICAgbV9jb250ZXh0Lm1ha2VD
b250ZXh0Q3VycmVudCgpOwogCiAgICAgICAgIG1fY29udGV4dC5yZXNvbHZlTXVsdGlzYW1wbGlu
Z0lmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQubV9zdGF0ZS5ib3VuZERyYXdGQk8p
OworICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX2NvbnRleHQu
bV9zdGF0ZS5ib3VuZERyYXdGQk8pOwogCi0gICAgICAgIGlmIChwcmV2aW91c0FjdGl2ZUNvbnRl
eHQgJiYgcHJldmlvdXNBY3RpdmVDb250ZXh0ICE9IG1fZ2xDb250ZXh0LmdldCgpKQotICAgICAg
ICAgICAgcHJldmlvdXNBY3RpdmVDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICAg
ICAgR0xDb250ZXh0KiBhY3RpdmVDb250ZXh0ID0gR0xDb250ZXh0OjpjdXJyZW50KCk7CisgICAg
ICAgIGlmIChhY3RpdmVDb250ZXh0KQorICAgICAgICAgICAgYWN0aXZlQ29udGV4dC0+bWFrZUNv
bnRleHRDdXJyZW50KCk7CiAgICAgfQogCiAgICAgVGV4dHVyZU1hcHBlckdMJiB0ZXhtYXBHTCA9
IHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCY+KHRleHR1cmVNYXBwZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJH
Q0dMUGxhdGZvcm1MYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllci5oCmluZGV4IGU5NmNmMmUyMWRkNTI4
OWY2Y2Q5NjNiYzViZTgwNzM0ZTMwMTM2ZTkuLjZkYzBmZjJjYWQ4YTA2NTFjYmNkYmFkZTRlM2Nl
NzhmYjJmNTExNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxh
eWVyLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBH
TENvbnRleHQ7CitjbGFzcyBBTkdMRUNvbnRleHQ7CiBjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5OwogCiBjbGFzcyBUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIgOiBw
dWJsaWMgUGxhdGZvcm1MYXllciB7CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCYgbV9jb250ZXh0OwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxHTENvbnRleHQ+IG1fZ2xDb250ZXh0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxBTkdM
RUNvbnRleHQ+IG1fZ2xDb250ZXh0OwogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQog
ICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBtX3BsYXRmb3JtTGF5
ZXJQcm94eTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2Ug
Yi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlCmluZGV4IDA2YTk3MDU5YmJjZTVh
N2JhNjgyZmE0YzVkOGJlYjY5NGJjMzQ2YTkuLjViYjA0MmU1MzZhZThiMWFhOGZiNjk3ZTQ3YjNi
MjIzMGRhOTQwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fpcm8uY21h
a2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZQpAQCAtNDUsNyArNDUs
OSBAQCBlbmRpZiAoKQogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA2NjM1CiAKIHNldChVU0VfQU5HTEVfRUdMIE9OKQorc2V0KFVTRV9BTkdMRV9XRUJHTCBPTikK
IAorU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0FOR0xFIE9OKQogU0VUX0FORF9FWFBPU0Vf
VE9fQlVJTEQoVVNFX0NBSVJPIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NGIE9O
KQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NVUkwgT04pCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGIwMjQyOGQz
ZjVjNzQ3ZTc2NWY5ZTdmN2E0YWVjMDVjMjNmNDRkMi4uOTgwZDgwYmZjN2E3ZGZkOGM2ZWM3MGYx
ODVlYWIzODE0ZTM1N2VlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTEyLTA4ICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIFtXaW5DYWly
b10gRW5hYmxlIFVTRV9BTkdMRQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE5NDIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIw
LTEyLTA4ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBh
c3BlY3QtcmF0aW8gb24gbm9uLXJlcGxhY2VkIGVsZW1lbnRzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhNmYxZGIzZjc1NGU0ZjIxYWIz
MDYwZDQ2OTM4MmY5Yzk0ZDM1YzU1Li42ZWQ2ZDhiNDZkYTE4OTQ1ZGZhYzkzYmIxNWZhYzRjYTQ3
Nzc0OTY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTIxMTQsMzAgKzIxMTQsMjkgQEAgcGVyZm9ybWFuY2UtYXBpL3BhaW50LXRpbWlu
Zy9wYWludC10aW1pbmctd2l0aC13b3JrZXIuaHRtbCBbIEZhaWx1cmUgXQogcGVyZm9ybWFuY2Ut
YXBpL3BhaW50LXRpbWluZy9wZXJmb3JtYW5jZS1vYnNlcnZlci1maXJzdC1jb250ZW50ZnVsLXBh
aW50Lmh0bWwgWyBUaW1lb3V0IF0KIHN0b3JhZ2UvaW5kZXhlZGRiL3N0b3JhZ2UtbGltaXQtd2l0
aC1pbmRpY2VzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2NhbnZh
cy9kcmF3aW5nYnVmZmVyLXRlc3QuaHRtbCBbIFNraXAgXSAjIFRpbWVvdXQKLXdlYmdsLzEuMC4z
L2NvbmZvcm1hbmNlL2NvbnRleHQvY29udGV4dC1sb3N0LXJlc3RvcmVkLmh0bWwgWyBGYWlsdXJl
IF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2NvbnRleHQvcHJlbXVsdGlwbHlhbHBoYS10ZXN0
Lmh0bWwgWyBGYWlsdXJlIF0KK3dlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2Vz
LWVsZW1lbnQtaW5kZXgtdWludC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3Jt
YW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0LXdpdGgtdmlkZW8uaHRtbCBbIFNraXAg
XSAjIFRpbWVvdXQKLXdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1
cmUtZmxvYXQuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvZXh0ZW5z
aW9ucy9vZXMtdGV4dHVyZS1oYWxmLWZsb2F0LXdpdGgtdmlkZW8uaHRtbCBbIFNraXAgXSAjIFRp
bWVvdXQKLXdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUtaGFs
Zi1mbG9hdC5odG1sIFsgRmFpbHVyZSBdCi13ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9leHRlbnNp
b25zL3dlYmdsLWNvbXByZXNzZWQtdGV4dHVyZS1zaXplLWxpbWl0Lmh0bWwgWyBGYWlsdXJlIF0K
K3dlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2dsc2wvYnVncy9hcnJheS1vZi1zdHJ1Y3Qtd2l0aC1p
bnQtZmlyc3QtcG9zaXRpb24uaHRtbCBbIFNraXAgXSAjIFRoaXMgdGVzdCBtYWtlcyBEdW1wUmVu
ZGVyVHJlZSBwcm9jZXNzIHVuYWJsZSB0byBleGl0CiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9n
bHNsL2J1Z3MvbG9uZy1leHByZXNzaW9ucy1zaG91bGQtbm90LWNyYXNoLmh0bWwgWyBTa2lwIF0g
IyBUaW1lb3V0Cit3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9taXNjL3VuaW5pdGlhbGl6ZWQtdGVz
dC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9u
cy9jb3B5VGV4SW1hZ2UyREJhZEFyZ3MuaHRtbCBbIFNraXAgXSAjIFRpbWVvdXQKIHdlYmdsLzEu
MC4zL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25zL3JlYWRQaXhlbHNCYWRBcmdzLmh0bWwgWyBG
YWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL21vcmUvZnVuY3Rpb25zL3RleEltYWdl
MkRIVE1MLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL21vcmUvZnVu
Y3Rpb25zL3RleFN1YkltYWdlMkRIVE1MLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2Nv
bmZvcm1hbmNlL21vcmUvZnVuY3Rpb25zL3RleFN1YkltYWdlMkRIVE1MQmFkQXJncy5odG1sIFsg
U2tpcCBdICMgQ3Jhc2gKLXdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3JlbmRlcmJ1ZmZlcnMvZmVl
ZGJhY2stbG9vcC5odG1sIFsgRmFpbHVyZSBdCit3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9wcm9n
cmFtcy9wcm9ncmFtLXRlc3QuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFu
Y2UvcmVuZGVyYnVmZmVycy9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC5odG1sIFsgRmFp
bHVyZSBdCi13ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvcG9pbnQtbm8tYXR0cmli
dXRlcy5odG1sIFsgRmFpbHVyZSBdCit3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9yZW5kZXJidWZm
ZXJzL2ZyYW1lYnVmZmVyLXN0YXRlLXJlc3RvcmF0aW9uLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmds
LzEuMC4zL2NvbmZvcm1hbmNlL3JlbmRlcmJ1ZmZlcnMvcmVuZGVyYnVmZmVyLWluaXRpYWxpemF0
aW9uLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL2Rl
ZmF1bHQtdGV4dHVyZS5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90
ZXh0dXJlcy90ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXZpZGVvLXJnYjU2NS5odG1s
IFsgU2tpcCBdICMgVGltZW91dAogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4
LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC12aWRlby1yZ2JhNDQ0NC5odG1sIFsgU2tpcCBd
ICMgVGltZW91dAogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4LWltYWdlLWFu
ZC1zdWItaW1hZ2UtMmQtd2l0aC12aWRlby1yZ2JhNTU1MS5odG1sIFsgU2tpcCBdICMgVGltZW91
dAogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4LWltYWdlLWFuZC1zdWItaW1h
Z2UtMmQtd2l0aC12aWRlby5odG1sIFsgU2tpcCBdICMgVGltZW91dAogd2ViZ2wvMS4wLjMvY29u
Zm9ybWFuY2UvdGV4dHVyZXMvdGV4LXN1Yi1pbWFnZS0yZC1iYWQtYXJncy5odG1sIFsgU2tpcCBd
ICMgQ3Jhc2gKLXdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHR1cmUtY29weWlu
Zy1mZWVkYmFjay1sb29wcy5odG1sIFsgRmFpbHVyZSBdCit3ZWJnbC8xLjAuMy9jb25mb3JtYW5j
ZS90ZXh0dXJlcy90ZXh0dXJlLWF0dGFjaG1lbnQtZm9ybWF0cy5odG1sIFsgRmFpbHVyZSBdCit3
ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLW1pcHMuaHRtbCBbIEZhaWx1
cmUgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4dHVyZS11cGxvYWQtc2l6
ZS5odG1sIFsgU2tpcCBdICMgVGltZW91dAotd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9l
eHQtdGV4dHVyZS1jb21wcmVzc2lvbi1yZ3RjLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmdsL2NvbmZv
cm1hbmNlL2V4dGVuc2lvbnMvczN0Yy1hbmQtcmd0Yy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC93
ZWJnbC12ZXJ0ZXgtYXJyYXktb2JqZWN0LWRlZmluZWQuaHRtbCBbIEZhaWx1cmUgXQpkaWZmIC0t
Z2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDM4OTUxMGQ1YjE4OTAxMjg4ZTIzMWM5
YzAzYWQ0MGMxMjliNTcwYTQuLmFkZDZiY2IxNTYyNWJkMTdhMGFiNDdhMGYxYjI3YmFlMmZkODM3
YTEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBA
QAorMjAyMC0xMi0wOCAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4K
KworICAgICAgICBbV2luQ2Fpcm9dIEVuYWJsZSBVU0VfQU5HTEUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQyMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNXaW5D
YWlyby5jbWFrZToKKwogMjAyMC0xMi0wNyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNv
bnkuY29tPgogCiAgICAgICAgIFtDTWFrZV0gUmVtb3ZlIFdFQktJVF9XUkFQX1NPVVJDRUxJU1QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415833</attachid>
            <date>2020-12-09 22:11:48 -0800</date>
            <delta_ts>2020-12-11 12:50:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219421-20201210151147.patch</filename>
            <type>text/plain</type>
            <size>34558</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggNTM0MzA3Y2YxZTdhOGVjZGRjNDFkZTBjN2E2MjdlMThmMjRjZmI1YS4uY2U4YmY0NjNiOTNk
MWRkMjNlN2I5ZjAyOTU0ZTJlZmQxZWE3OTc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTEyLTA5ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3Jp
LkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIFtXaW5DYWlyb10gRW5hYmxlIFVTRV9BTkdMRQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NDIxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDogQWRkZWQgZW50cnlfcG9pbnRzX2VnbF9leHQuaCB0byBsaWJnbGVzdjJfZW50cnlf
cG9pbnRzX2hlYWRlcnMuCisKIDIwMjAtMTItMDQgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIE1vcmUgRkFMTEJBQ0tfUExBVEZPUk0gYWRvcHRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA1ODliYTQ4OGU3YjAyYjdjMWMyZTM5M2Y5YjgyODAyMzhhYjAxMjRjLi5jZGE4Y2U1ZTNl
M2NjNDgxNTFlNWQ0YzNmNDc2YjZlMTc5N2IzMjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDgg
QEAKKzIwMjAtMTItMDkgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+
CisKKyAgICAgICAgW1dpbkNhaXJvXSBFbmFibGUgVVNFX0FOR0xFCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk0MjEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTd2l0Y2ggR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wgaW1wbGVtZW50YXRpb24gZnJvbSBvbGQgb25lCisgICAgICAgIChHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEVTLmNwcCkgdG8gbmV3IG9uZQorICAgICAgICAoR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5jcHApLCB3aGljaCBpcyB1c2luZyBBTkdMRSdzIGludGVybmFsIEFQSQorICAgICAgICBh
bmQgdmVyaWZpY2F0aW9uIGNvZGUsIGZvciBXaW5DYWlybyBwb3J0LiBJIHdpbGwgZW5hYmxlIFdl
YkdMMiBmb3IKKyAgICAgICAgV2luQ2Fpcm8gaW4gYSBmb2xsb3ctdXAgcGF0Y2guCisKKyAgICAg
ICAgR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUgaXMgbm90IGF2YWlsYWJsZSBmb3IgQU5HTEUg
RDNEIGJhY2tlbmQuCisgICAgICAgIFVzZSBHTF9URVhUVVJFXzJEIGluc3RlYWQuCisKKyAgICAg
ICAgQWRkIGEgbmV3IGNsYXNzIFdlYkNvcmU6OkFOR0xFQ29udGV4dCBieSBjb3B5aW5nCisgICAg
ICAgIE5pY29zaWE6OkdDR0xBTkdMRUxheWVyOjpBTkdMRUNvbnRleHQuIEl0J2QgYmUgYmV0dGVy
IHRvIG1lcmdlCisgICAgICAgIHRoZW0gYWZ0ZXIgR1RLIGFuZCBXUEUgd2lsbCBhbHNvIHN3aXRj
aC4KKworICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Rl
eHR1cmVNYXBwZXIuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9BTkdMRUNvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFOR0xFQ29udGV4dDo6ZXJyb3JTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVDb250
ZXh0OjpsYXN0RXJyb3JTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVDb250ZXh0Ojpj
cmVhdGVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFQ29udGV4dDo6QU5HTEVDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFQ29udGV4dDo6fkFOR0xFQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBTkdMRUNvbnRleHQ6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBTkdMRUNvbnRleHQ6OnBsYXRmb3JtQ29udGV4dCBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0FOR0xFQ29udGV4dC5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3Jt
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxh
eWVyOjpUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyOjpwYWludFRvVGV4dHVyZU1hcHBlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZv
cm1MYXllci5oOgorCiAyMDIwLTEyLTA5ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjcwNTQ0IGFuZCByMjcwNTY5
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DTWFrZUxpc3RzLnR4dAppbmRleCBiNmYyY2M4MzBmMzk5
MjhmYzU2MmYzY2VlOTljODY1MDU1M2Q5NGRjLi42YThmYTJiMmFjMDBmNWJhYWNiMjFhNjBmODQ5
OGQ5YTMxODRlNWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DTWFrZUxpc3RzLnR4dApAQCAt
MTcwLDYgKzE3MCw3IEBAIGVuZGlmICgpCiBpZiAoVVNFX0FOR0xFX1dFQkdMKQogICAgIHNldChs
aWJnbGVzdjJfZW50cnlfcG9pbnRzX2hlYWRlcnMKICAgICAgICAgc3JjL2xpYkdMRVN2Mi9lbnRy
eV9wb2ludHNfZWdsLmgKKyAgICAgICAgc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZWdsX2V4
dC5oCiAgICAgICAgIHNyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfMl8wX2F1dG9nZW4u
aAogICAgICAgICBzcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMF9hdXRvZ2VuLmgK
ICAgICAgICAgc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc19leHRfYXV0b2dlbi5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDU5ZTA0MzQ4NWI4MWQ5ZTA0MzYwN2JkNmJhMGEy
YzM2ZDNiNDcwZTAuLmY1YmE2ZmJiMTI3ZjU1MWE1NWQ2Zjc1NDEzYWQ2ZTY4MTk0OGI4YWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCkBAIC02LDYgKzYsNyBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9hY2Nl
c3NpYmlsaXR5L3dpbiIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGFnZS93aW4iCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2VnbCIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5
cGUiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3dpbiIKQEAgLTM3LDEz
ICszOCwxMiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL2F1
ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKIAorICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcAorCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZWds
L0dMQ29udGV4dEVHTC5jcHAKIAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xDb21tb24uY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTEVTLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xQcml2YXRlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9UZW1wb3JhcnlPcGVuR0xTZXR0aW5nLmNwcAogCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9HUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5o
CmluZGV4IDc3ODU5Mjc4ZmZiYmIwNDI1NzJiMmVmYmMyNzY5YzUxYzgyMDA5NjIuLjQ3YTAyZWI3
MDZjZTQ1ZDg4ZjE5NzU0YmI3ZDhiZWZmOWIxZjk0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0dQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5o
CkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNv
bnN0IG92ZXJyaWRlCiAgICAgewotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBQTEFURk9STShXSU4p
ICYmIFVTRShDQSkKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBhY2NlbGVyYXRlZCBjYW52
YXMgb24gV2luZG93cy4KICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlCmluZGV4IDRkNTNkOTk5ZWI1OWY2ZGNm
OTRlNWJkOTU1MWRkNmFmZGRiNWU4ZTEuLmQyYmNkOWFmMDgyZDJiN2U2NmE5MjZiMjE4ZjI0MDg1
MGI2YTk5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBw
ZXIuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFr
ZQpAQCAtNSw2ICs1LDggQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVfRElS
RUNUT1JJRVMKIAogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9OaWNvc2lhQW5pbWF0aW9uLmNwcAorCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0FOR0xFQ29udGV4dC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Qml0bWFwVGV4dHVyZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4
dHVyZVBvb2wuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlci5jcHAKQEAgLTE4LDYgKzIwLDggQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAKIGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVS
UwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUFuaW1hdGlvbi5oCisKKyAg
ICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQU5HTEVDb250ZXh0LmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0NsaXBTdGFjay5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXgg
MzA5YTUzMDliNjQwYTNkNmEyODE0MWNhN2IxYTc1ZGI0NmU5Zjk1MS4uNmQ5ZGIzZGQwNTNkMzc1
MjdiMjU5YTkzYzM3MWM0ZGIzMzkzNWEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHAKQEAgLTIyMywyMCArMjIzLDIyIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgIGdsOjpCaW5kRnJhbWVi
dWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fZmJvKTsKICAgICB9IGVsc2UKICAgICAgICAgZ2w6OkZy
YW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwg
ZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKSwgbV90ZXh0dXJlLCAwKTsKLSNlbGlmIFBMQVRG
T1JNKEdUSykKLSAgICBnbDo6QmluZFRleHR1cmUoR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUs
IG1fdGV4dHVyZSk7Ci0gICAgZ2w6OlRleEltYWdlMkQoR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5H
TEUsIDAsIG1faW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3Jt
YXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwotICAgIGdsOjpGcmFtZWJ1ZmZlclRleHR1cmUyRChH
TF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfUkVDVEFOR0xF
X0FOR0xFLCBtX3RleHR1cmUsIDApOworI2Vsc2UKKyAgICBHTGVudW0gdGV4dHVyZVRhcmdldCA9
IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7CisgICAgR0x1aW50IGludGVybmFsQ29sb3JG
b3JtYXQgPSB0ZXh0dXJlVGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQgPyBjb2xvckZvcm1hdCA6IG1f
aW50ZXJuYWxDb2xvckZvcm1hdDsKKyAgICBnbDo6QmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwg
bV90ZXh0dXJlKTsKKyAgICBnbDo6VGV4SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5h
bENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURf
QllURSwgMCk7CisgICAgZ2w6OkZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBH
TF9DT0xPUl9BVFRBQ0hNRU5UMCwgdGV4dHVyZVRhcmdldCwgbV90ZXh0dXJlLCAwKTsKKyNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgaWYgKG1fY29tcG9zaXRvclRleHR1cmUpIHsK
LSAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCBtX2Nv
bXBvc2l0b3JUZXh0dXJlKTsKLSAgICAgICAgZ2w6OlRleEltYWdlMkQoR0xfVEVYVFVSRV9SRUNU
QU5HTEVfQU5HTEUsIDAsIG1faW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwg
Y29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwotICAgICAgICBnbDo6QmluZFRleHR1
cmUoR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsIDApOwotICAgICAgICBnbDo6QmluZFRleHR1
cmUoR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsIG1faW50ZXJtZWRpYXRlVGV4dHVyZSk7Ci0g
ICAgICAgIGdsOjpUZXhJbWFnZTJEKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCAwLCBtX2lu
dGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJ
R05FRF9CWVRFLCAwKTsKLSAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfUkVDVEFO
R0xFX0FOR0xFLCAwKTsKKyAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1f
Y29tcG9zaXRvclRleHR1cmUpOworICAgICAgICBnbDo6VGV4SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0
LCAwLCBtX2ludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0
LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKKyAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVU
YXJnZXQsIDApOworICAgICAgICBnbDo6QmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV9pbnRl
cm1lZGlhdGVUZXh0dXJlKTsKKyAgICAgICAgZ2w6OlRleEltYWdlMkQodGV4dHVyZVRhcmdldCwg
MCwgbV9pbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwg
R0xfVU5TSUdORURfQllURSwgMCk7CisgICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFy
Z2V0LCAwKTsKICAgICB9Ci0jZWxzZQotI2Vycm9yIEZJWE1FOiBQb3J0IHRvIG5vbi1Db2NvYSBw
bGF0Zm9ybXMuCisjZW5kaWYKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAogICAgIGF0dGFj
aERlcHRoQW5kU3RlbmNpbEJ1ZmZlcklmTmVlZGVkKGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0
LCB3aWR0aCwgaGVpZ2h0KTsKQEAgLTEwNzAsMTIgKzEwNzIsMTYgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybUdMT2JqZWN0IHNoYWRlcikKICAg
ICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKKyNpZiAhUExB
VEZPUk0oV0lOKQogICAgIC8vIFdlIG5lZWQgdGhlIEFOR0xFX3RleHR1cmVfcmVjdGFuZ2xlIGV4
dGVuc2lvbiB0byBzdXBwb3J0IElPU3VyZmFjZQogICAgIC8vIGJhY2tidWZmZXJzLCBidXQgd2Ug
ZG9uJ3Qgd2FudCBpdCBleHBvc2VkIHRvIFdlYkdMIHVzZXIgc2hhZGVycy4KICAgICAvLyBUZW1w
b3JhcmlseSBkaXNhYmxlIGl0IGR1cmluZyBzaGFkZXIgY29tcGlsYXRpb24uCiAgICAgZ2w6OkRp
c2FibGUoR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUpOworI2VuZGlmCiAgICAgZ2w6OkNvbXBp
bGVTaGFkZXIoc2hhZGVyKTsKKyNpZiAhUExBVEZPUk0oV0lOKQogICAgIGdsOjpFbmFibGUoR0xf
VEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUpOworI2VuZGlmCiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNvbXBpbGVTaGFkZXJEaXJlY3QoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IGY1MjRkZTkyZGNkOWE1OThi
MGZiZWY4ZDMzYjljNDQwOWI4Y2QxYjAuLmNlZWFkZTcyYjdmNzA5MDFhZDRlNDIwNjY2MDAyM2Uy
ZjEyYjVmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC0xMDIsMTIg
KzEwMiwxNCBAQCBwdWJsaWM6CiAgICAgQ0FMYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0FMYXllcio+KG1fd2ViR0xMYXllci5nZXQo
KSk7IH0KICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSBwbGF0Zm9ybURpc3Bs
YXkoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlPYmo7IH0KICAgICBQbGF0Zm9ybUdyYXBoaWNz
Q29udGV4dEdMQ29uZmlnIHBsYXRmb3JtQ29uZmlnKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWdP
Ymo7IH0KLSAgICBzdGF0aWMgR0NHTGVudW0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKTsK
ICAgICBzdGF0aWMgR0NHTGVudW0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXRRdWVyeSgpOwog
ICAgIHN0YXRpYyBHQ0dMaW50IEVHTERyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7CiAjZWxz
ZQogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5hbDsKICNlbmRp
ZgorI2lmIFVTRShBTkdMRSkKKyAgICBzdGF0aWMgR0NHTGVudW0gZHJhd2luZ0J1ZmZlclRleHR1
cmVUYXJnZXQoKTsKKyNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBlbnVt
IGNsYXNzIFJlbGVhc2VCZWhhdmlvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvQU5HTEVDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9BTkdMRUNvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlNjY2
ODc0YzY2NGNlZWZkYjIxOWRhYjFjYmFkZjI2ZTIyNTJlNjcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQU5HTEVDb250ZXh0LmNwcApA
QCAtMCwwICsxLDE3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBNZXRyb2xvZ2ljYWwg
R3JvdXAgQi5WLgorICogQ29weXJpZ2h0IChDKSAyMDE4LCAyMDE5IElnYWxpYSBTLkwuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxOCBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
U29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorICogICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBTkdMRUNvbnRleHQu
aCIKKworI2lmIFVTRShURVhUVVJFX01BUFBFUikgJiYgVVNFKEFOR0xFKSAmJiAhVVNFKE5JQ09T
SUEpCisKKyNpbmNsdWRlICJBTkdMRUhlYWRlcnMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IGNo
YXIqIEFOR0xFQ29udGV4dDo6ZXJyb3JTdHJpbmcoaW50IHN0YXR1c0NvZGUpCit7CisgICAgc3Rh
dGljX2Fzc2VydChzaXplb2YoaW50KSA+PSBzaXplb2YoRUdMaW50KSwgIkVHTGludCBtdXN0IG5v
dCBiZSB3aWRlciB0aGFuIGludCIpOworICAgIHN3aXRjaCAoc3RhdHVzQ29kZSkgeworI2RlZmlu
ZSBDQVNFX1JFVFVSTl9TVFJJTkcobmFtZSkgY2FzZSBuYW1lOiByZXR1cm4gI25hbWUKKyAgICAg
ICAgLy8gaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvRUdML3Nkay9kb2NzL21hbi9o
dG1sL2VnbEdldEVycm9yLnhodG1sCisgICAgICAgIENBU0VfUkVUVVJOX1NUUklORyhFR0xfU1VD
Q0VTUyk7CisgICAgICAgIENBU0VfUkVUVVJOX1NUUklORyhFR0xfTk9UX0lOSVRJQUxJWkVEKTsK
KyAgICAgICAgQ0FTRV9SRVRVUk5fU1RSSU5HKEVHTF9CQURfQUNDRVNTKTsKKyAgICAgICAgQ0FT
RV9SRVRVUk5fU1RSSU5HKEVHTF9CQURfQUxMT0MpOworICAgICAgICBDQVNFX1JFVFVSTl9TVFJJ
TkcoRUdMX0JBRF9BVFRSSUJVVEUpOworICAgICAgICBDQVNFX1JFVFVSTl9TVFJJTkcoRUdMX0JB
RF9DT05URVhUKTsKKyAgICAgICAgQ0FTRV9SRVRVUk5fU1RSSU5HKEVHTF9CQURfQ09ORklHKTsK
KyAgICAgICAgQ0FTRV9SRVRVUk5fU1RSSU5HKEVHTF9CQURfQ1VSUkVOVF9TVVJGQUNFKTsKKyAg
ICAgICAgQ0FTRV9SRVRVUk5fU1RSSU5HKEVHTF9CQURfRElTUExBWSk7CisgICAgICAgIENBU0Vf
UkVUVVJOX1NUUklORyhFR0xfQkFEX1NVUkZBQ0UpOworICAgICAgICBDQVNFX1JFVFVSTl9TVFJJ
TkcoRUdMX0JBRF9NQVRDSCk7CisgICAgICAgIENBU0VfUkVUVVJOX1NUUklORyhFR0xfQkFEX1BB
UkFNRVRFUik7CisgICAgICAgIENBU0VfUkVUVVJOX1NUUklORyhFR0xfQkFEX05BVElWRV9QSVhN
QVApOworICAgICAgICBDQVNFX1JFVFVSTl9TVFJJTkcoRUdMX0JBRF9OQVRJVkVfV0lORE9XKTsK
KyAgICAgICAgQ0FTRV9SRVRVUk5fU1RSSU5HKEVHTF9DT05URVhUX0xPU1QpOworI3VuZGVmIENB
U0VfUkVUVVJOX1NUUklORworICAgIGRlZmF1bHQ6IHJldHVybiAiVW5rbm93biBFR0wgZXJyb3Ii
OworICAgIH0KK30KKworY29uc3QgY2hhciogQU5HTEVDb250ZXh0OjpsYXN0RXJyb3JTdHJpbmco
KQoreworICAgIHJldHVybiBlcnJvclN0cmluZyhFR0xfR2V0RXJyb3IoKSk7Cit9CisKK3N0ZDo6
dW5pcXVlX3B0cjxBTkdMRUNvbnRleHQ+IEFOR0xFQ29udGV4dDo6Y3JlYXRlQ29udGV4dChFR0xD
b250ZXh0IHNoYXJpbmdDb250ZXh0LCBib29sIGlzRm9yV2ViR0wyKQoreworICAgIEVHTERpc3Bs
YXkgZGlzcGxheSA9IEVHTF9HZXREaXNwbGF5KEVHTF9ERUZBVUxUX0RJU1BMQVkpOworICAgIGlm
IChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIEVHTGludCBtYWpvclZlcnNpb24sIG1pbm9yVmVyc2lvbjsKKyAgICBpZiAoRUdMX0luaXRp
YWxpemUoZGlzcGxheSwgJm1ham9yVmVyc2lvbiwgJm1pbm9yVmVyc2lvbikgPT0gRUdMX0ZBTFNF
KSB7CisgICAgICAgIExPRyhXZWJHTCwgIkVHTERpc3BsYXkgSW5pdGlhbGl6YXRpb24gZmFpbGVk
LiIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgTE9HKFdlYkdMLCAiQU5H
TEUgaW5pdGlhbGlzZWQgTWFqb3I6ICVkIE1pbm9yOiAlZCIsIG1ham9yVmVyc2lvbiwgbWlub3JW
ZXJzaW9uKTsKKworICAgIGNvbnN0IGNoYXIqIGRpc3BsYXlFeHRlbnNpb25zID0gRUdMX1F1ZXJ5
U3RyaW5nKGRpc3BsYXksIEVHTF9FWFRFTlNJT05TKTsKKyAgICBMT0coV2ViR0wsICJFeHRlbnNp
b25zOiAlcyIsIGRpc3BsYXlFeHRlbnNpb25zKTsKKworICAgIEVHTENvbmZpZyBjb25maWc7Cisg
ICAgRUdMaW50IGNvbmZpZ0F0dHJpYnV0ZXNbXSA9IHsKKyAgICAgICAgRUdMX1JFTkRFUkFCTEVf
VFlQRSwgRUdMX09QRU5HTF9FUzJfQklULAorICAgICAgICBFR0xfUkVEX1NJWkUsIDgsCisgICAg
ICAgIEVHTF9HUkVFTl9TSVpFLCA4LAorICAgICAgICBFR0xfQkxVRV9TSVpFLCA4LAorICAgICAg
ICBFR0xfQUxQSEFfU0laRSwgOCwKKyAgICAgICAgRUdMX05PTkUKKyAgICB9OworICAgIEVHTGlu
dCBudW1iZXJDb25maWdzUmV0dXJuZWQgPSAwOworICAgIEVHTF9DaG9vc2VDb25maWcoZGlzcGxh
eSwgY29uZmlnQXR0cmlidXRlcywgJmNvbmZpZywgMSwgJm51bWJlckNvbmZpZ3NSZXR1cm5lZCk7
CisgICAgaWYgKG51bWJlckNvbmZpZ3NSZXR1cm5lZCAhPSAxKSB7CisgICAgICAgIExPRyhXZWJH
TCwgIkVHTENvbmZpZyBJbml0aWFsaXphdGlvbiBmYWlsZWQuIik7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKyAgICBMT0coV2ViR0wsICJHb3QgRUdMQ29uZmlnIik7CisKKyAgICBF
R0xfQmluZEFQSShFR0xfT1BFTkdMX0VTX0FQSSk7CisgICAgaWYgKEVHTF9HZXRFcnJvcigpICE9
IEVHTF9TVUNDRVNTKSB7CisgICAgICAgIExPRyhXZWJHTCwgIlVuYWJsZSB0byBiaW5kIHRvIE9Q
RU5HTF9FU19BUEkiKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgVmVj
dG9yPEVHTGludD4gY29udGV4dEF0dHJpYnV0ZXM7CisgICAgaWYgKGlzRm9yV2ViR0wyKSB7Cisg
ICAgICAgIGNvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lP
Tik7CisgICAgICAgIGNvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZCgzKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBjb250ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJ
T04pOworICAgICAgICBjb250ZXh0QXR0cmlidXRlcy5hcHBlbmQoMik7CisgICAgICAgIC8vIEFO
R0xFIHdpbGwgdXBncmFkZSB0aGUgY29udGV4dCB0byBFUzMgYXV0b21hdGljYWxseSB1bmxlc3Mg
dGhpcyBpcyBzcGVjaWZpZWQuCisgICAgICAgIGNvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xf
Q09OVEVYVF9PUEVOR0xfQkFDS1dBUkRTX0NPTVBBVElCTEVfQU5HTEUpOworICAgICAgICBjb250
ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX0ZBTFNFKTsKKyAgICB9CisgICAgY29udGV4dEF0dHJp
YnV0ZXMuYXBwZW5kKEVHTF9DT05URVhUX1dFQkdMX0NPTVBBVElCSUxJVFlfQU5HTEUpOworICAg
IGNvbnRleHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xfVFJVRSk7CisgICAgaWYgKHN0cnN0cihkaXNw
bGF5RXh0ZW5zaW9ucywgIkVHTF9BTkdMRV9wb3dlcl9wcmVmZXJlbmNlIikpIHsKKyAgICAgICAg
Y29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9QT1dFUl9QUkVGRVJFTkNFX0FOR0xFKTsKKyAg
ICAgICAgLy8gRUdMX0xPV19QT1dFUl9BTkdMRSBpcyB0aGUgZGVmYXVsdC4gQ2hhbmdlIHRvCisg
ICAgICAgIC8vIEVHTF9ISUdIX1BPV0VSX0FOR0xFIGlmIGRlc2lyZWQuCisgICAgICAgIGNvbnRl
eHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xfTE9XX1BPV0VSX0FOR0xFKTsKKyAgICB9CisgICAgY29u
dGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9OT05FKTsKKworICAgIEVHTENvbnRleHQgY29udGV4
dCA9IEVHTF9DcmVhdGVDb250ZXh0KGRpc3BsYXksIGNvbmZpZywgc2hhcmluZ0NvbnRleHQsIGNv
bnRleHRBdHRyaWJ1dGVzLmRhdGEoKSk7CisgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NPTlRF
WFQpIHsKKyAgICAgICAgTE9HKFdlYkdMLCAiRUdMQ29udGV4dCBJbml0aWFsaXphdGlvbiBmYWls
ZWQuIik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBMT0coV2ViR0wsICJH
b3QgRUdMQ29udGV4dCIpOworCisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBTkdMRUNvbnRl
eHQ+KG5ldyBBTkdMRUNvbnRleHQoZGlzcGxheSwgY29udGV4dCwgRUdMX05PX1NVUkZBQ0UpKTsK
K30KKworQU5HTEVDb250ZXh0OjpBTkdMRUNvbnRleHQoRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xD
b250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSkKKyAgICA6IG1fZGlzcGxheShkaXNw
bGF5KQorICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkK
K3sKK30KKworQU5HTEVDb250ZXh0Ojp+QU5HTEVDb250ZXh0KCkKK3sKKyAgICBpZiAobV9jb250
ZXh0KSB7CisgICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOwor
ICAgICAgICBFR0xfTWFrZUN1cnJlbnQobV9kaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05P
X1NVUkZBQ0UsIEVHTF9OT19DT05URVhUKTsKKyAgICAgICAgRUdMX0Rlc3Ryb3lDb250ZXh0KG1f
ZGlzcGxheSwgbV9jb250ZXh0KTsKKyAgICB9CisKKyAgICBpZiAobV9zdXJmYWNlKQorICAgICAg
ICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5LCBtX3N1cmZhY2UpOworfQorCitib29sIEFO
R0xFQ29udGV4dDo6bWFrZUNvbnRleHRDdXJyZW50KCkKK3sKKyAgICBBU1NFUlQobV9jb250ZXh0
KTsKKworICAgIGlmIChFR0xfR2V0Q3VycmVudENvbnRleHQoKSAhPSBtX2NvbnRleHQpCisgICAg
ICAgIHJldHVybiBFR0xfTWFrZUN1cnJlbnQobV9kaXNwbGF5LCBtX3N1cmZhY2UsIG1fc3VyZmFj
ZSwgbV9jb250ZXh0KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRUdMQ29udGV4dCBBTkdMRUNv
bnRleHQ6OnBsYXRmb3JtQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4dDsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9BTkdMRUNvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9BTkdMRUNvbnRleHQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45NDJjYzEwMjVlOGZiMjc5YTM4YzNhMGY2ZTdhM2IwYzgxMjcwZTRmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0FOR0xFQ29u
dGV4dC5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggTWV0cm9s
b2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdodCAoQykgMjAxOCwgMjAxOSBJZ2FsaWEgUy5M
LgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJ
bmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAg
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IFVTRShURVhUVVJFX01BUFBFUikgJiYgVVNFKEFOR0xFKSAmJiAhVVNFKE5JQ09TSUEpCisKKyNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKwordHlwZWRlZiB2b2lkICpFR0xDb25maWc7Cit0
eXBlZGVmIHZvaWQgKkVHTENvbnRleHQ7Cit0eXBlZGVmIHZvaWQgKkVHTERpc3BsYXk7Cit0eXBl
ZGVmIHZvaWQgKkVHTFN1cmZhY2U7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQU5H
TEVDb250ZXh0IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBTkdMRUNvbnRleHQpOworcHVi
bGljOgorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBlcnJvclN0cmluZyhpbnQgc3RhdHVzQ29kZSk7
CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGxhc3RFcnJvclN0cmluZygpOworCisgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxBTkdMRUNvbnRleHQ+IGNyZWF0ZUNvbnRleHQoRUdMQ29udGV4dCBz
aGFyaW5nQ29udGV4dCwgYm9vbCBpc0ZvcldlYkdMMik7CisgICAgfkFOR0xFQ29udGV4dCgpOwor
CisgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBFR0xDb250ZXh0IHBsYXRmb3Jt
Q29udGV4dCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIEFOR0xFQ29udGV4dChFR0xEaXNwbGF5
LCBFR0xDb250ZXh0LCBFR0xTdXJmYWNlKTsKKworICAgIEVHTERpc3BsYXkgbV9kaXNwbGF5IHsg
bnVsbHB0ciB9OworICAgIEVHTENvbnRleHQgbV9jb250ZXh0IHsgbnVsbHB0ciB9OworICAgIEVH
TFN1cmZhY2UgbV9zdXJmYWNlIHsgbnVsbHB0ciB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1h
cHBlci5jcHAKaW5kZXggODczMTQwYjBkOTUyNDc0NzhhMjFmMTRjYTk5OGY2NzE2ZWU3YWQ3YS4u
NmM1NTQ0YmQ5NjQxOGFmNjcwOTRhNTNkMTg1ODAxZTJmMTAyMGI4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKQEAgLTIsNiArMiw3IEBACiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255
IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xMTMsNiArMTE0LDcgQEAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyBhdHQKICAgICA6
IEdyYXBoaWNzQ29udGV4dEdMKGF0dHJpYnV0ZXMsIGRlc3RpbmF0aW9uLCBzaGFyZWRDb250ZXh0
KQogewogICAgIEFTU0VSVF9VTlVTRUQoc2hhcmVkQ29udGV4dCwgIXNoYXJlZENvbnRleHQpOwor
ICAgIG1faXNGb3JXZWJHTDIgPSBhdHRyaWJ1dGVzLmlzV2ViR0wyOwogI2lmIFVTRShOSUNPU0lB
KQogICAgIG1fbmljb3NpYUxheWVyID0gV1RGOjptYWtlVW5pcXVlPE5pY29zaWE6OkdDR0xBTkdM
RUxheWVyPigqdGhpcywgZGVzdGluYXRpb24pOwogI2Vsc2UKQEAgLTEyNSwxNCArMTI3LDE1IEBA
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTChHcmFwaGlj
c0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0CiAgICAgYXR0cmlidXRlcyA9IGNvbnRleHRBdHRyaWJ1
dGVzKCk7IC8vIFRoZXkgbWF5IGhhdmUgY2hhbmdlZCBkdXJpbmcgdmFsaWRhdGlvbi4KIAogICAg
IGlmIChkZXN0aW5hdGlvbiA9PSBEZXN0aW5hdGlvbjo6T2Zmc2NyZWVuKSB7CisgICAgICAgIEdM
ZW51bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKTsKICAgICAg
ICAgLy8gQ3JlYXRlIGEgdGV4dHVyZSB0byByZW5kZXIgaW50by4KICAgICAgICAgZ2w6OkdlblRl
eHR1cmVzKDEsICZtX3RleHR1cmUpOwotICAgICAgICBnbDo6QmluZFRleHR1cmUoR0xfVEVYVFVS
RV9SRUNUQU5HTEVfQU5HTEUsIG1fdGV4dHVyZSk7Ci0gICAgICAgIGdsOjpUZXhQYXJhbWV0ZXJm
KEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJ
TkVBUik7Ci0gICAgICAgIGdsOjpUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FO
R0xFLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgICAgIGdsOjpUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCBHTF9URVhUVVJFX1dSQVBfUywg
R0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgICAgIGdsOjpUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
UkVDVEFOR0xFX0FOR0xFLCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0g
ICAgICAgIGdsOjpCaW5kVGV4dHVyZShHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwgMCk7Cisg
ICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX3RleHR1cmUpOworICAgICAg
ICBnbDo6VGV4UGFyYW1ldGVyZih0ZXh0dXJlVGFyZ2V0LCBHTF9URVhUVVJFX01BR19GSUxURVIs
IEdMX0xJTkVBUik7CisgICAgICAgIGdsOjpUZXhQYXJhbWV0ZXJmKHRleHR1cmVUYXJnZXQsIEdM
X1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICAgICAgZ2w6OlRleFBhcmFtZXRl
cmkodGV4dHVyZVRhcmdldCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwor
ICAgICAgICBnbDo6VGV4UGFyYW1ldGVyaSh0ZXh0dXJlVGFyZ2V0LCBHTF9URVhUVVJFX1dSQVBf
VCwgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFy
Z2V0LCAwKTsKIAogICAgICAgICAvLyBDcmVhdGUgYW4gRkJPLgogICAgICAgICBnbDo6R2VuRnJh
bWVidWZmZXJzKDEsICZtX2Zibyk7CkBAIC0xNDAsMjAgKzE0MywyMCBAQCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3NDb250ZXh0R0xBdHRy
aWJ1dGVzIGF0dAogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgICAgICBnbDo6
R2VuVGV4dHVyZXMoMSwgJm1fY29tcG9zaXRvclRleHR1cmUpOwotICAgICAgICBnbDo6QmluZFRl
eHR1cmUoR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsIG1fY29tcG9zaXRvclRleHR1cmUpOwot
ICAgICAgICBnbDo6VGV4UGFyYW1ldGVyZihHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwgR0xf
VEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOwotICAgICAgICBnbDo6VGV4UGFyYW1ldGVy
ZihHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9M
SU5FQVIpOwotICAgICAgICBnbDo6VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX1JFQ1RBTkdMRV9B
TkdMRSwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgICAgICBnbDo6
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwgR0xfVEVYVFVSRV9XUkFQ
X1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICBnbDo6QmluZFRleHR1cmUodGV4dXJlVHlw
ZSwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CisgICAgICAgIGdsOjpUZXhQYXJhbWV0ZXJmKHRleHVy
ZVR5cGUsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICAgICAgZ2w6OlRl
eFBhcmFtZXRlcmYodGV4dXJlVHlwZSwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIp
OworICAgICAgICBnbDo6VGV4UGFyYW1ldGVyaSh0ZXh1cmVUeXBlLCBHTF9URVhUVVJFX1dSQVBf
UywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIGdsOjpUZXhQYXJhbWV0ZXJpKHRleHVyZVR5
cGUsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKIAogICAgICAgICBnbDo6
R2VuVGV4dHVyZXMoMSwgJm1faW50ZXJtZWRpYXRlVGV4dHVyZSk7Ci0gICAgICAgIGdsOjpCaW5k
VGV4dHVyZShHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwgbV9pbnRlcm1lZGlhdGVUZXh0dXJl
KTsKLSAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUs
IEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICAgICAgZ2w6OlRleFBhcmFt
ZXRlcmYoR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwg
R0xfTElORUFSKTsKLSAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9SRUNUQU5H
TEVfQU5HTEUsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAgICAg
Z2w6OlRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsIEdMX1RFWFRVUkVf
V1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHVy
ZVR5cGUsIG1faW50ZXJtZWRpYXRlVGV4dHVyZSk7CisgICAgICAgIGdsOjpUZXhQYXJhbWV0ZXJm
KHRleHVyZVR5cGUsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICAgICAg
Z2w6OlRleFBhcmFtZXRlcmYodGV4dXJlVHlwZSwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9M
SU5FQVIpOworICAgICAgICBnbDo6VGV4UGFyYW1ldGVyaSh0ZXh1cmVUeXBlLCBHTF9URVhUVVJF
X1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIGdsOjpUZXhQYXJhbWV0ZXJpKHRl
eHVyZVR5cGUsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKIAotICAgICAg
ICBnbDo6QmluZFRleHR1cmUoR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsIDApOworICAgICAg
ICBnbDo6QmluZFRleHR1cmUodGV4dXJlVHlwZSwgMCk7CiAjZW5kaWYKIAogICAgICAgICAvLyBD
cmVhdGUgYSBtdWx0aXNhbXBsZSBGQk8uCkBAIC00MTIsNyArNDE1LDkgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6Y2hlY2tHUFVTdGF0dXMoKQogCiBib29sIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QKIHsKLSNpZiBVU0UoT1BFTkdMX0VT
KQorI2lmIFVTRShBTkdMRSkKKyAgICByZXR1cm4gbV9pc0ZvcldlYkdMMjsKKyNlbGlmIFVTRShP
UEVOR0xfRVMpCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKQEAg
LTQyOCw2ICs0MzMsMTcgQEAgUGxhdGZvcm1MYXllciogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogI2VuZGlmCiB9CiAKKyNpZiBVU0UoQU5HTEUpCitHQ0dM
ZW51bSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQo
KQoreworI2lmIFBMQVRGT1JNKFdJTikKKyAgICByZXR1cm4gR0xfVEVYVFVSRV8yRDsKKyNlbHNl
CisgICAgcmV0dXJuIEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFOworI2VuZGlmCit9CisjZW5k
aWYKKwogI2lmIFBMQVRGT1JNKEdUSykgJiYgIVVTRShBTkdMRSkKIEV4dGVuc2lvbnNHTCYgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQ0dMUGxh
dGZvcm1MYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmNwcAppbmRleCAzYTYwMjczMzlkN2FlODYw
ODFjNTZkNGZmN2ZlYTMyNzI0YmVlMjFlLi40OTMxNTA1MDMyNGJiZGM5MzczMjRmMGExYzExNzM2
MjE2YTdiN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxh
eWVyLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIs
IDIwMTcgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZl
IEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsNiArMjMsOCBA
QAogCiAjaWYgRU5BQkxFKFdFQkdMKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpICYmICFVU0UoTklD
T1NJQSkKIAorI2luY2x1ZGUgIkFOR0xFQ29udGV4dC5oIgorI2luY2x1ZGUgIkFOR0xFSGVhZGVy
cy5oIgogI2luY2x1ZGUgIkJpdG1hcFRleHR1cmVHTC5oIgogI2luY2x1ZGUgIkdMQ29udGV4dC5o
IgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTEhlYWRlcnMuaCIKQEAgLTM0LDkgKzM3LDExIEBA
IFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcjo6VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9y
bUxheWVyKEdyYXBoaWNzQ29udGV4dEdMCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKIHsKICAg
ICBzd2l0Y2ggKGRlc3RpbmF0aW9uKSB7Ci0gICAgY2FzZSBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6RGVzdGluYXRpb246Ok9mZnNjcmVlbjoKLSAgICAgICAgbV9nbENvbnRleHQgPSBHTENvbnRl
eHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRleHQoJlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxh
eUZvckNvbXBvc2l0aW5nKCkpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OkRl
c3RpbmF0aW9uOjpPZmZzY3JlZW46IHsKKyAgICAgICAgYXV0byBzaGFyaW5nQ29udGV4dCA9IFBs
YXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmluZ0dMQ29u
dGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICAgICAgbV9nbENvbnRleHQgPSBBTkdMRUNv
bnRleHQ6OmNyZWF0ZUNvbnRleHQoc2hhcmluZ0NvbnRleHQsIGNvbnRleHQuY29udGV4dEF0dHJp
YnV0ZXMoKS5pc1dlYkdMMik7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpEZXN0aW5hdGlvbjo6RGlyZWN0bHlUb0hvc3RXaW5kb3c6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTEwMSwxMyAr
MTA2LDEyIEBAIHZvaWQgVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyOjpwYWludFRvVGV4
dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlCiAgICAgQVNTRVJUKG1fY29udGV4dC5t
X3N0YXRlLmJvdW5kUmVhZEZCTyA9PSBtX2NvbnRleHQubV9zdGF0ZS5ib3VuZERyYXdGQk8pOwog
ICAgIGlmIChhdHRycy5hbnRpYWxpYXMgJiYgbV9jb250ZXh0Lm1fc3RhdGUuYm91bmREcmF3RkJP
ID09IG1fY29udGV4dC5tX211bHRpc2FtcGxlRkJPKSB7CiAgICAgICAgIEdMQ29udGV4dCogcHJl
dmlvdXNBY3RpdmVDb250ZXh0ID0gR0xDb250ZXh0OjpjdXJyZW50KCk7Ci0gICAgICAgIGlmIChw
cmV2aW91c0FjdGl2ZUNvbnRleHQgIT0gbV9nbENvbnRleHQuZ2V0KCkpCi0gICAgICAgICAgICBt
X2NvbnRleHQubWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgICAgIG1fY29udGV4dC5tYWtlQ29u
dGV4dEN1cnJlbnQoKTsKIAogICAgICAgICBtX2NvbnRleHQucmVzb2x2ZU11bHRpc2FtcGxpbmdJ
Zk5lY2Vzc2FyeSgpOwotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0Lm1fc3RhdGUuYm91bmREcmF3RkJPKTsK
KyAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9jb250ZXh0Lm1f
c3RhdGUuYm91bmREcmF3RkJPKTsKIAotICAgICAgICBpZiAocHJldmlvdXNBY3RpdmVDb250ZXh0
ICYmIHByZXZpb3VzQWN0aXZlQ29udGV4dCAhPSBtX2dsQ29udGV4dC5nZXQoKSkKKyAgICAgICAg
aWYgKHByZXZpb3VzQWN0aXZlQ29udGV4dCkKICAgICAgICAgICAgIHByZXZpb3VzQWN0aXZlQ29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9y
bUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmgKaW5kZXggZTk2Y2YyZTIxZGQ1Mjg5ZjZjZDk2M2Jj
NWJlODA3MzRlMzAxMzZlOS4uNmRjMGZmMmNhZDhhMDY1MWNiY2RiYWRlNGUzY2U3OGZiMmY1MTE0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuaApAQCAt
MjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdMQ29udGV4dDsK
K2NsYXNzIEFOR0xFQ29udGV4dDsKIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJv
eHk7CiAKIGNsYXNzIFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllciA6IHB1YmxpYyBQbGF0
Zm9ybUxheWVyIHsKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMJiBtX2NvbnRleHQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdM
Q29udGV4dD4gbV9nbENvbnRleHQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFOR0xFQ29udGV4dD4g
bV9nbENvbnRleHQ7CiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgUmVmUHRy
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IG1fcGxhdGZvcm1MYXllclByb3h5Owpk
aWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZSBiL1NvdXJjZS9j
bWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2UKaW5kZXggMDZhOTcwNTliYmNlNWE3YmE2ODJmYTRj
NWQ4YmViNjk0YmMzNDZhOS4uNWJiMDQyZTUzNmFlOGIxYWE4ZmI2OTdlNDdiM2IyMjMwZGE5NDBi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZQorKysgYi9T
b3VyY2UvY21ha2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlCkBAIC00NSw3ICs0NSw5IEBAIGVuZGlm
ICgpCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY2MzUKIAog
c2V0KFVTRV9BTkdMRV9FR0wgT04pCitzZXQoVVNFX0FOR0xFX1dFQkdMIE9OKQogCitTRVRfQU5E
X0VYUE9TRV9UT19CVUlMRChVU0VfQU5HTEUgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChV
U0VfQ0FJUk8gT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfQ0YgT04pCiBTRVRfQU5E
X0VYUE9TRV9UT19CVUlMRChVU0VfQ1VSTCBPTikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkZGQ1N2UzNTZmY2IyYmM4NGJi
YTYxNzE4NmFmNWVmYTY5YmI4ODZlLi44NjM3OTgxNjg3ZmQ4ODg5NmQ5MjYzMGIzMGY3NTIxZDBl
OGU3N2RmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTItMDkgIEZ1amlpIEhpcm9ub3Jp
ICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgW1dpbkNhaXJvXSBFbmFibGUg
VVNFX0FOR0xFCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTk0MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHBsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjAtMTItMDkgIEFu
dHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEZvbnQgbG9hZHMgYXJl
IHRyaWdnZXJlZCB0b28gbGF0ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
Y2Fpcm8vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggYTZmMWRiM2Y3NTRlNGYyMWFiMzA2MGQ0NjkzODJmOWM5NGQz
NWM1NS4uMzc4NzU3ZGYyYTI0MGQ5NDM5MDE0ZTkzOWQ1ZDk2MDhmNTU0N2U4NiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucworKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMTE0LDMw
ICsyMTE0LDMyIEBAIHBlcmZvcm1hbmNlLWFwaS9wYWludC10aW1pbmcvcGFpbnQtdGltaW5nLXdp
dGgtd29ya2VyLmh0bWwgWyBGYWlsdXJlIF0KIHBlcmZvcm1hbmNlLWFwaS9wYWludC10aW1pbmcv
cGVyZm9ybWFuY2Utb2JzZXJ2ZXItZmlyc3QtY29udGVudGZ1bC1wYWludC5odG1sIFsgVGltZW91
dCBdCiBzdG9yYWdlL2luZGV4ZWRkYi9zdG9yYWdlLWxpbWl0LXdpdGgtaW5kaWNlcy5odG1sIFsg
RmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9jYW52YXMvZHJhd2luZ2J1ZmZlci10
ZXN0Lmh0bWwgWyBTa2lwIF0gIyBUaW1lb3V0Ci13ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9jb250
ZXh0L2NvbnRleHQtbG9zdC1yZXN0b3JlZC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9j
b25mb3JtYW5jZS9jb250ZXh0L3ByZW11bHRpcGx5YWxwaGEtdGVzdC5odG1sIFsgRmFpbHVyZSBd
Cit3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy1lbGVtZW50LWluZGV4LXVp
bnQuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy9v
ZXMtdGV4dHVyZS1mbG9hdC13aXRoLXZpZGVvLmh0bWwgWyBTa2lwIF0gIyBUaW1lb3V0Ci13ZWJn
bC8xLjAuMy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWZsb2F0Lmh0bWwgWyBG
YWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvb2VzLXRleHR1cmUt
aGFsZi1mbG9hdC13aXRoLXZpZGVvLmh0bWwgWyBTa2lwIF0gIyBUaW1lb3V0Ci13ZWJnbC8xLjAu
My9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWhhbGYtZmxvYXQuaHRtbCBbIEZh
aWx1cmUgXQotd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1jb21wcmVz
c2VkLXRleHR1cmUtc2l6ZS1saW1pdC5odG1sIFsgRmFpbHVyZSBdCit3ZWJnbC8xLjAuMy9jb25m
b3JtYW5jZS9nbHNsL2J1Z3MvYXJyYXktb2Ytc3RydWN0LXdpdGgtaW50LWZpcnN0LXBvc2l0aW9u
Lmh0bWwgWyBTa2lwIF0gIyBUaGlzIHRlc3QgbWFrZXMgRHVtcFJlbmRlclRyZWUgcHJvY2VzcyB1
bmFibGUgdG8gZXhpdAogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvZ2xzbC9idWdzL2xvbmctZXhw
cmVzc2lvbnMtc2hvdWxkLW5vdC1jcmFzaC5odG1sIFsgU2tpcCBdICMgVGltZW91dAotd2ViZ2wv
MS4wLjMvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvY29weVRleEltYWdlMkRCYWRBcmdzLmh0
bWwgWyBTa2lwIF0gIyBUaW1lb3V0Cit3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9taXNjL3VuaW5p
dGlhbGl6ZWQtdGVzdC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9t
b3JlL2Z1bmN0aW9ucy9yZWFkUGl4ZWxzQmFkQXJncy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8x
LjAuMy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy90ZXhJbWFnZTJESFRNTC5odG1sIFsgRmFp
bHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy90ZXhTdWJJbWFn
ZTJESFRNTC5odG1sIFsgRmFpbHVyZSBdCi13ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9tb3JlL2Z1
bmN0aW9ucy90ZXhTdWJJbWFnZTJESFRNTEJhZEFyZ3MuaHRtbCBbIFNraXAgXSAjIENyYXNoCi13
ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9yZW5kZXJidWZmZXJzL2ZlZWRiYWNrLWxvb3AuaHRtbCBb
IEZhaWx1cmUgXQord2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvcHJvZ3JhbXMvcHJvZ3JhbS10ZXN0
Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3JlbmRlcmJ1ZmZlcnMv
ZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQuaHRtbCBbIEZhaWx1cmUgXQotd2ViZ2wvMS4w
LjMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL3BvaW50LW5vLWF0dHJpYnV0ZXMuaHRtbCBbIEZhaWx1
cmUgXQord2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvcmVuZGVyYnVmZmVycy9mcmFtZWJ1ZmZlci1z
dGF0ZS1yZXN0b3JhdGlvbi5odG1sIFsgRmFpbHVyZSBdCit3ZWJnbC8xLjAuMy9jb25mb3JtYW5j
ZS9yZW5kZXJidWZmZXJzL3JlbmRlcmJ1ZmZlci1pbml0aWFsaXphdGlvbi5odG1sIFsgRmFpbHVy
ZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy9kZWZhdWx0LXRleHR1cmUuaHRt
bCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtMmQtd2l0aC12aWRlby1yZ2I1NjUuaHRtbCBbIFNraXAgXSAjIFRpbWVv
dXQKIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLTJkLXdpdGgtdmlkZW8tcmdiYTQ0NDQuaHRtbCBbIFNraXAgXSAjIFRpbWVvdXQKIHdlYmds
LzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdp
dGgtdmlkZW8tcmdiYTU1NTEuaHRtbCBbIFNraXAgXSAjIFRpbWVvdXQKIHdlYmdsLzEuMC4zL2Nv
bmZvcm1hbmNlL3RleHR1cmVzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtdmlkZW8u
aHRtbCBbIFNraXAgXSAjIFRpbWVvdXQKLXdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVz
L3RleC1zdWItaW1hZ2UtMmQtYmFkLWFyZ3MuaHRtbCBbIFNraXAgXSAjIENyYXNoCi13ZWJnbC8x
LjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLWNvcHlpbmctZmVlZGJhY2stbG9vcHMu
aHRtbCBbIEZhaWx1cmUgXQord2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4dHVy
ZS1hdHRhY2htZW50LWZvcm1hdHMuaHRtbCBbIEZhaWx1cmUgXQord2ViZ2wvMS4wLjMvY29uZm9y
bWFuY2UvdGV4dHVyZXMvdGV4dHVyZS1taXBzLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4z
L2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHR1cmUtdXBsb2FkLXNpemUuaHRtbCBbIFNraXAgXSAj
IFRpbWVvdXQKLXdlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZXh0LXRleHR1cmUtY29tcHJl
c3Npb24tcmd0Yy5odG1sIFsgRmFpbHVyZSBdCi13ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25z
L3MzdGMtYW5kLXJndGMuaHRtbCBbIEZhaWx1cmUgXQord2ViZ2wvc21lbGwtdGVzdC5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJnbC93ZWJnbC1iYWNraW5nLXN0b3JlLXNpemUtdXBkYXRl
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmdsL3dlYmdsLWJvcmRlci5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCit3ZWJnbC93ZWJnbC1ib3gtc2hhZG93Lmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KK3dlYmdsL3dlYmdsLXBhZGRpbmcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQor
d2ViZ2wvd2ViZ2wtdGV4dHVyZS1pbWFnZS1idWZmZXItcmV1c2UuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQogd2ViZ2wvd2ViZ2wtdmVydGV4LWFycmF5LW9iamVjdC1kZWZpbmVkLmh0bWwgWyBG
YWlsdXJlIF0KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAzODk1MTBk
NWIxODkwMTI4OGUyMzFjOWMwM2FkNDBjMTI5YjU3MGE0Li45YWM1NmZiMWNjOGUwY2EyOWIxZDEy
ZDRiZmJlMDY2OGZjMTc2ODExIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTItMDkgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmku
RnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgW1dpbkNhaXJvXSBFbmFibGUgVVNFX0FOR0xFCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk0MjEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9j
bWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2U6CisKIDIwMjAtMTItMDcgIERvbiBPbG1zdGVhZCAg
PGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdIFJlbW92ZSBXRUJLSVRf
V1JBUF9TT1VSQ0VMSVNUCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416037</attachid>
            <date>2020-12-11 12:50:35 -0800</date>
            <delta_ts>2020-12-16 09:51:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219421-20201212055034.patch</filename>
            <type>text/plain</type>
            <size>33649</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggNTM0MzA3Y2YxZTdhOGVjZGRjNDFkZTBjN2E2MjdlMThmMjRjZmI1YS4uZTM4YjgzN2ZjYmZi
YmEzNzNhN2E3NGQ3MDQyMGIxYzBlZDhkNDJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTEyLTExICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3Jp
LkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIFtXaW5DYWlyb10gRW5hYmxlIFVTRV9BTkdMRQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NDIxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDogQWRkZWQgZW50cnlfcG9pbnRzX2VnbF9leHQuaCB0byBsaWJnbGVzdjJfZW50cnlf
cG9pbnRzX2hlYWRlcnMuCisKIDIwMjAtMTItMDQgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIE1vcmUgRkFMTEJBQ0tfUExBVEZPUk0gYWRvcHRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA1YmE1ZGRlODUzMTUxZGE4YjRkMjE1ZmRlMGQ3YzE5NWZkMWUwZjI0Li43YTRjMTNlNzY2
NWU0YzVkYTQ5OTk3MGQ0OTc1OTM5MjZkZjg0NmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMjAtMTItMTEgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+
CisKKyAgICAgICAgW1dpbkNhaXJvXSBFbmFibGUgVVNFX0FOR0xFCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk0MjEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTd2l0Y2ggR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wgaW1wbGVtZW50YXRpb24gZnJvbSBvbGQgb25lCisgICAgICAgIChHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEVTLmNwcCkgdG8gbmV3IG9uZQorICAgICAgICAoR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5jcHApLCB3aGljaCBpcyB1c2luZyBBTkdMRSdzIGludGVybmFsIEFQSQorICAgICAgICBh
bmQgdmVyaWZpY2F0aW9uIGNvZGUsIGZvciBXaW5DYWlybyBwb3J0LiBJIHdpbGwgZW5hYmxlIFdl
YkdMMiBmb3IKKyAgICAgICAgV2luQ2Fpcm8gaW4gYSBmb2xsb3ctdXAgcGF0Y2guCisKKyAgICAg
ICAgR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUgaXMgbm90IGF2YWlsYWJsZSBmb3IgQU5HTEUg
RDNEIGJhY2tlbmQuCisgICAgICAgIFVzZSBHTF9URVhUVVJFXzJEIGluc3RlYWQuCisKKyAgICAg
ICAgQWRkIGEgbmV3IGNsYXNzIFdlYkNvcmU6OkFOR0xFQ29udGV4dCBieSBjb3B5aW5nCisgICAg
ICAgIE5pY29zaWE6OkdDR0xBTkdMRUxheWVyOjpBTkdMRUNvbnRleHQuIEl0J2QgYmUgYmV0dGVy
IHRvIG1lcmdlCisgICAgICAgIHRoZW0gYWZ0ZXIgR1RLIGFuZCBXUEUgd2lsbCBhbHNvIHN3aXRj
aC4KKworICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIHBsYXRmb3JtL1Rl
eHR1cmVNYXBwZXIuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9BTkdMRUNvbnRleHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkFOR0xFQ29udGV4dDo6ZXJyb3JTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVDb250
ZXh0OjpsYXN0RXJyb3JTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVDb250ZXh0Ojpj
cmVhdGVDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFQ29udGV4dDo6QU5HTEVDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFQ29udGV4dDo6fkFOR0xFQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBTkdMRUNvbnRleHQ6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBTkdMRUNvbnRleHQ6OnBsYXRmb3JtQ29udGV4dCBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0FOR0xFQ29udGV4dC5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6aXNHTEVTMkNvbXBsaWFudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3Jt
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxh
eWVyOjpUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyOjpwYWludFRvVGV4dHVyZU1hcHBlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZv
cm1MYXllci5oOgorCiAyMDIwLTEyLTExICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlp
QHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb10gRW5hYmxlIGFjY2VsZXJhdGVkIFdlYkdM
IGNhbnZhcwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DTWFrZUxpc3RzLnR4dAppbmRleCBiNmYyY2M4
MzBmMzk5MjhmYzU2MmYzY2VlOTljODY1MDU1M2Q5NGRjLi42YThmYTJiMmFjMDBmNWJhYWNiMjFh
NjBmODQ5OGQ5YTMxODRlNWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DTWFrZUxpc3RzLnR4
dApAQCAtMTcwLDYgKzE3MCw3IEBAIGVuZGlmICgpCiBpZiAoVVNFX0FOR0xFX1dFQkdMKQogICAg
IHNldChsaWJnbGVzdjJfZW50cnlfcG9pbnRzX2hlYWRlcnMKICAgICAgICAgc3JjL2xpYkdMRVN2
Mi9lbnRyeV9wb2ludHNfZWdsLmgKKyAgICAgICAgc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNf
ZWdsX2V4dC5oCiAgICAgICAgIHNyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfMl8wX2F1
dG9nZW4uaAogICAgICAgICBzcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMF9hdXRv
Z2VuLmgKICAgICAgICAgc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc19leHRfYXV0b2dl
bi5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDU5ZTA0MzQ4NWI4MWQ5ZTA0MzYwN2Jk
NmJhMGEyYzM2ZDNiNDcwZTAuLmY1YmE2ZmJiMTI3ZjU1MWE1NWQ2Zjc1NDEzYWQ2ZTY4MTk0OGI4
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCkBAIC02LDYgKzYsNyBAQCBsaXN0KEFQUEVO
RCBXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElS
fS9hY2Nlc3NpYmlsaXR5L3dpbiIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGFnZS93aW4iCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2VnbCIKKyAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnR5cGUiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3dpbiIKQEAg
LTM3LDEzICszOCwxMiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKIAorICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcAorICAgIHBsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvVGVtcG9yYXJ5QU5HTEVTZXR0aW5nLmNwcAorCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKIAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xQcml2YXRlLmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9UZW1wb3JhcnlPcGVuR0xTZXR0aW5nLmNwcAogCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVVdGlsaXRpZXMuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQppbmRleCA0ZDUzZDk5OWViNTlmNmRjZjk0
ZTViZDk1NTFkZDZhZmRkYjVlOGUxLi5kMmJjZDlhZjA4MmQyYjdlNjZhOTI2YjIxOGYyNDA4NTBi
NmE5OTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVy
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2UK
QEAgLTUsNiArNSw4IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9JTkNMVURFX0RJUkVD
VE9SSUVTCiAKIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvTmljb3NpYUFuaW1hdGlvbi5jcHAKKworICAgIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9BTkdMRUNvbnRleHQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0Jp
dG1hcFRleHR1cmUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1
cmVQb29sLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXIuY3BwCkBAIC0xOCw2ICsyMCw4IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUwogCiBsaXN0KEFQUEVORCBXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFBbmltYXRpb24uaAorCisgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0FOR0xFQ29udGV4dC5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9DbGlwU3RhY2suaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDMw
OWE1MzA5YjY0MGEzZDZhMjgxNDFjYTdiMWE3NWRiNDZlOWY5NTEuLjZkOWRiM2RkMDUzZDM3NTI3
YjI1OWE5M2MzNzFjNGRiMzM5MzVhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwCkBAIC0yMjMsMjAgKzIyMywyMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAgICAgICBnbDo6QmluZEZyYW1lYnVm
ZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX2Zibyk7CiAgICAgfSBlbHNlCiAgICAgICAgIGdsOjpGcmFt
ZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIGRy
YXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCksIG1fdGV4dHVyZSwgMCk7Ci0jZWxpZiBQTEFURk9S
TShHVEspCi0gICAgZ2w6OkJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCBt
X3RleHR1cmUpOwotICAgIGdsOjpUZXhJbWFnZTJEKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xF
LCAwLCBtX2ludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0
LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKLSAgICBnbDo6RnJhbWVidWZmZXJUZXh0dXJlMkQoR0xf
RlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFX1JFQ1RBTkdMRV9B
TkdMRSwgbV90ZXh0dXJlLCAwKTsKKyNlbHNlCisgICAgR0xlbnVtIHRleHR1cmVUYXJnZXQgPSBk
cmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOworICAgIEdMdWludCBpbnRlcm5hbENvbG9yRm9y
bWF0ID0gdGV4dHVyZVRhcmdldCA9PSBHTF9URVhUVVJFXzJEID8gY29sb3JGb3JtYXQgOiBtX2lu
dGVybmFsQ29sb3JGb3JtYXQ7CisgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1f
dGV4dHVyZSk7CisgICAgZ2w6OlRleEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwgaW50ZXJuYWxD
b2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZ
VEUsIDApOworICAgIGdsOjpGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xf
Q09MT1JfQVRUQUNITUVOVDAsIHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZSwgMCk7CisjaWYgVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChtX2NvbXBvc2l0b3JUZXh0dXJlKSB7Ci0g
ICAgICAgIGdsOjpCaW5kVGV4dHVyZShHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwgbV9jb21w
b3NpdG9yVGV4dHVyZSk7Ci0gICAgICAgIGdsOjpUZXhJbWFnZTJEKEdMX1RFWFRVUkVfUkVDVEFO
R0xFX0FOR0xFLCAwLCBtX2ludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNv
bG9yRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKLSAgICAgICAgZ2w6OkJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCAwKTsKLSAgICAgICAgZ2w6OkJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCBtX2ludGVybWVkaWF0ZVRleHR1cmUpOwotICAg
ICAgICBnbDo6VGV4SW1hZ2UyRChHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwgMCwgbV9pbnRl
cm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdO
RURfQllURSwgMCk7Ci0gICAgICAgIGdsOjpCaW5kVGV4dHVyZShHTF9URVhUVVJFX1JFQ1RBTkdM
RV9BTkdMRSwgMCk7CisgICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX2Nv
bXBvc2l0b3JUZXh0dXJlKTsKKyAgICAgICAgZ2w6OlRleEltYWdlMkQodGV4dHVyZVRhcmdldCwg
MCwgbV9pbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwg
R0xfVU5TSUdORURfQllURSwgMCk7CisgICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFy
Z2V0LCAwKTsKKyAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1faW50ZXJt
ZWRpYXRlVGV4dHVyZSk7CisgICAgICAgIGdsOjpUZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQsIDAs
IG1faW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdM
X1VOU0lHTkVEX0JZVEUsIDApOworICAgICAgICBnbDo6QmluZFRleHR1cmUodGV4dHVyZVRhcmdl
dCwgMCk7CiAgICAgfQotI2Vsc2UKLSNlcnJvciBGSVhNRTogUG9ydCB0byBub24tQ29jb2EgcGxh
dGZvcm1zLgorI2VuZGlmCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKICAgICBhdHRhY2hE
ZXB0aEFuZFN0ZW5jaWxCdWZmZXJJZk5lZWRlZChpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCwg
d2lkdGgsIGhlaWdodCk7CkBAIC0xMDcwLDEyICsxMDcyLDE2IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm1HTE9iamVjdCBzaGFkZXIpCiAgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCisjaWYgIVBMQVRG
T1JNKFdJTikKICAgICAvLyBXZSBuZWVkIHRoZSBBTkdMRV90ZXh0dXJlX3JlY3RhbmdsZSBleHRl
bnNpb24gdG8gc3VwcG9ydCBJT1N1cmZhY2UKICAgICAvLyBiYWNrYnVmZmVycywgYnV0IHdlIGRv
bid0IHdhbnQgaXQgZXhwb3NlZCB0byBXZWJHTCB1c2VyIHNoYWRlcnMuCiAgICAgLy8gVGVtcG9y
YXJpbHkgZGlzYWJsZSBpdCBkdXJpbmcgc2hhZGVyIGNvbXBpbGF0aW9uLgogICAgIGdsOjpEaXNh
YmxlKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFKTsKKyNlbmRpZgogICAgIGdsOjpDb21waWxl
U2hhZGVyKHNoYWRlcik7CisjaWYgIVBMQVRGT1JNKFdJTikKICAgICBnbDo6RW5hYmxlKEdMX1RF
WFRVUkVfUkVDVEFOR0xFX0FOR0xFKTsKKyNlbmRpZgogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpjb21waWxlU2hhZGVyRGlyZWN0KFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCBmNTI0ZGU5MmRjZDlhNTk4YjBm
YmVmOGQzM2I5YzQ0MDliOGNkMWIwLi5jZWVhZGU3MmI3ZjcwOTAxYWQ0ZTQyMDY2NjAwMjNlMmYx
MmI1ZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtMTAyLDEyICsx
MDIsMTQgQEAgcHVibGljOgogICAgIENBTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBmaW5h
bCB7IHJldHVybiByZWludGVycHJldF9jYXN0PENBTGF5ZXIqPihtX3dlYkdMTGF5ZXIuZ2V0KCkp
OyB9CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkgcGxhdGZvcm1EaXNwbGF5
KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5T2JqOyB9CiAgICAgUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHRHTENvbmZpZyBwbGF0Zm9ybUNvbmZpZygpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlnT2Jq
OyB9Ci0gICAgc3RhdGljIEdDR0xlbnVtIGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7CiAg
ICAgc3RhdGljIEdDR0xlbnVtIGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnkoKTsKICAg
ICBzdGF0aWMgR0NHTGludCBFR0xEcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOwogI2Vsc2UK
ICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3QgZmluYWw7CiAjZW5kaWYK
KyNpZiBVU0UoQU5HTEUpCisgICAgc3RhdGljIEdDR0xlbnVtIGRyYXdpbmdCdWZmZXJUZXh0dXJl
VGFyZ2V0KCk7CisjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZW51bSBj
bGFzcyBSZWxlYXNlQmVoYXZpb3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0FOR0xFQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvQU5HTEVDb250ZXh0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZTY2Njg3
NGM2NjRjZWVmZGIyMTlkYWIxY2JhZGYyNmUyMjUyZTY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0FOR0xFQ29udGV4dC5jcHAKQEAg
LTAsMCArMSwxNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggTWV0cm9sb2dpY2FsIEdy
b3VwIEIuVi4KKyAqIENvcHlyaWdodCAoQykgMjAxOCwgMjAxOSBJZ2FsaWEgUy5MLgorICogQ29w
eXJpZ2h0IChDKSAyMDA5LTIwMTggQXBwbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNv
bnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAqICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQU5HTEVDb250ZXh0Lmgi
CisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpICYmIFVTRShBTkdMRSkgJiYgIVVTRShOSUNPU0lB
KQorCisjaW5jbHVkZSAiQU5HTEVIZWFkZXJzLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBjaGFy
KiBBTkdMRUNvbnRleHQ6OmVycm9yU3RyaW5nKGludCBzdGF0dXNDb2RlKQoreworICAgIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKGludCkgPj0gc2l6ZW9mKEVHTGludCksICJFR0xpbnQgbXVzdCBub3Qg
YmUgd2lkZXIgdGhhbiBpbnQiKTsKKyAgICBzd2l0Y2ggKHN0YXR1c0NvZGUpIHsKKyNkZWZpbmUg
Q0FTRV9SRVRVUk5fU1RSSU5HKG5hbWUpIGNhc2UgbmFtZTogcmV0dXJuICNuYW1lCisgICAgICAg
IC8vIGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L0VHTC9zZGsvZG9jcy9tYW4vaHRt
bC9lZ2xHZXRFcnJvci54aHRtbAorICAgICAgICBDQVNFX1JFVFVSTl9TVFJJTkcoRUdMX1NVQ0NF
U1MpOworICAgICAgICBDQVNFX1JFVFVSTl9TVFJJTkcoRUdMX05PVF9JTklUSUFMSVpFRCk7Cisg
ICAgICAgIENBU0VfUkVUVVJOX1NUUklORyhFR0xfQkFEX0FDQ0VTUyk7CisgICAgICAgIENBU0Vf
UkVUVVJOX1NUUklORyhFR0xfQkFEX0FMTE9DKTsKKyAgICAgICAgQ0FTRV9SRVRVUk5fU1RSSU5H
KEVHTF9CQURfQVRUUklCVVRFKTsKKyAgICAgICAgQ0FTRV9SRVRVUk5fU1RSSU5HKEVHTF9CQURf
Q09OVEVYVCk7CisgICAgICAgIENBU0VfUkVUVVJOX1NUUklORyhFR0xfQkFEX0NPTkZJRyk7Cisg
ICAgICAgIENBU0VfUkVUVVJOX1NUUklORyhFR0xfQkFEX0NVUlJFTlRfU1VSRkFDRSk7CisgICAg
ICAgIENBU0VfUkVUVVJOX1NUUklORyhFR0xfQkFEX0RJU1BMQVkpOworICAgICAgICBDQVNFX1JF
VFVSTl9TVFJJTkcoRUdMX0JBRF9TVVJGQUNFKTsKKyAgICAgICAgQ0FTRV9SRVRVUk5fU1RSSU5H
KEVHTF9CQURfTUFUQ0gpOworICAgICAgICBDQVNFX1JFVFVSTl9TVFJJTkcoRUdMX0JBRF9QQVJB
TUVURVIpOworICAgICAgICBDQVNFX1JFVFVSTl9TVFJJTkcoRUdMX0JBRF9OQVRJVkVfUElYTUFQ
KTsKKyAgICAgICAgQ0FTRV9SRVRVUk5fU1RSSU5HKEVHTF9CQURfTkFUSVZFX1dJTkRPVyk7Cisg
ICAgICAgIENBU0VfUkVUVVJOX1NUUklORyhFR0xfQ09OVEVYVF9MT1NUKTsKKyN1bmRlZiBDQVNF
X1JFVFVSTl9TVFJJTkcKKyAgICBkZWZhdWx0OiByZXR1cm4gIlVua25vd24gRUdMIGVycm9yIjsK
KyAgICB9Cit9CisKK2NvbnN0IGNoYXIqIEFOR0xFQ29udGV4dDo6bGFzdEVycm9yU3RyaW5nKCkK
K3sKKyAgICByZXR1cm4gZXJyb3JTdHJpbmcoRUdMX0dldEVycm9yKCkpOworfQorCitzdGQ6OnVu
aXF1ZV9wdHI8QU5HTEVDb250ZXh0PiBBTkdMRUNvbnRleHQ6OmNyZWF0ZUNvbnRleHQoRUdMQ29u
dGV4dCBzaGFyaW5nQ29udGV4dCwgYm9vbCBpc0ZvcldlYkdMMikKK3sKKyAgICBFR0xEaXNwbGF5
IGRpc3BsYXkgPSBFR0xfR2V0RGlzcGxheShFR0xfREVGQVVMVF9ESVNQTEFZKTsKKyAgICBpZiAo
ZGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBFR0xpbnQgbWFqb3JWZXJzaW9uLCBtaW5vclZlcnNpb247CisgICAgaWYgKEVHTF9Jbml0aWFs
aXplKGRpc3BsYXksICZtYWpvclZlcnNpb24sICZtaW5vclZlcnNpb24pID09IEVHTF9GQUxTRSkg
eworICAgICAgICBMT0coV2ViR0wsICJFR0xEaXNwbGF5IEluaXRpYWxpemF0aW9uIGZhaWxlZC4i
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIExPRyhXZWJHTCwgIkFOR0xF
IGluaXRpYWxpc2VkIE1ham9yOiAlZCBNaW5vcjogJWQiLCBtYWpvclZlcnNpb24sIG1pbm9yVmVy
c2lvbik7CisKKyAgICBjb25zdCBjaGFyKiBkaXNwbGF5RXh0ZW5zaW9ucyA9IEVHTF9RdWVyeVN0
cmluZyhkaXNwbGF5LCBFR0xfRVhURU5TSU9OUyk7CisgICAgTE9HKFdlYkdMLCAiRXh0ZW5zaW9u
czogJXMiLCBkaXNwbGF5RXh0ZW5zaW9ucyk7CisKKyAgICBFR0xDb25maWcgY29uZmlnOworICAg
IEVHTGludCBjb25maWdBdHRyaWJ1dGVzW10gPSB7CisgICAgICAgIEVHTF9SRU5ERVJBQkxFX1RZ
UEUsIEVHTF9PUEVOR0xfRVMyX0JJVCwKKyAgICAgICAgRUdMX1JFRF9TSVpFLCA4LAorICAgICAg
ICBFR0xfR1JFRU5fU0laRSwgOCwKKyAgICAgICAgRUdMX0JMVUVfU0laRSwgOCwKKyAgICAgICAg
RUdMX0FMUEhBX1NJWkUsIDgsCisgICAgICAgIEVHTF9OT05FCisgICAgfTsKKyAgICBFR0xpbnQg
bnVtYmVyQ29uZmlnc1JldHVybmVkID0gMDsKKyAgICBFR0xfQ2hvb3NlQ29uZmlnKGRpc3BsYXks
IGNvbmZpZ0F0dHJpYnV0ZXMsICZjb25maWcsIDEsICZudW1iZXJDb25maWdzUmV0dXJuZWQpOwor
ICAgIGlmIChudW1iZXJDb25maWdzUmV0dXJuZWQgIT0gMSkgeworICAgICAgICBMT0coV2ViR0ws
ICJFR0xDb25maWcgSW5pdGlhbGl6YXRpb24gZmFpbGVkLiIpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9CisgICAgTE9HKFdlYkdMLCAiR290IEVHTENvbmZpZyIpOworCisgICAgRUdM
X0JpbmRBUEkoRUdMX09QRU5HTF9FU19BUEkpOworICAgIGlmIChFR0xfR2V0RXJyb3IoKSAhPSBF
R0xfU1VDQ0VTUykgeworICAgICAgICBMT0coV2ViR0wsICJVbmFibGUgdG8gYmluZCB0byBPUEVO
R0xfRVNfQVBJIik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIFZlY3Rv
cjxFR0xpbnQ+IGNvbnRleHRBdHRyaWJ1dGVzOworICAgIGlmIChpc0ZvcldlYkdMMikgeworICAg
ICAgICBjb250ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04p
OworICAgICAgICBjb250ZXh0QXR0cmlidXRlcy5hcHBlbmQoMyk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgY29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9O
KTsKKyAgICAgICAgY29udGV4dEF0dHJpYnV0ZXMuYXBwZW5kKDIpOworICAgICAgICAvLyBBTkdM
RSB3aWxsIHVwZ3JhZGUgdGhlIGNvbnRleHQgdG8gRVMzIGF1dG9tYXRpY2FsbHkgdW5sZXNzIHRo
aXMgaXMgc3BlY2lmaWVkLgorICAgICAgICBjb250ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX0NP
TlRFWFRfT1BFTkdMX0JBQ0tXQVJEU19DT01QQVRJQkxFX0FOR0xFKTsKKyAgICAgICAgY29udGV4
dEF0dHJpYnV0ZXMuYXBwZW5kKEVHTF9GQUxTRSk7CisgICAgfQorICAgIGNvbnRleHRBdHRyaWJ1
dGVzLmFwcGVuZChFR0xfQ09OVEVYVF9XRUJHTF9DT01QQVRJQklMSVRZX0FOR0xFKTsKKyAgICBj
b250ZXh0QXR0cmlidXRlcy5hcHBlbmQoRUdMX1RSVUUpOworICAgIGlmIChzdHJzdHIoZGlzcGxh
eUV4dGVuc2lvbnMsICJFR0xfQU5HTEVfcG93ZXJfcHJlZmVyZW5jZSIpKSB7CisgICAgICAgIGNv
bnRleHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xfUE9XRVJfUFJFRkVSRU5DRV9BTkdMRSk7CisgICAg
ICAgIC8vIEVHTF9MT1dfUE9XRVJfQU5HTEUgaXMgdGhlIGRlZmF1bHQuIENoYW5nZSB0bworICAg
ICAgICAvLyBFR0xfSElHSF9QT1dFUl9BTkdMRSBpZiBkZXNpcmVkLgorICAgICAgICBjb250ZXh0
QXR0cmlidXRlcy5hcHBlbmQoRUdMX0xPV19QT1dFUl9BTkdMRSk7CisgICAgfQorICAgIGNvbnRl
eHRBdHRyaWJ1dGVzLmFwcGVuZChFR0xfTk9ORSk7CisKKyAgICBFR0xDb250ZXh0IGNvbnRleHQg
PSBFR0xfQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBjb25maWcsIHNoYXJpbmdDb250ZXh0LCBjb250
ZXh0QXR0cmlidXRlcy5kYXRhKCkpOworICAgIGlmIChjb250ZXh0ID09IEVHTF9OT19DT05URVhU
KSB7CisgICAgICAgIExPRyhXZWJHTCwgIkVHTENvbnRleHQgSW5pdGlhbGl6YXRpb24gZmFpbGVk
LiIpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgTE9HKFdlYkdMLCAiR290
IEVHTENvbnRleHQiKTsKKworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QU5HTEVDb250ZXh0
PihuZXcgQU5HTEVDb250ZXh0KGRpc3BsYXksIGNvbnRleHQsIEVHTF9OT19TVVJGQUNFKSk7Cit9
CisKK0FOR0xFQ29udGV4dDo6QU5HTEVDb250ZXh0KEVHTERpc3BsYXkgZGlzcGxheSwgRUdMQ29u
dGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZhY2UpCisgICAgOiBtX2Rpc3BsYXkoZGlzcGxh
eSkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9zdXJmYWNlKHN1cmZhY2UpCit7
Cit9CisKK0FOR0xFQ29udGV4dDo6fkFOR0xFQ29udGV4dCgpCit7CisgICAgaWYgKG1fY29udGV4
dCkgeworICAgICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKKyAg
ICAgICAgRUdMX01ha2VDdXJyZW50KG1fZGlzcGxheSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19T
VVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7CisgICAgICAgIEVHTF9EZXN0cm95Q29udGV4dChtX2Rp
c3BsYXksIG1fY29udGV4dCk7CisgICAgfQorCisgICAgaWYgKG1fc3VyZmFjZSkKKyAgICAgICAg
RUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheSwgbV9zdXJmYWNlKTsKK30KKworYm9vbCBBTkdM
RUNvbnRleHQ6Om1ha2VDb250ZXh0Q3VycmVudCgpCit7CisgICAgQVNTRVJUKG1fY29udGV4dCk7
CisKKyAgICBpZiAoRUdMX0dldEN1cnJlbnRDb250ZXh0KCkgIT0gbV9jb250ZXh0KQorICAgICAg
ICByZXR1cm4gRUdMX01ha2VDdXJyZW50KG1fZGlzcGxheSwgbV9zdXJmYWNlLCBtX3N1cmZhY2Us
IG1fY29udGV4dCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0VHTENvbnRleHQgQU5HTEVDb250
ZXh0OjpwbGF0Zm9ybUNvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRleHQ7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQU5HTEVDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQU5HTEVDb250ZXh0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTQyY2MxMDI1ZThmYjI3OWEzOGMzYTBmNmU3YTNiMGM4MTI3MGU0ZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9BTkdMRUNvbnRl
eHQuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IE1ldHJvbG9n
aWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgsIDIwMTkgSWdhbGlhIFMuTC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5j
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgKiAgICB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBV
U0UoVEVYVFVSRV9NQVBQRVIpICYmIFVTRShBTkdMRSkgJiYgIVVTRShOSUNPU0lBKQorCisjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK3R5cGVkZWYgdm9pZCAqRUdMQ29uZmlnOwordHlw
ZWRlZiB2b2lkICpFR0xDb250ZXh0OwordHlwZWRlZiB2b2lkICpFR0xEaXNwbGF5OwordHlwZWRl
ZiB2b2lkICpFR0xTdXJmYWNlOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFOR0xF
Q29udGV4dCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQU5HTEVDb250ZXh0KTsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgY29uc3QgY2hhciogZXJyb3JTdHJpbmcoaW50IHN0YXR1c0NvZGUpOwor
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBsYXN0RXJyb3JTdHJpbmcoKTsKKworICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8QU5HTEVDb250ZXh0PiBjcmVhdGVDb250ZXh0KEVHTENvbnRleHQgc2hh
cmluZ0NvbnRleHQsIGJvb2wgaXNGb3JXZWJHTDIpOworICAgIH5BTkdMRUNvbnRleHQoKTsKKwor
ICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgRUdMQ29udGV4dCBwbGF0Zm9ybUNv
bnRleHQoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBBTkdMRUNvbnRleHQoRUdMRGlzcGxheSwg
RUdMQ29udGV4dCwgRUdMU3VyZmFjZSk7CisKKyAgICBFR0xEaXNwbGF5IG1fZGlzcGxheSB7IG51
bGxwdHIgfTsKKyAgICBFR0xDb250ZXh0IG1fY29udGV4dCB7IG51bGxwdHIgfTsKKyAgICBFR0xT
dXJmYWNlIG1fc3VyZmFjZSB7IG51bGxwdHIgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBw
ZXIuY3BwCmluZGV4IDg3MzE0MGIwZDk1MjQ3NDc4YTIxZjE0Y2E5OThmNjcxNmVlN2FkN2EuLjZj
NTU0NGJkOTY0MThhZjY3MDk0YTUzZDE4NTgwMWUyZjEwMjBiOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1
cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCkBAIC0yLDYgKzIsNyBAQAogICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJ
bnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTEzLDYgKzExNCw3IEBAIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTChHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMgYXR0CiAgICAgOiBH
cmFwaGljc0NvbnRleHRHTChhdHRyaWJ1dGVzLCBkZXN0aW5hdGlvbiwgc2hhcmVkQ29udGV4dCkK
IHsKICAgICBBU1NFUlRfVU5VU0VEKHNoYXJlZENvbnRleHQsICFzaGFyZWRDb250ZXh0KTsKKyAg
ICBtX2lzRm9yV2ViR0wyID0gYXR0cmlidXRlcy5pc1dlYkdMMjsKICNpZiBVU0UoTklDT1NJQSkK
ICAgICBtX25pY29zaWFMYXllciA9IFdURjo6bWFrZVVuaXF1ZTxOaWNvc2lhOjpHQ0dMQU5HTEVM
YXllcj4oKnRoaXMsIGRlc3RpbmF0aW9uKTsKICNlbHNlCkBAIC0xMjUsMTQgKzEyNywxNSBAQCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzIGF0dAogICAgIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRl
cygpOyAvLyBUaGV5IG1heSBoYXZlIGNoYW5nZWQgZHVyaW5nIHZhbGlkYXRpb24uCiAKICAgICBp
ZiAoZGVzdGluYXRpb24gPT0gRGVzdGluYXRpb246Ok9mZnNjcmVlbikgeworICAgICAgICBHTGVu
dW0gdGV4dHVyZVRhcmdldCA9IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7CiAgICAgICAg
IC8vIENyZWF0ZSBhIHRleHR1cmUgdG8gcmVuZGVyIGludG8uCiAgICAgICAgIGdsOjpHZW5UZXh0
dXJlcygxLCAmbV90ZXh0dXJlKTsKLSAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
UkVDVEFOR0xFX0FOR0xFLCBtX3RleHR1cmUpOwotICAgICAgICBnbDo6VGV4UGFyYW1ldGVyZihH
TF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5F
QVIpOwotICAgICAgICBnbDo6VGV4UGFyYW1ldGVyZihHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdM
RSwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOwotICAgICAgICBnbDo6VGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRSwgR0xfVEVYVFVSRV9XUkFQX1MsIEdM
X0NMQU1QX1RPX0VER0UpOwotICAgICAgICBnbDo6VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX1JF
Q1RBTkdMRV9BTkdMRSwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwotICAg
ICAgICBnbDo6QmluZFRleHR1cmUoR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsIDApOworICAg
ICAgICBnbDo6QmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV90ZXh0dXJlKTsKKyAgICAgICAg
Z2w6OlRleFBhcmFtZXRlcmYodGV4dHVyZVRhcmdldCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBH
TF9MSU5FQVIpOworICAgICAgICBnbDo6VGV4UGFyYW1ldGVyZih0ZXh0dXJlVGFyZ2V0LCBHTF9U
RVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgICAgIGdsOjpUZXhQYXJhbWV0ZXJp
KHRleHR1cmVUYXJnZXQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAg
ICAgICAgZ2w6OlRleFBhcmFtZXRlcmkodGV4dHVyZVRhcmdldCwgR0xfVEVYVFVSRV9XUkFQX1Qs
IEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICBnbDo6QmluZFRleHR1cmUodGV4dHVyZVRhcmdl
dCwgMCk7CiAKICAgICAgICAgLy8gQ3JlYXRlIGFuIEZCTy4KICAgICAgICAgZ2w6OkdlbkZyYW1l
YnVmZmVycygxLCAmbV9mYm8pOwpAQCAtMTQwLDIwICsxNDMsMjAgQEAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMKEdyYXBoaWNzQ29udGV4dEdMQXR0cmli
dXRlcyBhdHQKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICAgICAgZ2w6Okdl
blRleHR1cmVzKDEsICZtX2NvbXBvc2l0b3JUZXh0dXJlKTsKLSAgICAgICAgZ2w6OkJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKLSAg
ICAgICAgZ2w6OlRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsIEdMX1RF
WFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmYo
R0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElO
RUFSKTsKLSAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5H
TEUsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAgICAgZ2w6OlRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsIEdMX1RFWFRVUkVfV1JBUF9U
LCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHVyZVR5cGUs
IG1fY29tcG9zaXRvclRleHR1cmUpOworICAgICAgICBnbDo6VGV4UGFyYW1ldGVyZih0ZXh1cmVU
eXBlLCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CisgICAgICAgIGdsOjpUZXhQ
YXJhbWV0ZXJmKHRleHVyZVR5cGUsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsK
KyAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmkodGV4dXJlVHlwZSwgR0xfVEVYVFVSRV9XUkFQX1Ms
IEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICBnbDo6VGV4UGFyYW1ldGVyaSh0ZXh1cmVUeXBl
LCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CiAKICAgICAgICAgZ2w6Okdl
blRleHR1cmVzKDEsICZtX2ludGVybWVkaWF0ZVRleHR1cmUpOwotICAgICAgICBnbDo6QmluZFRl
eHR1cmUoR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEUsIG1faW50ZXJtZWRpYXRlVGV4dHVyZSk7
Ci0gICAgICAgIGdsOjpUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCBH
TF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgICAgIGdsOjpUZXhQYXJhbWV0
ZXJmKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdM
X0xJTkVBUik7Ci0gICAgICAgIGdsOjpUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfUkVDVEFOR0xF
X0FOR0xFLCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgICAgIGds
OjpUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCBHTF9URVhUVVJFX1dS
QVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh1cmVU
eXBlLCBtX2ludGVybWVkaWF0ZVRleHR1cmUpOworICAgICAgICBnbDo6VGV4UGFyYW1ldGVyZih0
ZXh1cmVUeXBlLCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CisgICAgICAgIGds
OjpUZXhQYXJhbWV0ZXJmKHRleHVyZVR5cGUsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElO
RUFSKTsKKyAgICAgICAgZ2w6OlRleFBhcmFtZXRlcmkodGV4dXJlVHlwZSwgR0xfVEVYVFVSRV9X
UkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICBnbDo6VGV4UGFyYW1ldGVyaSh0ZXh1
cmVUeXBlLCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CiAKLSAgICAgICAg
Z2w6OkJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFLCAwKTsKKyAgICAgICAg
Z2w6OkJpbmRUZXh0dXJlKHRleHVyZVR5cGUsIDApOwogI2VuZGlmCiAKICAgICAgICAgLy8gQ3Jl
YXRlIGEgbXVsdGlzYW1wbGUgRkJPLgpAQCAtNDEyLDcgKzQxNSw5IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmNoZWNrR1BVU3RhdHVzKCkKIAogYm9vbCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6aXNHTEVTMkNvbXBsaWFudCgpIGNvbnN0CiB7Ci0jaWYgVVNFKE9QRU5HTF9FUykK
KyNpZiBVU0UoQU5HTEUpCisgICAgcmV0dXJuIG1faXNGb3JXZWJHTDI7CisjZWxpZiBVU0UoT1BF
TkdMX0VTKQogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CkBAIC00
MjgsNiArNDMzLDE3IEBAIFBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpw
bGF0Zm9ybUxheWVyKCkgY29uc3QKICNlbmRpZgogfQogCisjaWYgVVNFKEFOR0xFKQorR0NHTGVu
dW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCkK
K3sKKyNpZiBQTEFURk9STShXSU4pCisgICAgcmV0dXJuIEdMX1RFWFRVUkVfMkQ7CisjZWxzZQor
ICAgIHJldHVybiBHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRTsKKyNlbmRpZgorfQorI2VuZGlm
CisKICNpZiBQTEFURk9STShHVEspICYmICFVU0UoQU5HTEUpCiBFeHRlbnNpb25zR0wmIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRm
b3JtTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllci5jcHAKaW5kZXggM2E2MDI3MzM5ZDdhZTg2MDgx
YzU2ZDRmZjdmZWEzMjcyNGJlZTIxZS4uNDkzMTUwNTAzMjRiYmRjOTM3MzI0ZjBhMWMxMTczNjIx
NmE3YjdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXll
ci5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAy
MDE3IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBF
bnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDYgKzIzLDggQEAK
IAogI2lmIEVOQUJMRShXRUJHTCkgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiAhVVNFKE5JQ09T
SUEpCiAKKyNpbmNsdWRlICJBTkdMRUNvbnRleHQuaCIKKyNpbmNsdWRlICJBTkdMRUhlYWRlcnMu
aCIKICNpbmNsdWRlICJCaXRtYXBUZXh0dXJlR0wuaCIKICNpbmNsdWRlICJHTENvbnRleHQuaCIK
ICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0xIZWFkZXJzLmgiCkBAIC0zNCw5ICszNywxMSBAQCBU
ZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI6OlRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1M
YXllcihHcmFwaGljc0NvbnRleHRHTAogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiB7CiAgICAg
c3dpdGNoIChkZXN0aW5hdGlvbikgewotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OkRlc3RpbmF0aW9uOjpPZmZzY3JlZW46Ci0gICAgICAgIG1fZ2xDb250ZXh0ID0gR0xDb250ZXh0
OjpjcmVhdGVPZmZzY3JlZW5Db250ZXh0KCZQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlG
b3JDb21wb3NpdGluZygpKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpEZXN0
aW5hdGlvbjo6T2Zmc2NyZWVuOiB7CisgICAgICAgIGF1dG8gc2hhcmluZ0NvbnRleHQgPSBQbGF0
Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpLnNoYXJpbmdHTENvbnRl
eHQoKS0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgICAgIG1fZ2xDb250ZXh0ID0gQU5HTEVDb250
ZXh0OjpjcmVhdGVDb250ZXh0KHNoYXJpbmdDb250ZXh0LCBjb250ZXh0LmNvbnRleHRBdHRyaWJ1
dGVzKCkuaXNXZWJHTDIpOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6RGVzdGluYXRpb246OkRpcmVjdGx5VG9Ib3N0V2luZG93OgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMDEsMTMgKzEw
NiwxMiBAQCB2b2lkIFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcjo6cGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4dHVyZQogICAgIEFTU0VSVChtX2NvbnRleHQubV9z
dGF0ZS5ib3VuZFJlYWRGQk8gPT0gbV9jb250ZXh0Lm1fc3RhdGUuYm91bmREcmF3RkJPKTsKICAg
ICBpZiAoYXR0cnMuYW50aWFsaWFzICYmIG1fY29udGV4dC5tX3N0YXRlLmJvdW5kRHJhd0ZCTyA9
PSBtX2NvbnRleHQubV9tdWx0aXNhbXBsZUZCTykgewogICAgICAgICBHTENvbnRleHQqIHByZXZp
b3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4dDo6Y3VycmVudCgpOwotICAgICAgICBpZiAocHJl
dmlvdXNBY3RpdmVDb250ZXh0ICE9IG1fZ2xDb250ZXh0LmdldCgpKQotICAgICAgICAgICAgbV9j
b250ZXh0Lm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgICAgICBtX2NvbnRleHQubWFrZUNvbnRl
eHRDdXJyZW50KCk7CiAKICAgICAgICAgbV9jb250ZXh0LnJlc29sdmVNdWx0aXNhbXBsaW5nSWZO
ZWNlc3NhcnkoKTsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC5tX3N0YXRlLmJvdW5kRHJhd0ZCTyk7Cisg
ICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fY29udGV4dC5tX3N0
YXRlLmJvdW5kRHJhd0ZCTyk7CiAKLSAgICAgICAgaWYgKHByZXZpb3VzQWN0aXZlQ29udGV4dCAm
JiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgIT0gbV9nbENvbnRleHQuZ2V0KCkpCisgICAgICAgIGlm
IChwcmV2aW91c0FjdGl2ZUNvbnRleHQpCiAgICAgICAgICAgICBwcmV2aW91c0FjdGl2ZUNvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1M
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJHQ0dMUGxhdGZvcm1MYXllci5oCmluZGV4IGU5NmNmMmUyMWRkNTI4OWY2Y2Q5NjNiYzVi
ZTgwNzM0ZTMwMTM2ZTkuLjZkYzBmZjJjYWQ4YTA2NTFjYmNkYmFkZTRlM2NlNzhmYjJmNTExNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmgKQEAgLTI4
LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBHTENvbnRleHQ7Citj
bGFzcyBBTkdMRUNvbnRleHQ7CiBjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5
OwogCiBjbGFzcyBUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIgOiBwdWJsaWMgUGxhdGZv
cm1MYXllciB7CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTCYgbV9jb250ZXh0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHTENv
bnRleHQ+IG1fZ2xDb250ZXh0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxBTkdMRUNvbnRleHQ+IG1f
Z2xDb250ZXh0OwogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIFJlZlB0cjxU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBtX3BsYXRmb3JtTGF5ZXJQcm94eTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2UgYi9Tb3VyY2UvY21h
a2UvT3B0aW9uc1dpbkNhaXJvLmNtYWtlCmluZGV4IDA2YTk3MDU5YmJjZTVhN2JhNjgyZmE0YzVk
OGJlYjY5NGJjMzQ2YTkuLjViYjA0MmU1MzZhZThiMWFhOGZiNjk3ZTQ3YjNiMjIzMGRhOTQwYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fpcm8uY21ha2UKKysrIGIvU291
cmNlL2NtYWtlL09wdGlvbnNXaW5DYWlyby5jbWFrZQpAQCAtNDUsNyArNDUsOSBAQCBlbmRpZiAo
KQogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NjM1CiAKIHNl
dChVU0VfQU5HTEVfRUdMIE9OKQorc2V0KFVTRV9BTkdMRV9XRUJHTCBPTikKIAorU0VUX0FORF9F
WFBPU0VfVE9fQlVJTEQoVVNFX0FOR0xFIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNF
X0NBSVJPIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NGIE9OKQogU0VUX0FORF9F
WFBPU0VfVE9fQlVJTEQoVVNFX0NVUkwgT04pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjg3MGVhYzE3ODJlN2Q0ODBhNGUy
ODI5ODYzZGQ3YjU5ODM5ZWZiNy4uNjkxMTQ5YzA4YzRiMTNmMmQyYzEyMTNlMDM3ZjlmMjliZjBk
YTVhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTEyLTExICBGdWppaSBIaXJvbm9yaSAg
PEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIFtXaW5DYWlyb10gRW5hYmxlIFVT
RV9BTkdMRQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE5NDIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTEyLTExICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWly
b10gRW5hYmxlIGFjY2VsZXJhdGVkIFdlYkdMIGNhbnZhcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYjA0NGNiNjNhYjk4MDUzMTFkMDVi
MmE0YWU1NWI4NGUwZmJmNjAwNC4uY2VjMDY3YmZiMjdkOGQ2MjUxZGY3NTQzNWVkOGNlZTA0Zjcy
Yzc1MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9UZXN0RXhwZWN0YXRp
b25zCkBAIC0yMTIyLDMwICsyMTIyLDI2IEBAIHBlcmZvcm1hbmNlLWFwaS9wYWludC10aW1pbmcv
cGFpbnQtdGltaW5nLXdpdGgtd29ya2VyLmh0bWwgWyBGYWlsdXJlIF0KIHBlcmZvcm1hbmNlLWFw
aS9wYWludC10aW1pbmcvcGVyZm9ybWFuY2Utb2JzZXJ2ZXItZmlyc3QtY29udGVudGZ1bC1wYWlu
dC5odG1sIFsgVGltZW91dCBdCiBzdG9yYWdlL2luZGV4ZWRkYi9zdG9yYWdlLWxpbWl0LXdpdGgt
aW5kaWNlcy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9jYW52YXMv
ZHJhd2luZ2J1ZmZlci10ZXN0Lmh0bWwgWyBTa2lwIF0gIyBUaW1lb3V0Ci13ZWJnbC8xLjAuMy9j
b25mb3JtYW5jZS9jb250ZXh0L2NvbnRleHQtbG9zdC1yZXN0b3JlZC5odG1sIFsgRmFpbHVyZSBd
CiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9jb250ZXh0L3ByZW11bHRpcGx5YWxwaGEtdGVzdC5o
dG1sIFsgRmFpbHVyZSBdCit3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy1l
bGVtZW50LWluZGV4LXVpbnQuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFu
Y2UvZXh0ZW5zaW9ucy9vZXMtdGV4dHVyZS1mbG9hdC13aXRoLXZpZGVvLmh0bWwgWyBTa2lwIF0g
IyBUaW1lb3V0Ci13ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJl
LWZsb2F0Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL2V4dGVuc2lv
bnMvb2VzLXRleHR1cmUtaGFsZi1mbG9hdC13aXRoLXZpZGVvLmh0bWwgWyBTa2lwIF0gIyBUaW1l
b3V0Ci13ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9leHRlbnNpb25zL29lcy10ZXh0dXJlLWhhbGYt
ZmxvYXQuaHRtbCBbIEZhaWx1cmUgXQotd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvZXh0ZW5zaW9u
cy93ZWJnbC1jb21wcmVzc2VkLXRleHR1cmUtc2l6ZS1saW1pdC5odG1sIFsgRmFpbHVyZSBdCit3
ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9nbHNsL2J1Z3MvYXJyYXktb2Ytc3RydWN0LXdpdGgtaW50
LWZpcnN0LXBvc2l0aW9uLmh0bWwgWyBTa2lwIF0gIyBUaGlzIHRlc3QgbWFrZXMgRHVtcFJlbmRl
clRyZWUgcHJvY2VzcyB1bmFibGUgdG8gZXhpdAogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvZ2xz
bC9idWdzL2xvbmctZXhwcmVzc2lvbnMtc2hvdWxkLW5vdC1jcmFzaC5odG1sIFsgU2tpcCBdICMg
VGltZW91dAotd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvbW9yZS9mdW5jdGlvbnMvY29weVRleElt
YWdlMkRCYWRBcmdzLmh0bWwgWyBTa2lwIF0gIyBUaW1lb3V0Cit3ZWJnbC8xLjAuMy9jb25mb3Jt
YW5jZS9taXNjL3VuaW5pdGlhbGl6ZWQtdGVzdC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAu
My9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy9yZWFkUGl4ZWxzQmFkQXJncy5odG1sIFsgRmFp
bHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy90ZXhJbWFnZTJE
SFRNTC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9tb3JlL2Z1bmN0
aW9ucy90ZXhTdWJJbWFnZTJESFRNTC5odG1sIFsgRmFpbHVyZSBdCi13ZWJnbC8xLjAuMy9jb25m
b3JtYW5jZS9tb3JlL2Z1bmN0aW9ucy90ZXhTdWJJbWFnZTJESFRNTEJhZEFyZ3MuaHRtbCBbIFNr
aXAgXSAjIENyYXNoCi13ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS9yZW5kZXJidWZmZXJzL2ZlZWRi
YWNrLWxvb3AuaHRtbCBbIEZhaWx1cmUgXQord2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvcHJvZ3Jh
bXMvcHJvZ3JhbS10ZXN0Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNl
L3JlbmRlcmJ1ZmZlcnMvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQuaHRtbCBbIEZhaWx1
cmUgXQotd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvcmVuZGVyaW5nL3BvaW50LW5vLWF0dHJpYnV0
ZXMuaHRtbCBbIEZhaWx1cmUgXQord2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvcmVuZGVyYnVmZmVy
cy9mcmFtZWJ1ZmZlci1zdGF0ZS1yZXN0b3JhdGlvbi5odG1sIFsgRmFpbHVyZSBdCit3ZWJnbC8x
LjAuMy9jb25mb3JtYW5jZS9yZW5kZXJidWZmZXJzL3JlbmRlcmJ1ZmZlci1pbml0aWFsaXphdGlv
bi5odG1sIFsgRmFpbHVyZSBdCiB3ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy9kZWZh
dWx0LXRleHR1cmUuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4
dHVyZXMvdGV4LWltYWdlLWFuZC1zdWItaW1hZ2UtMmQtd2l0aC12aWRlby1yZ2I1NjUuaHRtbCBb
IFNraXAgXSAjIFRpbWVvdXQKIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtdmlkZW8tcmdiYTQ0NDQuaHRtbCBbIFNraXAgXSAj
IFRpbWVvdXQKIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleC1pbWFnZS1hbmQt
c3ViLWltYWdlLTJkLXdpdGgtdmlkZW8tcmdiYTU1NTEuaHRtbCBbIFNraXAgXSAjIFRpbWVvdXQK
IHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleC1pbWFnZS1hbmQtc3ViLWltYWdl
LTJkLXdpdGgtdmlkZW8uaHRtbCBbIFNraXAgXSAjIFRpbWVvdXQKLXdlYmdsLzEuMC4zL2NvbmZv
cm1hbmNlL3RleHR1cmVzL3RleC1zdWItaW1hZ2UtMmQtYmFkLWFyZ3MuaHRtbCBbIFNraXAgXSAj
IENyYXNoCi13ZWJnbC8xLjAuMy9jb25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLWNvcHlpbmct
ZmVlZGJhY2stbG9vcHMuaHRtbCBbIEZhaWx1cmUgXQord2ViZ2wvMS4wLjMvY29uZm9ybWFuY2Uv
dGV4dHVyZXMvdGV4dHVyZS1hdHRhY2htZW50LWZvcm1hdHMuaHRtbCBbIEZhaWx1cmUgXQord2Vi
Z2wvMS4wLjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4dHVyZS1taXBzLmh0bWwgWyBGYWlsdXJl
IF0KIHdlYmdsLzEuMC4zL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHR1cmUtdXBsb2FkLXNpemUu
aHRtbCBbIFNraXAgXSAjIFRpbWVvdXQKLXdlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvZXh0
LXRleHR1cmUtY29tcHJlc3Npb24tcmd0Yy5odG1sIFsgRmFpbHVyZSBdCi13ZWJnbC9jb25mb3Jt
YW5jZS9leHRlbnNpb25zL3MzdGMtYW5kLXJndGMuaHRtbCBbIEZhaWx1cmUgXQogd2ViZ2wvd2Vi
Z2wtdmVydGV4LWFycmF5LW9iamVjdC1kZWZpbmVkLmh0bWwgWyBGYWlsdXJlIF0KZGlmZiAtLWdp
dCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA2N2JjN2I2NmJmOTJhNGU0YzU4ZjM3YTA2
MzRjNmUxNjAzYTMyMjQxLi4xZmZhNmM5NDdlMzY2YjNhMWUzMjVhNzQ1MjNjNjY1MDBmYjU3NmRj
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMjAtMTItMTEgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CisK
KyAgICAgICAgW1dpbkNhaXJvXSBFbmFibGUgVVNFX0FOR0xFCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk0MjEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zV2luQ2Fp
cm8uY21ha2U6CisKIDIwMjAtMTItMTEgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255
LmNvbT4KIAogICAgICAgICBbQ01ha2VdIERldGVybWluZSBjb3JyZWN0IHZpc2liaWxpdHkgZm9y
IGxpbmtlZCBmcmFtZXdvcmtzCg==
</data>
<flag name="review"
          id="433441"
          type_id="1"
          status="+"
          setter="don.olmstead"
    />
          </attachment>
      

    </bug>

</bugzilla>