<?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>132869</bug_id>
          
          <creation_ts>2014-05-13 08:32:23 -0700</creation_ts>
          <short_desc>[Texmap][GStreamer] Add support to upload more color formats into the texture</short_desc>
          <delta_ts>2022-09-21 21:56:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=196200</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=196966</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=245514</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>200914</blocked>
    
    <blocked>200922</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Víctor M. Jáquez L.">vjaquez</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>calvaris</cc>
    
    <cc>clord</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>magomez</cc>
    
    <cc>nicolas</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1008956</commentid>
    <comment_count>0</comment_count>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2014-05-13 08:32:23 -0700</bug_when>
    <thetext>Right now the the GStreamer video sink supports BGRx and BGRA and the normal code path is to upload the buffer into a texture subimage. 

Nevertheless the BGRx support is broken when the padding value comes with 0x00 or random values (which are valid), the texture needs to be 0xff. Probably we would need a shader to fix this.

If so, it would make sense to support the upload of other color formats (with more planes), such as yuv or nv12.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516575</commentid>
    <comment_count>1</comment_count>
      <attachid>364675</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2019-03-14 12:10:17 -0700</bug_when>
    <thetext>Created attachment 364675
WIP

Work-in-progress, plenty of problems remain, but I420 format gets rendered about right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534751</commentid>
    <comment_count>2</comment_count>
      <attachid>369494</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2019-05-09 09:37:15 -0700</bug_when>
    <thetext>Created attachment 369494
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534832</commentid>
    <comment_count>3</comment_count>
    <who name="Nicolas Dufresne">nicolas</who>
    <bug_when>2019-05-09 12:39:47 -0700</bug_when>
    <thetext>Any reason to aim for such a limited implementation ? libgstgl is a stable API since 1.14, so it it&apos;s safe to start using it. What Cervo is doing is to use &quot;glsinkbin sink=appsink&quot;, then you just need to listen for the context sharing to allow GStreamer to create a shared context from the WebKit GL Context. Additonally, you could announce support for gl_sync_meta through a pad probe implementing allocation query, and then wait on the fence in your render function. That would help throughput and enable support for Android CODEC at the same time. From this, you&apos;ll gain from much more then just I420, since you&apos;ll also gain support for DMABuf importation, VAAPI Surface support etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534963</commentid>
    <comment_count>4</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2019-05-10 01:29:12 -0700</bug_when>
    <thetext>(In reply to Nicolas Dufresne from comment #3)
&gt; Any reason to aim for such a limited implementation ?

No, other YUV formats will be added in later.

&gt; libgstgl is a stable
&gt; API since 1.14, so it it&apos;s safe to start using it. What Cervo is doing is to
&gt; use &quot;glsinkbin sink=appsink&quot;, then you just need to listen for the context
&gt; sharing to allow GStreamer to create a shared context from the WebKit GL
&gt; Context.

That&apos;s what we do already.

&gt; Additonally, you could announce support for gl_sync_meta through a
&gt; pad probe implementing allocation query, and then wait on the fence in your
&gt; render function.

This is the next requirement, as the rendering is currently overstepping the management of decoded data. But fences aren&apos;t generally available on all target systems, so this will have to fall back to the basic glFinish().

&gt; That would help throughput and enable support for Android
&gt; CODEC at the same time. From this, you&apos;ll gain from much more then just
&gt; I420, since you&apos;ll also gain support for DMABuf importation, VAAPI Surface
&gt; support etc.

Idea is to handle I420 (and other YUV formats eventually, and other formats as required in the future) manually in order to avoid the additional color conversion step done in glcolorconvert that would be needed if only RGB were handled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534972</commentid>
    <comment_count>5</comment_count>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2019-05-10 03:39:49 -0700</bug_when>
    <thetext>(In reply to Nicolas Dufresne from comment #3)
&gt; Any reason to aim for such a limited implementation ? libgstgl is a stable
&gt; API since 1.14, so it it&apos;s safe to start using it. What Cervo is doing is to
&gt; use &quot;glsinkbin sink=appsink&quot;, 

I tried this, but glsinkbin uses glcolorbalance which src pad pushes RGBA textures, while WebKit only renders efficiently BGRx or BGRA (little endian) -- I don&apos;t know the reasons behind it, perhaps Zan can shed some light :)

Thus, so far, glsinkbin is not an option right now.

&gt; then you just need to listen for the context
&gt; sharing to allow GStreamer to create a shared context from the WebKit GL
&gt; Context. Additonally, you could announce support for gl_sync_meta through a
&gt; pad probe implementing allocation query, and then wait on the fence in your
&gt; render function. That would help throughput and enable support for Android
&gt; CODEC at the same time. From this, you&apos;ll gain from much more then just
&gt; I420, since you&apos;ll also gain support for DMABuf importation, VAAPI Surface
&gt; support etc.

Regarding the gl fence and sync, I worked on it a bit: https://bugs.webkit.org/show_bug.cgi?id=196200

I still have a patch for it around, but I realized that WebKit (at least my setup) uses OpenGL profile 3.0 while the sync and fence appeared in 3.2.

Another related patch is https://bugs.webkit.org/show_bug.cgi?id=196966 (which is still a work-in-progress)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534975</commentid>
    <comment_count>6</comment_count>
    <who name="Nicolas Dufresne">nicolas</who>
    <bug_when>2019-05-10 05:10:13 -0700</bug_when>
    <thetext>GStreamer should fallback for the fences based on support and if support is advertise in the allocation query.

You can replace glsinkbin with something smaller too:

  glupload ! glcolorconvert !

These two will take care of the GL upload and color conversion. glcolorconvert have support for BGRx and BGRA target, even though, as you said, pretty much everything else hardcode RGBA right now.

It seems better to try to get that to work then to replace with a partial implementation with limited color formats and no support for colorimetry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534978</commentid>
    <comment_count>7</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-05-10 05:29:46 -0700</bug_when>
    <thetext>(In reply to Nicolas Dufresne from comment #6)
&gt; GStreamer should fallback for the fences based on support and if support is
&gt; advertise in the allocation query.
&gt; 
&gt; You can replace glsinkbin with something smaller too:
&gt; 
&gt;   glupload ! glcolorconvert !
&gt; 

We already do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1534980</commentid>
    <comment_count>8</comment_count>
    <who name="Nicolas Dufresne">nicolas</who>
    <bug_when>2019-05-10 05:56:51 -0700</bug_when>
    <thetext>Then I still don&apos;t see the point why it make sense to have multi-planar support here. Why don&apos;t you just fixate the caps to GL/BGRA, what does it gives you to add planar format here and to replicated all the convertion shaders ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1535059</commentid>
    <comment_count>9</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2019-05-10 10:20:31 -0700</bug_when>
    <thetext>(In reply to Nicolas Dufresne from comment #8)
&gt; Then I still don&apos;t see the point why it make sense to have multi-planar
&gt; support here. Why don&apos;t you just fixate the caps to GL/BGRA, what does it
&gt; gives you to add planar format here and to replicated all the convertion
&gt; shaders ?

Because we want to avoid the convertion shaders. The extra color convert step can be prohibitively expensive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1535066</commentid>
    <comment_count>10</comment_count>
    <who name="Nicolas Dufresne">nicolas</who>
    <bug_when>2019-05-10 10:34:04 -0700</bug_when>
    <thetext>That I agree, notably on IMX.6. That being said, you should at the very least read and support the color range, otherwise the result could endup being extremely bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1547152</commentid>
    <comment_count>11</comment_count>
      <attachid>372694</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2019-06-23 01:33:59 -0700</bug_when>
    <thetext>Created attachment 372694
WIP

Avoids flickering issues by enforcing a CPU-bound wait on the GstGLSyncMeta object after mapping. This approach should be revisited.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560404</commentid>
    <comment_count>12</comment_count>
      <attachid>376065</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-08-12 08:49:10 -0700</bug_when>
    <thetext>Created attachment 376065
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560406</commentid>
    <comment_count>13</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-12 08:52:32 -0700</bug_when>
    <thetext>Attachment 376065 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:119:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:124:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.cpp:129:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 3 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1560408</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-08-12 08:58:08 -0700</bug_when>
    <thetext>I&apos;ve updated and rebased this patch and added support for all of the formats that glupload supports, except for the interleaved YUY2/UYVY formats (which can continue to be handled by glcolorconvert).

Things I&apos;m uncertain about:

- Does endianness affect the order of yuv in uploaded textures? I assume not or they&apos;d have different format names (like RGB vs. BGR), but it&apos;d be good to know.

- I had to reintroduce the ImxVPU flag as it handles YUV differently, but I have no way of testing whether this current patch works correctly.

- The code checker was flagging up the asserts I added in TextureMapperPlatformLayerBuffer because I explicitly check for zero, but it makes sense in the context of a compound boolean statement. Would we really want to replace this with a &apos;!&apos; ?

Note that I don&apos;t read the colorimetry data, but instead mirror the behaviour of glcolorconvert (https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/blob/master/gst-libs/gst/gl/gstglcolorconvert.c#L74) - I took a crack at reading the colorimetry data to do the conversion, but GStreamer has no API to obtain a simple matrix to do the entire colour conversion and doesn&apos;t expose the exact formula or numbers it uses to do the colour gamma correction, so I don&apos;t think it&apos;s currently possible to do this in a shader only with data provided by the GStreamer API (and if we have to have a big matrix of numbers, I think doing what glcolorconvert does rather than something different makes sense).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1561560</commentid>
    <comment_count>15</comment_count>
      <attachid>376065</attachid>
    <who name="Víctor M. Jáquez L.">vjaquez</who>
    <bug_when>2019-08-15 08:57:55 -0700</bug_when>
    <thetext>Comment on attachment 376065
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:171
&gt; +                gst_gl_sync_meta_wait_cpu(meta, context);

IMO this shall be delayed until almost painting the whole GL scene. Perhaps adding a virtual method in TextureMapperPlatformLayerBuffer::UnmanagedBufferDataHolder

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:404
&gt; +    if (!g_strcmp0(contextType, &quot;gst.gl.local_context&quot;)) {

I don&apos;t see any need to create and control of the internal pipeline GL context. 

We can just let the gstreamer&apos;s pipeline handle it and query it if we need id (and we will need it). There are two ways:

1. Query &apos;context&apos; property in glupload (only available at playing)
2. get it from the GstGLBaseMemory https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/merge_requests/156/diffs?commit_id=b5aa304f201d0805de2b33ab97d293654baa12cd#e60aa49aa8b41c83d9ee803694fed70f9e47698e_161_155</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562020</commentid>
    <comment_count>16</comment_count>
      <attachid>376496</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-08-16 06:52:31 -0700</bug_when>
    <thetext>Created attachment 376496
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562021</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-08-16 06:57:01 -0700</bug_when>
    <thetext>(In reply to Víctor M. Jáquez L. from comment #15)
&gt; Comment on attachment 376065 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=376065&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:171
&gt; &gt; +                gst_gl_sync_meta_wait_cpu(meta, context);
&gt; 
&gt; IMO this shall be delayed until almost painting the whole GL scene. Perhaps
&gt; adding a virtual method in
&gt; TextureMapperPlatformLayerBuffer::UnmanagedBufferDataHolder
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:404
&gt; &gt; +    if (!g_strcmp0(contextType, &quot;gst.gl.local_context&quot;)) {
&gt; 
&gt; I don&apos;t see any need to create and control of the internal pipeline GL
&gt; context. 
&gt; 
&gt; We can just let the gstreamer&apos;s pipeline handle it and query it if we need
&gt; id (and we will need it). There are two ways:
&gt; 
&gt; 1. Query &apos;context&apos; property in glupload (only available at playing)
&gt; 2. get it from the GstGLBaseMemory
&gt; https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/merge_requests/156/
&gt; diffs?commit_id=b5aa304f201d0805de2b33ab97d293654baa12cd#e60aa49aa8b41c83d9ee
&gt; 803694fed70f9e47698e_161_155

Addressed these comments (hopefully), used the second method of getting the internal GL context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562988</commentid>
    <comment_count>18</comment_count>
      <attachid>376751</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-08-20 01:34:35 -0700</bug_when>
    <thetext>Created attachment 376751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565312</commentid>
    <comment_count>19</comment_count>
      <attachid>377333</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-08-27 03:44:44 -0700</bug_when>
    <thetext>Created attachment 377333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566623</commentid>
    <comment_count>20</comment_count>
      <attachid>377333</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2019-08-30 04:02:23 -0700</bug_when>
    <thetext>Comment on attachment 377333
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:191
&gt; +    bool hasMappedTextures() const { return m_hasMappedTextures; }

doesHaveMappedTextures, same for the attribute.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:571
&gt; +    std::vector&lt;std::pair&lt;GLuint, GLuint&gt; &gt; texturesAndSamplers = {
&gt; +        { textures[0], program-&gt;samplerYLocation() },
&gt; +        { textures[1], program-&gt;samplerULocation() },
&gt; +        { textures[2], program-&gt;samplerVLocation() }
&gt; +    };

5 lines too much, 2 likes ok, I guess 1 line two long

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:620
&gt; +    std::vector&lt;std::pair&lt;GLuint, GLuint&gt; &gt; texturesAndSamplers = {
&gt; +        { textures[0], program-&gt;samplerYLocation() },
&gt; +        { textures[1], program-&gt;samplerULocation() }
&gt; +    };

2 lines?

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.h:34
&gt; +#include &lt;vector&gt;

I&apos;d rather use wtf/Vector instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567297</commentid>
    <comment_count>21</comment_count>
      <attachid>377333</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2019-09-03 00:04:59 -0700</bug_when>
    <thetext>Comment on attachment 377333
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:620
&gt;&gt; +    };
&gt; 
&gt; 2 lines?

I think the current layout here and above keeps things much more readable.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:804
&gt; +        for (unsigned i = 0; i &lt; texturesAndSamplers.size(); ++i) {
&gt; +            auto&amp; textureAndSampler = texturesAndSamplers[i];

Here you can use the range-based for-loop:

    for (auto&amp; textreAndSampler : texturesAndSamplers) { }

&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.h:34
&gt;&gt; +#include &lt;vector&gt;
&gt; 
&gt; I&apos;d rather use wtf/Vector instead.

Yes, please use Vector.

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

Nit: TextureMapperPlatformLayerBuffer::~TextureMapperPlatformLayerBuffer() = default;

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h:54
&gt; +        int numberOfPlanes;
&gt; +        std::array&lt;GLuint, 3&gt; planes;
&gt; +        std::array&lt;int, 3&gt; yuvPlane;
&gt; +        std::array&lt;int, 3&gt; yuvPlaneOffset;
&gt; +        std::array&lt;GLfloat, 9&gt; yuvToRgbMatrix;

Can we keep numberOfPlanes, yuvPlane and yuvPlaneOffset values as unsigned integers here? These are gathered from GstVideoFormatInfo where they&apos;re all unsigned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567325</commentid>
    <comment_count>22</comment_count>
      <attachid>377882</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-09-03 03:34:27 -0700</bug_when>
    <thetext>Created attachment 377882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567359</commentid>
    <comment_count>23</comment_count>
      <attachid>377890</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2019-09-03 05:33:41 -0700</bug_when>
    <thetext>Created attachment 377890
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567370</commentid>
    <comment_count>24</comment_count>
      <attachid>377890</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-03 07:00:45 -0700</bug_when>
    <thetext>Comment on attachment 377890
Patch

Clearing flags on attachment: 377890

Committed r249427: &lt;https://trac.webkit.org/changeset/249427&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567371</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-03 07:00:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567372</commentid>
    <comment_count>26</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-03 07:01:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/54974233&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364675</attachid>
            <date>2019-03-14 12:10:17 -0700</date>
            <delta_ts>2019-05-09 09:37:12 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-132869-20190314201015.patch</filename>
            <type>text/plain</type>
            <size>29623</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyOTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQyMTVlNjk2ODcyMWJj
ZTk1MzFhOTI1NDBjMDMyODFkMzZhYmM2MC4uNGRmYzJjMjk4ODhkYzllNjU3ZjE4MzY1ZTBiOWFm
ZjMyNWNiMjQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTAzLTE0ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbVGV4bWFwXSBBZGQg
c3VwcG9ydCB0byB1cGxvYWQgbW9yZSBjb2xvciBmb3JtYXRzIGludG8gdGhlIHRleHR1cmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjg2OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3N0Vmlk
ZW9GcmFtZUhvbGRlcjo6R3N0VmlkZW9GcmFtZUhvbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpH
c3RWaWRlb0ZyYW1lSG9sZGVyOjpoYXNNYXBwZWRUZXh0dXJlcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHc3RWaWRlb0ZyYW1lSG9sZGVyOjp2aWRlb0ZyYW1lIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9D
b21wb3NpdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9U
ZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVGV4dHVy
ZUNvcGllckdTdHJlYW1lcjo6VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om9wdGlvbnNGb3JGaWx0ZXJUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckdMOjpkcmF3VGV4dHVyZVlVVik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXI6On5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnBhaW50VG9UZXh0dXJl
TWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW06OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmg6CisKIDIwMTktMDMtMTQg
IERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEF1ZGl0OiBwcm92aWRlIGEgd2F5IHRvIGdldCB0aGUgY29udGVudHMgb2YgcmVzb3VyY2Vz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5j
cHAKaW5kZXggZDIzODYxMDg3Nzc0OWQxOGM2NzU2ODU2MWQ3YTQ0OTg2ZWZkMGZmOS4uYWFmZDQx
ZmVmZDgxZTU4YzNjNGQwMmI4YzRiYzhmMzRkZGEzZjFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtNTUsMTEgKzU1LDEx
IEBACiAKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQogI2lmIEdfQllURV9PUkRFUiA9PSBHX0xJVFRM
RV9FTkRJQU4KLSNkZWZpbmUgR1NUX0dMX0NBUFNfRk9STUFUICJ7IEJHUngsIEJHUkEgfSIKKyNk
ZWZpbmUgR1NUX0dMX0NBUFNfRk9STUFUICJ7IEJHUngsIEJHUkEsIEk0MjAgfSIKICNkZWZpbmUg
VEVYVFVSRV9NQVBQRVJfQ09MT1JfQ09OVkVSVF9GTEFHIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxk
Q29udmVydFRleHR1cmVCR1JBVG9SR0JBCiAjZGVmaW5lIFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NP
TlZFUlRfRkxBRyBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OkNvbG9yQ29udmVyc2lvbjo6
Q29udmVydEJHUkFUb1JHQkEKICNlbHNlCi0jZGVmaW5lIEdTVF9HTF9DQVBTX0ZPUk1BVCAieyB4
UkdCLCBBUkdCIH0iCisjZGVmaW5lIEdTVF9HTF9DQVBTX0ZPUk1BVCAieyB4UkdCLCBBUkdCLCBJ
NDIwIH0iCiAjZGVmaW5lIFRFWFRVUkVfTUFQUEVSX0NPTE9SX0NPTlZFUlRfRkxBRyBUZXh0dXJl
TWFwcGVyR0w6OlNob3VsZENvbnZlcnRUZXh0dXJlQVJHQlRvUkdCQQogI2RlZmluZSBURVhUVVJF
X0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpD
b2xvckNvbnZlcnNpb246OkNvbnZlcnRBUkdCVG9SR0JBCiAjZW5kaWYKQEAgLTE3Nyw2ICsxNzcs
MjAgQEAgcHVibGljOgogICAgICAgICBpZiAoVU5MSUtFTFkoIWdldFNhbXBsZVZpZGVvSW5mbyhz
YW1wbGUsIHZpZGVvSW5mbykpKQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiR3N0VmlkZW9GcmFtZUhvbGRlcigpOiBzYW1wbGUgJXAsIGZsYWdzICVkLCBn
c3RHTEVuYWJsZWQgJWRcbiIsCisgICAgICAgICAgICBzYW1wbGUsIGZsYWdzLCBnc3RHTEVuYWJs
ZWQpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlx0bmFtZSAlcywgd3hoICVkeCVkLCBzaXpl
ICV6dSwgZm9ybWF0ICV4IChSR0IgJWQsIFlVViAlZClcbiIsCisgICAgICAgICAgICBHU1RfVklE
RU9fSU5GT19OQU1FKCZ2aWRlb0luZm8pLAorICAgICAgICAgICAgR1NUX1ZJREVPX0lORk9fV0lE
VEgoJnZpZGVvSW5mbyksIEdTVF9WSURFT19JTkZPX0hFSUdIVCgmdmlkZW9JbmZvKSwKKyAgICAg
ICAgICAgIEdTVF9WSURFT19JTkZPX1NJWkUoJnZpZGVvSW5mbyksCisgICAgICAgICAgICBHU1Rf
VklERU9fSU5GT19GT1JNQVQoJnZpZGVvSW5mbyksIAorICAgICAgICAgICAgR1NUX1ZJREVPX0lO
Rk9fSVNfUkdCKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19JU19ZVVYoJnZpZGVvSW5mbykp
OworCisgICAgICAgIGlmIChHU1RfVklERU9fSU5GT19JU19ZVVYoJnZpZGVvSW5mbykpIHsKKyAg
ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiXHRZVVYsIG5fY29tcG9uZW50cyAldSwgbl9wbGFu
ZXMgJXVcbiIsCisgICAgICAgICAgICAgICAgR1NUX1ZJREVPX0lORk9fTl9DT01QT05FTlRTKCZ2
aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19OX1BMQU5FUygmdmlkZW9JbmZvKSk7CisgICAgICAg
IH0KKwogICAgICAgICBtX3NpemUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRl
b0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOwogICAgICAgICBtX2hh
c0FscGhhQ2hhbm5lbCA9IEdTVF9WSURFT19JTkZPX0hBU19BTFBIQSgmdmlkZW9JbmZvKTsKICAg
ICAgICAgbV9idWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZmZXIoc2FtcGxlKTsKQEAgLTE4OCw4
ICsyMDIsMTIgQEAgcHVibGljOgogCiAgICAgICAgIGlmIChnc3RHTEVuYWJsZWQpIHsKICAgICAg
ICAgICAgIG1faXNNYXBwZWQgPSBnc3RfdmlkZW9fZnJhbWVfbWFwKCZtX3ZpZGVvRnJhbWUsICZ2
aWRlb0luZm8sIG1fYnVmZmVyLCBzdGF0aWNfY2FzdDxHc3RNYXBGbGFncz4oR1NUX01BUF9SRUFE
IHwgR1NUX01BUF9HTCkpOwotICAgICAgICAgICAgaWYgKG1faXNNYXBwZWQpCisgICAgICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIlx0bV9pc01hcHBlZCAlZCwgbV92aWRlb0ZyYW1lIHsgZmxhZ3Mg
JXUsIGlkICVkIH1cbiIsCisgICAgICAgICAgICAgICAgbV9pc01hcHBlZCwgbV92aWRlb0ZyYW1l
LmZsYWdzLCBtX3ZpZGVvRnJhbWUuaWQpOworICAgICAgICAgICAgaWYgKG1faXNNYXBwZWQpIHsK
ICAgICAgICAgICAgICAgICBtX3RleHR1cmVJRCA9ICpyZWludGVycHJldF9jYXN0PEdMdWludCo+
KG1fdmlkZW9GcmFtZS5kYXRhWzBdKTsKKyAgICAgICAgICAgICAgICBtX2hhc01hcHBlZFRleHR1
cmVzID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAjZW5kaWYgLy8gVVNF
KEdTVFJFQU1FUl9HTCkKIApAQCAtMjE1LDYgKzIzMyw4IEBAIHB1YmxpYzoKICAgICBib29sIGhh
c0FscGhhQ2hhbm5lbCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWxwaGFDaGFubmVsOyB9CiAgICAg
VGV4dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0K
ICAgICBHTHVpbnQgdGV4dHVyZUlEKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSUQ7IH0KKyAg
ICBib29sIGhhc01hcHBlZFRleHR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNYXBwZWRUZXh0
dXJlczsgfQorICAgIGNvbnN0IEdzdFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUoKSBjb25zdCB7IHJl
dHVybiBtX3ZpZGVvRnJhbWU7IH0KIAogICAgIHZvaWQgdXBkYXRlVGV4dHVyZShCaXRtYXBUZXh0
dXJlR0wmIHRleHR1cmUpCiAgICAgewpAQCAtMjQyLDYgKzI2Miw3IEBAIHByaXZhdGU6CiAgICAg
VGV4dHVyZU1hcHBlckdMOjpGbGFncyBtX2ZsYWdzIHsgfTsKICAgICBHTHVpbnQgbV90ZXh0dXJl
SUQgeyAwIH07CiAgICAgYm9vbCBtX2lzTWFwcGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFz
TWFwcGVkVGV4dHVyZXMgeyBmYWxzZSB9OwogfTsKICNlbmRpZgogCkBAIC03MjEsMTAgKzc0Miw1
NCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9D
b21wb3NpdG9yKCkKIAogICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVI
b2xkZXI+IGZyYW1lSG9sZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVy
PihtX3NhbXBsZS5nZXQoKSwgdGV4TWFwRmxhZ0Zyb21PcmllbnRhdGlvbihtX3ZpZGVvU291cmNl
T3JpZW50YXRpb24pLCAhbV91c2luZ0ZhbGxiYWNrVmlkZW9TaW5rKTsKIAotICAgICAgICAgICAg
R0x1aW50IHRleHR1cmVJRCA9IGZyYW1lSG9sZGVyLT50ZXh0dXJlSUQoKTsKLSAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJC
dWZmZXI7Ci0gICAgICAgICAgICBpZiAodGV4dHVyZUlEKSB7Ci0gICAgICAgICAgICAgICAgbGF5
ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyPih0ZXh0dXJlSUQsIGZyYW1lSG9sZGVyLT5zaXplKCksIGZyYW1lSG9sZGVyLT5mbGFncygp
LCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgICAgICAgICB7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHVzaW5nIEJ1ZmZlciA9IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJ1ZmZlcj4gbGF5ZXJCdWZmZXI7
CisgICAgICAgICAgICBpZiAoZnJhbWVIb2xkZXItPmhhc01hcHBlZFRleHR1cmVzKCkpIHsKKyAg
ICAgICAgICAgICAgICBhdXRvJiB2aWRlb0ZyYW1lID0gZnJhbWVIb2xkZXItPnZpZGVvRnJhbWUo
KTsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInB1c2hUZXh0dXJlVG9Db21wb3Np
dG9yKCk6IGZyYW1lSG9sZGVyIGhhcyBtYXBwZWQgdGV4dHVyZXNcbiIKKyAgICAgICAgICAgICAg
ICAgICAgIlx0Zm9ybWF0ICVkIChSR0IgJWQsIFlVViAlZCksICV1IHBsYW5lc1xuIiwKKyAgICAg
ICAgICAgICAgICAgICAgR1NUX1ZJREVPX0lORk9fRk9STUFUKCZ2aWRlb0ZyYW1lLmluZm8pLAor
ICAgICAgICAgICAgICAgICAgICBHU1RfVklERU9fSU5GT19JU19SR0IoJnZpZGVvRnJhbWUuaW5m
byksIEdTVF9WSURFT19JTkZPX0lTX1lVVigmdmlkZW9GcmFtZS5pbmZvKSwKKyAgICAgICAgICAg
ICAgICAgICAgR1NUX1ZJREVPX0lORk9fTl9QTEFORVMoJnZpZGVvRnJhbWUuaW5mbykpOworCisg
ICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEdTVF9WSURFT19J
TkZPX0lTX1JHQigmdmlkZW9GcmFtZS5pbmZvKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKEdTVF9WSURFT19JTkZPX05fUExBTkVTKCZ2aWRlb0ZyYW1lLmluZm8pICE9IDEpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIlx0UkdCIHBsYW5lOiAldVxuIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqc3RhdGljX2Nhc3Q8R0x1aW50Kj4odmlkZW9GcmFtZS5kYXRhWzBdKSk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxC
dWZmZXI+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcjo6VGV4dHVyZVZhcmlh
bnQgeyBCdWZmZXI6OlJHQlRleHR1cmUgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKnN0YXRpY19jYXN0PEdMdWludCo+KHZpZGVvRnJhbWUuZGF0YVswXSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSB9LCBmcmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhv
bGRlci0+ZmxhZ3MoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKEdTVF9WSURFT19JTkZPX0lTX1lVVigmdmlkZW9GcmFtZS5pbmZvKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKEdTVF9WSURFT19JTkZPX05fUExBTkVTKCZ2aWRlb0Zy
YW1lLmluZm8pICE9IDMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlx0WVVWIHBsYW5lczogJXUs
ICV1LCAldVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGljX2Nhc3Q8R0x1
aW50Kj4odmlkZW9GcmFtZS5kYXRhWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
c3RhdGljX2Nhc3Q8R0x1aW50Kj4odmlkZW9GcmFtZS5kYXRhWzFdKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqc3RhdGljX2Nhc3Q8R0x1aW50Kj4odmlkZW9GcmFtZS5kYXRhWzJdKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
QnVmZmVyPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXI6OlRleHR1cmVWYXJp
YW50IHsgQnVmZmVyOjpZVVZUZXh0dXJlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICpzdGF0aWNfY2FzdDxHTHVpbnQqPih2aWRlb0ZyYW1lLmRhdGFbMF0pLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRpY19jYXN0PEdMdWludCo+KHZpZGVv
RnJhbWUuZGF0YVsxXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3Rh
dGljX2Nhc3Q8R0x1aW50Kj4odmlkZW9GcmFtZS5kYXRhWzJdKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9IH0sIGZyYW1lSG9sZGVyLT5zaXplKCksIGZyYW1lSG9sZGVyLT5mbGFn
cygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICBpZiAoIWxheWVyQnVmZmVyKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgICAgICAgICBsYXllckJ1ZmZl
ci0+c2V0VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcihXVEZNb3ZlKGZyYW1lSG9sZGVyKSk7CiAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gcHJveHku
Z2V0QXZhaWxhYmxlQnVmZmVyKGZyYW1lSG9sZGVyLT5zaXplKCksIEdMX0RPTlRfQ0FSRSk7CkBA
IC03MzYsNiArODAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpw
dXNoVGV4dHVyZVRvQ29tcG9zaXRvcigpCiAgICAgICAgICAgICAgICAgZnJhbWVIb2xkZXItPnVw
ZGF0ZVRleHR1cmUobGF5ZXJCdWZmZXItPnRleHR1cmVHTCgpKTsKICAgICAgICAgICAgICAgICBs
YXllckJ1ZmZlci0+c2V0RXh0cmFGbGFncyh0ZXhNYXBGbGFnRnJvbU9yaWVudGF0aW9uKG1fdmlk
ZW9Tb3VyY2VPcmllbnRhdGlvbikgfCAoZnJhbWVIb2xkZXItPmhhc0FscGhhQ2hhbm5lbCgpID8g
VGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCA6IDApKTsKICAgICAgICAgICAgIH0KKwogICAg
ICAgICAgICAgcHJveHkucHVzaE5leHRCdWZmZXIoV1RGTW92ZShsYXllckJ1ZmZlcikpOwogICAg
ICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIu
Y3BwCmluZGV4IDEzNTMzM2VhMWI1MTVlYjVmNTEwMWNiYTU2ZGJkNjcyZDgwODM3ZGYuLmM0MmQ5
MTZiMGY3MWJiMWYzNjU1YmI2MWRhZGM5OTI2ZTQ2MDE1OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIFZpZGVv
VGV4dHVyZUNvcGllckdTdHJlYW1lcjo6VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyKENvbG9y
Q29udmVyc2lvbiBjb2xvckNvCiAgICAgQVNTRVJUKHByZXZpb3VzQ29udGV4dCk7CiAgICAgUGxh
dGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250
ZXh0KCktPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCi0gICAgbV9zaGFkZXJQcm9ncmFtID0gVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW06OmNyZWF0ZShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bTo6VGV4dHVyZSk7CisgICAgbV9zaGFkZXJQcm9ncmFtID0gVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW06OmNyZWF0ZShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVJHQik7CiAK
ICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbV9mcmFtZWJ1ZmZlcik7CiAgICAgZ2xHZW5UZXh0
dXJlcygxLCAmbV9yZXN1bHRUZXh0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggOTc0
Yjg1NzhiODhhYTY0MzUwOTFlOGIwYzM4YmIyZGI3MTBlZjEwMi4uNzkxNWZlZjU3ZmQ5MWNkNjM5
ZmQzMTEzOTRiYjMxMzRjMzQ3ZjY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAgLTMxOSwy
MSArMzE5LDIxIEBAIHN0YXRpYyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3B0aW9ucyBv
cHRpb25zRm9yRmlsdGVyVHlwZShGaWx0ZXJPcGVyYXRpb246CiB7CiAgICAgc3dpdGNoICh0eXBl
KSB7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRToKLSAgICAgICAgcmV0dXJu
IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRl
clByb2dyYW06OkdyYXlzY2FsZUZpbHRlcjsKKyAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtOjpUZXh0dXJlUkdCIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Okdy
YXlzY2FsZUZpbHRlcjsKICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6Ci0gICAgICAg
IHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZSB8IFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtOjpTZXBpYUZpbHRlcjsKKyAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlUkdCIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06
OlNlcGlhRmlsdGVyOwogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFURToKLSAgICAg
ICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlIHwgVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW06OlNhdHVyYXRlRmlsdGVyOworICAgICAgICByZXR1cm4gVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVSR0IgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbTo6U2F0dXJhdGVGaWx0ZXI7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RB
VEU6Ci0gICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZSB8
IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpIdWVSb3RhdGVGaWx0ZXI7CisgICAgICAgIHJl
dHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVJHQiB8IFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtOjpIdWVSb3RhdGVGaWx0ZXI7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRp
b246OklOVkVSVDoKLSAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpU
ZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkludmVydEZpbHRlcjsKKyAgICAg
ICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlUkdCIHwgVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW06OkludmVydEZpbHRlcjsKICAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6QlJJR0hUTkVTUzoKLSAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtOjpUZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkJyaWdodG5lc3NGaWx0
ZXI7CisgICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVJH
QiB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpCcmlnaHRuZXNzRmlsdGVyOwogICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDoKLSAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkNv
bnRyYXN0RmlsdGVyOworICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06
OlRleHR1cmVSR0IgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6Q29udHJhc3RGaWx0ZXI7
CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6Ci0gICAgICAgIHJldHVybiBUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZSB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtOjpPcGFjaXR5RmlsdGVyOworICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW06OlRleHR1cmVSR0IgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3BhY2l0eUZp
bHRlcjsKICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjoKICAgICAgICAgcmV0dXJuIFRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpCbHVyRmlsdGVyOwogICAgIGNhc2UgRmlsdGVyT3Bl
cmF0aW9uOjpEUk9QX1NIQURPVzoKQEAgLTQ3MCw3ICs0NzAsNyBAQCB2b2lkIFRleHR1cmVNYXBw
ZXJHTDo6ZHJhd1RleHR1cmUoR0x1aW50IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRT
aXplJiB0ZQogICAgICAgICAmJiBleHBvc2VkRWRnZXMgPT0gQWxsRWRnZXMKICAgICAgICAgJiYg
IW1vZGVsVmlld01hdHJpeC5tYXBRdWFkKHRhcmdldFJlY3QpLmlzUmVjdGlsaW5lYXIoKTsKIAot
ICAgIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnMgPSBUZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZTsKKyAgICBUZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbTo6T3B0aW9ucyBvcHRpb25zID0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1
cmVSR0I7CiAgICAgaWYgKHVzZVJlY3QpCiAgICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW06OlJlY3Q7CiAgICAgaWYgKG9wYWNpdHkgPCAxKQpAQCAtNTA0LDYgKzUw
NCwxMDggQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKEdMdWludCB0ZXh0dXJl
LCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGUKICAgICBkcmF3VGV4dHVyZWRRdWFkV2l0
aFByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgdGV4dHVyZSwgZmxhZ3MsIHRleHR1cmVTaXplLCB0YXJn
ZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkpOwogfQogCit2b2lkIFRleHR1cmVNYXBw
ZXJHTDo6ZHJhd1RleHR1cmVZVVYoY29uc3Qgc3RkOjphcnJheTxHTHVpbnQsMz4mIHRleHR1cmVz
LCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJp
eCwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKQoreworICAgIGJvb2wgdXNl
UmVjdCA9IGZsYWdzICYgU2hvdWxkVXNlQVJCVGV4dHVyZVJlY3Q7CisgICAgYm9vbCB1c2VBbnRp
YWxpYXNpbmcgPSBtX2VuYWJsZUVkZ2VEaXN0YW5jZUFudGlhbGlhc2luZworICAgICAgICAmJiBl
eHBvc2VkRWRnZXMgPT0gQWxsRWRnZXMKKyAgICAgICAgJiYgIW1vZGVsVmlld01hdHJpeC5tYXBR
dWFkKHRhcmdldFJlY3QpLmlzUmVjdGlsaW5lYXIoKTsKKworICAgIGZwcmludGYoc3RkZXJyLCAi
Pj4+IGRyYXdUZXh0dXJlWVVWKCk6IGVyciAleFxuIiwgZ2xHZXRFcnJvcigpKTsKKworICAgIFRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnMgPSBUZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVlVVjsKKyAgICBpZiAodXNlUmVjdCkKKyAgICAgICAgb3B0
aW9ucyB8PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6UmVjdDsKKyAgICBpZiAob3BhY2l0
eSA8IDEpCisgICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9w
YWNpdHk7CisgICAgaWYgKHVzZUFudGlhbGlhc2luZykgeworICAgICAgICBvcHRpb25zIHw9IFRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpBbnRpYWxpYXNpbmc7CisgICAgICAgIGZsYWdzIHw9
IFNob3VsZEFudGlhbGlhczsKKyAgICB9CisgICAgaWYgKHdyYXBNb2RlKCkgPT0gUmVwZWF0V3Jh
cCAmJiAhbV9jb250ZXh0QXR0cmlidXRlcy5zdXBwb3J0c05QT1RUZXh0dXJlcykKKyAgICAgICAg
b3B0aW9ucyB8PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6TWFudWFsUmVwZWF0OworCisg
ICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gZmlsdGVyID0gZGF0YSgpLmZpbHRlckluZm8gPyBk
YXRhKCkuZmlsdGVySW5mby0+ZmlsdGVyOiAwOworICAgIEdMdWludCBmaWx0ZXJDb250ZW50VGV4
dHVyZUlEID0gMDsKKworICAgIGlmIChmaWx0ZXIpIHsKKyAgICAgICAgaWYgKGRhdGEoKS5maWx0
ZXJJbmZvLT5jb250ZW50VGV4dHVyZSkKKyAgICAgICAgICAgIGZpbHRlckNvbnRlbnRUZXh0dXJl
SUQgPSB0b0JpdG1hcFRleHR1cmVHTChkYXRhKCkuZmlsdGVySW5mby0+Y29udGVudFRleHR1cmUu
Z2V0KCkpLT5pZCgpOworICAgICAgICBvcHRpb25zIHw9IG9wdGlvbnNGb3JGaWx0ZXJUeXBlKGZp
bHRlci0+dHlwZSgpLCBkYXRhKCkuZmlsdGVySW5mby0+cGFzcyk7CisgICAgICAgIGlmIChmaWx0
ZXItPmFmZmVjdHNPcGFjaXR5KCkpCisgICAgICAgICAgICBmbGFncyB8PSBTaG91bGRCbGVuZDsK
KyAgICB9CisKKyAgICBpZiAodXNlQW50aWFsaWFzaW5nIHx8IG9wYWNpdHkgPCAxKQorICAgICAg
ICBmbGFncyB8PSBTaG91bGRCbGVuZDsKKworICAgIFJlZjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbT4gcHJvZ3JhbSA9IGRhdGEoKS5nZXRTaGFkZXJQcm9ncmFtKG9wdGlvbnMpOworCisgICAg
aWYgKGZpbHRlcikKKyAgICAgICAgcHJlcGFyZUZpbHRlclByb2dyYW0ocHJvZ3JhbS5nZXQoKSwg
KmZpbHRlci5nZXQoKSwgZGF0YSgpLmZpbHRlckluZm8tPnBhc3MsIHRleHR1cmVTaXplLCBmaWx0
ZXJDb250ZW50VGV4dHVyZUlEKTsKKworICAgIHsKKyAgICAgICAgZ2xVc2VQcm9ncmFtKHByb2dy
YW0tPnByb2dyYW1JRCgpKTsKKyAgICAgICAgeworICAgICAgICAgICAgR0xlbnVtIHRhcmdldCA9
IGZsYWdzICYgU2hvdWxkVXNlQVJCVGV4dHVyZVJlY3QgPyBHTGVudW0oR0xfVEVYVFVSRV9SRUNU
QU5HTEVfQVJCKSA6IEdMZW51bShHTF9URVhUVVJFXzJEKTsKKyAgICAgICAgICAgIHN0ZDo6YXJy
YXk8R0x1aW50LCAzPiBzYW1wbGVycyA9IHsKKyAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+
c2FtcGxlcllMb2NhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT5zYW1wbGVy
VUxvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPnNhbXBsZXJWTG9jYXRp
b24oKSwKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
OiB7IDAsIDEsIDIgfSkgeworICAgICAgICAgICAgICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhU
VVJFMCArIGkpOworICAgICAgICAgICAgICAgIGdsQmluZFRleHR1cmUodGFyZ2V0LCB0ZXh0dXJl
c1tpXSk7CisgICAgICAgICAgICAgICAgZ2xVbmlmb3JtMWkoc2FtcGxlcnNbaV0sIGkpOworCisg
ICAgICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICAgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAgICAg
ICAgICAgICAgIGlmICh3cmFwTW9kZSgpID09IFJlcGVhdFdyYXAgJiYgbV9jb250ZXh0QXR0cmli
dXRlcy5zdXBwb3J0c05QT1RUZXh0dXJlcykgeworICAgICAgICAgICAgICAgICAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX1JFUEVBVCk7Cisg
ICAgICAgICAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX1dSQVBfVCwgR0xfUkVQRUFUKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9X
UkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICAgICAgICAgICAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0Up
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHBhdHRlcm5UcmFuc2Zvcm0gPSB0aGlzLT5wYXR0ZXJuVHJh
bnNmb3JtKCk7CisgICAgICAgIGlmIChmbGFncyAmIFNob3VsZFJvdGF0ZVRleHR1cmU5MCkgewor
ICAgICAgICAgICAgcGF0dGVyblRyYW5zZm9ybS5yb3RhdGUoLTkwKTsKKyAgICAgICAgICAgIHBh
dHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKC0xLCAwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
ZmxhZ3MgJiBTaG91bGRSb3RhdGVUZXh0dXJlMTgwKSB7CisgICAgICAgICAgICBwYXR0ZXJuVHJh
bnNmb3JtLnJvdGF0ZSgxODApOworICAgICAgICAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xh
dGUoLTEsIC0xKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZmxhZ3MgJiBTaG91bGRSb3RhdGVU
ZXh0dXJlMjcwKSB7CisgICAgICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnJvdGF0ZSgtMjcwKTsK
KyAgICAgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAsIC0xKTsKKyAgICAgICAg
fQorICAgICAgICBpZiAoZmxhZ3MgJiBTaG91bGRGbGlwVGV4dHVyZSkKKyAgICAgICAgICAgIHBh
dHRlcm5UcmFuc2Zvcm0uZmxpcFkoKTsKKyAgICAgICAgaWYgKGZsYWdzICYgU2hvdWxkVXNlQVJC
VGV4dHVyZVJlY3QpCisgICAgICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9y
bSh0ZXh0dXJlU2l6ZS53aWR0aCgpLCB0ZXh0dXJlU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGlm
IChmbGFncyAmIFNob3VsZEZsaXBUZXh0dXJlKQorICAgICAgICAgICAgcGF0dGVyblRyYW5zZm9y
bS50cmFuc2xhdGUoMCwgLTEpOworCisgICAgICAgIHByb2dyYW0tPnNldE1hdHJpeChwcm9ncmFt
LT50ZXh0dXJlU3BhY2VNYXRyaXhMb2NhdGlvbigpLCBwYXR0ZXJuVHJhbnNmb3JtKTsKKyAgICAg
ICAgcHJvZ3JhbS0+c2V0TWF0cml4KHByb2dyYW0tPnRleHR1cmVDb2xvclNwYWNlTWF0cml4TG9j
YXRpb24oKSwgY29sb3JTcGFjZU1hdHJpeEZvckZsYWdzKGZsYWdzKSk7CisgICAgICAgIGdsVW5p
Zm9ybTFmKHByb2dyYW0tPm9wYWNpdHlMb2NhdGlvbigpLCBvcGFjaXR5KTsKKworICAgICAgICBp
ZiAob3BhY2l0eSA8IDEpCisgICAgICAgICAgICBmbGFncyB8PSBTaG91bGRCbGVuZDsKKworICAg
ICAgICBkcmF3KHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgcHJvZ3JhbSwgR0xfVFJJQU5H
TEVfRkFOLCBmbGFncyk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7
CisgICAgfQorCisgICAgZnByaW50ZihzdGRlcnIsICI8PDwgZHJhd1RleHR1cmVZVVYoKTogZXJy
ICV4XG4iLCBnbEdldEVycm9yKCkpOworfQorCiB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1Nv
bGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbWF0cml4LCBjb25zdCBDb2xvciYgY29sb3IsIGJvb2wgaXNCbGVuZGluZ0FsbG93ZWQpCiB7
CiAgICAgRmxhZ3MgZmxhZ3MgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCmluZGV4IGNhMDU2YWY2NjAz
MGVkMWVlZDkyZmE1YzJhMjhkYTkwY2IzNGViNmEuLmIyMzAyYTBiMzhiZTI0ZGI0NmJiOWIzZjhh
ZTY2YTdjYTliMGZiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJUZXh0
dXJlTWFwcGVyR0xIZWFkZXJzLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIK
KyNpbmNsdWRlIDxhcnJheT4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NCw2ICs2NSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYXdOdW1iZXIoaW50IG51bWJlciwgY29uc3QgQ29sb3Im
LCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIHVuc2ln
bmVkIGV4cG9zZWRFZGdlcykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJl
KEdMdWludCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVs
Vmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRn
ZXMpOworICAgIHZvaWQgZHJhd1RleHR1cmVZVVYoY29uc3Qgc3RkOjphcnJheTxHTHVpbnQsIDM+
JiB0ZXh0dXJlcywgRmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdN
YXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKTsK
ICAgICB2b2lkIGRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiwgY29uc3QgQ29sb3ImLCBib29sKSBvdmVycmlkZTsKICAgICB2b2lkIGNs
ZWFyQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKaW5kZXggN2FmZGYzMGEwNWJjYTUzOTdi
ODAxOGJmZWJkODllMGUxZGE1MDMzMy4uOGFmZDg0Nzg0NjU3YjBkZmZmNTNlNzhjM2Q0NmNlNDc5
YTYxN2JkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIuY3BwCkBAIC0zNSwyMCArMzUsNDIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIoUmVmUHRyPEJpdG1hcFRleHR1cmU+JiYgdGV4dHVyZSwgVGV4dHVyZU1hcHBlckdMOjpG
bGFncyBmbGFncykKICAgICA6IG1fdGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpKQotICAgICwgbV90
ZXh0dXJlSUQoMCkKKyAgICAsIG1fdmFyaWFudChSR0JUZXh0dXJlIHsgMCB9KQogICAgICwgbV9l
eHRyYUZsYWdzKGZsYWdzKQogICAgICwgbV9oYXNNYW5hZ2VkVGV4dHVyZSh0cnVlKQogewogfQog
CisjaWYgMAogVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OlRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyKEdMdWludCB0ZXh0dXJlSUQsIGNvbnN0IEludFNpemUmIHNpemUs
IFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MsIEdMaW50IGludGVybmFsRm9ybWF0KQotICAg
IDogbV90ZXh0dXJlSUQodGV4dHVyZUlEKQorICAgIDogbV92YXJpYW50KFJHQlRleHR1cmUgeyB0
ZXh0dXJlSUQgfSkKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV9pbnRlcm5hbEZvcm1hdChp
bnRlcm5hbEZvcm1hdCkKICAgICAsIG1fZXh0cmFGbGFncyhmbGFncykKICAgICAsIG1faGFzTWFu
YWdlZFRleHR1cmUoZmFsc2UpCiB7CiB9CisjZW5kaWYKKworVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXI6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKEdMdWludCB0ZXh0
dXJlSUQsIGNvbnN0IEludFNpemUmIHNpemUsIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3Ms
IEdMaW50IGludGVybmFsRm9ybWF0KQorICAgIDogVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIoeyBSR0JUZXh0dXJlIHsgdGV4dHVyZUlEIH0gfSwgc2l6ZSwgZmxhZ3MsIGludGVybmFs
Rm9ybWF0KQoreworfQorCitUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoVGV4dHVyZVZhcmlhbnQmJiB2YXJpYW50LCBjb25z
dCBJbnRTaXplJiBzaXplLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzLCBHTGludCBpbnRl
cm5hbEZvcm1hdCkKKyAgICA6IG1fdmFyaWFudChXVEZNb3ZlKHZhcmlhbnQpKQorICAgICwgbV9z
aXplKHNpemUpCisgICAgLCBtX2ludGVybmFsRm9ybWF0KGludGVybmFsRm9ybWF0KQorICAgICwg
bV9leHRyYUZsYWdzKGZsYWdzKQorICAgICwgbV9oYXNNYW5hZ2VkVGV4dHVyZShmYWxzZSkKK3sK
KyAgICBmcHJpbnRmKHN0ZGVyciwgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKCVw
KVxuIiwgdGhpcyk7Cit9CisKK1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjp+VGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoKQoreworICAgIGZwcmludGYoc3RkZXJyLCAi
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoJXApXG4iLCB0aGlzKTsKK30KIAogYm9v
bCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2FuUmV1c2VXaXRob3V0UmVzZXQo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgR0xpbnQgaW50ZXJuYWxGb3JtYXQpCiB7CkBAIC01NywxNCAr
NzksMjQgQEAgYm9vbCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2FuUmV1c2VX
aXRob3V0UmVzZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSwKIAogc3RkOjp1bmlxdWVfcHRyPFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcjo6Y2xvbmUoKQogewotICAgIGlmIChtX2hhc01hbmFnZWRUZXh0dXJlIHx8ICFtX3RleHR1
cmVJRCkgeworICAgIGlmIChtX2hhc01hbmFnZWRUZXh0dXJlKSB7CiAgICAgICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBhdXRvIHRleHR1
cmUgPSBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0
ZXM6OmdldCgpLCBtX2ludGVybmFsRm9ybWF0KTsKLSAgICB0ZXh0dXJlLT5yZXNldChtX3NpemUp
OwotICAgIHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+KHRleHR1cmUuZ2V0KCkpLmNvcHlG
cm9tRXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVyZUlEKTsKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oV1RGTW92ZSh0ZXh0dXJlKSwg
bV9leHRyYUZsYWdzKTsKKworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fdmFyaWFudCwKKyAg
ICAgICAgWyZdKGNvbnN0IFJHQlRleHR1cmUmIHRleHR1cmUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGF1dG8gY2xvbmVkVGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1cmVN
YXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCksIG1faW50ZXJuYWxGb3JtYXQpOworICAgICAg
ICAgICAgY2xvbmVkVGV4dHVyZS0+cmVzZXQobV9zaXplKTsKKyAgICAgICAgICAgIHN0YXRpY19j
YXN0PEJpdG1hcFRleHR1cmVHTCY+KGNsb25lZFRleHR1cmUuZ2V0KCkpLmNvcHlGcm9tRXh0ZXJu
YWxUZXh0dXJlKHRleHR1cmUuaWQpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUoY2xvbmVkVGV4dHVy
ZSksIG1fZXh0cmFGbGFncyk7CisgICAgICAgIH0sCisgICAgICAgIFtdKGNvbnN0IFlVVlRleHR1
cmUmKQorICAgICAgICB7CisgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0pOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiB0
ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkpCkBAIC04Niw4ICsx
MTgsMTggQEAgdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6cGFpbnRUb1Rl
eHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4dHUKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIEFTU0VSVChtX3RleHR1cmVJRCk7Ci0gICAgdGV4bWFwR0wuZHJhd1RleHR1cmUobV90
ZXh0dXJlSUQsIG1fZXh0cmFGbGFncywgbV9zaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRy
aXgsIG9wYWNpdHkpOworICAgIFdURjo6c3dpdGNoT24obV92YXJpYW50LAorICAgICAgICBbJl0o
Y29uc3QgUkdCVGV4dHVyZSYgdGV4dHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJU
KHRleHR1cmUuaWQpOworICAgICAgICAgICAgdGV4bWFwR0wuZHJhd1RleHR1cmUodGV4dHVyZS5p
ZCwgbV9leHRyYUZsYWdzLCBtX3NpemUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3Bh
Y2l0eSk7CisgICAgICAgIH0sCisgICAgICAgIFsmXShjb25zdCBZVVZUZXh0dXJlJiB0ZXh0dXJl
KQorICAgICAgICB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlNIT1ctTUUtWVVWXG4i
KTsKKyAgICAgICAgICAgIHRleG1hcEdMLmRyYXdUZXh0dXJlWVVWKHN0ZDo6YXJyYXk8R0x1aW50
LCAzPiB7IHRleHR1cmUueSwgdGV4dHVyZS51LCB0ZXh0dXJlLnYgfSwKKyAgICAgICAgICAgICAg
ICBtX2V4dHJhRmxhZ3MsIG1fc2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFj
aXR5KTsKKyAgICAgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgKaW5kZXggZDg0OWVjYjZh
YmE0ZTFjNGE2ZjI3OGI4MjhjMTYwOGVjNjE4ZDI5Yy4uZjM5YThmOGJmNTNmZjUzZGMyYmExMzY0
MjQxNWE4NjA5MWZiYjJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
R0xIZWFkZXJzLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKICNp
bmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzksOSArNDAsMjAgQEAgY2xhc3MgVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIgOiBwdWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKCk7CiBwdWJsaWM6CiAgICAgVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoUmVmUHRyPEJpdG1hcFRleHR1cmU+JiYsIFRleHR1
cmVNYXBwZXJHTDo6RmxhZ3MgPSAwKTsKKwogICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyKEdMdWludCB0ZXh0dXJlSUQsIGNvbnN0IEludFNpemUmLCBUZXh0dXJlTWFwcGVyR0w6
OkZsYWdzLCBHTGludCBpbnRlcm5hbEZvcm1hdCk7CisgICAgc3RydWN0IFJHQlRleHR1cmUgewor
ICAgICAgICBHTHVpbnQgaWQ7CisgICAgfTsKKyAgICBzdHJ1Y3QgWVVWVGV4dHVyZSB7CisgICAg
ICAgIEdMdWludCB5OworICAgICAgICBHTHVpbnQgdTsKKyAgICAgICAgR0x1aW50IHY7CisgICAg
fTsKKyAgICB1c2luZyBUZXh0dXJlVmFyaWFudCA9IFdURjo6VmFyaWFudDxSR0JUZXh0dXJlLCBZ
VVZUZXh0dXJlPjsKKyAgICBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihUZXh0dXJl
VmFyaWFudCYmLCBjb25zdCBJbnRTaXplJiwgVGV4dHVyZU1hcHBlckdMOjpGbGFncywgR0xpbnQg
aW50ZXJuYWxGb3JtYXQpOwogCi0gICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXIoKTsKIAogICAgIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1h
cHBlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2Rl
bFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBvcGFjaXR5ID0gMS4w
KSBmaW5hbDsKIApAQCAtNzcsNiArODksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxCaXRtYXBU
ZXh0dXJlPiBtX3RleHR1cmU7CiAgICAgTW9ub3RvbmljVGltZSBtX3RpbWVMYXN0VXNlZDsKIAor
ICAgIFRleHR1cmVWYXJpYW50IG1fdmFyaWFudDsKICAgICBHTHVpbnQgbV90ZXh0dXJlSUQ7CiAg
ICAgSW50U2l6ZSBtX3NpemU7CiAgICAgR0xpbnQgbV9pbnRlcm5hbEZvcm1hdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCmluZGV4IDJmNmY1MTAyMWVjZjdiNjU5
YTFiZDZjODdhYWVlZjRiNmU2YTE5ZTguLjljNGNlZGVhYjY0YTUwNWUyNGJhZWMwNTE4N2VkZWQ3
YjI3ZjYzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcApA
QCAtMjA3LDYgKzIwNyw5IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBmcmFnbWVudFRlbXBsYXRlR0Uz
MjBWYXJzID0KIHN0YXRpYyBjb25zdCBjaGFyKiBmcmFnbWVudFRlbXBsYXRlQ29tbW9uID0KICAg
ICBTVFJJTkdJRlkoCiAgICAgICAgIHVuaWZvcm0gU2FtcGxlclR5cGUgc19zYW1wbGVyOworICAg
ICAgICB1bmlmb3JtIFNhbXBsZXJUeXBlIHNfc2FtcGxlclk7CisgICAgICAgIHVuaWZvcm0gU2Ft
cGxlclR5cGUgc19zYW1wbGVyVTsKKyAgICAgICAgdW5pZm9ybSBTYW1wbGVyVHlwZSBzX3NhbXBs
ZXJWOwogICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX2NvbnRlbnRUZXh0dXJlOwogICAgICAg
ICB1bmlmb3JtIGZsb2F0IHVfb3BhY2l0eTsKICAgICAgICAgdW5pZm9ybSBmbG9hdCB1X2ZpbHRl
ckFtb3VudDsKQEAgLTIzMSw3ICsyMzQsMTUgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGZyYWdtZW50
VGVtcGxhdGVDb21tb24gPQogCiAgICAgICAgIHZvaWQgYXBwbHlNYW51YWxSZXBlYXQoaW5vdXQg
dmVjMiBwb3MpIHsgcG9zID0gZnJhY3QocG9zKTsgfQogCi0gICAgICAgIHZvaWQgYXBwbHlUZXh0
dXJlKGlub3V0IHZlYzQgY29sb3IsIHZlYzIgdGV4Q29vcmQpIHsgY29sb3IgPSB1X3RleHR1cmVD
b2xvclNwYWNlTWF0cml4ICogU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlciwgdGV4Q29vcmQpOyB9
CisgICAgICAgIHZvaWQgYXBwbHlUZXh0dXJlUkdCKGlub3V0IHZlYzQgY29sb3IsIHZlYzIgdGV4
Q29vcmQpIHsgY29sb3IgPSB1X3RleHR1cmVDb2xvclNwYWNlTWF0cml4ICogU2FtcGxlckZ1bmN0
aW9uKHNfc2FtcGxlciwgdGV4Q29vcmQpOyB9CisgICAgICAgIHZvaWQgYXBwbHlUZXh0dXJlWVVW
KGlub3V0IHZlYzQgY29sb3IsIHZlYzIgdGV4Q29vcmQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGZsb2F0IHkgPSBTYW1wbGVyRnVuY3Rpb24oc19zYW1wbGVyWSwgdGV4Q29vcmQpLnI7CisgICAg
ICAgICAgICBmbG9hdCB1ID0gU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlclUsIHRleENvb3JkKS5y
IC0gMC41OworICAgICAgICAgICAgZmxvYXQgdiA9IFNhbXBsZXJGdW5jdGlvbihzX3NhbXBsZXJW
LCB0ZXhDb29yZCkuciAtIDAuNTsKKyAgICAgICAgICAgIHZlYzQgZGF0YSA9IHZlYzQoeSArIDEu
NDAyICogdiwgeSAtIDAuMzQ0ICogdSAtIDAuNzE0ICogdiwgeSArIDEuNzcyICogdSAsIDEpOwor
ICAgICAgICAgICAgY29sb3IgPSB1X3RleHR1cmVDb2xvclNwYWNlTWF0cml4ICogZGF0YS5iZ3Jh
OworICAgICAgICB9CiAgICAgICAgIHZvaWQgYXBwbHlPcGFjaXR5KGlub3V0IHZlYzQgY29sb3Ip
IHsgY29sb3IgKj0gdV9vcGFjaXR5OyB9CiAgICAgICAgIHZvaWQgYXBwbHlBbnRpYWxpYXNpbmco
aW5vdXQgdmVjNCBjb2xvcikgeyBjb2xvciAqPSBhbnRpYWxpYXMoKTsgfQogCkBAIC0zNDMsNyAr
MzU0LDggQEAgc3RhdGljIGNvbnN0IGNoYXIqIGZyYWdtZW50VGVtcGxhdGVDb21tb24gPQogICAg
ICAgICAgICAgdmVjNCBjb2xvciA9IHZlYzQoMS4sIDEuLCAxLiwgMS4pOwogICAgICAgICAgICAg
dmVjMiB0ZXhDb29yZCA9IHRyYW5zZm9ybVRleENvb3JkKCk7CiAgICAgICAgICAgICBhcHBseU1h
bnVhbFJlcGVhdElmTmVlZGVkKHRleENvb3JkKTsKLSAgICAgICAgICAgIGFwcGx5VGV4dHVyZUlm
TmVlZGVkKGNvbG9yLCB0ZXhDb29yZCk7CisgICAgICAgICAgICBhcHBseVRleHR1cmVSR0JJZk5l
ZWRlZChjb2xvciwgdGV4Q29vcmQpOworICAgICAgICAgICAgYXBwbHlUZXh0dXJlWVVWSWZOZWVk
ZWQoY29sb3IsIHRleENvb3JkKTsKICAgICAgICAgICAgIGFwcGx5U29saWRDb2xvcklmTmVlZGVk
KGNvbG9yKTsKICAgICAgICAgICAgIGFwcGx5QW50aWFsaWFzaW5nSWZOZWVkZWQoY29sb3IpOwog
ICAgICAgICAgICAgYXBwbHlPcGFjaXR5SWZOZWVkZWQoY29sb3IpOwpAQCAtMzY5LDcgKzM4MSw4
IEBAIFJlZjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW06OmNyZWF0ZShUZXh0dXJlTWFwcGVyCiAgICAgICAgIChvcHRpb25zICYgVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW06OkFwcGxpZXIpID8gRU5BQkxFX0FQUExJRVIoQXBwbGllcikgOiBE
SVNBQkxFX0FQUExJRVIoQXBwbGllcikpCiAKICAgICBTdHJpbmdCdWlsZGVyIG9wdGlvbnNBcHBs
aWVyQnVpbGRlcjsKLSAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoVGV4dHVyZSk7CisgICAg
U0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKFRleHR1cmVSR0IpOworICAgIFNFVF9BUFBMSUVSX0ZS
T01fT1BUSU9OUyhUZXh0dXJlWVVWKTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoUmVj
dCk7CiAgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKFNvbGlkQ29sb3IpOwogICAgIFNFVF9B
UFBMSUVSX0ZST01fT1BUSU9OUyhPcGFjaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtLmgKaW5kZXggOGRhMWU0MjgxOWUwZDE3NDc4N2IzN2ZhMGY1NmY0MWYyMWYyNmNl
ZC4uOTY5MGQ2N2Q2MWZlYmFjZWI2ZGE3MjZlY2MzM2ZmMTNiYTkyMDNkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0gOiBwdWJsaWMgUmVm
Q291bnRlZDxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gewogcHVibGljOgogICAgIGVudW0g
T3B0aW9uIHsKLSAgICAgICAgVGV4dHVyZSAgICAgICAgICA9IDFMIDw8IDAsCisgICAgICAgIFRl
eHR1cmVSR0IgICAgICAgPSAxTCA8PCAwLAogICAgICAgICBSZWN0ICAgICAgICAgICAgID0gMUwg
PDwgMSwKICAgICAgICAgU29saWRDb2xvciAgICAgICA9IDFMIDw8IDIsCiAgICAgICAgIE9wYWNp
dHkgICAgICAgICAgPSAxTCA8PCAzLApAQCAtNjEsNyArNjEsOCBAQCBwdWJsaWM6CiAgICAgICAg
IEJsdXJGaWx0ZXIgICAgICAgPSAxTCA8PCAxNCwKICAgICAgICAgQWxwaGFCbHVyICAgICAgICA9
IDFMIDw8IDE1LAogICAgICAgICBDb250ZW50VGV4dHVyZSAgID0gMUwgPDwgMTYsCi0gICAgICAg
IE1hbnVhbFJlcGVhdCAgICAgPSAxTCA8PCAxNworICAgICAgICBNYW51YWxSZXBlYXQgICAgID0g
MUwgPDwgMTcsCisgICAgICAgIFRleHR1cmVZVVYgICAgICAgPSAxTCA8PCAxOCwKICAgICB9Owog
CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBPcHRpb25zOwpAQCAtODEsNiArODIsOSBAQCBwdWJsaWM6
CiAgICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9STShjb2xvcikKICAgICBURVhNQVBfREVDTEFSRV9V
TklGT1JNKGV4cGFuZGVkUXVhZEVkZ2VzSW5TY3JlZW5TcGFjZSkKICAgICBURVhNQVBfREVDTEFS
RV9TQU1QTEVSKHNhbXBsZXIpCisgICAgVEVYTUFQX0RFQ0xBUkVfU0FNUExFUihzYW1wbGVyWSkK
KyAgICBURVhNQVBfREVDTEFSRV9TQU1QTEVSKHNhbXBsZXJVKQorICAgIFRFWE1BUF9ERUNMQVJF
X1NBTVBMRVIoc2FtcGxlclYpCiAgICAgVEVYTUFQX0RFQ0xBUkVfU0FNUExFUihtYXNrKQogCiAg
ICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9STShmaWx0ZXJBbW91bnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369494</attachid>
            <date>2019-05-09 09:37:15 -0700</date>
            <delta_ts>2019-06-23 01:33:57 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-132869-20190509183714.patch</filename>
            <type>text/plain</type>
            <size>30658</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1MDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWJjMTAzZWMyNDc2ZWM5
ZDJiOTdlYjk4YzFmMzU1MTljNDdmZTYyZC4uOTQzZTQ2NmFkZGQxM2Y1M2Q5M2IxMDJhYzVhZDY2
YjExYTZhM2IzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTA1LTA5ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbVGV4bWFwXSBBZGQg
c3VwcG9ydCB0byB1cGxvYWQgbW9yZSBjb2xvciBmb3JtYXRzIGludG8gdGhlIHRleHR1cmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjg2OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3N0Vmlk
ZW9GcmFtZUhvbGRlcjo6R3N0VmlkZW9GcmFtZUhvbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpH
c3RWaWRlb0ZyYW1lSG9sZGVyOjpoYXNNYXBwZWRUZXh0dXJlcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHc3RWaWRlb0ZyYW1lSG9sZGVyOjp2aWRlb0ZyYW1lIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9D
b21wb3NpdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9U
ZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVGV4dHVy
ZUNvcGllckdTdHJlYW1lcjo6VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om9wdGlvbnNGb3JGaWx0ZXJUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckdMOjpkcmF3VGV4dHVyZVlVVik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXI6On5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnBhaW50VG9UZXh0dXJl
TWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW06OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmg6CisKIDIwMTktMDUtMDgg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJF
R1JFU1NJT04ocjIzOTkxNSk6IFtGcmVlVHlwZV0gV2hpdGUgc3BhY2Ugc2tpcHBlZCB3aGVuIHJl
bmRlcmluZyBwbGFpbiB0ZXh0IHdpdGggbm90byBDSksgZm9udApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IDVjYjVmNzUzNmFj
M2NlZmUxZTE2Yzk4ZmU5NjcwMjExMzBhNmRmNzQuLjdiNWZiNGQ1MzIwZWI2ZDk1YjNkNjc2YWZm
ZmQ0MDdlNDBlZDUwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTU1LDExICs1NSwxMSBAQAogCiAjaWYgVVNFKEdTVFJF
QU1FUl9HTCkKICNpZiBHX0JZVEVfT1JERVIgPT0gR19MSVRUTEVfRU5ESUFOCi0jZGVmaW5lIEdT
VF9HTF9DQVBTX0ZPUk1BVCAieyBCR1J4LCBCR1JBIH0iCisjZGVmaW5lIEdTVF9HTF9DQVBTX0ZP
Uk1BVCAieyBCR1J4LCBCR1JBLCBJNDIwIH0iCiAjZGVmaW5lIFRFWFRVUkVfTUFQUEVSX0NPTE9S
X0NPTlZFUlRfRkxBRyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZENvbnZlcnRUZXh0dXJlQkdSQVRv
UkdCQQogI2RlZmluZSBURVhUVVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcgVmlkZW9UZXh0
dXJlQ29waWVyR1N0cmVhbWVyOjpDb2xvckNvbnZlcnNpb246OkNvbnZlcnRCR1JBVG9SR0JBCiAj
ZWxzZQotI2RlZmluZSBHU1RfR0xfQ0FQU19GT1JNQVQgInsgeFJHQiwgQVJHQiB9IgorI2RlZmlu
ZSBHU1RfR0xfQ0FQU19GT1JNQVQgInsgeFJHQiwgQVJHQiwgSTQyMCB9IgogI2RlZmluZSBURVhU
VVJFX01BUFBFUl9DT0xPUl9DT05WRVJUX0ZMQUcgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRDb252
ZXJ0VGV4dHVyZUFSR0JUb1JHQkEKICNkZWZpbmUgVEVYVFVSRV9DT1BJRVJfQ09MT1JfQ09OVkVS
VF9GTEFHIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6Q29sb3JDb252ZXJzaW9uOjpDb252
ZXJ0QVJHQlRvUkdCQQogI2VuZGlmCkBAIC0xNTEsNyArMTUxLDcgQEAgc3RhdGljIGludCBncmVh
dGVzdENvbW1vbkRpdmlzb3IoaW50IGEsIGludCBiKQogI2lmIFVTRShURVhUVVJFX01BUFBFUl9H
TCkKIGNsYXNzIEdzdFZpZGVvRnJhbWVIb2xkZXIgOiBwdWJsaWMgVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI6OlVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIgewogcHVibGljOgotICAg
IGV4cGxpY2l0IEdzdFZpZGVvRnJhbWVIb2xkZXIoR3N0U2FtcGxlKiBzYW1wbGUsIFRleHR1cmVN
YXBwZXJHTDo6RmxhZ3MgZmxhZ3MsIGJvb2wgZ3N0R0xFbmFibGVkKQorICAgIGV4cGxpY2l0IEdz
dFZpZGVvRnJhbWVIb2xkZXIoR3N0R0xDb250ZXh0KiBjb250ZXh0LCBHc3RTYW1wbGUqIHNhbXBs
ZSwgVGV4dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncywgYm9vbCBnc3RHTEVuYWJsZWQpCiAgICAg
ewogICAgICAgICBHc3RWaWRlb0luZm8gdmlkZW9JbmZvOwogICAgICAgICBpZiAoVU5MSUtFTFko
IWdldFNhbXBsZVZpZGVvSW5mbyhzYW1wbGUsIHZpZGVvSW5mbykpKQpAQCAtMTY4LDggKzE2OCwx
MCBAQCBwdWJsaWM6CiAKICAgICAgICAgaWYgKGdzdEdMRW5hYmxlZCkgewogICAgICAgICAgICAg
bV9pc01hcHBlZCA9IGdzdF92aWRlb19mcmFtZV9tYXAoJm1fdmlkZW9GcmFtZSwgJnZpZGVvSW5m
bywgbV9idWZmZXIsIHN0YXRpY19jYXN0PEdzdE1hcEZsYWdzPihHU1RfTUFQX1JFQUQgfCBHU1Rf
TUFQX0dMKSk7Ci0gICAgICAgICAgICBpZiAobV9pc01hcHBlZCkKKyAgICAgICAgICAgIGlmICht
X2lzTWFwcGVkKSB7CiAgICAgICAgICAgICAgICAgbV90ZXh0dXJlSUQgPSAqcmVpbnRlcnByZXRf
Y2FzdDxHTHVpbnQqPihtX3ZpZGVvRnJhbWUuZGF0YVswXSk7CisgICAgICAgICAgICAgICAgbV9o
YXNNYXBwZWRUZXh0dXJlcyA9IHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQog
I2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKGZsYWdzKTsKQEAgLTE5OCw2ICsyMDAsOCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBoYXNBbHBoYUNoYW5uZWwoKSBjb25zdCB7IHJldHVybiBtX2hhc0Fs
cGhhQ2hhbm5lbDsgfQogICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MoKSBjb25zdCB7
IHJldHVybiBtX2ZsYWdzOyB9CiAgICAgR0x1aW50IHRleHR1cmVJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fdGV4dHVyZUlEOyB9CisgICAgYm9vbCBoYXNNYXBwZWRUZXh0dXJlcygpIGNvbnN0IHsgcmV0
dXJuIG1faGFzTWFwcGVkVGV4dHVyZXM7IH0KKyAgICBjb25zdCBHc3RWaWRlb0ZyYW1lJiB2aWRl
b0ZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0ZyYW1lOyB9CiAKICAgICB2b2lkIHVwZGF0
ZVRleHR1cmUoQml0bWFwVGV4dHVyZUdMJiB0ZXh0dXJlKQogICAgIHsKQEAgLTIyNSw2ICsyMjks
NyBAQCBwcml2YXRlOgogICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgbV9mbGFncyB7IH07CiAg
ICAgR0x1aW50IG1fdGV4dHVyZUlEIHsgMCB9OwogICAgIGJvb2wgbV9pc01hcHBlZCB7IGZhbHNl
IH07CisgICAgYm9vbCBtX2hhc01hcHBlZFRleHR1cmVzIHsgZmFsc2UgfTsKIH07CiAjZW5kaWYK
IApAQCAtNzEyLDEyICs3MTcsNDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpwdXNoVGV4dHVyZVRvQ29tcG9zaXRvcigpCiAgICAgICAgICAgICBpZiAoIXByb3h5Lmlz
QWN0aXZlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1cmVNYXBwZXJG
bGFncywgIW1fdXNpbmdGYWxsYmFja1ZpZGVvU2luayk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fZ2xDb250ZXh0LmdldCgpLCBtX3NhbXBsZS5nZXQoKSwg
bV90ZXh0dXJlTWFwcGVyRmxhZ3MsICFtX3VzaW5nRmFsbGJhY2tWaWRlb1NpbmspOworCisgICAg
ICAgICAgICB1c2luZyBCdWZmZXIgPSBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjsK
KyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCdWZmZXI+IGxheWVyQnVmZmVyOworICAgICAg
ICAgICAgaWYgKGZyYW1lSG9sZGVyLT5oYXNNYXBwZWRUZXh0dXJlcygpKSB7CisgICAgICAgICAg
ICAgICAgYXV0byYgdmlkZW9GcmFtZSA9IGZyYW1lSG9sZGVyLT52aWRlb0ZyYW1lKCk7CisgICAg
ICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEdTVF9WSURFT19JTkZP
X0lTX1JHQigmdmlkZW9GcmFtZS5pbmZvKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KEdTVF9WSURFT19JTkZPX05fUExBTkVTKCZ2aWRlb0ZyYW1lLmluZm8pICE9IDEpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgICAgICAgICBs
YXllckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8QnVmZmVyPigKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBCdWZmZXI6OlRleHR1cmVWYXJpYW50IHsgQnVmZmVyOjpSR0JUZXh0dXJlIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0aWNfY2FzdDxHTHVpbnQq
Pih2aWRlb0ZyYW1lLmRhdGFbMF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
fSwgZnJhbWVIb2xkZXItPnNpemUoKSwgZnJhbWVIb2xkZXItPmZsYWdzKCksIEdyYXBoaWNzQ29u
dGV4dDNEOjpSR0JBKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChHU1RfVklERU9fSU5GT19J
U19ZVVYoJnZpZGVvRnJhbWUuaW5mbykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChH
U1RfVklERU9fSU5GT19OX1BMQU5FUygmdmlkZW9GcmFtZS5pbmZvKSAhPSAzKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG1fdmlkZW9EZWNvZGVyUGxhdGZvcm0gPT0gV2ViS2l0R3N0VmlkZW9EZWNvZGVyUGxhdGZvcm06
OklteFZQVSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxCdWZmZXI+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBC
dWZmZXI6OlRleHR1cmVWYXJpYW50IHsgQnVmZmVyOjpSR0JUZXh0dXJlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGljX2Nhc3Q8R0x1aW50Kj4odmlkZW9G
cmFtZS5kYXRhWzBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB9LCBm
cmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+ZmxhZ3MoKSwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJHQkEpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8QnVmZmVyPigK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyOjpUZXh0dXJlVmFyaWFudCB7
IEJ1ZmZlcjo6WVVWVGV4dHVyZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKnN0YXRpY19jYXN0PEdMdWludCo+KHZpZGVvRnJhbWUuZGF0YVswXSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRpY19jYXN0PEdMdWludCo+KHZp
ZGVvRnJhbWUuZGF0YVsxXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKnN0YXRpY19jYXN0PEdMdWludCo+KHZpZGVvRnJhbWUuZGF0YVsyXSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gfSwgZnJhbWVIb2xkZXItPnNpemUoKSwgZnJhbWVI
b2xkZXItPmZsYWdzKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0oKTsK
KworICAgICAgICAgICAgICAgIGlmICghbGF5ZXJCdWZmZXIpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAgICAgR0x1aW50IHRleHR1cmVJRCA9IGZyYW1lSG9sZGVyLT50
ZXh0dXJlSUQoKTsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXI7Ci0gICAgICAgICAgICBpZiAodGV4dHVyZUlE
KSB7Ci0gICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPih0ZXh0dXJlSUQsIGZyYW1lSG9sZGVyLT5zaXpl
KCksIGZyYW1lSG9sZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CiAgICAg
ICAgICAgICAgICAgbGF5ZXJCdWZmZXItPnNldFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIoV1RG
TW92ZShmcmFtZUhvbGRlcikpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICBsYXllckJ1ZmZlciA9IHByb3h5LmdldEF2YWlsYWJsZUJ1ZmZlcihmcmFtZUhvbGRlci0+c2l6
ZSgpLCBHTF9ET05UX0NBUkUpOwpAQCAtOTE0LDcgKzk1NCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZTo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdy
YXBoaWNzCiAgICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+
IGZyYW1lSG9sZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3Nh
bXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsIHRydWUpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8
R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9nbENvbnRleHQuZ2V0KCksIG1fc2FtcGxlLmdldCgpLCBt
X3RleHR1cmVNYXBwZXJGbGFncywgdHJ1ZSk7CiAKICAgICBhdXRvIHRleHR1cmVJRCA9IGZyYW1l
SG9sZGVyLT50ZXh0dXJlSUQoKTsKICAgICBpZiAoIXRleHR1cmVJRCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3Bp
ZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5jcHAKaW5kZXggMTM1MzMzZWExYjUxNWVi
NWY1MTAxY2JhNTZkYmQ2NzJkODA4MzdkZi4uYzQyZDkxNmIwZjcxYmIxZjM2NTViYjYxZGFkYzk5
MjZlNDYwMTU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJl
YW1lci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpW
aWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIoQ29sb3JDb252ZXJzaW9uIGNvbG9yQ28KICAgICBB
U1NFUlQocHJldmlvdXNDb250ZXh0KTsKICAgICBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3Bs
YXlGb3JDb21wb3NpdGluZygpLnNoYXJpbmdHTENvbnRleHQoKS0+bWFrZUNvbnRleHRDdXJyZW50
KCk7CiAKLSAgICBtX3NoYWRlclByb2dyYW0gPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6
Y3JlYXRlKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlKTsKKyAgICBtX3NoYWRl
clByb2dyYW0gPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6Y3JlYXRlKFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlUkdCKTsKIAogICAgIGdsR2VuRnJhbWVidWZmZXJzKDEs
ICZtX2ZyYW1lYnVmZmVyKTsKICAgICBnbEdlblRleHR1cmVzKDEsICZtX3Jlc3VsdFRleHR1cmUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCA5NzRiODU3OGI4OGFhNjQzNTA5MWU4YjBjMzhi
YjJkYjcxMGVmMTAyLi41ZjRjZTIzZTAyNTA1MmFlNGZmZTg5NmZkMmViOTc1NDE3ZjM2YzYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtMzE5LDIxICszMTksMjEgQEAgc3RhdGljIFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnNGb3JGaWx0ZXJUeXBlKEZpbHRl
ck9wZXJhdGlvbjoKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6R1JBWVNDQUxFOgotICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dy
YW06OlRleHR1cmUgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6R3JheXNjYWxlRmlsdGVy
OworICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVSR0Ig
fCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6R3JheXNjYWxlRmlsdGVyOwogICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpTRVBJQToKLSAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtOjpUZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlNlcGlhRmls
dGVyOworICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVS
R0IgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6U2VwaWFGaWx0ZXI7CiAgICAgY2FzZSBG
aWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOgotICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW06OlRleHR1cmUgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6U2F0dXJh
dGVGaWx0ZXI7CisgICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4
dHVyZVJHQiB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpTYXR1cmF0ZUZpbHRlcjsKICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURToKLSAgICAgICAgcmV0dXJuIFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dy
YW06Okh1ZVJvdGF0ZUZpbHRlcjsKKyAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtOjpUZXh0dXJlUkdCIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Okh1ZVJvdGF0
ZUZpbHRlcjsKICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SU5WRVJUOgotICAgICAgICByZXR1
cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmUgfCBUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbTo6SW52ZXJ0RmlsdGVyOworICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW06OlRleHR1cmVSR0IgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6SW52
ZXJ0RmlsdGVyOwogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOgotICAgICAg
ICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmUgfCBUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbTo6QnJpZ2h0bmVzc0ZpbHRlcjsKKyAgICAgICAgcmV0dXJuIFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlUkdCIHwgVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW06OkJyaWdodG5lc3NGaWx0ZXI7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNPTlRS
QVNUOgotICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmUg
fCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6Q29udHJhc3RGaWx0ZXI7CisgICAgICAgIHJl
dHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVJHQiB8IFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtOjpDb250cmFzdEZpbHRlcjsKICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6T1BBQ0lUWToKLSAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpU
ZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9wYWNpdHlGaWx0ZXI7CisgICAg
ICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVJHQiB8IFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcGFjaXR5RmlsdGVyOwogICAgIGNhc2UgRmlsdGVyT3Bl
cmF0aW9uOjpCTFVSOgogICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06
OkJsdXJGaWx0ZXI7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOgpAQCAt
NDcwLDcgKzQ3MCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZShHTHVpbnQg
dGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHRlCiAgICAgICAgICYmIGV4cG9z
ZWRFZGdlcyA9PSBBbGxFZGdlcwogICAgICAgICAmJiAhbW9kZWxWaWV3TWF0cml4Lm1hcFF1YWQo
dGFyZ2V0UmVjdCkuaXNSZWN0aWxpbmVhcigpOwogCi0gICAgVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW06Ok9wdGlvbnMgb3B0aW9ucyA9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0
dXJlOworICAgIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnMgPSBU
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVJHQjsKICAgICBpZiAodXNlUmVjdCkK
ICAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6UmVjdDsKICAg
ICBpZiAob3BhY2l0eSA8IDEpCkBAIC01MDQsNiArNTA0LDExNCBAQCB2b2lkIFRleHR1cmVNYXBw
ZXJHTDo6ZHJhd1RleHR1cmUoR0x1aW50IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRT
aXplJiB0ZQogICAgIGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShwcm9ncmFtLmdldCgpLCB0
ZXh0dXJlLCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwg
b3BhY2l0eSk7CiB9CiAKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVlVVihjb25z
dCBzdGQ6OmFycmF5PEdMdWludCwzPiYgdGV4dHVyZXMsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRT
aXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25l
ZCBleHBvc2VkRWRnZXMpCit7CisgICAgYm9vbCB1c2VSZWN0ID0gZmxhZ3MgJiBTaG91bGRVc2VB
UkJUZXh0dXJlUmVjdDsKKyAgICBib29sIHVzZUFudGlhbGlhc2luZyA9IG1fZW5hYmxlRWRnZURp
c3RhbmNlQW50aWFsaWFzaW5nCisgICAgICAgICYmIGV4cG9zZWRFZGdlcyA9PSBBbGxFZGdlcwor
ICAgICAgICAmJiAhbW9kZWxWaWV3TWF0cml4Lm1hcFF1YWQodGFyZ2V0UmVjdCkuaXNSZWN0aWxp
bmVhcigpOworCisgICAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9wdGlvbnMgb3B0aW9u
cyA9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlWVVWOworICAgIGlmICh1c2VS
ZWN0KQorICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpSZWN0
OworICAgIGlmIChvcGFjaXR5IDwgMSkKKyAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbTo6T3BhY2l0eTsKKyAgICBpZiAodXNlQW50aWFsaWFzaW5nKSB7CisgICAg
ICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkFudGlhbGlhc2luZzsK
KyAgICAgICAgZmxhZ3MgfD0gU2hvdWxkQW50aWFsaWFzOworICAgIH0KKyAgICBpZiAod3JhcE1v
ZGUoKSA9PSBSZXBlYXRXcmFwICYmICFtX2NvbnRleHRBdHRyaWJ1dGVzLnN1cHBvcnRzTlBPVFRl
eHR1cmVzKQorICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpN
YW51YWxSZXBlYXQ7CisKKyAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBmaWx0ZXIgPSBkYXRh
KCkuZmlsdGVySW5mbyA/IGRhdGEoKS5maWx0ZXJJbmZvLT5maWx0ZXI6IDA7CisgICAgR0x1aW50
IGZpbHRlckNvbnRlbnRUZXh0dXJlSUQgPSAwOworCisgICAgaWYgKGZpbHRlcikgeworICAgICAg
ICBpZiAoZGF0YSgpLmZpbHRlckluZm8tPmNvbnRlbnRUZXh0dXJlKQorICAgICAgICAgICAgZmls
dGVyQ29udGVudFRleHR1cmVJRCA9IHRvQml0bWFwVGV4dHVyZUdMKGRhdGEoKS5maWx0ZXJJbmZv
LT5jb250ZW50VGV4dHVyZS5nZXQoKSktPmlkKCk7CisgICAgICAgIG9wdGlvbnMgfD0gb3B0aW9u
c0ZvckZpbHRlclR5cGUoZmlsdGVyLT50eXBlKCksIGRhdGEoKS5maWx0ZXJJbmZvLT5wYXNzKTsK
KyAgICAgICAgaWYgKGZpbHRlci0+YWZmZWN0c09wYWNpdHkoKSkKKyAgICAgICAgICAgIGZsYWdz
IHw9IFNob3VsZEJsZW5kOworICAgIH0KKworICAgIGlmICh1c2VBbnRpYWxpYXNpbmcgfHwgb3Bh
Y2l0eSA8IDEpCisgICAgICAgIGZsYWdzIHw9IFNob3VsZEJsZW5kOworCisgICAgUmVmPFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBwcm9ncmFtID0gZGF0YSgpLmdldFNoYWRlclByb2dyYW0o
b3B0aW9ucyk7CisKKyAgICBpZiAoZmlsdGVyKQorICAgICAgICBwcmVwYXJlRmlsdGVyUHJvZ3Jh
bShwcm9ncmFtLmdldCgpLCAqZmlsdGVyLmdldCgpLCBkYXRhKCkuZmlsdGVySW5mby0+cGFzcywg
dGV4dHVyZVNpemUsIGZpbHRlckNvbnRlbnRUZXh0dXJlSUQpOworCisgICAgeworICAgICAgICBn
bFVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbUlEKCkpOworICAgICAgICB7CisgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0ID0gZmxhZ3MgJiBTaG91bGRVc2VBUkJUZXh0dXJlUmVjdCA/IEdMZW51
bShHTF9URVhUVVJFX1JFQ1RBTkdMRV9BUkIpIDogR0xlbnVtKEdMX1RFWFRVUkVfMkQpOworICAg
ICAgICAgICAgc3RkOjphcnJheTxHTHVpbnQsIDM+IHNhbXBsZXJzID0geworICAgICAgICAgICAg
ICAgICAgICBwcm9ncmFtLT5zYW1wbGVyWUxvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAg
IHByb2dyYW0tPnNhbXBsZXJVTG9jYXRpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgcHJvZ3Jh
bS0+c2FtcGxlclZMb2NhdGlvbigpLAorICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA6IHsgMCwgMSwgMiB9KSB7CisgICAgICAgICAgICAgICAgZ2xBY3Rp
dmVUZXh0dXJlKEdMX1RFWFRVUkUwICsgaSk7CisgICAgICAgICAgICAgICAgZ2xCaW5kVGV4dHVy
ZSh0YXJnZXQsIHRleHR1cmVzW2ldKTsKKyAgICAgICAgICAgICAgICBnbFVuaWZvcm0xaShzYW1w
bGVyc1tpXSwgaSk7CisKKyAgICAgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOworICAgICAgICAgICAgICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdM
X0xJTkVBUik7CisgICAgICAgICAgICAgICAgaWYgKHdyYXBNb2RlKCkgPT0gUmVwZWF0V3JhcCAm
JiBtX2NvbnRleHRBdHRyaWJ1dGVzLnN1cHBvcnRzTlBPVFRleHR1cmVzKSB7CisgICAgICAgICAg
ICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBf
UywgR0xfUkVQRUFUKTsKKyAgICAgICAgICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9SRVBFQVQpOworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgICAgICAg
ICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwg
R0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGF0dGVyblRyYW5zZm9ybSA9
IHRoaXMtPnBhdHRlcm5UcmFuc2Zvcm0oKTsKKyAgICAgICAgaWYgKGZsYWdzICYgU2hvdWxkUm90
YXRlVGV4dHVyZTkwKSB7CisgICAgICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnJvdGF0ZSgtOTAp
OworICAgICAgICAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoLTEsIDApOworICAgICAg
ICB9CisgICAgICAgIGlmIChmbGFncyAmIFNob3VsZFJvdGF0ZVRleHR1cmUxODApIHsKKyAgICAg
ICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0ucm90YXRlKDE4MCk7CisgICAgICAgICAgICBwYXR0ZXJu
VHJhbnNmb3JtLnRyYW5zbGF0ZSgtMSwgLTEpOworICAgICAgICB9CisgICAgICAgIGlmIChmbGFn
cyAmIFNob3VsZFJvdGF0ZVRleHR1cmUyNzApIHsKKyAgICAgICAgICAgIHBhdHRlcm5UcmFuc2Zv
cm0ucm90YXRlKC0yNzApOworICAgICAgICAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUo
MCwgLTEpOworICAgICAgICB9CisgICAgICAgIGlmIChmbGFncyAmIFNob3VsZEZsaXBUZXh0dXJl
KQorICAgICAgICAgICAgcGF0dGVyblRyYW5zZm9ybS5mbGlwWSgpOworICAgICAgICBpZiAoZmxh
Z3MgJiBTaG91bGRVc2VBUkJUZXh0dXJlUmVjdCkKKyAgICAgICAgICAgIHBhdHRlcm5UcmFuc2Zv
cm0uc2NhbGVOb25Vbmlmb3JtKHRleHR1cmVTaXplLndpZHRoKCksIHRleHR1cmVTaXplLmhlaWdo
dCgpKTsKKyAgICAgICAgaWYgKGZsYWdzICYgU2hvdWxkRmxpcFRleHR1cmUpCisgICAgICAgICAg
ICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtMSk7CisKKyAgICAgICAgcHJvZ3JhbS0+
c2V0TWF0cml4KHByb2dyYW0tPnRleHR1cmVTcGFjZU1hdHJpeExvY2F0aW9uKCksIHBhdHRlcm5U
cmFuc2Zvcm0pOworICAgICAgICBwcm9ncmFtLT5zZXRNYXRyaXgocHJvZ3JhbS0+dGV4dHVyZUNv
bG9yU3BhY2VNYXRyaXhMb2NhdGlvbigpLCBjb2xvclNwYWNlTWF0cml4Rm9yRmxhZ3MoZmxhZ3Mp
KTsKKyAgICAgICAgZ2xVbmlmb3JtMWYocHJvZ3JhbS0+b3BhY2l0eUxvY2F0aW9uKCksIG9wYWNp
dHkpOworCisgICAgICAgIGlmIChvcGFjaXR5IDwgMSkKKyAgICAgICAgICAgIGZsYWdzIHw9IFNo
b3VsZEJsZW5kOworCisgICAgICAgIGRyYXcodGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBw
cm9ncmFtLCBHTF9UUklBTkdMRV9GQU4sIGZsYWdzKTsKKworICAgICAgICB7CisgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0ID0gZmxhZ3MgJiBTaG91bGRVc2VBUkJUZXh0dXJlUmVjdCA/IEdMZW51
bShHTF9URVhUVVJFX1JFQ1RBTkdMRV9BUkIpIDogR0xlbnVtKEdMX1RFWFRVUkVfMkQpOworCisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgOiB7IDAsIDEsIDIgfSkgeworICAgICAgICAgICAg
ICAgIGdsQmluZFRleHR1cmUodGFyZ2V0LCB0ZXh0dXJlc1tpXSk7CisgICAgICAgICAgICAgICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFN
UF9UT19FREdFKTsKKyAgICAgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBnbEJpbmRUZXh0dXJlKHRhcmdldCwgMCk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGNvbnN0IENvbG9y
JiBjb2xvciwgYm9vbCBpc0JsZW5kaW5nQWxsb3dlZCkKIHsKICAgICBGbGFncyBmbGFncyA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdMLmgKaW5kZXggY2EwNTZhZjY2MDMwZWQxZWVkOTJmYTVjMmEyOGRhOTBj
YjM0ZWI2YS4uYjIzMDJhMGIzOGJlMjRkYjQ2YmI5YjNmOGFlNjZhN2NhOWIwZmI5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyR0wuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJD
b250ZXh0QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTEhlYWRlcnMuaCIK
ICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorI2luY2x1ZGUgPGFycmF5PgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY0LDYgKzY1LDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZHJhd051bWJlcihpbnQgbnVtYmVyLCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1RleHR1
cmUoY29uc3QgQml0bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoR0x1aW50IHRleHR1cmUsIEZsYWdz
LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFj
aXR5LCB1bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcyk7CisgICAgdm9pZCBkcmF3VGV4
dHVyZVlVVihjb25zdCBzdGQ6OmFycmF5PEdMdWludCwgMz4mIHRleHR1cmVzLCBGbGFncywgY29u
c3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwg
dW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpOwogICAgIHZvaWQgZHJhd1NvbGlkQ29s
b3IoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBD
b2xvciYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDb2xvcihjb25zdCBDb2xvciYp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyLmNwcAppbmRleCA3YWZkZjMwYTA1YmNhNTM5N2I4MDE4YmZlYmQ4OWUwZTFkYTUwMzMz
Li41MTE3MTM3NGE4OGI3YjM4N2RlMjU0ODU4YmY0NDg1ODgzMDZhMTYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKQEAgLTM1LDIwICsz
NSw0MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihSZWZQdHI8Qml0bWFwVGV4
dHVyZT4mJiB0ZXh0dXJlLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzKQogICAgIDogbV90
ZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpCi0gICAgLCBtX3RleHR1cmVJRCgwKQorICAgICwgbV92
YXJpYW50KFJHQlRleHR1cmUgeyAwIH0pCiAgICAgLCBtX2V4dHJhRmxhZ3MoZmxhZ3MpCiAgICAg
LCBtX2hhc01hbmFnZWRUZXh0dXJlKHRydWUpCiB7CiB9CiAKKyNpZiAwCiBUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcjo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoR0x1
aW50IHRleHR1cmVJRCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpGbGFn
cyBmbGFncywgR0xpbnQgaW50ZXJuYWxGb3JtYXQpCi0gICAgOiBtX3RleHR1cmVJRCh0ZXh0dXJl
SUQpCisgICAgOiBtX3ZhcmlhbnQoUkdCVGV4dHVyZSB7IHRleHR1cmVJRCB9KQogICAgICwgbV9z
aXplKHNpemUpCiAgICAgLCBtX2ludGVybmFsRm9ybWF0KGludGVybmFsRm9ybWF0KQogICAgICwg
bV9leHRyYUZsYWdzKGZsYWdzKQogICAgICwgbV9oYXNNYW5hZ2VkVGV4dHVyZShmYWxzZSkKIHsK
IH0KKyNlbmRpZgorCitUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoR0x1aW50IHRleHR1cmVJRCwgY29uc3QgSW50U2l6ZSYg
c2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncywgR0xpbnQgaW50ZXJuYWxGb3JtYXQp
CisgICAgOiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcih7IFJHQlRleHR1cmUgeyB0
ZXh0dXJlSUQgfSB9LCBzaXplLCBmbGFncywgaW50ZXJuYWxGb3JtYXQpCit7Cit9CisKK1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcihUZXh0dXJlVmFyaWFudCYmIHZhcmlhbnQsIGNvbnN0IEludFNpemUmIHNpemUsIFRleHR1
cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MsIEdMaW50IGludGVybmFsRm9ybWF0KQorICAgIDogbV92
YXJpYW50KFdURk1vdmUodmFyaWFudCkpCisgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAsIG1faW50
ZXJuYWxGb3JtYXQoaW50ZXJuYWxGb3JtYXQpCisgICAgLCBtX2V4dHJhRmxhZ3MoZmxhZ3MpCisg
ICAgLCBtX2hhc01hbmFnZWRUZXh0dXJlKGZhbHNlKQoreworfQorCitUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcjo6flRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKCkKK3sK
K30KIAogYm9vbCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2FuUmV1c2VXaXRo
b3V0UmVzZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0xpbnQgaW50ZXJuYWxGb3JtYXQpCiB7CkBA
IC01NywxNCArNzcsMjQgQEAgYm9vbCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6
Y2FuUmV1c2VXaXRob3V0UmVzZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSwKIAogc3RkOjp1bmlxdWVf
cHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcjo6Y2xvbmUoKQogewotICAgIGlmIChtX2hhc01hbmFnZWRUZXh0dXJlIHx8
ICFtX3RleHR1cmVJRCkgeworICAgIGlmIChtX2hhc01hbmFnZWRUZXh0dXJlKSB7CiAgICAgICAg
IG5vdEltcGxlbWVudGVkKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBh
dXRvIHRleHR1cmUgPSBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4
dEF0dHJpYnV0ZXM6OmdldCgpLCBtX2ludGVybmFsRm9ybWF0KTsKLSAgICB0ZXh0dXJlLT5yZXNl
dChtX3NpemUpOwotICAgIHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+KHRleHR1cmUuZ2V0
KCkpLmNvcHlGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVyZUlEKTsKLSAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oV1RGTW92ZSh0
ZXh0dXJlKSwgbV9leHRyYUZsYWdzKTsKKworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fdmFy
aWFudCwKKyAgICAgICAgWyZdKGNvbnN0IFJHQlRleHR1cmUmIHRleHR1cmUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGF1dG8gY2xvbmVkVGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRl
KFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCksIG1faW50ZXJuYWxGb3JtYXQp
OworICAgICAgICAgICAgY2xvbmVkVGV4dHVyZS0+cmVzZXQobV9zaXplKTsKKyAgICAgICAgICAg
IHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+KGNsb25lZFRleHR1cmUuZ2V0KCkpLmNvcHlG
cm9tRXh0ZXJuYWxUZXh0dXJlKHRleHR1cmUuaWQpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUoY2xv
bmVkVGV4dHVyZSksIG1fZXh0cmFGbGFncyk7CisgICAgICAgIH0sCisgICAgICAgIFtdKGNvbnN0
IFlVVlRleHR1cmUmKQorICAgICAgICB7CisgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0pOwogfQogCiB2b2lkIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJl
TWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkpCkBA
IC04Niw4ICsxMTYsMTcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6
cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4dHUKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIEFTU0VSVChtX3RleHR1cmVJRCk7Ci0gICAgdGV4bWFwR0wuZHJhd1Rl
eHR1cmUobV90ZXh0dXJlSUQsIG1fZXh0cmFGbGFncywgbV9zaXplLCB0YXJnZXRSZWN0LCBtb2Rl
bFZpZXdNYXRyaXgsIG9wYWNpdHkpOworICAgIFdURjo6c3dpdGNoT24obV92YXJpYW50LAorICAg
ICAgICBbJl0oY29uc3QgUkdCVGV4dHVyZSYgdGV4dHVyZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUKHRleHR1cmUuaWQpOworICAgICAgICAgICAgdGV4bWFwR0wuZHJhd1RleHR1cmUo
dGV4dHVyZS5pZCwgbV9leHRyYUZsYWdzLCBtX3NpemUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01h
dHJpeCwgb3BhY2l0eSk7CisgICAgICAgIH0sCisgICAgICAgIFsmXShjb25zdCBZVVZUZXh0dXJl
JiB0ZXh0dXJlKQorICAgICAgICB7CisgICAgICAgICAgICB0ZXhtYXBHTC5kcmF3VGV4dHVyZVlV
VihzdGQ6OmFycmF5PEdMdWludCwgMz4geyB0ZXh0dXJlLnksIHRleHR1cmUudSwgdGV4dHVyZS52
IH0sCisgICAgICAgICAgICAgICAgbV9leHRyYUZsYWdzLCBtX3NpemUsIHRhcmdldFJlY3QsIG1v
ZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7CisgICAgICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5oCmluZGV4IGQxMDBlMjRhZDEzMTY0OTc5NGI5MDY5MmU2NjEyYTM3YWI3YzlhZWIuLmUyYThi
OGMwOTI5MWVlZWJlNTlmMzIxNWYyMWEwZGVkMjhiZjhjZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiVGV4dHVyZU1hcHBlckdMSGVhZGVycy5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KKyNpbmNsdWRl
IDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDkgKzQwLDIw
IEBAIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyIDogcHVibGljIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCgpOwog
cHVibGljOgogICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKFJlZlB0cjxCaXRt
YXBUZXh0dXJlPiYmLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzID0gMCk7CisKICAgICBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihHTHVpbnQgdGV4dHVyZUlELCBjb25zdCBJbnRTaXpl
JiwgVGV4dHVyZU1hcHBlckdMOjpGbGFncywgR0xpbnQgaW50ZXJuYWxGb3JtYXQpOworICAgIHN0
cnVjdCBSR0JUZXh0dXJlIHsKKyAgICAgICAgR0x1aW50IGlkOworICAgIH07CisgICAgc3RydWN0
IFlVVlRleHR1cmUgeworICAgICAgICBHTHVpbnQgeTsKKyAgICAgICAgR0x1aW50IHU7CisgICAg
ICAgIEdMdWludCB2OworICAgIH07CisgICAgdXNpbmcgVGV4dHVyZVZhcmlhbnQgPSBXVEY6OlZh
cmlhbnQ8UkdCVGV4dHVyZSwgWVVWVGV4dHVyZT47CisgICAgVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXIoVGV4dHVyZVZhcmlhbnQmJiwgY29uc3QgSW50U2l6ZSYsIFRleHR1cmVNYXBw
ZXJHTDo6RmxhZ3MsIEdMaW50IGludGVybmFsRm9ybWF0KTsKIAotICAgIHZpcnR1YWwgflRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgflRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKCk7CiAKICAgICB2b2lkIHBhaW50VG9UZXh0
dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwg
ZmxvYXQgb3BhY2l0eSA9IDEuMCkgZmluYWw7CiAKQEAgLTc4LDYgKzkwLDcgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gbV90ZXh0dXJlOwogICAgIE1vbm90b25pY1RpbWUg
bV90aW1lTGFzdFVzZWQ7CiAKKyAgICBUZXh0dXJlVmFyaWFudCBtX3ZhcmlhbnQ7CiAgICAgR0x1
aW50IG1fdGV4dHVyZUlEOwogICAgIEludFNpemUgbV9zaXplOwogICAgIEdMaW50IG1faW50ZXJu
YWxGb3JtYXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eS5jcHAKaW5kZXggYzcxNGY2ZDc4YzFjZjFhNjFkNGRmZjZiNDIwNTIxYjAyZWNkN2M1MC4uZWI0
ZTc3YmM3OTAyNDczMmNlMTRkZjNkYmQ5NmNlOTIxY2VmNWRiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcApAQCAtMTg1LDggKzE4NSwxMiBA
QCB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OnN3YXBCdWZmZXIoKQogICAg
IG1fY3VycmVudEJ1ZmZlciA9IFdURk1vdmUobV9wZW5kaW5nQnVmZmVyKTsKICAgICBtX3Rhcmdl
dExheWVyLT5zZXRDb250ZW50c0xheWVyKG1fY3VycmVudEJ1ZmZlci5nZXQoKSk7CiAKLSAgICBp
ZiAocHJldkJ1ZmZlciAmJiBwcmV2QnVmZmVyLT5oYXNNYW5hZ2VkVGV4dHVyZSgpKQotICAgICAg
ICBhcHBlbmRUb1VudXNlZEJ1ZmZlcnMoV1RGTW92ZShwcmV2QnVmZmVyKSk7CisgICAgaWYgKHBy
ZXZCdWZmZXIpIHsKKyAgICAgICAgaWYgKHByZXZCdWZmZXItPmhhc01hbmFnZWRUZXh0dXJlKCkp
CisgICAgICAgICAgICBhcHBlbmRUb1VudXNlZEJ1ZmZlcnMoV1RGTW92ZShwcmV2QnVmZmVyKSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fcHJldkJ1ZmZlciA9IFdURk1vdmUocHJldkJ1
ZmZlcik7CisgICAgfQogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6
OmRyb3BDdXJyZW50QnVmZmVyV2hpbGVQcmVzZXJ2aW5nVGV4dHVyZShib29sIHNob3VsZFdhaXQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaAppbmRleCBk
MzhlNmMyMWY2MWZiNDA3OTVjOTY1NTMzNGQxZjBjMzU2NDNkYWRmLi5iMzc2MDk4NmFjZGI4YWVm
NmZkMTVhMTJhODIyY2YxY2JlM2FlMmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5LmgKQEAgLTgzLDYgKzgzLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbV9jdXJyZW50
QnVmZmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcj4gbV9wZW5kaW5nQnVmZmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcj4gbV9wcmV2QnVmZmVyOwogCiAgICAgTG9jayBtX2xvY2s7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCmluZGV4IGUxYzk3ZmU0
MmY3ZGI3ZWIyMGQwY2MxM2MwNDQyZjU5NmNmYzE5ZTUuLjQ2YzFmZjU4YTgzOTQ0MmZhMmVlMTIz
NzI3NmRhYTQ4NDM3MGY3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtLmNwcApAQCAtMjA3LDYgKzIwNyw5IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBmcmFnbWVudFRl
bXBsYXRlR0UzMjBWYXJzID0KIHN0YXRpYyBjb25zdCBjaGFyKiBmcmFnbWVudFRlbXBsYXRlQ29t
bW9uID0KICAgICBTVFJJTkdJRlkoCiAgICAgICAgIHVuaWZvcm0gU2FtcGxlclR5cGUgc19zYW1w
bGVyOworICAgICAgICB1bmlmb3JtIFNhbXBsZXJUeXBlIHNfc2FtcGxlclk7CisgICAgICAgIHVu
aWZvcm0gU2FtcGxlclR5cGUgc19zYW1wbGVyVTsKKyAgICAgICAgdW5pZm9ybSBTYW1wbGVyVHlw
ZSBzX3NhbXBsZXJWOwogICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX2NvbnRlbnRUZXh0dXJl
OwogICAgICAgICB1bmlmb3JtIGZsb2F0IHVfb3BhY2l0eTsKICAgICAgICAgdW5pZm9ybSBmbG9h
dCB1X2ZpbHRlckFtb3VudDsKQEAgLTIzMSw3ICsyMzQsMTUgQEAgc3RhdGljIGNvbnN0IGNoYXIq
IGZyYWdtZW50VGVtcGxhdGVDb21tb24gPQogCiAgICAgICAgIHZvaWQgYXBwbHlNYW51YWxSZXBl
YXQoaW5vdXQgdmVjMiBwb3MpIHsgcG9zID0gZnJhY3QocG9zKTsgfQogCi0gICAgICAgIHZvaWQg
YXBwbHlUZXh0dXJlKGlub3V0IHZlYzQgY29sb3IsIHZlYzIgdGV4Q29vcmQpIHsgY29sb3IgPSB1
X3RleHR1cmVDb2xvclNwYWNlTWF0cml4ICogU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlciwgdGV4
Q29vcmQpOyB9CisgICAgICAgIHZvaWQgYXBwbHlUZXh0dXJlUkdCKGlub3V0IHZlYzQgY29sb3Is
IHZlYzIgdGV4Q29vcmQpIHsgY29sb3IgPSB1X3RleHR1cmVDb2xvclNwYWNlTWF0cml4ICogU2Ft
cGxlckZ1bmN0aW9uKHNfc2FtcGxlciwgdGV4Q29vcmQpOyB9CisgICAgICAgIHZvaWQgYXBwbHlU
ZXh0dXJlWVVWKGlub3V0IHZlYzQgY29sb3IsIHZlYzIgdGV4Q29vcmQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZsb2F0IHkgPSBTYW1wbGVyRnVuY3Rpb24oc19zYW1wbGVyWSwgdGV4Q29vcmQp
LnI7CisgICAgICAgICAgICBmbG9hdCB1ID0gU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlclUsIHRl
eENvb3JkKS5yIC0gMC41OworICAgICAgICAgICAgZmxvYXQgdiA9IFNhbXBsZXJGdW5jdGlvbihz
X3NhbXBsZXJWLCB0ZXhDb29yZCkuciAtIDAuNTsKKyAgICAgICAgICAgIHZlYzQgZGF0YSA9IHZl
YzQoeSArIDEuNDAyICogdiwgeSAtIDAuMzQ0ICogdSAtIDAuNzE0ICogdiwgeSArIDEuNzcyICog
dSAsIDEpOworICAgICAgICAgICAgY29sb3IgPSB1X3RleHR1cmVDb2xvclNwYWNlTWF0cml4ICog
ZGF0YS5iZ3JhOworICAgICAgICB9CiAgICAgICAgIHZvaWQgYXBwbHlPcGFjaXR5KGlub3V0IHZl
YzQgY29sb3IpIHsgY29sb3IgKj0gdV9vcGFjaXR5OyB9CiAgICAgICAgIHZvaWQgYXBwbHlBbnRp
YWxpYXNpbmcoaW5vdXQgdmVjNCBjb2xvcikgeyBjb2xvciAqPSBhbnRpYWxpYXMoKTsgfQogCkBA
IC0zNDMsNyArMzU0LDggQEAgc3RhdGljIGNvbnN0IGNoYXIqIGZyYWdtZW50VGVtcGxhdGVDb21t
b24gPQogICAgICAgICAgICAgdmVjNCBjb2xvciA9IHZlYzQoMS4sIDEuLCAxLiwgMS4pOwogICAg
ICAgICAgICAgdmVjMiB0ZXhDb29yZCA9IHRyYW5zZm9ybVRleENvb3JkKCk7CiAgICAgICAgICAg
ICBhcHBseU1hbnVhbFJlcGVhdElmTmVlZGVkKHRleENvb3JkKTsKLSAgICAgICAgICAgIGFwcGx5
VGV4dHVyZUlmTmVlZGVkKGNvbG9yLCB0ZXhDb29yZCk7CisgICAgICAgICAgICBhcHBseVRleHR1
cmVSR0JJZk5lZWRlZChjb2xvciwgdGV4Q29vcmQpOworICAgICAgICAgICAgYXBwbHlUZXh0dXJl
WVVWSWZOZWVkZWQoY29sb3IsIHRleENvb3JkKTsKICAgICAgICAgICAgIGFwcGx5U29saWRDb2xv
cklmTmVlZGVkKGNvbG9yKTsKICAgICAgICAgICAgIGFwcGx5QW50aWFsaWFzaW5nSWZOZWVkZWQo
Y29sb3IpOwogICAgICAgICAgICAgYXBwbHlPcGFjaXR5SWZOZWVkZWQoY29sb3IpOwpAQCAtMzY5
LDcgKzM4MSw4IEBAIFJlZjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW06OmNyZWF0ZShUZXh0dXJlTWFwcGVyCiAgICAgICAgIChvcHRpb25zICYg
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkFwcGxpZXIpID8gRU5BQkxFX0FQUExJRVIoQXBw
bGllcikgOiBESVNBQkxFX0FQUExJRVIoQXBwbGllcikpCiAKICAgICBTdHJpbmdCdWlsZGVyIG9w
dGlvbnNBcHBsaWVyQnVpbGRlcjsKLSAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoVGV4dHVy
ZSk7CisgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKFRleHR1cmVSR0IpOworICAgIFNFVF9B
UFBMSUVSX0ZST01fT1BUSU9OUyhUZXh0dXJlWVVWKTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09Q
VElPTlMoUmVjdCk7CiAgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKFNvbGlkQ29sb3IpOwog
ICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhPcGFjaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtLmgKaW5kZXggOGRhMWU0MjgxOWUwZDE3NDc4N2IzN2ZhMGY1NmY0
MWYyMWYyNmNlZC4uOTY5MGQ2N2Q2MWZlYmFjZWI2ZGE3MjZlY2MzM2ZmMTNiYTkyMDNkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmgKQEAgLTQ1LDcgKzQ1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0gOiBw
dWJsaWMgUmVmQ291bnRlZDxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gewogcHVibGljOgog
ICAgIGVudW0gT3B0aW9uIHsKLSAgICAgICAgVGV4dHVyZSAgICAgICAgICA9IDFMIDw8IDAsCisg
ICAgICAgIFRleHR1cmVSR0IgICAgICAgPSAxTCA8PCAwLAogICAgICAgICBSZWN0ICAgICAgICAg
ICAgID0gMUwgPDwgMSwKICAgICAgICAgU29saWRDb2xvciAgICAgICA9IDFMIDw8IDIsCiAgICAg
ICAgIE9wYWNpdHkgICAgICAgICAgPSAxTCA8PCAzLApAQCAtNjEsNyArNjEsOCBAQCBwdWJsaWM6
CiAgICAgICAgIEJsdXJGaWx0ZXIgICAgICAgPSAxTCA8PCAxNCwKICAgICAgICAgQWxwaGFCbHVy
ICAgICAgICA9IDFMIDw8IDE1LAogICAgICAgICBDb250ZW50VGV4dHVyZSAgID0gMUwgPDwgMTYs
Ci0gICAgICAgIE1hbnVhbFJlcGVhdCAgICAgPSAxTCA8PCAxNworICAgICAgICBNYW51YWxSZXBl
YXQgICAgID0gMUwgPDwgMTcsCisgICAgICAgIFRleHR1cmVZVVYgICAgICAgPSAxTCA8PCAxOCwK
ICAgICB9OwogCiAgICAgdHlwZWRlZiB1bnNpZ25lZCBPcHRpb25zOwpAQCAtODEsNiArODIsOSBA
QCBwdWJsaWM6CiAgICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9STShjb2xvcikKICAgICBURVhNQVBf
REVDTEFSRV9VTklGT1JNKGV4cGFuZGVkUXVhZEVkZ2VzSW5TY3JlZW5TcGFjZSkKICAgICBURVhN
QVBfREVDTEFSRV9TQU1QTEVSKHNhbXBsZXIpCisgICAgVEVYTUFQX0RFQ0xBUkVfU0FNUExFUihz
YW1wbGVyWSkKKyAgICBURVhNQVBfREVDTEFSRV9TQU1QTEVSKHNhbXBsZXJVKQorICAgIFRFWE1B
UF9ERUNMQVJFX1NBTVBMRVIoc2FtcGxlclYpCiAgICAgVEVYTUFQX0RFQ0xBUkVfU0FNUExFUiht
YXNrKQogCiAgICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9STShmaWx0ZXJBbW91bnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>372694</attachid>
            <date>2019-06-23 01:33:59 -0700</date>
            <delta_ts>2019-08-12 08:49:06 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-132869-20190623103358.patch</filename>
            <type>text/plain</type>
            <size>37135</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ2NzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODA4OTZmOGU5Zjg2ZjUy
YmI2ODM3NzNjMWYyMzU3N2JiOTQ1OGM2Yi4uMDVhZGRjYWFmNDU1MDBiYjZiYjYxMzE1NTdkMTFj
NzFmODA2ODA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE5LTA2LTIzICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbVGV4bWFwXVtHU3Ry
ZWFtZXJdIEFkZCBzdXBwb3J0IHRvIHVwbG9hZCBtb3JlIGNvbG9yIGZvcm1hdHMgaW50byB0aGUg
dGV4dHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTMyODY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHc3RWaWRlb0ZyYW1lSG9sZGVyOjpHc3RWaWRlb0ZyYW1lSG9sZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdzdFZpZGVvRnJhbWVIb2xkZXI6Omhhc01hcHBlZFRleHR1cmVzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdzdFZpZGVvRnJhbWVIb2xkZXI6OnZpZGVvRnJhbWUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cmVx
dWVzdEdMQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjplbnN1cmVHc3RHTENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cHVzaFRleHR1cmVUb0NvbXBvc2l0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y29weVZpZGVv
VGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNyZWF0ZUdMQXBwU2luayk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmdzdEdM
Q29udGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OlZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1l
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpvcHRpb25zRm9yRmlsdGVyVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVZVVYpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyOjp+VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OmNsb25l
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpw
YWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6c3dhcEJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW06OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmg6CisKIDIwMTktMDYtMjEgIFNpaHVp
IExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgb3BlbkRhdGFiYXNlIHNob3Vs
ZCByZXR1cm4gYW4gZW1wdHkgb2JqZWN0IHdoZW4gV2ViU1FMIGlzIGRpc2FibGVkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXgg
MjA1ZWU0YmQyOTZjYzM1OTA2MmRlYzk3OGI1YTE5Y2Y0MDVmM2Q1Zi4uYjhkOWY2ZTFiOGQ2NjQ5
NmZhNTA5NjcxMzlhNzZiZGRjOTVlNzIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtNTUsMTEgKzU1LDExIEBACiAKICNp
ZiBVU0UoR1NUUkVBTUVSX0dMKQogI2lmIEdfQllURV9PUkRFUiA9PSBHX0xJVFRMRV9FTkRJQU4K
LSNkZWZpbmUgR1NUX0dMX0NBUFNfRk9STUFUICJ7IEJHUngsIEJHUkEgfSIKKyNkZWZpbmUgR1NU
X0dMX0NBUFNfRk9STUFUICJ7IEJHUngsIEJHUkEsIEk0MjAgfSIKICNkZWZpbmUgVEVYVFVSRV9N
QVBQRVJfQ09MT1JfQ09OVkVSVF9GTEFHIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQ29udmVydFRl
eHR1cmVCR1JBVG9SR0JBCiAjZGVmaW5lIFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxB
RyBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OkNvbG9yQ29udmVyc2lvbjo6Q29udmVydEJH
UkFUb1JHQkEKICNlbHNlCi0jZGVmaW5lIEdTVF9HTF9DQVBTX0ZPUk1BVCAieyB4UkdCLCBBUkdC
IH0iCisjZGVmaW5lIEdTVF9HTF9DQVBTX0ZPUk1BVCAieyB4UkdCLCBBUkdCLCBJNDIwIH0iCiAj
ZGVmaW5lIFRFWFRVUkVfTUFQUEVSX0NPTE9SX0NPTlZFUlRfRkxBRyBUZXh0dXJlTWFwcGVyR0w6
OlNob3VsZENvbnZlcnRUZXh0dXJlQVJHQlRvUkdCQQogI2RlZmluZSBURVhUVVJFX0NPUElFUl9D
T0xPUl9DT05WRVJUX0ZMQUcgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpDb2xvckNvbnZl
cnNpb246OkNvbnZlcnRBUkdCVG9SR0JBCiAjZW5kaWYKQEAgLTE1Myw3ICsxNTMsNyBAQCBzdGF0
aWMgaW50IGdyZWF0ZXN0Q29tbW9uRGl2aXNvcihpbnQgYSwgaW50IGIpCiAjaWYgVVNFKFRFWFRV
UkVfTUFQUEVSX0dMKQogY2xhc3MgR3N0VmlkZW9GcmFtZUhvbGRlciA6IHB1YmxpYyBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlciB7CiBw
dWJsaWM6Ci0gICAgZXhwbGljaXQgR3N0VmlkZW9GcmFtZUhvbGRlcihHc3RTYW1wbGUqIHNhbXBs
ZSwgVGV4dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncywgYm9vbCBnc3RHTEVuYWJsZWQpCisgICAg
ZXhwbGljaXQgR3N0VmlkZW9GcmFtZUhvbGRlcihHc3RHTENvbnRleHQqIGNvbnRleHQsIEdzdFNh
bXBsZSogc2FtcGxlLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzLCBib29sIGdzdEdMRW5h
YmxlZCkKICAgICB7CiAgICAgICAgIEdzdFZpZGVvSW5mbyB2aWRlb0luZm87CiAgICAgICAgIGlm
IChVTkxJS0VMWSghZ2V0U2FtcGxlVmlkZW9JbmZvKHNhbXBsZSwgdmlkZW9JbmZvKSkpCkBAIC0x
NzAsOCArMTcwLDEwIEBAIHB1YmxpYzoKIAogICAgICAgICBpZiAoZ3N0R0xFbmFibGVkKSB7CiAg
ICAgICAgICAgICBtX2lzTWFwcGVkID0gZ3N0X3ZpZGVvX2ZyYW1lX21hcCgmbV92aWRlb0ZyYW1l
LCAmdmlkZW9JbmZvLCBtX2J1ZmZlciwgc3RhdGljX2Nhc3Q8R3N0TWFwRmxhZ3M+KEdTVF9NQVBf
UkVBRCB8IEdTVF9NQVBfR0wpKTsKLSAgICAgICAgICAgIGlmIChtX2lzTWFwcGVkKQorICAgICAg
ICAgICAgaWYgKG1faXNNYXBwZWQpIHsKICAgICAgICAgICAgICAgICBtX3RleHR1cmVJRCA9ICpy
ZWludGVycHJldF9jYXN0PEdMdWludCo+KG1fdmlkZW9GcmFtZS5kYXRhWzBdKTsKKyAgICAgICAg
ICAgICAgICBtX2hhc01hcHBlZFRleHR1cmVzID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfSBlbHNlCiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0oZmxhZ3MpOwpAQCAtMTg2LDYg
KzE4OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgQVNTRVJUKEdTVF9WSURFT19JTkZP
X05fUExBTkVTKCZ2aWRlb0luZm8pID09IDEpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisK
KyAgICAgICAgeworICAgICAgICAgICAgR3N0R0xTeW5jTWV0YSogbWV0YSA9IGdzdF9idWZmZXJf
Z2V0X2dsX3N5bmNfbWV0YSAobV9idWZmZXIpOworICAgICAgICAgICAgaWYgKG1ldGEpCisgICAg
ICAgICAgICAgICAgZ3N0X2dsX3N5bmNfbWV0YV93YWl0X2NwdShtZXRhLCBjb250ZXh0KTsKKyAg
ICAgICAgfQogICAgIH0KIAogICAgIHZpcnR1YWwgfkdzdFZpZGVvRnJhbWVIb2xkZXIoKQpAQCAt
MjAwLDYgKzIwOCw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0FscGhhQ2hhbm5lbCgpIGNvbnN0
IHsgcmV0dXJuIG1faGFzQWxwaGFDaGFubmVsOyB9CiAgICAgVGV4dHVyZU1hcHBlckdMOjpGbGFn
cyBmbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KICAgICBHTHVpbnQgdGV4dHVyZUlE
KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSUQ7IH0KKyAgICBib29sIGhhc01hcHBlZFRleHR1
cmVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNYXBwZWRUZXh0dXJlczsgfQorICAgIGNvbnN0IEdz
dFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRnJhbWU7IH0K
IAogICAgIHZvaWQgdXBkYXRlVGV4dHVyZShCaXRtYXBUZXh0dXJlR0wmIHRleHR1cmUpCiAgICAg
ewpAQCAtMjI3LDYgKzIzNyw3IEBAIHByaXZhdGU6CiAgICAgVGV4dHVyZU1hcHBlckdMOjpGbGFn
cyBtX2ZsYWdzIHsgfTsKICAgICBHTHVpbnQgbV90ZXh0dXJlSUQgeyAwIH07CiAgICAgYm9vbCBt
X2lzTWFwcGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzTWFwcGVkVGV4dHVyZXMgeyBmYWxz
ZSB9OwogfTsKICNlbmRpZgogCkBAIC00MDAsOSArNDExLDIwIEBAIEdzdENvbnRleHQqIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnJlcXVlc3RHTENvbnRleHQoY29uc3QgY2hhciog
Y29udGV4CiAgICAgICAgIEdzdENvbnRleHQqIGFwcENvbnRleHQgPSBnc3RfY29udGV4dF9uZXco
ImdzdC5nbC5hcHBfY29udGV4dCIsIFRSVUUpOwogICAgICAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGdzdF9jb250ZXh0X3dyaXRhYmxlX3N0cnVjdHVyZShhcHBDb250ZXh0KTsKICNpZiBH
U1RfQ0hFQ0tfVkVSU0lPTigxLCAxMiwgMCkKLSAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQoc3Ry
dWN0dXJlLCAiY29udGV4dCIsIEdTVF9UWVBFX0dMX0NPTlRFWFQsIGdzdEdMQ29udGV4dCgpLCBu
dWxscHRyKTsKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQoc3RydWN0dXJlLCAiY29udGV4dCIs
IEdTVF9UWVBFX0dMX0NPTlRFWFQsIG1fZ2xTaGFyaW5nQ29udGV4dC5nZXQoKSwgbnVsbHB0cik7
CisjZWxzZQorICAgICAgICBnc3Rfc3RydWN0dXJlX3NldChzdHJ1Y3R1cmUsICJjb250ZXh0Iiwg
R1NUX0dMX1RZUEVfQ09OVEVYVCwgbV9nbFNoYXJpbmdDb250ZXh0LmdldCgpLCBudWxscHRyKTsK
KyNlbmRpZgorICAgICAgICByZXR1cm4gYXBwQ29udGV4dDsKKyAgICB9CisKKyAgICBpZiAoIWdf
c3RyY21wMChjb250ZXh0VHlwZSwgImdzdC5nbC5sb2NhbF9jb250ZXh0IikpIHsKKyAgICAgICAg
R3N0Q29udGV4dCogYXBwQ29udGV4dCA9IGdzdF9jb250ZXh0X25ldygiZ3N0LmdsLmxvY2FsX2Nv
bnRleHQiLCBUUlVFKTsKKyAgICAgICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY29u
dGV4dF93cml0YWJsZV9zdHJ1Y3R1cmUoYXBwQ29udGV4dCk7CisjaWYgR1NUX0NIRUNLX1ZFUlNJ
T04oMSwgMTIsIDApCisgICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0KHN0cnVjdHVyZSwgImNvbnRl
eHQiLCBHU1RfVFlQRV9HTF9DT05URVhULCBtX2dsTWFpbkNvbnRleHQuZ2V0KCksIG51bGxwdHIp
OwogI2Vsc2UKLSAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQoc3RydWN0dXJlLCAiY29udGV4dCIs
IEdTVF9HTF9UWVBFX0NPTlRFWFQsIGdzdEdMQ29udGV4dCgpLCBudWxscHRyKTsKKyAgICAgICAg
Z3N0X3N0cnVjdHVyZV9zZXQoc3RydWN0dXJlLCAiY29udGV4dCIsIEdTVF9HTF9UWVBFX0NPTlRF
WFQsIG1fZ2xNYWluQ29udGV4dC5nZXQoKSwgbnVsbHB0cik7CiAjZW5kaWYKICAgICAgICAgcmV0
dXJuIGFwcENvbnRleHQ7CiAgICAgfQpAQCAtNDEyLDcgKzQzNCw3IEBAIEdzdENvbnRleHQqIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnJlcXVlc3RHTENvbnRleHQoY29uc3QgY2hh
ciogY29udGV4CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6ZW5zdXJl
R3N0R0xDb250ZXh0KCkKIHsKLSAgICBpZiAobV9nbENvbnRleHQpCisgICAgaWYgKG1fZ2xNYWlu
Q29udGV4dCAmJiBtX2dsU2hhcmluZ0NvbnRleHQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgYXV0byYgc2hhcmVkRGlzcGxheSA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZv
ckNvbXBvc2l0aW5nKCk7CkBAIC00ODAsOSArNTAyLDEzIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6ZW5zdXJlR3N0R0xDb250ZXh0KCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKHNob3VsZEFkb3B0UmVmKQotICAgICAgICBtX2dsQ29udGV4dCA9IGFk
b3B0R1JlZihnc3RfZ2xfY29udGV4dF9uZXdfd3JhcHBlZChtX2dsRGlzcGxheS5nZXQoKSwgcmVp
bnRlcnByZXRfY2FzdDxndWludHB0cj4oY29udGV4dEhhbmRsZSksIGdsUGxhdGZvcm0sIGdsQVBJ
KSk7CisgICAgICAgIG1fZ2xTaGFyaW5nQ29udGV4dCA9IGFkb3B0R1JlZihnc3RfZ2xfY29udGV4
dF9uZXdfd3JhcHBlZChtX2dsRGlzcGxheS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxndWludHB0
cj4oY29udGV4dEhhbmRsZSksIGdsUGxhdGZvcm0sIGdsQVBJKSk7CiAgICAgZWxzZQotICAgICAg
ICBtX2dsQ29udGV4dCA9IGdzdF9nbF9jb250ZXh0X25ld193cmFwcGVkKG1fZ2xEaXNwbGF5Lmdl
dCgpLCByZWludGVycHJldF9jYXN0PGd1aW50cHRyPihjb250ZXh0SGFuZGxlKSwgZ2xQbGF0Zm9y
bSwgZ2xBUEkpOworICAgICAgICBtX2dsU2hhcmluZ0NvbnRleHQgPSBnc3RfZ2xfY29udGV4dF9u
ZXdfd3JhcHBlZChtX2dsRGlzcGxheS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxndWludHB0cj4o
Y29udGV4dEhhbmRsZSksIGdsUGxhdGZvcm0sIGdsQVBJKTsKKworICAgIG1fZ2xNYWluQ29udGV4
dCA9IGdzdF9nbF9jb250ZXh0X25ldyhtX2dsRGlzcGxheS5nZXQoKSk7CisgICAgaWYgKG1fZ2xN
YWluQ29udGV4dCkKKyAgICAgICAgZ3N0X2dsX2NvbnRleHRfY3JlYXRlKG1fZ2xNYWluQ29udGV4
dC5nZXQoKSwgbV9nbFNoYXJpbmdDb250ZXh0LmdldCgpLCBudWxscHRyKTsKIAogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtNzE1LDEyICs3NDEsNDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpwdXNoVGV4dHVyZVRvQ29tcG9zaXRvcigpCiAgICAgICAgICAgICBpZiAo
IXByb3h5LmlzQWN0aXZlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1
cmVNYXBwZXJGbGFncywgIW1fdXNpbmdGYWxsYmFja1ZpZGVvU2luayk7CisgICAgICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fZ2xNYWluQ29udGV4dC5nZXQoKSwgbV9z
YW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCAhbV91c2luZ0ZhbGxiYWNrVmlkZW9T
aW5rKTsKKworICAgICAgICAgICAgdXNpbmcgQnVmZmVyID0gVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXI7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QnVmZmVyPiBsYXllckJ1
ZmZlcjsKKyAgICAgICAgICAgIGlmIChmcmFtZUhvbGRlci0+aGFzTWFwcGVkVGV4dHVyZXMoKSkg
eworICAgICAgICAgICAgICAgIGF1dG8mIHZpZGVvRnJhbWUgPSBmcmFtZUhvbGRlci0+dmlkZW9G
cmFtZSgpOworICAgICAgICAgICAgICAgIFsmXSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChH
U1RfVklERU9fSU5GT19JU19SR0IoJnZpZGVvRnJhbWUuaW5mbykpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChHU1RfVklERU9fSU5GT19OX1BMQU5FUygmdmlkZW9GcmFtZS5pbmZvKSAh
PSAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ1ZmZlcj4oCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyOjpUZXh0dXJlVmFyaWFudCB7IEJ1ZmZlcjo6
UkdCVGV4dHVyZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGlj
X2Nhc3Q8R0x1aW50Kj4odmlkZW9GcmFtZS5kYXRhWzBdKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9IH0sIGZyYW1lSG9sZGVyLT5zaXplKCksIGZyYW1lSG9sZGVyLT5mbGFncygp
LCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAoR1NU
X1ZJREVPX0lORk9fSVNfWVVWKCZ2aWRlb0ZyYW1lLmluZm8pKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoR1NUX1ZJREVPX0lORk9fTl9QTEFORVMoJnZpZGVvRnJhbWUuaW5mbykgIT0g
MykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChtX3ZpZGVvRGVjb2RlclBsYXRmb3JtID09IFdlYktpdEdzdFZpZGVvRGVj
b2RlclBsYXRmb3JtOjpJbXhWUFUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXll
ckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8QnVmZmVyPigKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQnVmZmVyOjpUZXh0dXJlVmFyaWFudCB7IEJ1ZmZlcjo6UkdCVGV4dHVyZSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0YXRpY19jYXN0PEdM
dWludCo+KHZpZGVvRnJhbWUuZGF0YVswXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0gfSwgZnJhbWVIb2xkZXItPnNpemUoKSwgZnJhbWVIb2xkZXItPmZsYWdzKCksIEdy
YXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEJ1ZmZlcj4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcjo6VGV4
dHVyZVZhcmlhbnQgeyBCdWZmZXI6OllVVlRleHR1cmUgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpzdGF0aWNfY2FzdDxHTHVpbnQqPih2aWRlb0ZyYW1lLmRhdGFb
MF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0aWNfY2Fz
dDxHTHVpbnQqPih2aWRlb0ZyYW1lLmRhdGFbMV0pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICpzdGF0aWNfY2FzdDxHTHVpbnQqPih2aWRlb0ZyYW1lLmRhdGFbMl0p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IH0sIGZyYW1lSG9sZGVyLT5z
aXplKCksIGZyYW1lSG9sZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICBpZiAoIWxheWVyQnVmZmVyKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlSUQgPSBm
cmFtZUhvbGRlci0+dGV4dHVyZUlEKCk7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyOwotICAgICAgICAgICAg
aWYgKHRleHR1cmVJRCkgewotICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4odGV4dHVyZUlELCBmcmFt
ZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+ZmxhZ3MoKSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQkEpOwogICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyLT5zZXRVbm1hbmFnZWRCdWZmZXJE
YXRhSG9sZGVyKFdURk1vdmUoZnJhbWVIb2xkZXIpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBwcm94eS5nZXRBdmFpbGFibGVCdWZmZXIoZnJh
bWVIb2xkZXItPnNpemUoKSwgR0xfRE9OVF9DQVJFKTsKQEAgLTkxNyw3ICs5NzgsNyBAQCBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRm
b3JtVGV4dHVyZShHcmFwaGljcwogICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQo
KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRl
b0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R3N0VmlkZW9GcmFt
ZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fZ2xNYWluQ29udGV4dC5nZXQoKSwg
bV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsKIAogICAgIGF1dG8g
dGV4dHVyZUlEID0gZnJhbWVIb2xkZXItPnRleHR1cmVJRCgpOwogICAgIGlmICghdGV4dHVyZUlE
KQpAQCAtMTA0Miw2ICsxMTAzLDIzIEBAIEdzdEVsZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OmNyZWF0ZUdMQXBwU2luaygpCiAKICAgICBHUmVmUHRyPEdzdFBhZD4gcGFk
ID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKGFwcHNpbmssICJzaW5rIikp
OwogICAgIGdzdF9wYWRfYWRkX3Byb2JlKHBhZC5nZXQoKSwgc3RhdGljX2Nhc3Q8R3N0UGFkUHJv
YmVUeXBlPihHU1RfUEFEX1BST0JFX1RZUEVfUFVTSCB8IEdTVF9QQURfUFJPQkVfVFlQRV9RVUVS
WV9ET1dOU1RSRUFNIHwgR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5UX0ZMVVNIKSwgW10gKEdzdFBh
ZCosIEdzdFBhZFByb2JlSW5mbyogaW5mbywgIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQ
cm9iZVJldHVybiB7CisgICAgICAgIGF1dG8qIHBsYXllciA9IHN0YXRpY19jYXN0PE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UqPih1c2VyRGF0YSk7CisKKyAgICAgICAgaWYgKGluZm8t
PnR5cGUgJiBHU1RfUEFEX1BST0JFX1RZUEVfUVVFUllfRE9XTlNUUkVBTSkgeworICAgICAgICAg
ICAgR3N0UXVlcnkqIHF1ZXJ5ID0gR1NUX1BBRF9QUk9CRV9JTkZPX1FVRVJZKGluZm8pOworICAg
ICAgICAgICAgaWYgKEdTVF9RVUVSWV9UWVBFKHF1ZXJ5KSA9PSBHU1RfUVVFUllfQ09OVEVYVCkg
eworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnRleHRUeXBlOworICAgICAgICAgICAg
ICAgIGdzdF9xdWVyeV9wYXJzZV9jb250ZXh0X3R5cGUocXVlcnksICZjb250ZXh0VHlwZSk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFnX3N0cmNtcDAoY29udGV4dFR5cGUsICJnc3QuZ2wubG9jYWxf
Y29udGV4dCIpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8qIGNvbnRleHQgPSBwbGF5ZXIt
PnJlcXVlc3RHTENvbnRleHQoY29udGV4dFR5cGUpOworICAgICAgICAgICAgICAgICAgICBpZiAo
Y29udGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdzdF9xdWVyeV9zZXRfY29udGV4dChx
dWVyeSwgY29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JF
X0hBTkRMRUQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAg
cmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CisgICAgICAgIH0KKwogICAgICAgICAvLyBJbiBzb21l
IHBsYXRmb3JtcyAoZS5nLiBPcGVuTUFYIG9uIHRoZSBSYXNwYmVycnkgUGkpIHdoZW4gYSByZXNv
bHV0aW9uIGNoYW5nZSBvY2N1cnMgdGhlCiAgICAgICAgIC8vIHBpcGVsaW5lIGhhcyB0byBiZSBk
cmFpbmVkIGJlZm9yZSBhIGZyYW1lIHdpdGggdGhlIG5ldyByZXNvbHV0aW9uIGNhbiBiZSBkZWNv
ZGVkLgogICAgICAgICAvLyBJbiB0aGlzIGNvbnRleHQsIGl0J3MgaW1wb3J0YW50IHRoYXQgd2Ug
ZG9uJ3QgaG9sZCByZWZlcmVuY2VzIHRvIGFueSBwcmV2aW91cyBmcmFtZQpAQCAtMTA1OCw3ICsx
MTM2LDYgQEAgR3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3Jl
YXRlR0xBcHBTaW5rKCkKICAgICAgICAgICAgIEdTVF9ERUJVRygiQWN0aW5nIHVwb24gZmx1c2gt
c3RhcnQgZXZlbnQiKTsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8qIHBsYXllciA9IHN0YXRp
Y19jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UqPih1c2VyRGF0YSk7CiAgICAg
ICAgIHBsYXllci0+Zmx1c2hDdXJyZW50QnVmZmVyKCk7CiAgICAgICAgIHJldHVybiBHU1RfUEFE
X1BST0JFX09LOwogICAgIH0sIHRoaXMsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKaW5kZXggNTlhZmRmY2MwMWI2MDliNWM1
OTU0ODRmZDBmYzc2NTc1ZTkwYzllZi4uOGEzMmNlYmY2YzI5ZTI2OWNkZGZkNTgzYjJmNzlmODQ0
ZWQ0M2UyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5oCkBAIC0xODYsNyArMTg2LDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZmx1c2hD
dXJyZW50QnVmZmVyKCk7CiAgICAgR3N0RWxlbWVudCogY3JlYXRlR0xBcHBTaW5rKCk7CiAgICAg
R3N0RWxlbWVudCogY3JlYXRlVmlkZW9TaW5rR0woKTsKLSAgICBHc3RHTENvbnRleHQqIGdzdEdM
Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xDb250ZXh0LmdldCgpOyB9CiAgICAgR3N0R0xE
aXNwbGF5KiBnc3RHTERpc3BsYXkoKSBjb25zdCB7IHJldHVybiBtX2dsRGlzcGxheS5nZXQoKTsg
fQogICAgIHZvaWQgZW5zdXJlR0xWaWRlb1NpbmtDb250ZXh0KCk7CiAjZW5kaWYKQEAgLTI3MCw4
ICsyNjksMTAgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQot
ICAgIEdSZWZQdHI8R3N0R0xDb250ZXh0PiBtX2dsQ29udGV4dDsKICAgICBHUmVmUHRyPEdzdEdM
RGlzcGxheT4gbV9nbERpc3BsYXk7CisgICAgR1JlZlB0cjxHc3RHTENvbnRleHQ+IG1fZ2xNYWlu
Q29udGV4dDsKKyAgICBHUmVmUHRyPEdzdEdMQ29udGV4dD4gbV9nbFNoYXJpbmdDb250ZXh0Owor
CiAgICAgR1JlZlB0cjxHc3RDb250ZXh0PiBtX2dsRGlzcGxheUVsZW1lbnRDb250ZXh0OwogICAg
IEdSZWZQdHI8R3N0Q29udGV4dD4gbV9nbEFwcEVsZW1lbnRDb250ZXh0OwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+IG1fdmlkZW9UZXh0dXJlQ29waWVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcAppbmRl
eCAxMzUzMzNlYTFiNTE1ZWI1ZjUxMDFjYmE1NmRiZDY3MmQ4MDgzN2RmLi5jNDJkOTE2YjBmNzFi
YjFmMzY1NWJiNjFkYWRjOTkyNmU0NjAxNThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9U
ZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBWaWRlb1RleHR1cmVD
b3BpZXJHU3RyZWFtZXI6OlZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcihDb2xvckNvbnZlcnNp
b24gY29sb3JDbwogICAgIEFTU0VSVChwcmV2aW91c0NvbnRleHQpOwogICAgIFBsYXRmb3JtRGlz
cGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuc2hhcmluZ0dMQ29udGV4dCgpLT5t
YWtlQ29udGV4dEN1cnJlbnQoKTsKIAotICAgIG1fc2hhZGVyUHJvZ3JhbSA9IFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtOjpjcmVhdGUoVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1
cmUpOworICAgIG1fc2hhZGVyUHJvZ3JhbSA9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpj
cmVhdGUoVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVSR0IpOwogCiAgICAgZ2xH
ZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fZnJhbWVidWZmZXIpOwogICAgIGdsR2VuVGV4dHVyZXMoMSwg
Jm1fcmVzdWx0VGV4dHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCmluZGV4IDk3NGI4NTc4Yjg4
YWE2NDM1MDkxZThiMGMzOGJiMmRiNzEwZWYxMDIuLjVmNGNlMjNlMDI1MDUyYWU0ZmZlODk2ZmQy
ZWI5NzU0MTdmMzZjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBAIC0zMTksMjEgKzMxOSwy
MSBAQCBzdGF0aWMgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9wdGlvbnMgb3B0aW9uc0Zv
ckZpbHRlclR5cGUoRmlsdGVyT3BlcmF0aW9uOgogewogICAgIHN3aXRjaCAodHlwZSkgewogICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6Ci0gICAgICAgIHJldHVybiBUZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZSB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
OjpHcmF5c2NhbGVGaWx0ZXI7CisgICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbTo6VGV4dHVyZVJHQiB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpHcmF5c2NhbGVG
aWx0ZXI7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOgotICAgICAgICByZXR1cm4g
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmUgfCBUZXh0dXJlTWFwcGVyU2hhZGVy
UHJvZ3JhbTo6U2VwaWFGaWx0ZXI7CisgICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVy
UHJvZ3JhbTo6VGV4dHVyZVJHQiB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpTZXBpYUZp
bHRlcjsKICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6Ci0gICAgICAgIHJldHVy
biBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZSB8IFRleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtOjpTYXR1cmF0ZUZpbHRlcjsKKyAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtOjpUZXh0dXJlUkdCIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlNh
dHVyYXRlRmlsdGVyOwogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFOgotICAg
ICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmUgfCBUZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbTo6SHVlUm90YXRlRmlsdGVyOworICAgICAgICByZXR1cm4gVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVSR0IgfCBUZXh0dXJlTWFwcGVyU2hhZGVy
UHJvZ3JhbTo6SHVlUm90YXRlRmlsdGVyOwogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZF
UlQ6Ci0gICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZSB8
IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpJbnZlcnRGaWx0ZXI7CisgICAgICAgIHJldHVy
biBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVJHQiB8IFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtOjpJbnZlcnRGaWx0ZXI7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJS
SUdIVE5FU1M6Ci0gICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4
dHVyZSB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpCcmlnaHRuZXNzRmlsdGVyOworICAg
ICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVSR0IgfCBUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6QnJpZ2h0bmVzc0ZpbHRlcjsKICAgICBjYXNlIEZpbHRl
ck9wZXJhdGlvbjo6Q09OVFJBU1Q6Ci0gICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVy
UHJvZ3JhbTo6VGV4dHVyZSB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpDb250cmFzdEZp
bHRlcjsKKyAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJl
UkdCIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkNvbnRyYXN0RmlsdGVyOwogICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZOgotICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW06OlRleHR1cmUgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3Bh
Y2l0eUZpbHRlcjsKKyAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpU
ZXh0dXJlUkdCIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9wYWNpdHlGaWx0ZXI7CiAg
ICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6CiAgICAgICAgIHJldHVybiBUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbTo6Qmx1ckZpbHRlcjsKICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6
RFJPUF9TSEFET1c6CkBAIC00NzAsNyArNDcwLDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRy
YXdUZXh0dXJlKEdMdWludCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGUK
ICAgICAgICAgJiYgZXhwb3NlZEVkZ2VzID09IEFsbEVkZ2VzCiAgICAgICAgICYmICFtb2RlbFZp
ZXdNYXRyaXgubWFwUXVhZCh0YXJnZXRSZWN0KS5pc1JlY3RpbGluZWFyKCk7CiAKLSAgICBUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3B0aW9ucyBvcHRpb25zID0gVGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW06OlRleHR1cmU7CisgICAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9w
dGlvbnMgb3B0aW9ucyA9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlUkdCOwog
ICAgIGlmICh1c2VSZWN0KQogICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtOjpSZWN0OwogICAgIGlmIChvcGFjaXR5IDwgMSkKQEAgLTUwNCw2ICs1MDQsMTE0IEBA
IHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZShHTHVpbnQgdGV4dHVyZSwgRmxhZ3Mg
ZmxhZ3MsIGNvbnN0IEludFNpemUmIHRlCiAgICAgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFt
KHByb2dyYW0uZ2V0KCksIHRleHR1cmUsIGZsYWdzLCB0ZXh0dXJlU2l6ZSwgdGFyZ2V0UmVjdCwg
bW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsKIH0KIAordm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRy
YXdUZXh0dXJlWVVWKGNvbnN0IHN0ZDo6YXJyYXk8R0x1aW50LDM+JiB0ZXh0dXJlcywgRmxhZ3Mg
ZmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0
IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKK3sKKyAgICBib29sIHVzZVJlY3QgPSBm
bGFncyAmIFNob3VsZFVzZUFSQlRleHR1cmVSZWN0OworICAgIGJvb2wgdXNlQW50aWFsaWFzaW5n
ID0gbV9lbmFibGVFZGdlRGlzdGFuY2VBbnRpYWxpYXNpbmcKKyAgICAgICAgJiYgZXhwb3NlZEVk
Z2VzID09IEFsbEVkZ2VzCisgICAgICAgICYmICFtb2RlbFZpZXdNYXRyaXgubWFwUXVhZCh0YXJn
ZXRSZWN0KS5pc1JlY3RpbGluZWFyKCk7CisKKyAgICBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bTo6T3B0aW9ucyBvcHRpb25zID0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVZ
VVY7CisgICAgaWYgKHVzZVJlY3QpCisgICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW06OlJlY3Q7CisgICAgaWYgKG9wYWNpdHkgPCAxKQorICAgICAgICBvcHRpb25z
IHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcGFjaXR5OworICAgIGlmICh1c2VBbnRp
YWxpYXNpbmcpIHsKKyAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bTo6QW50aWFsaWFzaW5nOworICAgICAgICBmbGFncyB8PSBTaG91bGRBbnRpYWxpYXM7CisgICAg
fQorICAgIGlmICh3cmFwTW9kZSgpID09IFJlcGVhdFdyYXAgJiYgIW1fY29udGV4dEF0dHJpYnV0
ZXMuc3VwcG9ydHNOUE9UVGV4dHVyZXMpCisgICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW06Ok1hbnVhbFJlcGVhdDsKKworICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRp
b24+IGZpbHRlciA9IGRhdGEoKS5maWx0ZXJJbmZvID8gZGF0YSgpLmZpbHRlckluZm8tPmZpbHRl
cjogMDsKKyAgICBHTHVpbnQgZmlsdGVyQ29udGVudFRleHR1cmVJRCA9IDA7CisKKyAgICBpZiAo
ZmlsdGVyKSB7CisgICAgICAgIGlmIChkYXRhKCkuZmlsdGVySW5mby0+Y29udGVudFRleHR1cmUp
CisgICAgICAgICAgICBmaWx0ZXJDb250ZW50VGV4dHVyZUlEID0gdG9CaXRtYXBUZXh0dXJlR0wo
ZGF0YSgpLmZpbHRlckluZm8tPmNvbnRlbnRUZXh0dXJlLmdldCgpKS0+aWQoKTsKKyAgICAgICAg
b3B0aW9ucyB8PSBvcHRpb25zRm9yRmlsdGVyVHlwZShmaWx0ZXItPnR5cGUoKSwgZGF0YSgpLmZp
bHRlckluZm8tPnBhc3MpOworICAgICAgICBpZiAoZmlsdGVyLT5hZmZlY3RzT3BhY2l0eSgpKQor
ICAgICAgICAgICAgZmxhZ3MgfD0gU2hvdWxkQmxlbmQ7CisgICAgfQorCisgICAgaWYgKHVzZUFu
dGlhbGlhc2luZyB8fCBvcGFjaXR5IDwgMSkKKyAgICAgICAgZmxhZ3MgfD0gU2hvdWxkQmxlbmQ7
CisKKyAgICBSZWY8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+IHByb2dyYW0gPSBkYXRhKCku
Z2V0U2hhZGVyUHJvZ3JhbShvcHRpb25zKTsKKworICAgIGlmIChmaWx0ZXIpCisgICAgICAgIHBy
ZXBhcmVGaWx0ZXJQcm9ncmFtKHByb2dyYW0uZ2V0KCksICpmaWx0ZXIuZ2V0KCksIGRhdGEoKS5m
aWx0ZXJJbmZvLT5wYXNzLCB0ZXh0dXJlU2l6ZSwgZmlsdGVyQ29udGVudFRleHR1cmVJRCk7CisK
KyAgICB7CisgICAgICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtSUQoKSk7CisgICAg
ICAgIHsKKyAgICAgICAgICAgIEdMZW51bSB0YXJnZXQgPSBmbGFncyAmIFNob3VsZFVzZUFSQlRl
eHR1cmVSZWN0ID8gR0xlbnVtKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FSQikgOiBHTGVudW0oR0xf
VEVYVFVSRV8yRCk7CisgICAgICAgICAgICBzdGQ6OmFycmF5PEdMdWludCwgMz4gc2FtcGxlcnMg
PSB7CisgICAgICAgICAgICAgICAgICAgIHByb2dyYW0tPnNhbXBsZXJZTG9jYXRpb24oKSwKKyAg
ICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+c2FtcGxlclVMb2NhdGlvbigpLAorICAgICAgICAg
ICAgICAgICAgICBwcm9ncmFtLT5zYW1wbGVyVkxvY2F0aW9uKCksCisgICAgICAgICAgICAgICAg
fTsKKworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpIDogeyAwLCAxLCAyIH0pIHsKKyAgICAg
ICAgICAgICAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTAgKyBpKTsKKyAgICAgICAgICAg
ICAgICBnbEJpbmRUZXh0dXJlKHRhcmdldCwgdGV4dHVyZXNbaV0pOworICAgICAgICAgICAgICAg
IGdsVW5pZm9ybTFpKHNhbXBsZXJzW2ldLCBpKTsKKworICAgICAgICAgICAgICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7
CisgICAgICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICAgICAgICAgICAgICBpZiAod3JhcE1vZGUo
KSA9PSBSZXBlYXRXcmFwICYmIG1fY29udGV4dEF0dHJpYnV0ZXMuc3VwcG9ydHNOUE9UVGV4dHVy
ZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9SRVBFQVQpOworICAgICAgICAgICAgICAgICAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX1JFUEVBVCk7
CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdF
KTsKKyAgICAgICAgICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBw
YXR0ZXJuVHJhbnNmb3JtID0gdGhpcy0+cGF0dGVyblRyYW5zZm9ybSgpOworICAgICAgICBpZiAo
ZmxhZ3MgJiBTaG91bGRSb3RhdGVUZXh0dXJlOTApIHsKKyAgICAgICAgICAgIHBhdHRlcm5UcmFu
c2Zvcm0ucm90YXRlKC05MCk7CisgICAgICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0
ZSgtMSwgMCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZsYWdzICYgU2hvdWxkUm90YXRlVGV4
dHVyZTE4MCkgeworICAgICAgICAgICAgcGF0dGVyblRyYW5zZm9ybS5yb3RhdGUoMTgwKTsKKyAg
ICAgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKC0xLCAtMSk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGZsYWdzICYgU2hvdWxkUm90YXRlVGV4dHVyZTI3MCkgeworICAgICAgICAg
ICAgcGF0dGVyblRyYW5zZm9ybS5yb3RhdGUoLTI3MCk7CisgICAgICAgICAgICBwYXR0ZXJuVHJh
bnNmb3JtLnRyYW5zbGF0ZSgwLCAtMSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZsYWdzICYg
U2hvdWxkRmxpcFRleHR1cmUpCisgICAgICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLmZsaXBZKCk7
CisgICAgICAgIGlmIChmbGFncyAmIFNob3VsZFVzZUFSQlRleHR1cmVSZWN0KQorICAgICAgICAg
ICAgcGF0dGVyblRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0odGV4dHVyZVNpemUud2lkdGgoKSwg
dGV4dHVyZVNpemUuaGVpZ2h0KCkpOworICAgICAgICBpZiAoZmxhZ3MgJiBTaG91bGRGbGlwVGV4
dHVyZSkKKyAgICAgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAsIC0xKTsKKwor
ICAgICAgICBwcm9ncmFtLT5zZXRNYXRyaXgocHJvZ3JhbS0+dGV4dHVyZVNwYWNlTWF0cml4TG9j
YXRpb24oKSwgcGF0dGVyblRyYW5zZm9ybSk7CisgICAgICAgIHByb2dyYW0tPnNldE1hdHJpeChw
cm9ncmFtLT50ZXh0dXJlQ29sb3JTcGFjZU1hdHJpeExvY2F0aW9uKCksIGNvbG9yU3BhY2VNYXRy
aXhGb3JGbGFncyhmbGFncykpOworICAgICAgICBnbFVuaWZvcm0xZihwcm9ncmFtLT5vcGFjaXR5
TG9jYXRpb24oKSwgb3BhY2l0eSk7CisKKyAgICAgICAgaWYgKG9wYWNpdHkgPCAxKQorICAgICAg
ICAgICAgZmxhZ3MgfD0gU2hvdWxkQmxlbmQ7CisKKyAgICAgICAgZHJhdyh0YXJnZXRSZWN0LCBt
b2RlbFZpZXdNYXRyaXgsIHByb2dyYW0sIEdMX1RSSUFOR0xFX0ZBTiwgZmxhZ3MpOworCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEdMZW51bSB0YXJnZXQgPSBmbGFncyAmIFNob3VsZFVzZUFSQlRl
eHR1cmVSZWN0ID8gR0xlbnVtKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FSQikgOiBHTGVudW0oR0xf
VEVYVFVSRV8yRCk7CisKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA6IHsgMCwgMSwgMiB9
KSB7CisgICAgICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZSh0YXJnZXQsIHRleHR1cmVzW2ldKTsK
KyAgICAgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICAgICAgICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdsQmluZFRleHR1cmUodGFyZ2V0LCAwKTsK
KyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdTb2xpZENv
bG9yKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1h
dHJpeCwgY29uc3QgQ29sb3ImIGNvbG9yLCBib29sIGlzQmxlbmRpbmdBbGxvd2VkKQogewogICAg
IEZsYWdzIGZsYWdzID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAppbmRleCBjYTA1NmFmNjYwMzBlZDFl
ZWQ5MmZhNWMyYTI4ZGE5MGNiMzRlYjZhLi5iMjMwMmEwYjM4YmUyNGRiNDZiYjliM2Y4YWU2NmE3
Y2E5YjBmYjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1h
cHBlckdMSGVhZGVycy5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisjaW5j
bHVkZSA8YXJyYXk+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjQsNiArNjUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkcmF3TnVtYmVyKGludCBudW1iZXIsIGNvbnN0IENvbG9yJiwgY29u
c3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25lZCBl
eHBvc2VkRWRnZXMpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShHTHVp
bnQgdGV4dHVyZSwgRmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdN
YXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKTsK
KyAgICB2b2lkIGRyYXdUZXh0dXJlWVVWKGNvbnN0IHN0ZDo6YXJyYXk8R0x1aW50LCAzPiYgdGV4
dHVyZXMsIEZsYWdzLCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4
LCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcyk7CiAgICAg
dm9pZCBkcmF3U29saWRDb2xvcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYsIGNvbnN0IENvbG9yJiwgYm9vbCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhckNv
bG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCmluZGV4IDdhZmRmMzBhMDViY2E1Mzk3YjgwMThi
ZmViZDg5ZTBlMWRhNTAzMzMuLmZmZTAzNTY0NmMxNmMxMmE4NzY1MDhjZDYyNWNiMWUyZmVkOTE2
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
LmNwcApAQCAtMzUsMjAgKzM1LDQwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
KFJlZlB0cjxCaXRtYXBUZXh0dXJlPiYmIHRleHR1cmUsIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3Mg
ZmxhZ3MpCiAgICAgOiBtX3RleHR1cmUoV1RGTW92ZSh0ZXh0dXJlKSkKLSAgICAsIG1fdGV4dHVy
ZUlEKDApCisgICAgLCBtX3ZhcmlhbnQoUkdCVGV4dHVyZSB7IDAgfSkKICAgICAsIG1fZXh0cmFG
bGFncyhmbGFncykKICAgICAsIG1faGFzTWFuYWdlZFRleHR1cmUodHJ1ZSkKIHsKIH0KIAorI2lm
IDAKIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcihHTHVpbnQgdGV4dHVyZUlELCBjb25zdCBJbnRTaXplJiBzaXplLCBUZXh0
dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzLCBHTGludCBpbnRlcm5hbEZvcm1hdCkKLSAgICA6IG1f
dGV4dHVyZUlEKHRleHR1cmVJRCkKKyAgICA6IG1fdmFyaWFudChSR0JUZXh0dXJlIHsgdGV4dHVy
ZUlEIH0pCiAgICAgLCBtX3NpemUoc2l6ZSkKICAgICAsIG1faW50ZXJuYWxGb3JtYXQoaW50ZXJu
YWxGb3JtYXQpCiAgICAgLCBtX2V4dHJhRmxhZ3MoZmxhZ3MpCiAgICAgLCBtX2hhc01hbmFnZWRU
ZXh0dXJlKGZhbHNlKQogewogfQorI2VuZGlmCisKK1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihHTHVpbnQgdGV4dHVyZUlE
LCBjb25zdCBJbnRTaXplJiBzaXplLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzLCBHTGlu
dCBpbnRlcm5hbEZvcm1hdCkKKyAgICA6IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
KHsgUkdCVGV4dHVyZSB7IHRleHR1cmVJRCB9IH0sIHNpemUsIGZsYWdzLCBpbnRlcm5hbEZvcm1h
dCkKK3sKK30KKworVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyKFRleHR1cmVWYXJpYW50JiYgdmFyaWFudCwgY29uc3QgSW50
U2l6ZSYgc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncywgR0xpbnQgaW50ZXJuYWxG
b3JtYXQpCisgICAgOiBtX3ZhcmlhbnQoV1RGTW92ZSh2YXJpYW50KSkKKyAgICAsIG1fc2l6ZShz
aXplKQorICAgICwgbV9pbnRlcm5hbEZvcm1hdChpbnRlcm5hbEZvcm1hdCkKKyAgICAsIG1fZXh0
cmFGbGFncyhmbGFncykKKyAgICAsIG1faGFzTWFuYWdlZFRleHR1cmUoZmFsc2UpCit7Cit9CisK
K1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjp+VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXIoKQoreworfQogCiBib29sIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyOjpjYW5SZXVzZVdpdGhvdXRSZXNldChjb25zdCBJbnRTaXplJiBzaXplLCBHTGludCBpbnRl
cm5hbEZvcm1hdCkKIHsKQEAgLTU3LDE0ICs3NywyNCBAQCBib29sIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyOjpjYW5SZXVzZVdpdGhvdXRSZXNldChjb25zdCBJbnRTaXplJiBzaXpl
LAogCiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpjbG9uZSgpCiB7Ci0gICAgaWYgKG1faGFz
TWFuYWdlZFRleHR1cmUgfHwgIW1fdGV4dHVyZUlEKSB7CisgICAgaWYgKG1faGFzTWFuYWdlZFRl
eHR1cmUpIHsKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQotICAgIGF1dG8gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRl
eHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCksIG1faW50ZXJuYWxGb3JtYXQpOwot
ICAgIHRleHR1cmUtPnJlc2V0KG1fc2l6ZSk7Ci0gICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVy
ZUdMJj4odGV4dHVyZS5nZXQoKSkuY29weUZyb21FeHRlcm5hbFRleHR1cmUobV90ZXh0dXJlSUQp
OwotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyPihXVEZNb3ZlKHRleHR1cmUpLCBtX2V4dHJhRmxhZ3MpOworCisgICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24obV92YXJpYW50LAorICAgICAgICBbJl0oY29uc3QgUkdCVGV4dHVyZSYgdGV4
dHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBjbG9uZWRUZXh0dXJlID0gQml0bWFw
VGV4dHVyZUdMOjpjcmVhdGUoVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOjpnZXQoKSwg
bV9pbnRlcm5hbEZvcm1hdCk7CisgICAgICAgICAgICBjbG9uZWRUZXh0dXJlLT5yZXNldChtX3Np
emUpOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4oY2xvbmVkVGV4
dHVyZS5nZXQoKSkuY29weUZyb21FeHRlcm5hbFRleHR1cmUodGV4dHVyZS5pZCk7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcj4oV1RGTW92ZShjbG9uZWRUZXh0dXJlKSwgbV9leHRyYUZsYWdzKTsKKyAgICAgICAgfSwK
KyAgICAgICAgW10oY29uc3QgWVVWVGV4dHVyZSYpCisgICAgICAgIHsKKyAgICAgICAgICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfSk7
CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnBhaW50VG9UZXh0
dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwg
ZmxvYXQgb3BhY2l0eSkKQEAgLTg2LDggKzExNiwxOSBAQCB2b2lkIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiB0ZXh0
dQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKG1fdGV4dHVyZUlEKTsKLSAg
ICB0ZXhtYXBHTC5kcmF3VGV4dHVyZShtX3RleHR1cmVJRCwgbV9leHRyYUZsYWdzLCBtX3NpemUs
IHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7CisgICAgZ2xGaW5pc2goKTsK
KworICAgIFdURjo6c3dpdGNoT24obV92YXJpYW50LAorICAgICAgICBbJl0oY29uc3QgUkdCVGV4
dHVyZSYgdGV4dHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUuaWQp
OworICAgICAgICAgICAgdGV4bWFwR0wuZHJhd1RleHR1cmUodGV4dHVyZS5pZCwgbV9leHRyYUZs
YWdzLCBtX3NpemUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7CisgICAg
ICAgIH0sCisgICAgICAgIFsmXShjb25zdCBZVVZUZXh0dXJlJiB0ZXh0dXJlKQorICAgICAgICB7
CisgICAgICAgICAgICB0ZXhtYXBHTC5kcmF3VGV4dHVyZVlVVihzdGQ6OmFycmF5PEdMdWludCwg
Mz4geyB0ZXh0dXJlLnksIHRleHR1cmUudSwgdGV4dHVyZS52IH0sCisgICAgICAgICAgICAgICAg
bV9leHRyYUZsYWdzLCBtX3NpemUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0
eSk7CisgICAgICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oCmluZGV4IGQxMDBlMjRhZDEz
MTY0OTc5NGI5MDY5MmU2NjEyYTM3YWI3YzlhZWIuLmUyYThiOGMwOTI5MWVlZWJlNTlmMzIxNWYy
MWEwZGVkMjhiZjhjZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdM
SGVhZGVycy5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCiAjaW5j
bHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDkgKzQwLDIwIEBAIGNsYXNzIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyIDogcHVibGljIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCgpOwogcHVibGljOgogICAgIFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKFJlZlB0cjxCaXRtYXBUZXh0dXJlPiYmLCBUZXh0dXJl
TWFwcGVyR0w6OkZsYWdzID0gMCk7CisKICAgICBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcihHTHVpbnQgdGV4dHVyZUlELCBjb25zdCBJbnRTaXplJiwgVGV4dHVyZU1hcHBlckdMOjpG
bGFncywgR0xpbnQgaW50ZXJuYWxGb3JtYXQpOworICAgIHN0cnVjdCBSR0JUZXh0dXJlIHsKKyAg
ICAgICAgR0x1aW50IGlkOworICAgIH07CisgICAgc3RydWN0IFlVVlRleHR1cmUgeworICAgICAg
ICBHTHVpbnQgeTsKKyAgICAgICAgR0x1aW50IHU7CisgICAgICAgIEdMdWludCB2OworICAgIH07
CisgICAgdXNpbmcgVGV4dHVyZVZhcmlhbnQgPSBXVEY6OlZhcmlhbnQ8UkdCVGV4dHVyZSwgWVVW
VGV4dHVyZT47CisgICAgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoVGV4dHVyZVZh
cmlhbnQmJiwgY29uc3QgSW50U2l6ZSYsIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MsIEdMaW50IGlu
dGVybmFsRm9ybWF0KTsKIAotICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyKCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyKCk7CiAKICAgICB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBw
ZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxW
aWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZmxvYXQgb3BhY2l0eSA9IDEuMCkg
ZmluYWw7CiAKQEAgLTc4LDYgKzkwLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gbV90ZXh0dXJlOwogICAgIE1vbm90b25pY1RpbWUgbV90aW1lTGFzdFVzZWQ7CiAKKyAg
ICBUZXh0dXJlVmFyaWFudCBtX3ZhcmlhbnQ7CiAgICAgR0x1aW50IG1fdGV4dHVyZUlEOwogICAg
IEludFNpemUgbV9zaXplOwogICAgIEdMaW50IG1faW50ZXJuYWxGb3JtYXQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKaW5kZXggYzcxNGY2ZDc4
YzFjZjFhNjFkNGRmZjZiNDIwNTIxYjAyZWNkN2M1MC4uZWI0ZTc3YmM3OTAyNDczMmNlMTRkZjNk
YmQ5NmNlOTIxY2VmNWRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5LmNwcApAQCAtMTg1LDggKzE4NSwxMiBAQCB2b2lkIFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHk6OnN3YXBCdWZmZXIoKQogICAgIG1fY3VycmVudEJ1ZmZlciA9IFdU
Rk1vdmUobV9wZW5kaW5nQnVmZmVyKTsKICAgICBtX3RhcmdldExheWVyLT5zZXRDb250ZW50c0xh
eWVyKG1fY3VycmVudEJ1ZmZlci5nZXQoKSk7CiAKLSAgICBpZiAocHJldkJ1ZmZlciAmJiBwcmV2
QnVmZmVyLT5oYXNNYW5hZ2VkVGV4dHVyZSgpKQotICAgICAgICBhcHBlbmRUb1VudXNlZEJ1ZmZl
cnMoV1RGTW92ZShwcmV2QnVmZmVyKSk7CisgICAgaWYgKHByZXZCdWZmZXIpIHsKKyAgICAgICAg
aWYgKHByZXZCdWZmZXItPmhhc01hbmFnZWRUZXh0dXJlKCkpCisgICAgICAgICAgICBhcHBlbmRU
b1VudXNlZEJ1ZmZlcnMoV1RGTW92ZShwcmV2QnVmZmVyKSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIG1fcHJldkJ1ZmZlciA9IFdURk1vdmUocHJldkJ1ZmZlcik7CisgICAgfQogfQogCiB2
b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmRyb3BDdXJyZW50QnVmZmVyV2hp
bGVQcmVzZXJ2aW5nVGV4dHVyZShib29sIHNob3VsZFdhaXQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaAppbmRleCBkMzhlNmMyMWY2MWZiNDA3OTVjOTY1
NTMzNGQxZjBjMzU2NDNkYWRmLi5iMzc2MDk4NmFjZGI4YWVmNmZkMTVhMTJhODIyY2YxY2JlM2Fl
MmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgK
QEAgLTgzLDYgKzgzLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbV9jdXJyZW50QnVmZmVyOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbV9wZW5kaW5nQnVmZmVy
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4g
bV9wcmV2QnVmZmVyOwogCiAgICAgTG9jayBtX2xvY2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW0uY3BwCmluZGV4IGViODc4OGQ0ZmY1ZTg4OWZiYWY0NmM2MDE2OTk1
MzAwYTc4ZDcxMGQuLjlmZDE4YmM4YjY2OTkzNDBjNmEyNzVjZjYxNzYxZTMwNzFkMWNkZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcApAQCAtMjA3LDYgKzIw
Nyw5IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBmcmFnbWVudFRlbXBsYXRlR0UzMjBWYXJzID0KIHN0
YXRpYyBjb25zdCBjaGFyKiBmcmFnbWVudFRlbXBsYXRlQ29tbW9uID0KICAgICBTVFJJTkdJRlko
CiAgICAgICAgIHVuaWZvcm0gU2FtcGxlclR5cGUgc19zYW1wbGVyOworICAgICAgICB1bmlmb3Jt
IFNhbXBsZXJUeXBlIHNfc2FtcGxlclk7CisgICAgICAgIHVuaWZvcm0gU2FtcGxlclR5cGUgc19z
YW1wbGVyVTsKKyAgICAgICAgdW5pZm9ybSBTYW1wbGVyVHlwZSBzX3NhbXBsZXJWOwogICAgICAg
ICB1bmlmb3JtIHNhbXBsZXIyRCBzX2NvbnRlbnRUZXh0dXJlOwogICAgICAgICB1bmlmb3JtIGZs
b2F0IHVfb3BhY2l0eTsKICAgICAgICAgdW5pZm9ybSBmbG9hdCB1X2ZpbHRlckFtb3VudDsKQEAg
LTIzMSw3ICsyMzQsMTUgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGZyYWdtZW50VGVtcGxhdGVDb21t
b24gPQogCiAgICAgICAgIHZvaWQgYXBwbHlNYW51YWxSZXBlYXQoaW5vdXQgdmVjMiBwb3MpIHsg
cG9zID0gZnJhY3QocG9zKTsgfQogCi0gICAgICAgIHZvaWQgYXBwbHlUZXh0dXJlKGlub3V0IHZl
YzQgY29sb3IsIHZlYzIgdGV4Q29vcmQpIHsgY29sb3IgPSB1X3RleHR1cmVDb2xvclNwYWNlTWF0
cml4ICogU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlciwgdGV4Q29vcmQpOyB9CisgICAgICAgIHZv
aWQgYXBwbHlUZXh0dXJlUkdCKGlub3V0IHZlYzQgY29sb3IsIHZlYzIgdGV4Q29vcmQpIHsgY29s
b3IgPSB1X3RleHR1cmVDb2xvclNwYWNlTWF0cml4ICogU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxl
ciwgdGV4Q29vcmQpOyB9CisgICAgICAgIHZvaWQgYXBwbHlUZXh0dXJlWVVWKGlub3V0IHZlYzQg
Y29sb3IsIHZlYzIgdGV4Q29vcmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZsb2F0IHkgPSBT
YW1wbGVyRnVuY3Rpb24oc19zYW1wbGVyWSwgdGV4Q29vcmQpLnI7CisgICAgICAgICAgICBmbG9h
dCB1ID0gU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlclUsIHRleENvb3JkKS5yIC0gMC41OworICAg
ICAgICAgICAgZmxvYXQgdiA9IFNhbXBsZXJGdW5jdGlvbihzX3NhbXBsZXJWLCB0ZXhDb29yZCku
ciAtIDAuNTsKKyAgICAgICAgICAgIHZlYzQgZGF0YSA9IHZlYzQoeSArIDEuNDAyICogdiwgeSAt
IDAuMzQ0ICogdSAtIDAuNzE0ICogdiwgeSArIDEuNzcyICogdSAsIDEpOworICAgICAgICAgICAg
Y29sb3IgPSB1X3RleHR1cmVDb2xvclNwYWNlTWF0cml4ICogZGF0YS5iZ3JhOworICAgICAgICB9
CiAgICAgICAgIHZvaWQgYXBwbHlPcGFjaXR5KGlub3V0IHZlYzQgY29sb3IpIHsgY29sb3IgKj0g
dV9vcGFjaXR5OyB9CiAgICAgICAgIHZvaWQgYXBwbHlBbnRpYWxpYXNpbmcoaW5vdXQgdmVjNCBj
b2xvcikgeyBjb2xvciAqPSBhbnRpYWxpYXMoKTsgfQogCkBAIC0zNDMsNyArMzU0LDggQEAgc3Rh
dGljIGNvbnN0IGNoYXIqIGZyYWdtZW50VGVtcGxhdGVDb21tb24gPQogICAgICAgICAgICAgdmVj
NCBjb2xvciA9IHZlYzQoMS4sIDEuLCAxLiwgMS4pOwogICAgICAgICAgICAgdmVjMiB0ZXhDb29y
ZCA9IHRyYW5zZm9ybVRleENvb3JkKCk7CiAgICAgICAgICAgICBhcHBseU1hbnVhbFJlcGVhdElm
TmVlZGVkKHRleENvb3JkKTsKLSAgICAgICAgICAgIGFwcGx5VGV4dHVyZUlmTmVlZGVkKGNvbG9y
LCB0ZXhDb29yZCk7CisgICAgICAgICAgICBhcHBseVRleHR1cmVSR0JJZk5lZWRlZChjb2xvciwg
dGV4Q29vcmQpOworICAgICAgICAgICAgYXBwbHlUZXh0dXJlWVVWSWZOZWVkZWQoY29sb3IsIHRl
eENvb3JkKTsKICAgICAgICAgICAgIGFwcGx5U29saWRDb2xvcklmTmVlZGVkKGNvbG9yKTsKICAg
ICAgICAgICAgIGFwcGx5QW50aWFsaWFzaW5nSWZOZWVkZWQoY29sb3IpOwogICAgICAgICAgICAg
YXBwbHlPcGFjaXR5SWZOZWVkZWQoY29sb3IpOwpAQCAtMzY5LDcgKzM4MSw4IEBAIFJlZjxUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OmNyZWF0
ZShUZXh0dXJlTWFwcGVyCiAgICAgICAgIChvcHRpb25zICYgVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW06OkFwcGxpZXIpID8gRU5BQkxFX0FQUExJRVIoQXBwbGllcikgOiBESVNBQkxFX0FQUExJ
RVIoQXBwbGllcikpCiAKICAgICBTdHJpbmdCdWlsZGVyIG9wdGlvbnNBcHBsaWVyQnVpbGRlcjsK
LSAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoVGV4dHVyZSk7CisgICAgU0VUX0FQUExJRVJf
RlJPTV9PUFRJT05TKFRleHR1cmVSR0IpOworICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhU
ZXh0dXJlWVVWKTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoUmVjdCk7CiAgICAgU0VU
X0FQUExJRVJfRlJPTV9PUFRJT05TKFNvbGlkQ29sb3IpOwogICAgIFNFVF9BUFBMSUVSX0ZST01f
T1BUSU9OUyhPcGFjaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmgK
aW5kZXggNGEzNDIwYzA2MDJjYjRkNjBhNDk4Yjk0NzVhM2YzOTdkMmQ3MWYxOS4uMzgzMjhkNmVk
MTkyYzYwNjI3YzI2MWU1YWMwZmViZTQ5ZmVkZGI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0gOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gewogcHVibGljOgogICAgIGVudW0gT3B0aW9uIHsKLSAg
ICAgICAgVGV4dHVyZSAgICAgICAgICA9IDFMIDw8IDAsCisgICAgICAgIFRleHR1cmVSR0IgICAg
ICAgPSAxTCA8PCAwLAogICAgICAgICBSZWN0ICAgICAgICAgICAgID0gMUwgPDwgMSwKICAgICAg
ICAgU29saWRDb2xvciAgICAgICA9IDFMIDw8IDIsCiAgICAgICAgIE9wYWNpdHkgICAgICAgICAg
PSAxTCA8PCAzLApAQCAtNjEsNyArNjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIEJsdXJGaWx0ZXIg
ICAgICAgPSAxTCA8PCAxNCwKICAgICAgICAgQWxwaGFCbHVyICAgICAgICA9IDFMIDw8IDE1LAog
ICAgICAgICBDb250ZW50VGV4dHVyZSAgID0gMUwgPDwgMTYsCi0gICAgICAgIE1hbnVhbFJlcGVh
dCAgICAgPSAxTCA8PCAxNworICAgICAgICBNYW51YWxSZXBlYXQgICAgID0gMUwgPDwgMTcsCisg
ICAgICAgIFRleHR1cmVZVVYgICAgICAgPSAxTCA8PCAxOCwKICAgICB9OwogCiAgICAgdHlwZWRl
ZiB1bnNpZ25lZCBPcHRpb25zOwpAQCAtODEsNiArODIsOSBAQCBwdWJsaWM6CiAgICAgVEVYTUFQ
X0RFQ0xBUkVfVU5JRk9STShjb2xvcikKICAgICBURVhNQVBfREVDTEFSRV9VTklGT1JNKGV4cGFu
ZGVkUXVhZEVkZ2VzSW5TY3JlZW5TcGFjZSkKICAgICBURVhNQVBfREVDTEFSRV9TQU1QTEVSKHNh
bXBsZXIpCisgICAgVEVYTUFQX0RFQ0xBUkVfU0FNUExFUihzYW1wbGVyWSkKKyAgICBURVhNQVBf
REVDTEFSRV9TQU1QTEVSKHNhbXBsZXJVKQorICAgIFRFWE1BUF9ERUNMQVJFX1NBTVBMRVIoc2Ft
cGxlclYpCiAgICAgVEVYTUFQX0RFQ0xBUkVfU0FNUExFUihtYXNrKQogCiAgICAgVEVYTUFQX0RF
Q0xBUkVfVU5JRk9STShmaWx0ZXJBbW91bnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376065</attachid>
            <date>2019-08-12 08:49:10 -0700</date>
            <delta_ts>2019-08-16 06:52:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132869-20190812164909.patch</filename>
            <type>text/plain</type>
            <size>50895</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjg3M2ExYTJjZDQ4ZDQ3
Yzk5ODQ2NTE0YzMyNmU5ZjJlNWU1MTJmMy4uNTQ1NmI3ZTUwNjg1ODJlZDdhZjIwZWFjYWRiMTI3
Y2E3MDRlN2VlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE5LTA4LTEyICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbVGV4bWFwXVtHU3Ry
ZWFtZXJdIEFkZCBzdXBwb3J0IHRvIHVwbG9hZCBtb3JlIGNvbG9yIGZvcm1hdHMgaW50byB0aGUg
dGV4dHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTMyODY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U3VwcG9ydCBub24taW50ZXJsZWF2ZWQgWVVWIGNvbG9yIGZvciBnc3RyZWFtZXItZ2wKKworICAg
ICAgICBUaGlzIGFkZHMgZGlyZWN0IHN1cHBvcnQgZm9yIHJlbmRlcmluZyBJNDIwLCBJNDQ0LCBZ
VjEyLCBZVjIxLCBZNDJCLAorICAgICAgICBOVjEyLCBOVjIxIGFuZCBWVVlBIGNvbG9yIGZvcm1h
dHMgdXNpbmcgR0xHTCBzaGFkZXJzIHdoZW4gdXNpbmcKKyAgICAgICAgZ3N0cmVhbWVyLWdsIGZv
ciB2aWRlbyByZW5kZXJpbmcuIFRoaXMgYXZvaWRzIGEgc3VyZmFjZSBjb3B5IG9uIHRoZSBHUFUK
KyAgICAgICAgaW4gdGhvc2UgY2FzZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBub3QgY2hh
bmdpbmcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3N0VmlkZW9GcmFtZUhvbGRlcjo6R3N0VmlkZW9GcmFt
ZUhvbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpHc3RWaWRlb0ZyYW1lSG9sZGVyOjpoYXNNYXBw
ZWRUZXh0dXJlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHc3RWaWRlb0ZyYW1lSG9sZGVy
Ojp2aWRlb0ZyYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2U6OnJlcXVlc3RHTENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6ZW5zdXJlR3N0R0xDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJl
VG9Db21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6Om1vdmllTG9hZFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3JlYXRlR0xBcHBTaW5rKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNyZWF0ZVZpZGVvU2lua0dM
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6b3B0aW9uc0ZvckZpbHRlclR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpwcmVw
YXJlVHJhbnNmb3JtYXRpb25NYXRyaXhXaXRoRmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVBsYW5hcllVVik6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlU2VtaVBsYW5hcllVVik6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlUGFja2VkWVVWKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6flRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyOjpjbG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW0uaDoKKwogMjAxOS0wOC0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIElEQi1zcGVjaWZpYyBxdW90YQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBmNGE0YmExYThh
Y2FkNWUyMDVhNTkzYTQ4Zjc0ODZiMjhjN2JlMWQ1Li40ZjM2NDMzM2Y3ZGRlZmMyZTQ0MWY3ZjM0
YmViYjdkMjRkN2ZjYjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcApAQCAtMjQzNSw2ICsyNDM1LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBlbGVtZW50TmFtZShnc3RfZWxlbWVudF9nZXRf
bmFtZShlbGVtZW50KSk7CiAgICAgICAgIGlmIChnX3N0cl9oYXNfcHJlZml4KGVsZW1lbnROYW1l
LmdldCgpLCAidjRsMiIpKQogICAgICAgICAgICAgcGxheWVyLT5tX3ZpZGVvRGVjb2RlclBsYXRm
b3JtID0gV2ViS2l0R3N0VmlkZW9EZWNvZGVyUGxhdGZvcm06OlZpZGVvNExpbnV4OworICAgICAg
ICBlbHNlIGlmIChnX3N0cl9oYXNfcHJlZml4KGVsZW1lbnROYW1lLmdldCgpLCAiaW14dnB1ZGVj
b2RlciIpKQorICAgICAgICAgICAgcGxheWVyLT5tX3ZpZGVvRGVjb2RlclBsYXRmb3JtID0gV2Vi
S2l0R3N0VmlkZW9EZWNvZGVyUGxhdGZvcm06OklteFZQVTsKIAogI2lmIFVTRShURVhUVVJFX01B
UFBFUl9HTCkKICAgICAgICAgcGxheWVyLT51cGRhdGVUZXh0dXJlTWFwcGVyRmxhZ3MoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApp
bmRleCAwNzI4ZWViNjQyMGFmZmI5NmM3YTFhNDlmNTU1NWQ5ZjNiM2Q5OGQ1Li4yMDcxZTAzYTA0
NTU1YTJmYWIzMDczNGJhOGY2NDFjOGYzODY0NjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC01NSw2ICs1NSw3IEBACiAK
ICNpZiBVU0UoR1NUUkVBTUVSX0dMKQogI2RlZmluZSBURVhUVVJFX0NPUElFUl9DT0xPUl9DT05W
RVJUX0ZMQUcgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpDb2xvckNvbnZlcnNpb246Ok5v
Q29udmVydAorI2RlZmluZSBHU1RfR0xfQ0FQU19GT1JNQVQgInsgUkdCeCwgUkdCQSwgSTQyMCwg
WTQ0NCwgWVYxMiwgWTQxQiwgWTQyQiwgTlYxMiwgTlYyMSwgVlVZQSB9IgogCiAjaW5jbHVkZSA8
Z3N0L2FwcC9nc3RhcHBzaW5rLmg+CiAKQEAgLTEyNiw3ICsxMjcsNyBAQCBzdGF0aWMgaW50IGdy
ZWF0ZXN0Q29tbW9uRGl2aXNvcihpbnQgYSwgaW50IGIpCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKQogY2xhc3MgR3N0VmlkZW9GcmFtZUhvbGRlciA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcjo6VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlciB7CiBwdWJsaWM6Ci0g
ICAgZXhwbGljaXQgR3N0VmlkZW9GcmFtZUhvbGRlcihHc3RTYW1wbGUqIHNhbXBsZSwgVGV4dHVy
ZU1hcHBlckdMOjpGbGFncyBmbGFncywgYm9vbCBnc3RHTEVuYWJsZWQpCisgICAgZXhwbGljaXQg
R3N0VmlkZW9GcmFtZUhvbGRlcihHc3RHTENvbnRleHQqIGNvbnRleHQsIEdzdFNhbXBsZSogc2Ft
cGxlLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzLCBib29sIGdzdEdMRW5hYmxlZCkKICAg
ICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEdTVF9JU19TQU1QTEUoc2FtcGxlKSk7CiAKQEAg
LTE0NSw4ICsxNDYsMTAgQEAgcHVibGljOgogCiAgICAgICAgIGlmIChnc3RHTEVuYWJsZWQpIHsK
ICAgICAgICAgICAgIG1faXNNYXBwZWQgPSBnc3RfdmlkZW9fZnJhbWVfbWFwKCZtX3ZpZGVvRnJh
bWUsICZ2aWRlb0luZm8sIG1fYnVmZmVyLCBzdGF0aWNfY2FzdDxHc3RNYXBGbGFncz4oR1NUX01B
UF9SRUFEIHwgR1NUX01BUF9HTCkpOwotICAgICAgICAgICAgaWYgKG1faXNNYXBwZWQpCisgICAg
ICAgICAgICBpZiAobV9pc01hcHBlZCkgewogICAgICAgICAgICAgICAgIG1fdGV4dHVyZUlEID0g
KnJlaW50ZXJwcmV0X2Nhc3Q8R0x1aW50Kj4obV92aWRlb0ZyYW1lLmRhdGFbMF0pOworICAgICAg
ICAgICAgICAgIG1faGFzTWFwcGVkVGV4dHVyZXMgPSB0cnVlOworICAgICAgICAgICAgfQogICAg
ICAgICB9IGVsc2UKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShmbGFncyk7CkBAIC0xNjEs
NiArMTY0LDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBBU1NFUlQoR1NUX1ZJREVPX0lO
Rk9fTl9QTEFORVMoJnZpZGVvSW5mbykgPT0gMSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
KworICAgICAgICB7CisgICAgICAgICAgICBHc3RHTFN5bmNNZXRhKiBtZXRhID0gZ3N0X2J1ZmZl
cl9nZXRfZ2xfc3luY19tZXRhKG1fYnVmZmVyKTsKKyAgICAgICAgICAgIGlmIChtZXRhKQorICAg
ICAgICAgICAgICAgIGdzdF9nbF9zeW5jX21ldGFfd2FpdF9jcHUobWV0YSwgY29udGV4dCk7Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICB2aXJ0dWFsIH5Hc3RWaWRlb0ZyYW1lSG9sZGVyKCkKQEAg
LTE3NSw2ICsxODQsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNBbHBoYUNoYW5uZWwoKSBjb25z
dCB7IHJldHVybiBtX2hhc0FscGhhQ2hhbm5lbDsgfQogICAgIFRleHR1cmVNYXBwZXJHTDo6Rmxh
Z3MgZmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9CiAgICAgR0x1aW50IHRleHR1cmVJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlEOyB9CisgICAgYm9vbCBoYXNNYXBwZWRUZXh0
dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzTWFwcGVkVGV4dHVyZXM7IH0KKyAgICBjb25zdCBH
c3RWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0ZyYW1lOyB9
CiAKICAgICB2b2lkIHVwZGF0ZVRleHR1cmUoQml0bWFwVGV4dHVyZUdMJiB0ZXh0dXJlKQogICAg
IHsKQEAgLTIwOSw2ICsyMjAsNyBAQCBwcml2YXRlOgogICAgIFRleHR1cmVNYXBwZXJHTDo6Rmxh
Z3MgbV9mbGFncyB7IH07CiAgICAgR0x1aW50IG1fdGV4dHVyZUlEIHsgMCB9OwogICAgIGJvb2wg
bV9pc01hcHBlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc01hcHBlZFRleHR1cmVzIHsgZmFs
c2UgfTsKIH07CiAjZW5kaWYKIApAQCAtMzgyLDkgKzM5NCwyMCBAQCBHc3RDb250ZXh0KiBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpyZXF1ZXN0R0xDb250ZXh0KGNvbnN0IGNoYXIq
IGNvbnRleAogICAgICAgICBHc3RDb250ZXh0KiBhcHBDb250ZXh0ID0gZ3N0X2NvbnRleHRfbmV3
KCJnc3QuZ2wuYXBwX2NvbnRleHQiLCBUUlVFKTsKICAgICAgICAgR3N0U3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBnc3RfY29udGV4dF93cml0YWJsZV9zdHJ1Y3R1cmUoYXBwQ29udGV4dCk7CiAjaWYg
R1NUX0NIRUNLX1ZFUlNJT04oMSwgMTIsIDApCi0gICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0KHN0
cnVjdHVyZSwgImNvbnRleHQiLCBHU1RfVFlQRV9HTF9DT05URVhULCBnc3RHTENvbnRleHQoKSwg
bnVsbHB0cik7CisgICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0KHN0cnVjdHVyZSwgImNvbnRleHQi
LCBHU1RfVFlQRV9HTF9DT05URVhULCBtX2dsU2hhcmluZ0NvbnRleHQuZ2V0KCksIG51bGxwdHIp
OworI2Vsc2UKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQoc3RydWN0dXJlLCAiY29udGV4dCIs
IEdTVF9HTF9UWVBFX0NPTlRFWFQsIG1fZ2xTaGFyaW5nQ29udGV4dC5nZXQoKSwgbnVsbHB0cik7
CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIGFwcENvbnRleHQ7CisgICAgfQorCisgICAgaWYgKCFn
X3N0cmNtcDAoY29udGV4dFR5cGUsICJnc3QuZ2wubG9jYWxfY29udGV4dCIpKSB7CisgICAgICAg
IEdzdENvbnRleHQqIGFwcENvbnRleHQgPSBnc3RfY29udGV4dF9uZXcoImdzdC5nbC5sb2NhbF9j
b250ZXh0IiwgVFJVRSk7CisgICAgICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X2Nv
bnRleHRfd3JpdGFibGVfc3RydWN0dXJlKGFwcENvbnRleHQpOworI2lmIEdTVF9DSEVDS19WRVJT
SU9OKDEsIDEyLCAwKQorICAgICAgICBnc3Rfc3RydWN0dXJlX3NldChzdHJ1Y3R1cmUsICJjb250
ZXh0IiwgR1NUX1RZUEVfR0xfQ09OVEVYVCwgbV9nbE1haW5Db250ZXh0LmdldCgpLCBudWxscHRy
KTsKICNlbHNlCi0gICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0KHN0cnVjdHVyZSwgImNvbnRleHQi
LCBHU1RfR0xfVFlQRV9DT05URVhULCBnc3RHTENvbnRleHQoKSwgbnVsbHB0cik7CisgICAgICAg
IGdzdF9zdHJ1Y3R1cmVfc2V0KHN0cnVjdHVyZSwgImNvbnRleHQiLCBHU1RfR0xfVFlQRV9DT05U
RVhULCBtX2dsTWFpbkNvbnRleHQuZ2V0KCksIG51bGxwdHIpOwogI2VuZGlmCiAgICAgICAgIHJl
dHVybiBhcHBDb250ZXh0OwogICAgIH0KQEAgLTM5NCw3ICs0MTcsNyBAQCBHc3RDb250ZXh0KiBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpyZXF1ZXN0R0xDb250ZXh0KGNvbnN0IGNo
YXIqIGNvbnRleAogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmVuc3Vy
ZUdzdEdMQ29udGV4dCgpCiB7Ci0gICAgaWYgKG1fZ2xDb250ZXh0KQorICAgIGlmIChtX2dsTWFp
bkNvbnRleHQgJiYgbV9nbFNoYXJpbmdDb250ZXh0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIGF1dG8mIHNoYXJlZERpc3BsYXkgPSBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXlG
b3JDb21wb3NpdGluZygpOwpAQCAtNDYyLDIwICs0ODUsMjQgQEAgYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjplbnN1cmVHc3RHTENvbnRleHQoKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpZiAoc2hvdWxkQWRvcHRSZWYpCi0gICAgICAgIG1fZ2xDb250ZXh0ID0g
YWRvcHRHUmVmKGdzdF9nbF9jb250ZXh0X25ld193cmFwcGVkKG1fZ2xEaXNwbGF5LmdldCgpLCBy
ZWludGVycHJldF9jYXN0PGd1aW50cHRyPihjb250ZXh0SGFuZGxlKSwgZ2xQbGF0Zm9ybSwgZ2xB
UEkpKTsKKyAgICAgICAgbV9nbFNoYXJpbmdDb250ZXh0ID0gYWRvcHRHUmVmKGdzdF9nbF9jb250
ZXh0X25ld193cmFwcGVkKG1fZ2xEaXNwbGF5LmdldCgpLCByZWludGVycHJldF9jYXN0PGd1aW50
cHRyPihjb250ZXh0SGFuZGxlKSwgZ2xQbGF0Zm9ybSwgZ2xBUEkpKTsKICAgICBlbHNlCi0gICAg
ICAgIG1fZ2xDb250ZXh0ID0gZ3N0X2dsX2NvbnRleHRfbmV3X3dyYXBwZWQobV9nbERpc3BsYXku
Z2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Z3VpbnRwdHI+KGNvbnRleHRIYW5kbGUpLCBnbFBsYXRm
b3JtLCBnbEFQSSk7CisgICAgICAgIG1fZ2xTaGFyaW5nQ29udGV4dCA9IGdzdF9nbF9jb250ZXh0
X25ld193cmFwcGVkKG1fZ2xEaXNwbGF5LmdldCgpLCByZWludGVycHJldF9jYXN0PGd1aW50cHRy
Pihjb250ZXh0SGFuZGxlKSwgZ2xQbGF0Zm9ybSwgZ2xBUEkpOworCisgICAgbV9nbE1haW5Db250
ZXh0ID0gZ3N0X2dsX2NvbnRleHRfbmV3KG1fZ2xEaXNwbGF5LmdldCgpKTsKKyAgICBpZiAobV9n
bE1haW5Db250ZXh0KQorICAgICAgICBnc3RfZ2xfY29udGV4dF9jcmVhdGUobV9nbE1haW5Db250
ZXh0LmdldCgpLCBtX2dsU2hhcmluZ0NvbnRleHQuZ2V0KCksIG51bGxwdHIpOwogCiAgICAgLy8g
QWN0aXZhdGUgYW5kIGZpbGwgdGhlIEdTdHJlYW1lciB3cmFwcGVkIGNvbnRleHQgd2l0aCB0aGUg
V2Via2l0J3Mgc2hhcmVkIG9uZS4KICAgICBhdXRvIHByZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdM
Q29udGV4dDo6Y3VycmVudCgpOwogICAgIHdlYmtpdENvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpOwotICAgIGlmIChnc3RfZ2xfY29udGV4dF9hY3RpdmF0ZShtX2dsQ29udGV4dC5nZXQoKSwg
VFJVRSkpIHsKKyAgICBpZiAoZ3N0X2dsX2NvbnRleHRfYWN0aXZhdGUobV9nbFNoYXJpbmdDb250
ZXh0LmdldCgpLCBUUlVFKSkgewogICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7
Ci0gICAgICAgIGlmICghZ3N0X2dsX2NvbnRleHRfZmlsbF9pbmZvKG1fZ2xDb250ZXh0LmdldCgp
LCAmZXJyb3Iub3V0UHRyKCkpKQorICAgICAgICBpZiAoIWdzdF9nbF9jb250ZXh0X2ZpbGxfaW5m
byhtX2dsU2hhcmluZ0NvbnRleHQuZ2V0KCksICZlcnJvci5vdXRQdHIoKSkpCiAgICAgICAgICAg
ICBHU1RfV0FSTklORygiRmFpbGVkIHRvIGZpbGwgaW4gR1N0cmVhbWVyIGNvbnRleHQ6ICVzIiwg
ZXJyb3ItPm1lc3NhZ2UpOwotICAgICAgICBnc3RfZ2xfY29udGV4dF9hY3RpdmF0ZShtX2dsQ29u
dGV4dC5nZXQoKSwgRkFMU0UpOworICAgICAgICBnc3RfZ2xfY29udGV4dF9hY3RpdmF0ZShtX2ds
U2hhcmluZ0NvbnRleHQuZ2V0KCksIEZBTFNFKTsKICAgICB9IGVsc2UKLSAgICAgICAgR1NUX1dB
Uk5JTkcoIkZhaWxlZCB0byBhY3RpdmF0ZSBHU3RyZWFtZXIgY29udGV4dCAlIiBHU1RfUFRSX0ZP
Uk1BVCwgbV9nbENvbnRleHQuZ2V0KCkpOworICAgICAgICBHU1RfV0FSTklORygiRmFpbGVkIHRv
IGFjdGl2YXRlIEdTdHJlYW1lciBjb250ZXh0ICUiIEdTVF9QVFJfRk9STUFULCBtX2dsU2hhcmlu
Z0NvbnRleHQuZ2V0KCkpOwogICAgIGlmIChwcmV2aW91c0FjdGl2ZUNvbnRleHQpCiAgICAgICAg
IHByZXZpb3VzQWN0aXZlQ29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAKQEAgLTcxMCwx
MiArNzM3LDYyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cHVzaFRl
eHR1cmVUb0NvbXBvc2l0b3IoKQogICAgICAgICAgICAgaWYgKCFwcm94eS5pc0FjdGl2ZSgpKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdz
dFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHc3RWaWRl
b0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsICFtX3Vz
aW5nRmFsbGJhY2tWaWRlb1NpbmspOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZp
ZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHc3RWaWRlb0Zy
YW1lSG9sZGVyPihtX2dsTWFpbkNvbnRleHQuZ2V0KCksIG1fc2FtcGxlLmdldCgpLCBtX3RleHR1
cmVNYXBwZXJGbGFncywgIW1fdXNpbmdGYWxsYmFja1ZpZGVvU2luayk7CisKKyAgICAgICAgICAg
IHVzaW5nIEJ1ZmZlciA9IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOworICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEJ1ZmZlcj4gbGF5ZXJCdWZmZXI7CisgICAgICAgICAgICBp
ZiAoZnJhbWVIb2xkZXItPmhhc01hcHBlZFRleHR1cmVzKCkpIHsKKyAgICAgICAgICAgICAgICBh
dXRvJiB2aWRlb0ZyYW1lID0gZnJhbWVIb2xkZXItPnZpZGVvRnJhbWUoKTsKKyAgICAgICAgICAg
ICAgICBbJl0geworICAgICAgICAgICAgICAgICAgICBpZiAobV92aWRlb0RlY29kZXJQbGF0Zm9y
bSA9PSBXZWJLaXRHc3RWaWRlb0RlY29kZXJQbGF0Zm9ybTo6SW14VlBVCisgICAgICAgICAgICAg
ICAgICAgICAgICB8fCAoR1NUX1ZJREVPX0lORk9fSVNfUkdCKCZ2aWRlb0ZyYW1lLmluZm8pICYm
IEdTVF9WSURFT19JTkZPX05fUExBTkVTKCZ2aWRlb0ZyYW1lLmluZm8pID09IDEpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8QnVmZmVy
PigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXI6OlRleHR1cmVWYXJpYW50IHsg
QnVmZmVyOjpSR0JUZXh0dXJlIHsgKnN0YXRpY19jYXN0PEdMdWludCo+KHZpZGVvRnJhbWUuZGF0
YVswXSkgfSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lSG9sZGVyLT5zaXpl
KCksIGZyYW1lSG9sZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgICAgICBpZiAoR1NUX1ZJREVPX0lORk9fSVNfWVVWKCZ2aWRlb0ZyYW1lLmlu
Zm8pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoR1NUX1ZJREVPX0lORk9fTl9DT01Q
T05FTlRTKCZ2aWRlb0ZyYW1lLmluZm8pIDwgMyB8fCBHU1RfVklERU9fSU5GT19OX1BMQU5FUygm
dmlkZW9GcmFtZS5pbmZvKSA+IDMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgblBsYW5lcyA9IEdTVF9WSURFT19JTkZP
X05fUExBTkVTKCZ2aWRlb0ZyYW1lLmluZm8pOworICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjphcnJheTxHTHVpbnQsIDM+IHBsYW5lczsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
YXJyYXk8aW50LCAzPiB5dXZQbGFuZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YXJy
YXk8aW50LCAzPiB5dXZQT2Zmc2V0OworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBuUGxhbmVzOyArK2kpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxh
bmVzW2ldID0gKnN0YXRpY19jYXN0PEdMdWludCo+KHZpZGVvRnJhbWUuZGF0YVtpXSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHl1dlBsYW5lW2ldID0gR1NUX1ZJREVPX0lORk9fQ09NUF9Q
TEFORSgmdmlkZW9GcmFtZS5pbmZvLCBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5
dXZQT2Zmc2V0W2ldID0gR1NUX1ZJREVPX0lORk9fQ09NUF9QT0ZGU0VUKCZ2aWRlb0ZyYW1lLmlu
Zm8sIGkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OmFycmF5PEdMZmxvYXQsIDk+IHl1dlRvUmdiOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGdzdF92aWRlb19jb2xvcmltZXRyeV9tYXRjaGVzKCZHU1RfVklERU9fSU5GT19D
T0xPUklNRVRSWSgmdmlkZW9GcmFtZS5pbmZvKSwgR1NUX1ZJREVPX0NPTE9SSU1FVFJZX0JUNzA5
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl1dlRvUmdiID0geworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxLjE2NGYsICAwLjBmLCAgICAxLjc4N2YsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEuMTY0ZiwgLTAuMjEzZiwgLTAuNTMxZiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4xNjRmLCAgMi4xMTJmLCAgMC4wZgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgdG8gYnQ2MDEuIFRoaXMg
aXMgdGhlIHNhbWUgYmVoYXZpb3VyIGFzIEdTdHJlYW1lcidzIGdsY29sb3Jjb252ZXJ0IGVsZW1l
bnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5dXZUb1JnYiA9IHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMS4xNjRmLCAgMC4wZiwgICAgMS41OTZmLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxLjE2NGYsIC0wLjM5MWYsIC0wLjgxM2YsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEuMTY0ZiwgIDIuMDE4ZiwgIDAuMGYKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8QnVmZmVy
PigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXI6OlRleHR1cmVWYXJpYW50IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyOjpZVVZUZXh0dXJlIHsgblBs
YW5lcywgcGxhbmVzLCB5dXZQbGFuZSwgeXV2UE9mZnNldCwgeXV2VG9SZ2IgfSB9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZyYW1lSG9sZGVyLT5zaXplKCksIGZyYW1lSG9sZGVyLT5m
bGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICBpZiAoIWxheWVyQnVmZmVy
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIEdMdWludCB0ZXh0
dXJlSUQgPSBmcmFtZUhvbGRlci0+dGV4dHVyZUlEKCk7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVyQnVmZmVyOwotICAg
ICAgICAgICAgaWYgKHRleHR1cmVJRCkgewotICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4odGV4dHVy
ZUlELCBmcmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+ZmxhZ3MoKSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQkEpOwogICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyLT5zZXRVbm1hbmFn
ZWRCdWZmZXJEYXRhSG9sZGVyKFdURk1vdmUoZnJhbWVIb2xkZXIpKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBwcm94eS5nZXRBdmFpbGFibGVC
dWZmZXIoZnJhbWVIb2xkZXItPnNpemUoKSwgR0xfRE9OVF9DQVJFKTsKQEAgLTkxMiw3ICs5ODks
NyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljcwogICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3Nh
bXBsZS5nZXQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9IHN0ZDo6bWFrZV91bmlxdWU8R3N0
VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCB0
cnVlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xk
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fZ2xNYWluQ29udGV4
dC5nZXQoKSwgbV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVyZU1hcHBlckZsYWdzLCB0cnVlKTsKIAog
ICAgIGF1dG8gdGV4dHVyZUlEID0gZnJhbWVIb2xkZXItPnRleHR1cmVJRCgpOwogICAgIGlmICgh
dGV4dHVyZUlEKQpAQCAtMTAyOSw2ICsxMTA2LDIzIEBAIEdzdEVsZW1lbnQqIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNyZWF0ZUdMQXBwU2luaygpCiAKICAgICBHUmVmUHRyPEdz
dFBhZD4gcGFkID0gYWRvcHRHUmVmKGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKGFwcHNpbmss
ICJzaW5rIikpOwogICAgIGdzdF9wYWRfYWRkX3Byb2JlKHBhZC5nZXQoKSwgc3RhdGljX2Nhc3Q8
R3N0UGFkUHJvYmVUeXBlPihHU1RfUEFEX1BST0JFX1RZUEVfUFVTSCB8IEdTVF9QQURfUFJPQkVf
VFlQRV9RVUVSWV9ET1dOU1RSRUFNIHwgR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5UX0ZMVVNIKSwg
W10gKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyogaW5mbywgIGdwb2ludGVyIHVzZXJEYXRhKSAt
PiBHc3RQYWRQcm9iZVJldHVybiB7CisgICAgICAgIGF1dG8qIHBsYXllciA9IHN0YXRpY19jYXN0
PE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UqPih1c2VyRGF0YSk7CisKKyAgICAgICAg
aWYgKGluZm8tPnR5cGUgJiBHU1RfUEFEX1BST0JFX1RZUEVfUVVFUllfRE9XTlNUUkVBTSkgewor
ICAgICAgICAgICAgR3N0UXVlcnkqIHF1ZXJ5ID0gR1NUX1BBRF9QUk9CRV9JTkZPX1FVRVJZKGlu
Zm8pOworICAgICAgICAgICAgaWYgKEdTVF9RVUVSWV9UWVBFKHF1ZXJ5KSA9PSBHU1RfUVVFUllf
Q09OVEVYVCkgeworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnRleHRUeXBlOworICAg
ICAgICAgICAgICAgIGdzdF9xdWVyeV9wYXJzZV9jb250ZXh0X3R5cGUocXVlcnksICZjb250ZXh0
VHlwZSk7CisgICAgICAgICAgICAgICAgaWYgKCFnX3N0cmNtcDAoY29udGV4dFR5cGUsICJnc3Qu
Z2wubG9jYWxfY29udGV4dCIpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8qIGNvbnRleHQg
PSBwbGF5ZXItPnJlcXVlc3RHTENvbnRleHQoY29udGV4dFR5cGUpOworICAgICAgICAgICAgICAg
ICAgICBpZiAoY29udGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdzdF9xdWVyeV9zZXRf
Y29udGV4dChxdWVyeSwgY29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHU1Rf
UEFEX1BST0JFX0hBTkRMRUQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CisgICAgICAgIH0KKwogICAgICAgICAv
LyBJbiBzb21lIHBsYXRmb3JtcyAoZS5nLiBPcGVuTUFYIG9uIHRoZSBSYXNwYmVycnkgUGkpIHdo
ZW4gYSByZXNvbHV0aW9uIGNoYW5nZSBvY2N1cnMgdGhlCiAgICAgICAgIC8vIHBpcGVsaW5lIGhh
cyB0byBiZSBkcmFpbmVkIGJlZm9yZSBhIGZyYW1lIHdpdGggdGhlIG5ldyByZXNvbHV0aW9uIGNh
biBiZSBkZWNvZGVkLgogICAgICAgICAvLyBJbiB0aGlzIGNvbnRleHQsIGl0J3MgaW1wb3J0YW50
IHRoYXQgd2UgZG9uJ3QgaG9sZCByZWZlcmVuY2VzIHRvIGFueSBwcmV2aW91cyBmcmFtZQpAQCAt
MTA0NSw3ICsxMTM5LDYgQEAgR3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZTo6Y3JlYXRlR0xBcHBTaW5rKCkKICAgICAgICAgICAgIEdTVF9ERUJVRygiQWN0aW5nIHVw
b24gZmx1c2gtc3RhcnQgZXZlbnQiKTsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8qIHBsYXll
ciA9IHN0YXRpY19jYXN0PE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UqPih1c2VyRGF0
YSk7CiAgICAgICAgIHBsYXllci0+Zmx1c2hDdXJyZW50QnVmZmVyKCk7CiAgICAgICAgIHJldHVy
biBHU1RfUEFEX1BST0JFX09LOwogICAgIH0sIHRoaXMsIG51bGxwdHIpOwpAQCAtMTA2Miw4ICsx
MTU1LDcgQEAgR3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3Jl
YXRlVmlkZW9TaW5rR0woKQogICAgIEdzdEVsZW1lbnQqIGFwcHNpbmsgPSBjcmVhdGVHTEFwcFNp
bmsoKTsKIAogICAgIC8vIGdsc2lua2JpbiBpcyBub3QgdXNlZCBiZWNhdXNlIGl0IGluY2x1ZGVz
IGdsY29sb3Jjb252ZXJ0IHdoaWNoIG9ubHkgcHJvY2VzcyBSR0JBLAotICAgIC8vIGJ1dCBpbiB0
aGUgZnV0dXJlIGl0IHdvdWxkIGJlIHBvc3NpYmxlIHRvIHJlbmRlciBZVVYgZm9ybWF0cyB0b286
Ci0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjg2OQor
ICAgIC8vIGJ1dCB3ZSBjYW4gZGlzcGxheSBZVVYgZm9ybWF0cyB0b28uCiAKICAgICBpZiAoIWFw
cHNpbmsgfHwgIXVwbG9hZCB8fCAhY29sb3Jjb252ZXJ0KSB7CiAgICAgICAgIEdTVF9XQVJOSU5H
KCJGYWlsZWQgdG8gY3JlYXRlIEdzdEdMIGVsZW1lbnRzIik7CkBAIC0xMDgyLDcgKzExNzQsNyBA
QCBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjcmVhdGVWaWRl
b1NpbmtHTCgpCiAKICAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU4odmlkZW9TaW5rKSwgdXBs
b2FkLCBjb2xvcmNvbnZlcnQsIGFwcHNpbmssIG51bGxwdHIpOwogCi0gICAgR1JlZlB0cjxHc3RD
YXBzPiBjYXBzID0gYWRvcHRHUmVmKGdzdF9jYXBzX25ld19zaW1wbGUoInZpZGVvL3gtcmF3Iiwg
ImZvcm1hdCIsIEdfVFlQRV9TVFJJTkcsICJSR0JBIiwgbnVsbHB0cikpOworICAgIEdSZWZQdHI8
R3N0Q2Fwcz4gY2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fwc19mcm9tX3N0cmluZygidmlkZW8veC1y
YXcsIGZvcm1hdCA9IChzdHJpbmcpICIgR1NUX0dMX0NBUFNfRk9STUFUKSk7CiAgICAgZ3N0X2Nh
cHNfc2V0X2ZlYXR1cmVzKGNhcHMuZ2V0KCksIDAsIGdzdF9jYXBzX2ZlYXR1cmVzX25ldyhHU1Rf
Q0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlksIG51bGxwdHIpKTsKICAgICBnX29iamVjdF9z
ZXQoYXBwc2luaywgImNhcHMiLCBjYXBzLmdldCgpLCBudWxscHRyKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKaW5kZXggODA3OWE1ZmVh
YWE3OTdmYWRjMzgyNDY3MjRlYmJjZDdmNmY5OTVlMy4uN2RkODNlNWZiZTNkYzNkY2VkYmNhNTc4
YjBlYWNmMzMzY2Y4NzVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC0yMDYsNyArMjA2LDYgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgZmx1c2hDdXJyZW50QnVmZmVyKCk7CiAgICAgR3N0RWxlbWVudCogY3JlYXRlR0xBcHBTaW5r
KCk7CiAgICAgR3N0RWxlbWVudCogY3JlYXRlVmlkZW9TaW5rR0woKTsKLSAgICBHc3RHTENvbnRl
eHQqIGdzdEdMQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xDb250ZXh0LmdldCgpOyB9CiAg
ICAgR3N0R0xEaXNwbGF5KiBnc3RHTERpc3BsYXkoKSBjb25zdCB7IHJldHVybiBtX2dsRGlzcGxh
eS5nZXQoKTsgfQogICAgIHZvaWQgZW5zdXJlR0xWaWRlb1NpbmtDb250ZXh0KCk7CiAjZW5kaWYK
QEAgLTI5MCw4ICsyODksMTAgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAKICNpZiBVU0UoR1NUUkVB
TUVSX0dMKQotICAgIEdSZWZQdHI8R3N0R0xDb250ZXh0PiBtX2dsQ29udGV4dDsKICAgICBHUmVm
UHRyPEdzdEdMRGlzcGxheT4gbV9nbERpc3BsYXk7CisgICAgR1JlZlB0cjxHc3RHTENvbnRleHQ+
IG1fZ2xNYWluQ29udGV4dDsKKyAgICBHUmVmUHRyPEdzdEdMQ29udGV4dD4gbV9nbFNoYXJpbmdD
b250ZXh0OworCiAgICAgR1JlZlB0cjxHc3RDb250ZXh0PiBtX2dsRGlzcGxheUVsZW1lbnRDb250
ZXh0OwogICAgIEdSZWZQdHI8R3N0Q29udGV4dD4gbV9nbEFwcEVsZW1lbnRDb250ZXh0OwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+IG1fdmlkZW9UZXh0
dXJlQ29waWVyOwpAQCAtMzA3LDcgKzMwOCw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1fd2Fp
dGluZ0ZvcktleSB7IGZhbHNlIH07CiAjZW5kaWYKIAotICAgIGVudW0gY2xhc3MgV2ViS2l0R3N0
VmlkZW9EZWNvZGVyUGxhdGZvcm0geyBWaWRlbzRMaW51eCB9OworICAgIGVudW0gY2xhc3MgV2Vi
S2l0R3N0VmlkZW9EZWNvZGVyUGxhdGZvcm0geyBWaWRlbzRMaW51eCwgSW14VlBVIH07CiAgICAg
T3B0aW9uYWw8V2ViS2l0R3N0VmlkZW9EZWNvZGVyUGxhdGZvcm0+IG1fdmlkZW9EZWNvZGVyUGxh
dGZvcm07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFt
ZXIuY3BwCmluZGV4IGY1MTliMDNjZWI3NTYxYjg5ZTgxNWYwZmRkMTgzNmY5MmRmOThmNTMuLjZk
NDg4M2JmMDY1MmFhYjM0MGVlMTVmYjMxMmQ1ZTFiODM5YmU1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIFZp
ZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyKENv
bG9yQ29udmVyc2lvbiBjb2xvckNvCiAgICAgQVNTRVJUKHByZXZpb3VzQ29udGV4dCk7CiAgICAg
UGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xD
b250ZXh0KCktPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCi0gICAgbV9zaGFkZXJQcm9ncmFtID0g
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OmNyZWF0ZShUZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbTo6VGV4dHVyZSk7CisgICAgbV9zaGFkZXJQcm9ncmFtID0gVGV4dHVyZU1hcHBlclNoYWRl
clByb2dyYW06OmNyZWF0ZShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVJHQik7
CiAKICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbV9mcmFtZWJ1ZmZlcik7CiAgICAgZ2xHZW5U
ZXh0dXJlcygxLCAmbV9yZXN1bHRUZXh0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXgg
OTc0Yjg1NzhiODhhYTY0MzUwOTFlOGIwYzM4YmIyZGI3MTBlZjEwMi4uMDRiYjQ3NDg5NjJiMDdh
MDBiZGEyZGY1NDc5NzJkODIwYTAxMTY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAgLTMx
OSwyMSArMzE5LDIxIEBAIHN0YXRpYyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3B0aW9u
cyBvcHRpb25zRm9yRmlsdGVyVHlwZShGaWx0ZXJPcGVyYXRpb246CiB7CiAgICAgc3dpdGNoICh0
eXBlKSB7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRToKLSAgICAgICAgcmV0
dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW06OkdyYXlzY2FsZUZpbHRlcjsKKyAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlUkdCIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06
OkdyYXlzY2FsZUZpbHRlcjsKICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6Ci0gICAg
ICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZSB8IFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtOjpTZXBpYUZpbHRlcjsKKyAgICAgICAgcmV0dXJuIFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlUkdCIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dy
YW06OlNlcGlhRmlsdGVyOwogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFURToKLSAg
ICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlIHwgVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW06OlNhdHVyYXRlRmlsdGVyOworICAgICAgICByZXR1cm4gVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVSR0IgfCBUZXh0dXJlTWFwcGVyU2hhZGVy
UHJvZ3JhbTo6U2F0dXJhdGVGaWx0ZXI7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9S
T1RBVEU6Ci0gICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVy
ZSB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpIdWVSb3RhdGVGaWx0ZXI7CisgICAgICAg
IHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVJHQiB8IFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtOjpIdWVSb3RhdGVGaWx0ZXI7CiAgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246OklOVkVSVDoKLSAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
OjpUZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkludmVydEZpbHRlcjsKKyAg
ICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlUkdCIHwgVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkludmVydEZpbHRlcjsKICAgICBjYXNlIEZpbHRlck9w
ZXJhdGlvbjo6QlJJR0hUTkVTUzoKLSAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtOjpUZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkJyaWdodG5lc3NG
aWx0ZXI7CisgICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVy
ZVJHQiB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpCcmlnaHRuZXNzRmlsdGVyOwogICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDoKLSAgICAgICAgcmV0dXJuIFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06
OkNvbnRyYXN0RmlsdGVyOworICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dy
YW06OlRleHR1cmVSR0IgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6Q29udHJhc3RGaWx0
ZXI7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6Ci0gICAgICAgIHJldHVybiBU
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZSB8IFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtOjpPcGFjaXR5RmlsdGVyOworICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRl
clByb2dyYW06OlRleHR1cmVSR0IgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3BhY2l0
eUZpbHRlcjsKICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjoKICAgICAgICAgcmV0dXJu
IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpCbHVyRmlsdGVyOwogICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpEUk9QX1NIQURPVzoKQEAgLTQ3MCw3ICs0NzAsNyBAQCB2b2lkIFRleHR1cmVN
YXBwZXJHTDo6ZHJhd1RleHR1cmUoR0x1aW50IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJ
bnRTaXplJiB0ZQogICAgICAgICAmJiBleHBvc2VkRWRnZXMgPT0gQWxsRWRnZXMKICAgICAgICAg
JiYgIW1vZGVsVmlld01hdHJpeC5tYXBRdWFkKHRhcmdldFJlY3QpLmlzUmVjdGlsaW5lYXIoKTsK
IAotICAgIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnMgPSBUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZTsKKyAgICBUZXh0dXJlTWFwcGVyU2hhZGVy
UHJvZ3JhbTo6T3B0aW9ucyBvcHRpb25zID0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRl
eHR1cmVSR0I7CiAgICAgaWYgKHVzZVJlY3QpCiAgICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW06OlJlY3Q7CiAgICAgaWYgKG9wYWNpdHkgPCAxKQpAQCAtNTA0LDYg
KzUwNCwxNzMgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKEdMdWludCB0ZXh0
dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGUKICAgICBkcmF3VGV4dHVyZWRRdWFk
V2l0aFByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgdGV4dHVyZSwgZmxhZ3MsIHRleHR1cmVTaXplLCB0
YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkpOwogfQogCitzdGF0aWMgdm9pZCBw
cmVwYXJlVHJhbnNmb3JtYXRpb25NYXRyaXhXaXRoRmxhZ3MoVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHBhdHRlcm5UcmFuc2Zvcm0sIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MsIGNvbnN0IElu
dFNpemUmIHNpemUpCit7CisgICAgaWYgKGZsYWdzICYgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRS
b3RhdGVUZXh0dXJlOTApIHsKKyAgICAgICAgcGF0dGVyblRyYW5zZm9ybS5yb3RhdGUoLTkwKTsK
KyAgICAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoLTEsIDApOworICAgIH0KKyAgICBp
ZiAoZmxhZ3MgJiBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZFJvdGF0ZVRleHR1cmUxODApIHsKKyAg
ICAgICAgcGF0dGVyblRyYW5zZm9ybS5yb3RhdGUoMTgwKTsKKyAgICAgICAgcGF0dGVyblRyYW5z
Zm9ybS50cmFuc2xhdGUoLTEsIC0xKTsKKyAgICB9CisgICAgaWYgKGZsYWdzICYgVGV4dHVyZU1h
cHBlckdMOjpTaG91bGRSb3RhdGVUZXh0dXJlMjcwKSB7CisgICAgICAgIHBhdHRlcm5UcmFuc2Zv
cm0ucm90YXRlKC0yNzApOworICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAt
MSk7CisgICAgfQorICAgIGlmIChmbGFncyAmIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkRmxpcFRl
eHR1cmUpCisgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0uZmxpcFkoKTsKKyAgICBpZiAoZmxhZ3Mg
JiBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZFVzZUFSQlRleHR1cmVSZWN0KQorICAgICAgICBwYXR0
ZXJuVHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkp
OworICAgIGlmIChmbGFncyAmIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkRmxpcFRleHR1cmUpCisg
ICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAsIC0xKTsKK30KKwordm9pZCBUZXh0
dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlUGxhbmFyWVVWKGNvbnN0IHN0ZDo6YXJyYXk8R0x1aW50
LCAzPiYgdGV4dHVyZXMsIGNvbnN0IHN0ZDo6YXJyYXk8R0xmbG9hdCwgOT4mIHl1dlRvUmdiTWF0
cml4LCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01h
dHJpeCwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKQoreworICAgIGJvb2wg
dXNlUmVjdCA9IGZsYWdzICYgU2hvdWxkVXNlQVJCVGV4dHVyZVJlY3Q7CisgICAgYm9vbCB1c2VB
bnRpYWxpYXNpbmcgPSBtX2VuYWJsZUVkZ2VEaXN0YW5jZUFudGlhbGlhc2luZworICAgICAgICAm
JiBleHBvc2VkRWRnZXMgPT0gQWxsRWRnZXMKKyAgICAgICAgJiYgIW1vZGVsVmlld01hdHJpeC5t
YXBRdWFkKHRhcmdldFJlY3QpLmlzUmVjdGlsaW5lYXIoKTsKKworICAgIFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnMgPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bTo6VGV4dHVyZVlVVjsKKyAgICBpZiAodXNlUmVjdCkKKyAgICAgICAgb3B0aW9ucyB8PSBUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6UmVjdDsKKyAgICBpZiAob3BhY2l0eSA8IDEpCisgICAg
ICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9wYWNpdHk7CisgICAg
aWYgKHVzZUFudGlhbGlhc2luZykgeworICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtOjpBbnRpYWxpYXNpbmc7CisgICAgICAgIGZsYWdzIHw9IFNob3VsZEFudGlh
bGlhczsKKyAgICB9CisgICAgaWYgKHdyYXBNb2RlKCkgPT0gUmVwZWF0V3JhcCAmJiAhbV9jb250
ZXh0QXR0cmlidXRlcy5zdXBwb3J0c05QT1RUZXh0dXJlcykKKyAgICAgICAgb3B0aW9ucyB8PSBU
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6TWFudWFsUmVwZWF0OworCisgICAgUmVmUHRyPEZp
bHRlck9wZXJhdGlvbj4gZmlsdGVyID0gZGF0YSgpLmZpbHRlckluZm8gPyBkYXRhKCkuZmlsdGVy
SW5mby0+ZmlsdGVyOiAwOworICAgIEdMdWludCBmaWx0ZXJDb250ZW50VGV4dHVyZUlEID0gMDsK
KworICAgIGlmIChmaWx0ZXIpIHsKKyAgICAgICAgaWYgKGRhdGEoKS5maWx0ZXJJbmZvLT5jb250
ZW50VGV4dHVyZSkKKyAgICAgICAgICAgIGZpbHRlckNvbnRlbnRUZXh0dXJlSUQgPSB0b0JpdG1h
cFRleHR1cmVHTChkYXRhKCkuZmlsdGVySW5mby0+Y29udGVudFRleHR1cmUuZ2V0KCkpLT5pZCgp
OworICAgICAgICBvcHRpb25zIHw9IG9wdGlvbnNGb3JGaWx0ZXJUeXBlKGZpbHRlci0+dHlwZSgp
LCBkYXRhKCkuZmlsdGVySW5mby0+cGFzcyk7CisgICAgICAgIGlmIChmaWx0ZXItPmFmZmVjdHNP
cGFjaXR5KCkpCisgICAgICAgICAgICBmbGFncyB8PSBTaG91bGRCbGVuZDsKKyAgICB9CisKKyAg
ICBpZiAodXNlQW50aWFsaWFzaW5nIHx8IG9wYWNpdHkgPCAxKQorICAgICAgICBmbGFncyB8PSBT
aG91bGRCbGVuZDsKKworICAgIFJlZjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gcHJvZ3Jh
bSA9IGRhdGEoKS5nZXRTaGFkZXJQcm9ncmFtKG9wdGlvbnMpOworCisgICAgaWYgKGZpbHRlcikK
KyAgICAgICAgcHJlcGFyZUZpbHRlclByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgKmZpbHRlci5nZXQo
KSwgZGF0YSgpLmZpbHRlckluZm8tPnBhc3MsIHRleHR1cmVTaXplLCBmaWx0ZXJDb250ZW50VGV4
dHVyZUlEKTsKKworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxHTHVpbnQsIEdMdWludD4gPiB0
ZXh0dXJlc0FuZFNhbXBsZXJzID0geworICAgICAgICB7IHRleHR1cmVzWzBdLCBwcm9ncmFtLT5z
YW1wbGVyWUxvY2F0aW9uKCkgfSwKKyAgICAgICAgeyB0ZXh0dXJlc1sxXSwgcHJvZ3JhbS0+c2Ft
cGxlclVMb2NhdGlvbigpIH0sCisgICAgICAgIHsgdGV4dHVyZXNbMl0sIHByb2dyYW0tPnNhbXBs
ZXJWTG9jYXRpb24oKSB9CisgICAgfTsKKworICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9n
cmFtSUQoKSk7CisgICAgZ2xVbmlmb3JtTWF0cml4M2Z2KHByb2dyYW0tPnl1dlRvUmdiTG9jYXRp
b24oKSwgMSwgR0xfRkFMU0UsIHN0YXRpY19jYXN0PGNvbnN0IEdMZmxvYXQgKj4oJnl1dlRvUmdi
TWF0cml4WzBdKSk7CisgICAgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0
KCksIHRleHR1cmVzQW5kU2FtcGxlcnMsIGZsYWdzLCB0ZXh0dXJlU2l6ZSwgdGFyZ2V0UmVjdCwg
bW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRy
YXdUZXh0dXJlU2VtaVBsYW5hcllVVihjb25zdCBzdGQ6OmFycmF5PEdMdWludCwgMj4mIHRleHR1
cmVzLCBib29sIHV2UmV2ZXJzZWQsIGNvbnN0IHN0ZDo6YXJyYXk8R0xmbG9hdCwgOT4mIHl1dlRv
UmdiTWF0cml4LCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVs
Vmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKQoreworICAg
IGJvb2wgdXNlUmVjdCA9IGZsYWdzICYgU2hvdWxkVXNlQVJCVGV4dHVyZVJlY3Q7CisgICAgYm9v
bCB1c2VBbnRpYWxpYXNpbmcgPSBtX2VuYWJsZUVkZ2VEaXN0YW5jZUFudGlhbGlhc2luZworICAg
ICAgICAmJiBleHBvc2VkRWRnZXMgPT0gQWxsRWRnZXMKKyAgICAgICAgJiYgIW1vZGVsVmlld01h
dHJpeC5tYXBRdWFkKHRhcmdldFJlY3QpLmlzUmVjdGlsaW5lYXIoKTsKKworICAgIFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnMgPSB1dlJldmVyc2VkID8KKyAgICAg
ICAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVOVjIxIDogVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW06OlRleHR1cmVOVjEyOworICAgIGlmICh1c2VSZWN0KQorICAgICAgICBv
cHRpb25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpSZWN0OworICAgIGlmIChvcGFj
aXR5IDwgMSkKKyAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6
T3BhY2l0eTsKKyAgICBpZiAodXNlQW50aWFsaWFzaW5nKSB7CisgICAgICAgIG9wdGlvbnMgfD0g
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkFudGlhbGlhc2luZzsKKyAgICAgICAgZmxhZ3Mg
fD0gU2hvdWxkQW50aWFsaWFzOworICAgIH0KKyAgICBpZiAod3JhcE1vZGUoKSA9PSBSZXBlYXRX
cmFwICYmICFtX2NvbnRleHRBdHRyaWJ1dGVzLnN1cHBvcnRzTlBPVFRleHR1cmVzKQorICAgICAg
ICBvcHRpb25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpNYW51YWxSZXBlYXQ7CisK
KyAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBmaWx0ZXIgPSBkYXRhKCkuZmlsdGVySW5mbyA/
IGRhdGEoKS5maWx0ZXJJbmZvLT5maWx0ZXI6IDA7CisgICAgR0x1aW50IGZpbHRlckNvbnRlbnRU
ZXh0dXJlSUQgPSAwOworCisgICAgaWYgKGZpbHRlcikgeworICAgICAgICBpZiAoZGF0YSgpLmZp
bHRlckluZm8tPmNvbnRlbnRUZXh0dXJlKQorICAgICAgICAgICAgZmlsdGVyQ29udGVudFRleHR1
cmVJRCA9IHRvQml0bWFwVGV4dHVyZUdMKGRhdGEoKS5maWx0ZXJJbmZvLT5jb250ZW50VGV4dHVy
ZS5nZXQoKSktPmlkKCk7CisgICAgICAgIG9wdGlvbnMgfD0gb3B0aW9uc0ZvckZpbHRlclR5cGUo
ZmlsdGVyLT50eXBlKCksIGRhdGEoKS5maWx0ZXJJbmZvLT5wYXNzKTsKKyAgICAgICAgaWYgKGZp
bHRlci0+YWZmZWN0c09wYWNpdHkoKSkKKyAgICAgICAgICAgIGZsYWdzIHw9IFNob3VsZEJsZW5k
OworICAgIH0KKworICAgIGlmICh1c2VBbnRpYWxpYXNpbmcgfHwgb3BhY2l0eSA8IDEpCisgICAg
ICAgIGZsYWdzIHw9IFNob3VsZEJsZW5kOworCisgICAgUmVmPFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtPiBwcm9ncmFtID0gZGF0YSgpLmdldFNoYWRlclByb2dyYW0ob3B0aW9ucyk7CisKKyAg
ICBpZiAoZmlsdGVyKQorICAgICAgICBwcmVwYXJlRmlsdGVyUHJvZ3JhbShwcm9ncmFtLmdldCgp
LCAqZmlsdGVyLmdldCgpLCBkYXRhKCkuZmlsdGVySW5mby0+cGFzcywgdGV4dHVyZVNpemUsIGZp
bHRlckNvbnRlbnRUZXh0dXJlSUQpOworCisgICAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPEdMdWlu
dCwgR0x1aW50PiA+IHRleHR1cmVzQW5kU2FtcGxlcnMgPSB7CisgICAgICAgIHsgdGV4dHVyZXNb
MF0sIHByb2dyYW0tPnNhbXBsZXJZTG9jYXRpb24oKSB9LAorICAgICAgICB7IHRleHR1cmVzWzFd
LCBwcm9ncmFtLT5zYW1wbGVyVUxvY2F0aW9uKCkgfQorICAgIH07CisKKyAgICBnbFVzZVByb2dy
YW0ocHJvZ3JhbS0+cHJvZ3JhbUlEKCkpOworICAgIGdsVW5pZm9ybU1hdHJpeDNmdihwcm9ncmFt
LT55dXZUb1JnYkxvY2F0aW9uKCksIDEsIEdMX0ZBTFNFLCBzdGF0aWNfY2FzdDxjb25zdCBHTGZs
b2F0ICo+KCZ5dXZUb1JnYk1hdHJpeFswXSkpOworICAgIGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJv
Z3JhbShwcm9ncmFtLmdldCgpLCB0ZXh0dXJlc0FuZFNhbXBsZXJzLCBmbGFncywgdGV4dHVyZVNp
emUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7Cit9CisKK3ZvaWQgVGV4
dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVBhY2tlZFlVVihHTHVpbnQgdGV4dHVyZSwgY29uc3Qg
c3RkOjphcnJheTxHTGZsb2F0LCA5PiYgeXV2VG9SZ2JNYXRyaXgsIEZsYWdzIGZsYWdzLCBjb25z
dCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCB1
bnNpZ25lZCBleHBvc2VkRWRnZXMpCit7CisgICAgYm9vbCB1c2VSZWN0ID0gZmxhZ3MgJiBTaG91
bGRVc2VBUkJUZXh0dXJlUmVjdDsKKyAgICBib29sIHVzZUFudGlhbGlhc2luZyA9IG1fZW5hYmxl
RWRnZURpc3RhbmNlQW50aWFsaWFzaW5nCisgICAgICAgICYmIGV4cG9zZWRFZGdlcyA9PSBBbGxF
ZGdlcworICAgICAgICAmJiAhbW9kZWxWaWV3TWF0cml4Lm1hcFF1YWQodGFyZ2V0UmVjdCkuaXNS
ZWN0aWxpbmVhcigpOworCisgICAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9wdGlvbnMg
b3B0aW9ucyA9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlUGFja2VkWVVWOwor
ICAgIGlmICh1c2VSZWN0KQorICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtOjpSZWN0OworICAgIGlmIChvcGFjaXR5IDwgMSkKKyAgICAgICAgb3B0aW9ucyB8PSBU
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3BhY2l0eTsKKyAgICBpZiAodXNlQW50aWFsaWFz
aW5nKSB7CisgICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkFu
dGlhbGlhc2luZzsKKyAgICAgICAgZmxhZ3MgfD0gU2hvdWxkQW50aWFsaWFzOworICAgIH0KKyAg
ICBpZiAod3JhcE1vZGUoKSA9PSBSZXBlYXRXcmFwICYmICFtX2NvbnRleHRBdHRyaWJ1dGVzLnN1
cHBvcnRzTlBPVFRleHR1cmVzKQorICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtOjpNYW51YWxSZXBlYXQ7CisKKyAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBm
aWx0ZXIgPSBkYXRhKCkuZmlsdGVySW5mbyA/IGRhdGEoKS5maWx0ZXJJbmZvLT5maWx0ZXI6IDA7
CisgICAgR0x1aW50IGZpbHRlckNvbnRlbnRUZXh0dXJlSUQgPSAwOworCisgICAgaWYgKGZpbHRl
cikgeworICAgICAgICBpZiAoZGF0YSgpLmZpbHRlckluZm8tPmNvbnRlbnRUZXh0dXJlKQorICAg
ICAgICAgICAgZmlsdGVyQ29udGVudFRleHR1cmVJRCA9IHRvQml0bWFwVGV4dHVyZUdMKGRhdGEo
KS5maWx0ZXJJbmZvLT5jb250ZW50VGV4dHVyZS5nZXQoKSktPmlkKCk7CisgICAgICAgIG9wdGlv
bnMgfD0gb3B0aW9uc0ZvckZpbHRlclR5cGUoZmlsdGVyLT50eXBlKCksIGRhdGEoKS5maWx0ZXJJ
bmZvLT5wYXNzKTsKKyAgICAgICAgaWYgKGZpbHRlci0+YWZmZWN0c09wYWNpdHkoKSkKKyAgICAg
ICAgICAgIGZsYWdzIHw9IFNob3VsZEJsZW5kOworICAgIH0KKworICAgIGlmICh1c2VBbnRpYWxp
YXNpbmcgfHwgb3BhY2l0eSA8IDEpCisgICAgICAgIGZsYWdzIHw9IFNob3VsZEJsZW5kOworCisg
ICAgUmVmPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBwcm9ncmFtID0gZGF0YSgpLmdldFNo
YWRlclByb2dyYW0ob3B0aW9ucyk7CisKKyAgICBpZiAoZmlsdGVyKQorICAgICAgICBwcmVwYXJl
RmlsdGVyUHJvZ3JhbShwcm9ncmFtLmdldCgpLCAqZmlsdGVyLmdldCgpLCBkYXRhKCkuZmlsdGVy
SW5mby0+cGFzcywgdGV4dHVyZVNpemUsIGZpbHRlckNvbnRlbnRUZXh0dXJlSUQpOworCisgICAg
c3RkOjp2ZWN0b3I8c3RkOjpwYWlyPEdMdWludCwgR0x1aW50PiA+IHRleHR1cmVzQW5kU2FtcGxl
cnMgPSB7CisgICAgICAgIHsgdGV4dHVyZSwgcHJvZ3JhbS0+c2FtcGxlckxvY2F0aW9uKCkgfQor
ICAgIH07CisKKyAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbUlEKCkpOworICAgIGds
VW5pZm9ybU1hdHJpeDNmdihwcm9ncmFtLT55dXZUb1JnYkxvY2F0aW9uKCksIDEsIEdMX0ZBTFNF
LCBzdGF0aWNfY2FzdDxjb25zdCBHTGZsb2F0ICo+KCZ5dXZUb1JnYk1hdHJpeFswXSkpOworICAg
IGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShwcm9ncmFtLmdldCgpLCB0ZXh0dXJlc0FuZFNh
bXBsZXJzLCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwg
b3BhY2l0eSk7Cit9CisKIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3U29saWRDb2xvcihjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGNv
bnN0IENvbG9yJiBjb2xvciwgYm9vbCBpc0JsZW5kaW5nQWxsb3dlZCkKIHsKICAgICBGbGFncyBm
bGFncyA9IDA7CkBAIC02MDEsMzcgKzc2OCwyNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJh
dyhjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtbwog
ICAgIGdsRW5hYmxlKEdMX0JMRU5EKTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdU
ZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSYgcHJvZ3Jh
bSwgdWludDMyX3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmll
d01hdHJpeCwgZmxvYXQgb3BhY2l0eSkKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVy
ZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0mIHByb2dyYW0sIGNv
bnN0IHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxHTHVpbnQsIEdMdWludD4gPiYgdGV4dHVyZXNBbmRT
YW1wbGVycywgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxv
YXQgb3BhY2l0eSkKIHsKICAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbS5wcm9ncmFtSUQoKSk7Ci0g
ICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKworICAgIGJvb2wgcmVwZWF0V3JhcCA9
IHdyYXBNb2RlKCkgPT0gUmVwZWF0V3JhcCAmJiBtX2NvbnRleHRBdHRyaWJ1dGVzLnN1cHBvcnRz
TlBPVFRleHR1cmVzOwogICAgIEdMZW51bSB0YXJnZXQgPSBmbGFncyAmIFNob3VsZFVzZUFSQlRl
eHR1cmVSZWN0ID8gR0xlbnVtKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FSQikgOiBHTGVudW0oR0xf
VEVYVFVSRV8yRCk7Ci0gICAgZ2xCaW5kVGV4dHVyZSh0YXJnZXQsIHRleHR1cmUpOwotICAgIGds
VW5pZm9ybTFpKHByb2dyYW0uc2FtcGxlckxvY2F0aW9uKCksIDApOwotICAgIGlmICh3cmFwTW9k
ZSgpID09IFJlcGVhdFdyYXAgJiYgbV9jb250ZXh0QXR0cmlidXRlcy5zdXBwb3J0c05QT1RUZXh0
dXJlcykgewotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9XUkFQX1MsIEdMX1JFUEVBVCk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfUkVQRUFUKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgdGV4dHVyZXNBbmRTYW1wbGVycy5zaXplKCk7ICsraSkgeworICAgICAgICBhdXRv
JiB0ZXh0dXJlQW5kU2FtcGxlciA9IHRleHR1cmVzQW5kU2FtcGxlcnNbaV07CisKKyAgICAgICAg
Z2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwICsgaSk7CisgICAgICAgIGdsQmluZFRleHR1cmUo
dGFyZ2V0LCB0ZXh0dXJlQW5kU2FtcGxlci5maXJzdCk7CisgICAgICAgIGdsVW5pZm9ybTFpKHRl
eHR1cmVBbmRTYW1wbGVyLnNlY29uZCwgaSk7CisKKyAgICAgICAgaWYgKHJlcGVhdFdyYXApIHsK
KyAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dS
QVBfUywgR0xfUkVQRUFUKTsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfUkVQRUFUKTsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHBhdHRlcm5UcmFuc2Zvcm0gPSB0aGlzLT5wYXR0ZXJu
VHJhbnNmb3JtKCk7Ci0gICAgaWYgKGZsYWdzICYgU2hvdWxkUm90YXRlVGV4dHVyZTkwKSB7Ci0g
ICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0ucm90YXRlKC05MCk7Ci0gICAgICAgIHBhdHRlcm5UcmFu
c2Zvcm0udHJhbnNsYXRlKC0xLCAwKTsKLSAgICB9Ci0gICAgaWYgKGZsYWdzICYgU2hvdWxkUm90
YXRlVGV4dHVyZTE4MCkgewotICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnJvdGF0ZSgxODApOwot
ICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMSwgLTEpOwotICAgIH0KLSAgICBp
ZiAoZmxhZ3MgJiBTaG91bGRSb3RhdGVUZXh0dXJlMjcwKSB7Ci0gICAgICAgIHBhdHRlcm5UcmFu
c2Zvcm0ucm90YXRlKC0yNzApOwotICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgw
LCAtMSk7Ci0gICAgfQotICAgIGlmIChmbGFncyAmIFNob3VsZEZsaXBUZXh0dXJlKQotICAgICAg
ICBwYXR0ZXJuVHJhbnNmb3JtLmZsaXBZKCk7Ci0gICAgaWYgKGZsYWdzICYgU2hvdWxkVXNlQVJC
VGV4dHVyZVJlY3QpCi0gICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKHNp
emUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgaWYgKGZsYWdzICYgU2hvdWxkRmxpcFRl
eHR1cmUpCi0gICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAsIC0xKTsKKyAgICBw
cmVwYXJlVHJhbnNmb3JtYXRpb25NYXRyaXhXaXRoRmxhZ3MocGF0dGVyblRyYW5zZm9ybSwgZmxh
Z3MsIHNpemUpOwogCiAgICAgcHJvZ3JhbS5zZXRNYXRyaXgocHJvZ3JhbS50ZXh0dXJlU3BhY2VN
YXRyaXhMb2NhdGlvbigpLCBwYXR0ZXJuVHJhbnNmb3JtKTsKICAgICBwcm9ncmFtLnNldE1hdHJp
eChwcm9ncmFtLnRleHR1cmVDb2xvclNwYWNlTWF0cml4TG9jYXRpb24oKSwgY29sb3JTcGFjZU1h
dHJpeEZvckZsYWdzKGZsYWdzKSk7CkBAIC02NDEsOCArNzk4LDIwIEBAIHZvaWQgVGV4dHVyZU1h
cHBlckdMOjpkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW0mIHByCiAgICAgICAgIGZsYWdzIHw9IFNob3VsZEJsZW5kOwogCiAgICAgZHJhdyhyZWN0
LCBtb2RlbFZpZXdNYXRyaXgsIHByb2dyYW0sIEdMX1RSSUFOR0xFX0ZBTiwgZmxhZ3MpOwotICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xB
TVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKworICAgIGlmIChyZXBlYXRXcmFwKSB7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0ZXh0dXJlc0FuZFNhbXBsZXJzLnNpemUo
KTsgKytpKSB7CisgICAgICAgICAgICBhdXRvJiB0ZXh0dXJlQW5kU2FtcGxlciA9IHRleHR1cmVz
QW5kU2FtcGxlcnNbaV07CisgICAgICAgICAgICBnbEJpbmRUZXh0dXJlKHRhcmdldCwgdGV4dHVy
ZUFuZFNhbXBsZXIuZmlyc3QpOworICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICAgICAgICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xB
TVBfVE9fRURHRSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckdM
OjpkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0m
IHByb2dyYW0sIHVpbnQzMl90IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXplJiBz
aXplLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
b2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkpCit7CisgICAgZHJhd1RleHR1cmVkUXVhZFdp
dGhQcm9ncmFtKHByb2dyYW0sIHsgeyB0ZXh0dXJlLCBwcm9ncmFtLnNhbXBsZXJMb2NhdGlvbigp
IH0gfSwgZmxhZ3MsIHNpemUsIHJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7CiB9CiAK
IHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3RmlsdGVyZWQoY29uc3QgQml0bWFwVGV4dHVyZSYg
c2FtcGxlciwgY29uc3QgQml0bWFwVGV4dHVyZSogY29udGVudFRleHR1cmUsIGNvbnN0IEZpbHRl
ck9wZXJhdGlvbiYgZmlsdGVyLCBpbnQgcGFzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAppbmRleCBjYTA1
NmFmNjYwMzBlZDFlZWQ5MmZhNWMyYTI4ZGE5MGNiMzRlYjZhLi40YzFiNTExODNjYWUxMzNkNGRl
N2IwNWM3NjA3OWIwNzk4MWIxZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCkBAIC0zMCw2ICszMCw4
IEBACiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlckdMSGVhZGVycy5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0
cml4LmgiCisjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8dmVjdG9yPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTY0LDYgKzY2LDkgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd051bWJl
cihpbnQgbnVtYmVyLCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1RleHR1cmUoY29uc3Qg
Qml0bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoR0x1aW50IHRleHR1cmUsIEZsYWdzLCBjb25zdCBJ
bnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCB1bnNp
Z25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcyk7CisgICAgdm9pZCBkcmF3VGV4dHVyZVBsYW5h
cllVVihjb25zdCBzdGQ6OmFycmF5PEdMdWludCwgMz4mIHRleHR1cmVzLCBjb25zdCBzdGQ6OmFy
cmF5PEdMZmxvYXQsIDk+JiB5dXZUb1JnYk1hdHJpeCwgRmxhZ3MsIGNvbnN0IEludFNpemUmIHRl
eHR1cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9z
ZWRFZGdlcyA9IEFsbEVkZ2VzKTsKKyAgICB2b2lkIGRyYXdUZXh0dXJlU2VtaVBsYW5hcllVVihj
b25zdCBzdGQ6OmFycmF5PEdMdWludCwgMj4mIHRleHR1cmVzLCBib29sIHV2UmV2ZXJzZWQsIGNv
bnN0IHN0ZDo6YXJyYXk8R0xmbG9hdCwgOT4mIHl1dlRvUmdiTWF0cml4LCBGbGFncywgY29uc3Qg
SW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgdW5z
aWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpOworICAgIHZvaWQgZHJhd1RleHR1cmVQYWNr
ZWRZVVYoR0x1aW50IHRleHR1cmUsIGNvbnN0IHN0ZDo6YXJyYXk8R0xmbG9hdCwgOT4mIHl1dlRv
UmdiTWF0cml4LCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01h
dHJpeCwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpOwog
ICAgIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xl
YXJDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwogCkBAIC04NCw2ICs4OSw3IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSYsIHVpbnQzMl90IHRleHR1cmUsIEZsYWdzLCBjb25zdCBJ
bnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1v
ZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSk7CisgICAgdm9pZCBkcmF3VGV4dHVyZWRRdWFk
V2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0mLCBjb25zdCBzdGQ6OnZlY3Rv
cjxzdGQ6OnBhaXI8R0x1aW50LCBHTHVpbnQ+ID4mIHRleHR1cmVzQW5kU2FtcGxlcnMsIEZsYWdz
LCBjb25zdCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSk7CiAgICAgdm9pZCBkcmF3KGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRy
aXgsIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtJiwgR0xlbnVtIGRyYXdpbmdNb2RlLCBGbGFn
cyk7CiAKICAgICB2b2lkIGRyYXdVbml0UmVjdChUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSYs
IEdMZW51bSBkcmF3aW5nTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyLmNwcAppbmRleCA3YWZkZjMwYTA1YmNhNTM5N2I4MDE4YmZlYmQ4OWUw
ZTFkYTUwMzMzLi4xZmU0ZTVjNjhiYjgwMGEwMjY0OWVlNmJkYWFiNzg4MjFlNTQxODgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKQEAg
LTM1LDE0ICszNSwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihSZWZQdHI8
Qml0bWFwVGV4dHVyZT4mJiB0ZXh0dXJlLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzKQog
ICAgIDogbV90ZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpCi0gICAgLCBtX3RleHR1cmVJRCgwKQor
ICAgICwgbV92YXJpYW50KFJHQlRleHR1cmUgeyAwIH0pCiAgICAgLCBtX2V4dHJhRmxhZ3MoZmxh
Z3MpCiAgICAgLCBtX2hhc01hbmFnZWRUZXh0dXJlKHRydWUpCiB7CiB9CiAKIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihH
THVpbnQgdGV4dHVyZUlELCBjb25zdCBJbnRTaXplJiBzaXplLCBUZXh0dXJlTWFwcGVyR0w6OkZs
YWdzIGZsYWdzLCBHTGludCBpbnRlcm5hbEZvcm1hdCkKLSAgICA6IG1fdGV4dHVyZUlEKHRleHR1
cmVJRCkKKyAgICA6IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKHsgUkdCVGV4dHVy
ZSB7IHRleHR1cmVJRCB9IH0sIHNpemUsIGZsYWdzLCBpbnRlcm5hbEZvcm1hdCkKK3sKK30KKwor
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyKFRleHR1cmVWYXJpYW50JiYgdmFyaWFudCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwg
VGV4dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncywgR0xpbnQgaW50ZXJuYWxGb3JtYXQpCisgICAg
OiBtX3ZhcmlhbnQoV1RGTW92ZSh2YXJpYW50KSkKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwg
bV9pbnRlcm5hbEZvcm1hdChpbnRlcm5hbEZvcm1hdCkKICAgICAsIG1fZXh0cmFGbGFncyhmbGFn
cykKQEAgLTUwLDYgKzU1LDEwIEBAIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihHTHVpbnQgdGV4dHVyCiB7CiB9CiAKK1Rl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjp+VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXIoKQoreworfQorCiBib29sIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
OjpjYW5SZXVzZVdpdGhvdXRSZXNldChjb25zdCBJbnRTaXplJiBzaXplLCBHTGludCBpbnRlcm5h
bEZvcm1hdCkKIHsKICAgICByZXR1cm4gbV90ZXh0dXJlICYmIChtX3RleHR1cmUtPnNpemUoKSA9
PSBzaXplKSAmJiAoc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMKj4obV90ZXh0dXJlLmdldCgp
KS0+aW50ZXJuYWxGb3JtYXQoKSA9PSBpbnRlcm5hbEZvcm1hdCB8fCBpbnRlcm5hbEZvcm1hdCA9
PSBHTF9ET05UX0NBUkUpOwpAQCAtNTcsMTQgKzY2LDI0IEBAIGJvb2wgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXI6OmNhblJldXNlV2l0aG91dFJlc2V0KGNvbnN0IEludFNpemUmIHNp
emUsCiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4g
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OmNsb25lKCkKIHsKLSAgICBpZiAobV9o
YXNNYW5hZ2VkVGV4dHVyZSB8fCAhbV90ZXh0dXJlSUQpIHsKKyAgICBpZiAobV9oYXNNYW5hZ2Vk
VGV4dHVyZSkgewogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9Ci0gICAgYXV0byB0ZXh0dXJlID0gQml0bWFwVGV4dHVyZUdMOjpjcmVhdGUo
VGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOjpnZXQoKSwgbV9pbnRlcm5hbEZvcm1hdCk7
Ci0gICAgdGV4dHVyZS0+cmVzZXQobV9zaXplKTsKLSAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0
dXJlR0wmPih0ZXh0dXJlLmdldCgpKS5jb3B5RnJvbUV4dGVybmFsVGV4dHVyZShtX3RleHR1cmVJ
RCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVyZSksIG1fZXh0cmFGbGFncyk7CisKKyAgICByZXR1cm4g
V1RGOjpzd2l0Y2hPbihtX3ZhcmlhbnQsCisgICAgICAgIFsmXShjb25zdCBSR0JUZXh0dXJlJiB0
ZXh0dXJlKQorICAgICAgICB7CisgICAgICAgICAgICBhdXRvIGNsb25lZFRleHR1cmUgPSBCaXRt
YXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM6OmdldCgp
LCBtX2ludGVybmFsRm9ybWF0KTsKKyAgICAgICAgICAgIGNsb25lZFRleHR1cmUtPnJlc2V0KG1f
c2l6ZSk7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wmPihjbG9uZWRU
ZXh0dXJlLmdldCgpKS5jb3B5RnJvbUV4dGVybmFsVGV4dHVyZSh0ZXh0dXJlLmlkKTsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyPihXVEZNb3ZlKGNsb25lZFRleHR1cmUpLCBtX2V4dHJhRmxhZ3MpOworICAgICAgICB9
LAorICAgICAgICBbXShjb25zdCBZVVZUZXh0dXJlJikKKyAgICAgICAgeworICAgICAgICAgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9
KTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6cGFpbnRUb1Rl
eHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4
LCBmbG9hdCBvcGFjaXR5KQpAQCAtODYsOCArMTA1LDMzIEBAIHZvaWQgVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRl
eHR1CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQobV90ZXh0dXJlSUQpOwot
ICAgIHRleG1hcEdMLmRyYXdUZXh0dXJlKG1fdGV4dHVyZUlELCBtX2V4dHJhRmxhZ3MsIG1fc2l6
ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsKKyAgICBXVEY6OnN3aXRj
aE9uKG1fdmFyaWFudCwKKyAgICAgICAgWyZdKGNvbnN0IFJHQlRleHR1cmUmIHRleHR1cmUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCh0ZXh0dXJlLmlkKTsKKyAgICAgICAgICAgIHRl
eG1hcEdMLmRyYXdUZXh0dXJlKHRleHR1cmUuaWQsIG1fZXh0cmFGbGFncywgbV9zaXplLCB0YXJn
ZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkpOworICAgICAgICB9LAorICAgICAgICBb
Jl0oY29uc3QgWVVWVGV4dHVyZSYgdGV4dHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAgc3dp
dGNoICh0ZXh0dXJlLm5QbGFuZXMpIHsKKyAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAg
ICAgICBBU1NFUlQodGV4dHVyZS55dXZQbGFuZVswXSA9PSB0ZXh0dXJlLnl1dlBsYW5lWzFdICYm
IHRleHR1cmUueXV2UGxhbmVbMV0gPT0gdGV4dHVyZS55dXZQbGFuZVsyXSk7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKHRleHR1cmUueXV2UE9mZnNldFswXSA9PSAyICYmIHRleHR1cmUueXV2UE9m
ZnNldFsxXSA9PSAxICYmIHRleHR1cmUueXV2UE9mZnNldFsyXSA9PSAwKTsKKyAgICAgICAgICAg
ICAgICB0ZXhtYXBHTC5kcmF3VGV4dHVyZVBhY2tlZFlVVih0ZXh0dXJlLnBsYW5lc1t0ZXh0dXJl
Lnl1dlBsYW5lWzBdXSwKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS55dXZUb1JnYk1hdHJp
eCwgbV9leHRyYUZsYWdzLCBtX3NpemUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3Bh
Y2l0eSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6CisgICAg
ICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUueXV2UE9mZnNldFswXSA9PSAwKTsKKyAgICAgICAg
ICAgICAgICB0ZXhtYXBHTC5kcmF3VGV4dHVyZVNlbWlQbGFuYXJZVVYoc3RkOjphcnJheTxHTHVp
bnQsIDI+IHsgdGV4dHVyZS5wbGFuZXNbdGV4dHVyZS55dXZQbGFuZVswXV0sIHRleHR1cmUucGxh
bmVzW3RleHR1cmUueXV2UGxhbmVbMV1dIH0sICEhdGV4dHVyZS55dXZQT2Zmc2V0WzFdLAorICAg
ICAgICAgICAgICAgICAgICB0ZXh0dXJlLnl1dlRvUmdiTWF0cml4LCBtX2V4dHJhRmxhZ3MsIG1f
c2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICBBU1NFUlQo
dGV4dHVyZS55dXZQT2Zmc2V0WzBdID09IDAgJiYgdGV4dHVyZS55dXZQT2Zmc2V0WzFdID09IDAg
JiYgdGV4dHVyZS55dXZQT2Zmc2V0WzJdID09IDApOworICAgICAgICAgICAgICAgIHRleG1hcEdM
LmRyYXdUZXh0dXJlUGxhbmFyWVVWKHN0ZDo6YXJyYXk8R0x1aW50LCAzPiB7IHRleHR1cmUucGxh
bmVzW3RleHR1cmUueXV2UGxhbmVbMF1dLCB0ZXh0dXJlLnBsYW5lc1t0ZXh0dXJlLnl1dlBsYW5l
WzFdXSwgdGV4dHVyZS5wbGFuZXNbdGV4dHVyZS55dXZQbGFuZVsyXV0gfSwKKyAgICAgICAgICAg
ICAgICAgICAgdGV4dHVyZS55dXZUb1JnYk1hdHJpeCwgbV9leHRyYUZsYWdzLCBtX3NpemUsIHRh
cmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oCmlu
ZGV4IGQxMDBlMjRhZDEzMTY0OTc5NGI5MDY5MmU2NjEyYTM3YWI3YzlhZWIuLjI2OGI4ODFhMjQ2
YTI0ZDZjODU3YWVlOTljYTM2NmY3ZWI1ZTdiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
VGV4dHVyZU1hcHBlckdMSGVhZGVycy5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KKyNpbmNsdWRlIDx3dGYv
VmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDkgKzQwLDI0IEBAIGNs
YXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyIDogcHVibGljIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCgpOwogcHVibGlj
OgogICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKFJlZlB0cjxCaXRtYXBUZXh0
dXJlPiYmLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzID0gMCk7CisKICAgICBUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcihHTHVpbnQgdGV4dHVyZUlELCBjb25zdCBJbnRTaXplJiwgVGV4
dHVyZU1hcHBlckdMOjpGbGFncywgR0xpbnQgaW50ZXJuYWxGb3JtYXQpOwogCi0gICAgdmlydHVh
bCB+VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAgc3Ry
dWN0IFJHQlRleHR1cmUgeworICAgICAgICBHTHVpbnQgaWQ7CisgICAgfTsKKyAgICBzdHJ1Y3Qg
WVVWVGV4dHVyZSB7CisgICAgICAgIGludCBuUGxhbmVzOworICAgICAgICBzdGQ6OmFycmF5PEdM
dWludCwgMz4gcGxhbmVzOworICAgICAgICBzdGQ6OmFycmF5PGludCwgMz4geXV2UGxhbmU7Cisg
ICAgICAgIHN0ZDo6YXJyYXk8aW50LCAzPiB5dXZQT2Zmc2V0OworICAgICAgICBzdGQ6OmFycmF5
PEdMZmxvYXQsIDk+IHl1dlRvUmdiTWF0cml4OworICAgIH07CisgICAgdXNpbmcgVGV4dHVyZVZh
cmlhbnQgPSBXVEY6OlZhcmlhbnQ8UkdCVGV4dHVyZSwgWVVWVGV4dHVyZT47CisKKyAgICBUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihUZXh0dXJlVmFyaWFudCYmLCBjb25zdCBJbnRT
aXplJiwgVGV4dHVyZU1hcHBlckdMOjpGbGFncywgR0xpbnQgaW50ZXJuYWxGb3JtYXQpOworCisg
ICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoKTsKIAogICAgIHZv
aWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpLCBmbG9hdCBvcGFjaXR5ID0gMS4wKSBmaW5hbDsKIApAQCAtNzgsNiArOTQs
NyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBtX3RleHR1cmU7CiAgICAg
TW9ub3RvbmljVGltZSBtX3RpbWVMYXN0VXNlZDsKIAorICAgIFRleHR1cmVWYXJpYW50IG1fdmFy
aWFudDsKICAgICBHTHVpbnQgbV90ZXh0dXJlSUQ7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAg
R0xpbnQgbV9pbnRlcm5hbEZvcm1hdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW0uY3BwCmluZGV4IGViODc4OGQ0ZmY1ZTg4OWZiYWY0NmM2MDE2OTk1MzAwYTc4ZDcxMGQu
LjVlMDI4NDdlNGFmZWIwZDk0ZTA3NjE0OTMyNTFmYjVlMmNhN2Q2ZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVy
UHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcApAQCAtMjA3LDkgKzIwNywxMyBAQCBzdGF0
aWMgY29uc3QgY2hhciogZnJhZ21lbnRUZW1wbGF0ZUdFMzIwVmFycyA9CiBzdGF0aWMgY29uc3Qg
Y2hhciogZnJhZ21lbnRUZW1wbGF0ZUNvbW1vbiA9CiAgICAgU1RSSU5HSUZZKAogICAgICAgICB1
bmlmb3JtIFNhbXBsZXJUeXBlIHNfc2FtcGxlcjsKKyAgICAgICAgdW5pZm9ybSBTYW1wbGVyVHlw
ZSBzX3NhbXBsZXJZOworICAgICAgICB1bmlmb3JtIFNhbXBsZXJUeXBlIHNfc2FtcGxlclU7Cisg
ICAgICAgIHVuaWZvcm0gU2FtcGxlclR5cGUgc19zYW1wbGVyVjsKICAgICAgICAgdW5pZm9ybSBz
YW1wbGVyMkQgc19jb250ZW50VGV4dHVyZTsKICAgICAgICAgdW5pZm9ybSBmbG9hdCB1X29wYWNp
dHk7CiAgICAgICAgIHVuaWZvcm0gZmxvYXQgdV9maWx0ZXJBbW91bnQ7CisgICAgICAgIHVuaWZv
cm0gbWF0MyB1X3l1dlRvUmdiOwogICAgICAgICB1bmlmb3JtIHZlYzIgdV9ibHVyUmFkaXVzOwog
ICAgICAgICB1bmlmb3JtIHZlYzIgdV9zaGFkb3dPZmZzZXQ7CiAgICAgICAgIHVuaWZvcm0gdmVj
NCB1X2NvbG9yOwpAQCAtMjMxLDcgKzIzNSw0MSBAQCBzdGF0aWMgY29uc3QgY2hhciogZnJhZ21l
bnRUZW1wbGF0ZUNvbW1vbiA9CiAKICAgICAgICAgdm9pZCBhcHBseU1hbnVhbFJlcGVhdChpbm91
dCB2ZWMyIHBvcykgeyBwb3MgPSBmcmFjdChwb3MpOyB9CiAKLSAgICAgICAgdm9pZCBhcHBseVRl
eHR1cmUoaW5vdXQgdmVjNCBjb2xvciwgdmVjMiB0ZXhDb29yZCkgeyBjb2xvciA9IHVfdGV4dHVy
ZUNvbG9yU3BhY2VNYXRyaXggKiBTYW1wbGVyRnVuY3Rpb24oc19zYW1wbGVyLCB0ZXhDb29yZCk7
IH0KKyAgICAgICAgdm9pZCBhcHBseVRleHR1cmVSR0IoaW5vdXQgdmVjNCBjb2xvciwgdmVjMiB0
ZXhDb29yZCkgeyBjb2xvciA9IHVfdGV4dHVyZUNvbG9yU3BhY2VNYXRyaXggKiBTYW1wbGVyRnVu
Y3Rpb24oc19zYW1wbGVyLCB0ZXhDb29yZCk7IH0KKworICAgICAgICB2ZWMzIHl1dlRvUmdiKGZs
b2F0IHksIGZsb2F0IHUsIGZsb2F0IHYpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIHl1diBp
cyBlaXRoZXIgYnQ2MDEgb3IgYnQ3MDkgc28gdGhlIG9mZnNldCBpcyB0aGUgc2FtZQorICAgICAg
ICAgICAgdmVjMyB5dXYgPSB2ZWMzKHkgLSAwLjA2MjUsIHUgLSAwLjUsIHYgLSAwLjUpOworICAg
ICAgICAgICAgcmV0dXJuIHl1diAqIHVfeXV2VG9SZ2I7CisgICAgICAgIH0KKyAgICAgICAgdm9p
ZCBhcHBseVRleHR1cmVZVVYoaW5vdXQgdmVjNCBjb2xvciwgdmVjMiB0ZXhDb29yZCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZmxvYXQgeSA9IFNhbXBsZXJGdW5jdGlvbihzX3NhbXBsZXJZLCB0
ZXhDb29yZCkucjsKKyAgICAgICAgICAgIGZsb2F0IHUgPSBTYW1wbGVyRnVuY3Rpb24oc19zYW1w
bGVyVSwgdGV4Q29vcmQpLnI7CisgICAgICAgICAgICBmbG9hdCB2ID0gU2FtcGxlckZ1bmN0aW9u
KHNfc2FtcGxlclYsIHRleENvb3JkKS5yOworICAgICAgICAgICAgdmVjNCBkYXRhID0gdmVjNCh5
dXZUb1JnYih5LCB1LCB2KSwgMS4wKTsKKyAgICAgICAgICAgIGNvbG9yID0gdV90ZXh0dXJlQ29s
b3JTcGFjZU1hdHJpeCAqIGRhdGE7CisgICAgICAgIH0KKyAgICAgICAgdm9pZCBhcHBseVRleHR1
cmVOVjEyKGlub3V0IHZlYzQgY29sb3IsIHZlYzIgdGV4Q29vcmQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGZsb2F0IHkgPSBTYW1wbGVyRnVuY3Rpb24oc19zYW1wbGVyWSwgdGV4Q29vcmQpLnI7
CisgICAgICAgICAgICB2ZWMyIHV2ID0gU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlclUsIHRleENv
b3JkKS5yZzsKKyAgICAgICAgICAgIHZlYzQgZGF0YSA9IHZlYzQoeXV2VG9SZ2IoeSwgdXYueCwg
dXYueSksIDEuMCk7CisgICAgICAgICAgICBjb2xvciA9IHVfdGV4dHVyZUNvbG9yU3BhY2VNYXRy
aXggKiBkYXRhOworICAgICAgICB9CisgICAgICAgIHZvaWQgYXBwbHlUZXh0dXJlTlYyMShpbm91
dCB2ZWM0IGNvbG9yLCB2ZWMyIHRleENvb3JkKQorICAgICAgICB7CisgICAgICAgICAgICBmbG9h
dCB5ID0gU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlclksIHRleENvb3JkKS5yOworICAgICAgICAg
ICAgdmVjMiB1diA9IFNhbXBsZXJGdW5jdGlvbihzX3NhbXBsZXJVLCB0ZXhDb29yZCkuZ3I7Cisg
ICAgICAgICAgICB2ZWM0IGRhdGEgPSB2ZWM0KHl1dlRvUmdiKHksIHV2LngsIHV2LnkpLCAxLjAp
OworICAgICAgICAgICAgY29sb3IgPSB1X3RleHR1cmVDb2xvclNwYWNlTWF0cml4ICogZGF0YTsK
KyAgICAgICAgfQorICAgICAgICB2b2lkIGFwcGx5VGV4dHVyZVBhY2tlZFlVVihpbm91dCB2ZWM0
IGNvbG9yLCB2ZWMyIHRleENvb3JkKQorICAgICAgICB7CisgICAgICAgICAgICB2ZWM0IGRhdGEg
PSBTYW1wbGVyRnVuY3Rpb24oc19zYW1wbGVyLCB0ZXhDb29yZCk7CisgICAgICAgICAgICBjb2xv
ciA9IHVfdGV4dHVyZUNvbG9yU3BhY2VNYXRyaXggKiB2ZWM0KHl1dlRvUmdiKGRhdGEuYiwgZGF0
YS5nLCBkYXRhLnIpLCBkYXRhLmEpOworICAgICAgICB9CiAgICAgICAgIHZvaWQgYXBwbHlPcGFj
aXR5KGlub3V0IHZlYzQgY29sb3IpIHsgY29sb3IgKj0gdV9vcGFjaXR5OyB9CiAgICAgICAgIHZv
aWQgYXBwbHlBbnRpYWxpYXNpbmcoaW5vdXQgdmVjNCBjb2xvcikgeyBjb2xvciAqPSBhbnRpYWxp
YXMoKTsgfQogCkBAIC0zNDMsNyArMzgxLDExIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBmcmFnbWVu
dFRlbXBsYXRlQ29tbW9uID0KICAgICAgICAgICAgIHZlYzQgY29sb3IgPSB2ZWM0KDEuLCAxLiwg
MS4sIDEuKTsKICAgICAgICAgICAgIHZlYzIgdGV4Q29vcmQgPSB0cmFuc2Zvcm1UZXhDb29yZCgp
OwogICAgICAgICAgICAgYXBwbHlNYW51YWxSZXBlYXRJZk5lZWRlZCh0ZXhDb29yZCk7Ci0gICAg
ICAgICAgICBhcHBseVRleHR1cmVJZk5lZWRlZChjb2xvciwgdGV4Q29vcmQpOworICAgICAgICAg
ICAgYXBwbHlUZXh0dXJlUkdCSWZOZWVkZWQoY29sb3IsIHRleENvb3JkKTsKKyAgICAgICAgICAg
IGFwcGx5VGV4dHVyZVlVVklmTmVlZGVkKGNvbG9yLCB0ZXhDb29yZCk7CisgICAgICAgICAgICBh
cHBseVRleHR1cmVOVjEySWZOZWVkZWQoY29sb3IsIHRleENvb3JkKTsKKyAgICAgICAgICAgIGFw
cGx5VGV4dHVyZU5WMjFJZk5lZWRlZChjb2xvciwgdGV4Q29vcmQpOworICAgICAgICAgICAgYXBw
bHlUZXh0dXJlUGFja2VkWVVWSWZOZWVkZWQoY29sb3IsIHRleENvb3JkKTsKICAgICAgICAgICAg
IGFwcGx5U29saWRDb2xvcklmTmVlZGVkKGNvbG9yKTsKICAgICAgICAgICAgIGFwcGx5QW50aWFs
aWFzaW5nSWZOZWVkZWQoY29sb3IpOwogICAgICAgICAgICAgYXBwbHlPcGFjaXR5SWZOZWVkZWQo
Y29sb3IpOwpAQCAtMzY5LDcgKzQxMSwxMSBAQCBSZWY8VGV4dHVyZU1hcHBlclNoYWRlclByb2dy
YW0+IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpjcmVhdGUoVGV4dHVyZU1hcHBlcgogICAg
ICAgICAob3B0aW9ucyAmIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpBcHBsaWVyKSA/IEVO
QUJMRV9BUFBMSUVSKEFwcGxpZXIpIDogRElTQUJMRV9BUFBMSUVSKEFwcGxpZXIpKQogCiAgICAg
U3RyaW5nQnVpbGRlciBvcHRpb25zQXBwbGllckJ1aWxkZXI7Ci0gICAgU0VUX0FQUExJRVJfRlJP
TV9PUFRJT05TKFRleHR1cmUpOworICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhUZXh0dXJl
UkdCKTsKKyAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoVGV4dHVyZVlVVik7CisgICAgU0VU
X0FQUExJRVJfRlJPTV9PUFRJT05TKFRleHR1cmVOVjEyKTsKKyAgICBTRVRfQVBQTElFUl9GUk9N
X09QVElPTlMoVGV4dHVyZU5WMjEpOworICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhUZXh0
dXJlUGFja2VkWVVWKTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoUmVjdCk7CiAgICAg
U0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKFNvbGlkQ29sb3IpOwogICAgIFNFVF9BUFBMSUVSX0ZS
T01fT1BUSU9OUyhPcGFjaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
LmgKaW5kZXggNGEzNDIwYzA2MDJjYjRkNjBhNDk4Yjk0NzVhM2YzOTdkMmQ3MWYxOS4uYmE1YzAw
MTE3NTg0NzcwNjQ0YmZkZjQ3N2I1YzE3YTFjZmQ4ZjY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0gOiBwdWJsaWMgUmVmQ291bnRlZDxU
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gewogcHVibGljOgogICAgIGVudW0gT3B0aW9uIHsK
LSAgICAgICAgVGV4dHVyZSAgICAgICAgICA9IDFMIDw8IDAsCisgICAgICAgIFRleHR1cmVSR0Ig
ICAgICAgPSAxTCA8PCAwLAogICAgICAgICBSZWN0ICAgICAgICAgICAgID0gMUwgPDwgMSwKICAg
ICAgICAgU29saWRDb2xvciAgICAgICA9IDFMIDw8IDIsCiAgICAgICAgIE9wYWNpdHkgICAgICAg
ICAgPSAxTCA8PCAzLApAQCAtNjEsNyArNjEsMTEgQEAgcHVibGljOgogICAgICAgICBCbHVyRmls
dGVyICAgICAgID0gMUwgPDwgMTQsCiAgICAgICAgIEFscGhhQmx1ciAgICAgICAgPSAxTCA8PCAx
NSwKICAgICAgICAgQ29udGVudFRleHR1cmUgICA9IDFMIDw8IDE2LAotICAgICAgICBNYW51YWxS
ZXBlYXQgICAgID0gMUwgPDwgMTcKKyAgICAgICAgTWFudWFsUmVwZWF0ICAgICA9IDFMIDw8IDE3
LAorICAgICAgICBUZXh0dXJlWVVWICAgICAgID0gMUwgPDwgMTgsCisgICAgICAgIFRleHR1cmVO
VjEyICAgICAgPSAxTCA8PCAxOSwKKyAgICAgICAgVGV4dHVyZU5WMjEgICAgICA9IDFMIDw8IDIw
LAorICAgICAgICBUZXh0dXJlUGFja2VkWVVWID0gMUwgPDwgMjEsCiAgICAgfTsKIAogICAgIHR5
cGVkZWYgdW5zaWduZWQgT3B0aW9uczsKQEAgLTgwLDcgKzg0LDExIEBAIHB1YmxpYzoKICAgICBU
RVhNQVBfREVDTEFSRV9VTklGT1JNKG9wYWNpdHkpCiAgICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9S
TShjb2xvcikKICAgICBURVhNQVBfREVDTEFSRV9VTklGT1JNKGV4cGFuZGVkUXVhZEVkZ2VzSW5T
Y3JlZW5TcGFjZSkKKyAgICBURVhNQVBfREVDTEFSRV9VTklGT1JNKHl1dlRvUmdiKQogICAgIFRF
WE1BUF9ERUNMQVJFX1NBTVBMRVIoc2FtcGxlcikKKyAgICBURVhNQVBfREVDTEFSRV9TQU1QTEVS
KHNhbXBsZXJZKQorICAgIFRFWE1BUF9ERUNMQVJFX1NBTVBMRVIoc2FtcGxlclUpCisgICAgVEVY
TUFQX0RFQ0xBUkVfU0FNUExFUihzYW1wbGVyVikKICAgICBURVhNQVBfREVDTEFSRV9TQU1QTEVS
KG1hc2spCiAKICAgICBURVhNQVBfREVDTEFSRV9VTklGT1JNKGZpbHRlckFtb3VudCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376496</attachid>
            <date>2019-08-16 06:52:31 -0700</date>
            <delta_ts>2019-08-20 01:34:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132869-20190816145229.patch</filename>
            <type>text/plain</type>
            <size>44170</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4NzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY0ZmYzODZkMjExYTFh
Yjk3OTNlZDlkNGQxNjY4MzFkZWFjMzNjNS4uY2U1MGU5NDMzMGQwOWQ0YWY0OTQxYWZiYTYyZTRj
YjU5YTA4MjFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE5LTA4LTE2ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbVGV4bWFwXVtHU3Ry
ZWFtZXJdIEFkZCBzdXBwb3J0IHRvIHVwbG9hZCBtb3JlIGNvbG9yIGZvcm1hdHMgaW50byB0aGUg
dGV4dHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTMyODY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U3VwcG9ydCBub24taW50ZXJsZWF2ZWQgWVVWIGNvbG9yIGZvciBnc3RyZWFtZXItZ2wKKworICAg
ICAgICBUaGlzIGFkZHMgZGlyZWN0IHN1cHBvcnQgZm9yIHJlbmRlcmluZyBJNDIwLCBJNDQ0LCBZ
VjEyLCBZVjIxLCBZNDJCLAorICAgICAgICBOVjEyLCBOVjIxIGFuZCBWVVlBIGNvbG9yIGZvcm1h
dHMgdXNpbmcgR0xHTCBzaGFkZXJzIHdoZW4gdXNpbmcKKyAgICAgICAgZ3N0cmVhbWVyLWdsIGZv
ciB2aWRlbyByZW5kZXJpbmcuIFRoaXMgYXZvaWRzIGEgc3VyZmFjZSBjb3B5IG9uIHRoZSBHUFUK
KyAgICAgICAgaW4gdGhvc2UgY2FzZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBub3QgY2hh
bmdpbmcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3N0VmlkZW9GcmFtZUhvbGRlcjo6R3N0VmlkZW9GcmFt
ZUhvbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpHc3RWaWRlb0ZyYW1lSG9sZGVyOjpTeW5jV2Fp
dENQVSk6CisgICAgICAgIChXZWJDb3JlOjpHc3RWaWRlb0ZyYW1lSG9sZGVyOjpoYXNNYXBwZWRU
ZXh0dXJlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHc3RWaWRlb0ZyYW1lSG9sZGVyOjp2
aWRlb0ZyYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNyZWF0ZUdMQXBwU2luayk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjcmVhdGVWaWRl
b1NpbmtHTCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVh
bWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdM
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wdGlvbnNGb3JGaWx0ZXJUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6cHJlcGFyZVRyYW5zZm9ybWF0aW9uTWF0cml4V2l0aEZsYWdzKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVQbGFuYXJZVVYpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVNlbWlQbGFuYXJZVVYpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVBhY2tlZFlVVik6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3Jh
bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcjo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6On5UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW06OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmg6CisKIDIwMTktMDgtMTUgIFRoaWJhdWx0IFNhdW5pZXIg
IDx0c2F1bmllckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdW1dlYlJUQ106IG9w
ZW5oMjY0IGVuY29kZXIgYml0cmF0ZSBpcyBpbiBiaXRzIHBlciBzZWNvbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNGE5ZmRlYzNlYzU5
MTJjZTI1YjFlNmIyNWI5MTQ0ZmE4ZjQwYzdkMC4uZWFlYmUzMGI1MGZiYmE1ZTZlZWRiZjdiYmRk
NWU4ZWZkMzU4MTM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKQEAgLTI0MzUsNiArMjQzNSw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5QmluKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZWxlbWVudE5hbWUoZ3N0X2VsZW1lbnRfZ2V0X25h
bWUoZWxlbWVudCkpOwogICAgICAgICBpZiAoZ19zdHJfaGFzX3ByZWZpeChlbGVtZW50TmFtZS5n
ZXQoKSwgInY0bDIiKSkKICAgICAgICAgICAgIHBsYXllci0+bV92aWRlb0RlY29kZXJQbGF0Zm9y
bSA9IFdlYktpdEdzdFZpZGVvRGVjb2RlclBsYXRmb3JtOjpWaWRlbzRMaW51eDsKKyAgICAgICAg
ZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZpeChlbGVtZW50TmFtZS5nZXQoKSwgImlteHZwdWRlY29k
ZXIiKSkKKyAgICAgICAgICAgIHBsYXllci0+bV92aWRlb0RlY29kZXJQbGF0Zm9ybSA9IFdlYktp
dEdzdFZpZGVvRGVjb2RlclBsYXRmb3JtOjpJbXhWUFU7CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpCiAgICAgICAgIHBsYXllci0+dXBkYXRlVGV4dHVyZU1hcHBlckZsYWdzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5k
ZXggYzU3OGVlZTZkNTVkZDRiNDMwN2NkNDJiYjAwY2NmNDc2Mjk3YmIzMy4uNWE2M2M2NDM1ZDA4
OTkzM2M0OGViMDMyNzFmYjU2YWVjYjI5Y2RlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtNTUsNiArNTUsNyBAQAogCiAj
aWYgVVNFKEdTVFJFQU1FUl9HTCkKICNkZWZpbmUgVEVYVFVSRV9DT1BJRVJfQ09MT1JfQ09OVkVS
VF9GTEFHIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6Q29sb3JDb252ZXJzaW9uOjpOb0Nv
bnZlcnQKKyNkZWZpbmUgR1NUX0dMX0NBUFNfRk9STUFUICJ7IFJHQngsIFJHQkEsIEk0MjAsIFk0
NDQsIFlWMTIsIFk0MUIsIFk0MkIsIE5WMTIsIE5WMjEsIFZVWUEgfSIKIAogI2luY2x1ZGUgPGdz
dC9hcHAvZ3N0YXBwc2luay5oPgogCkBAIC0xNDUsOCArMTQ2LDEwIEBAIHB1YmxpYzoKIAogICAg
ICAgICBpZiAoZ3N0R0xFbmFibGVkKSB7CiAgICAgICAgICAgICBtX2lzTWFwcGVkID0gZ3N0X3Zp
ZGVvX2ZyYW1lX21hcCgmbV92aWRlb0ZyYW1lLCAmdmlkZW9JbmZvLCBtX2J1ZmZlciwgc3RhdGlj
X2Nhc3Q8R3N0TWFwRmxhZ3M+KEdTVF9NQVBfUkVBRCB8IEdTVF9NQVBfR0wpKTsKLSAgICAgICAg
ICAgIGlmIChtX2lzTWFwcGVkKQorICAgICAgICAgICAgaWYgKG1faXNNYXBwZWQpIHsKICAgICAg
ICAgICAgICAgICBtX3RleHR1cmVJRCA9ICpyZWludGVycHJldF9jYXN0PEdMdWludCo+KG1fdmlk
ZW9GcmFtZS5kYXRhWzBdKTsKKyAgICAgICAgICAgICAgICBtX2hhc01hcHBlZFRleHR1cmVzID0g
dHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAjZWxzZQogICAgICAgICBVTlVT
RURfUEFSQU0oZmxhZ3MpOwpAQCAtMTcxLDEwICsxNzQsMjIgQEAgcHVibGljOgogICAgICAgICBn
c3RfdmlkZW9fZnJhbWVfdW5tYXAoJm1fdmlkZW9GcmFtZSk7CiAgICAgfQogCisgICAgdmlydHVh
bCB2b2lkIFN5bmNXYWl0Q1BVKCkKKyAgICB7CisgICAgICAgIEdzdEdMU3luY01ldGEqIG1ldGEg
PSBnc3RfYnVmZmVyX2dldF9nbF9zeW5jX21ldGEobV9idWZmZXIpOworICAgICAgICBpZiAobWV0
YSkgeworICAgICAgICAgICAgR3N0TWVtb3J5KiBtZW0gPSBnc3RfYnVmZmVyX3BlZWtfbWVtb3J5
KG1fYnVmZmVyLCAwKTsKKyAgICAgICAgICAgIEdzdEdMQ29udGV4dCogY29udGV4dCA9ICgoR3N0
R0xCYXNlTWVtb3J5KiltZW0pLT5jb250ZXh0OworICAgICAgICAgICAgZ3N0X2dsX3N5bmNfbWV0
YV93YWl0X2NwdShtZXRhLCBjb250ZXh0KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGNvbnN0
IEludFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBib29sIGhhc0Fs
cGhhQ2hhbm5lbCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWxwaGFDaGFubmVsOyB9CiAgICAgVGV4
dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KICAg
ICBHTHVpbnQgdGV4dHVyZUlEKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSUQ7IH0KKyAgICBi
b29sIGhhc01hcHBlZFRleHR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNYXBwZWRUZXh0dXJl
czsgfQorICAgIGNvbnN0IEdzdFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUoKSBjb25zdCB7IHJldHVy
biBtX3ZpZGVvRnJhbWU7IH0KIAogICAgIHZvaWQgdXBkYXRlVGV4dHVyZShCaXRtYXBUZXh0dXJl
R0wmIHRleHR1cmUpCiAgICAgewpAQCAtMjA5LDYgKzIyNCw3IEBAIHByaXZhdGU6CiAgICAgVGV4
dHVyZU1hcHBlckdMOjpGbGFncyBtX2ZsYWdzIHsgfTsKICAgICBHTHVpbnQgbV90ZXh0dXJlSUQg
eyAwIH07CiAgICAgYm9vbCBtX2lzTWFwcGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzTWFw
cGVkVGV4dHVyZXMgeyBmYWxzZSB9OwogfTsKICNlbmRpZgogCkBAIC03MTIsMTAgKzcyOCw2MCBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21w
b3NpdG9yKCkKIAogICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xk
ZXI+IGZyYW1lSG9sZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPiht
X3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJlTWFwcGVyRmxhZ3MsICFtX3VzaW5nRmFsbGJhY2tWaWRl
b1NpbmspOwogCi0gICAgICAgICAgICBHTHVpbnQgdGV4dHVyZUlEID0gZnJhbWVIb2xkZXItPnRl
eHR1cmVJRCgpOwotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1ZmZlcjsKLSAgICAgICAgICAgIGlmICh0ZXh0dXJlSUQp
IHsKLSAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KHRleHR1cmVJRCwgZnJhbWVIb2xkZXItPnNpemUo
KSwgZnJhbWVIb2xkZXItPmZsYWdzKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKKyAgICAg
ICAgICAgIHVzaW5nIEJ1ZmZlciA9IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOwor
ICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJ1ZmZlcj4gbGF5ZXJCdWZmZXI7CisgICAgICAg
ICAgICBpZiAoZnJhbWVIb2xkZXItPmhhc01hcHBlZFRleHR1cmVzKCkpIHsKKyAgICAgICAgICAg
ICAgICBhdXRvJiB2aWRlb0ZyYW1lID0gZnJhbWVIb2xkZXItPnZpZGVvRnJhbWUoKTsKKyAgICAg
ICAgICAgICAgICBbJl0geworICAgICAgICAgICAgICAgICAgICBpZiAobV92aWRlb0RlY29kZXJQ
bGF0Zm9ybSA9PSBXZWJLaXRHc3RWaWRlb0RlY29kZXJQbGF0Zm9ybTo6SW14VlBVCisgICAgICAg
ICAgICAgICAgICAgICAgICB8fCAoR1NUX1ZJREVPX0lORk9fSVNfUkdCKCZ2aWRlb0ZyYW1lLmlu
Zm8pICYmIEdTVF9WSURFT19JTkZPX05fUExBTkVTKCZ2aWRlb0ZyYW1lLmluZm8pID09IDEpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
QnVmZmVyPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXI6OlRleHR1cmVWYXJp
YW50IHsgQnVmZmVyOjpSR0JUZXh0dXJlIHsgKnN0YXRpY19jYXN0PEdMdWludCo+KHZpZGVvRnJh
bWUuZGF0YVswXSkgfSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lSG9sZGVy
LT5zaXplKCksIGZyYW1lSG9sZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgICBpZiAoR1NUX1ZJREVPX0lORk9fSVNfWVVWKCZ2aWRlb0Zy
YW1lLmluZm8pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoR1NUX1ZJREVPX0lORk9f
Tl9DT01QT05FTlRTKCZ2aWRlb0ZyYW1lLmluZm8pIDwgMyB8fCBHU1RfVklERU9fSU5GT19OX1BM
QU5FUygmdmlkZW9GcmFtZS5pbmZvKSA+IDMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgblBsYW5lcyA9IEdTVF9WSURF
T19JTkZPX05fUExBTkVTKCZ2aWRlb0ZyYW1lLmluZm8pOworICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjphcnJheTxHTHVpbnQsIDM+IHBsYW5lczsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6YXJyYXk8aW50LCAzPiB5dXZQbGFuZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6YXJyYXk8aW50LCAzPiB5dXZQT2Zmc2V0OworICAgICAgICAgICAgICAgICAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBuUGxhbmVzOyArK2kpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGxhbmVzW2ldID0gKnN0YXRpY19jYXN0PEdMdWludCo+KHZpZGVvRnJhbWUuZGF0YVtpXSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl1dlBsYW5lW2ldID0gR1NUX1ZJREVPX0lORk9f
Q09NUF9QTEFORSgmdmlkZW9GcmFtZS5pbmZvLCBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB5dXZQT2Zmc2V0W2ldID0gR1NUX1ZJREVPX0lORk9fQ09NUF9QT0ZGU0VUKCZ2aWRlb0Zy
YW1lLmluZm8sIGkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OmFycmF5PEdMZmxvYXQsIDk+IHl1dlRvUmdiOworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGdzdF92aWRlb19jb2xvcmltZXRyeV9tYXRjaGVzKCZHU1RfVklERU9f
SU5GT19DT0xPUklNRVRSWSgmdmlkZW9GcmFtZS5pbmZvKSwgR1NUX1ZJREVPX0NPTE9SSU1FVFJZ
X0JUNzA5KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl1dlRvUmdiID0geworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjE2NGYsICAwLjBmLCAgICAxLjc4N2YsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMTY0ZiwgLTAuMjEzZiwgLTAuNTMxZiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4xNjRmLCAgMi4xMTJmLCAgMC4wZgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgdG8gYnQ2MDEu
IFRoaXMgaXMgdGhlIHNhbWUgYmVoYXZpb3VyIGFzIEdTdHJlYW1lcidzIGdsY29sb3Jjb252ZXJ0
IGVsZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5dXZUb1JnYiA9IHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4xNjRmLCAgMC4wZiwgICAgMS41OTZmLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjE2NGYsIC0wLjM5MWYsIC0wLjgxM2YsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMTY0ZiwgIDIuMDE4ZiwgIDAuMGYKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
QnVmZmVyPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXI6OlRleHR1cmVWYXJp
YW50IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyOjpZVVZUZXh0dXJl
IHsgblBsYW5lcywgcGxhbmVzLCB5dXZQbGFuZSwgeXV2UE9mZnNldCwgeXV2VG9SZ2IgfSB9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lSG9sZGVyLT5zaXplKCksIGZyYW1lSG9s
ZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICBpZiAoIWxheWVy
QnVmZmVyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgICAgICAgICBs
YXllckJ1ZmZlci0+c2V0VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcihXVEZNb3ZlKGZyYW1lSG9s
ZGVyKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGxheWVyQnVmZmVy
ID0gcHJveHkuZ2V0QXZhaWxhYmxlQnVmZmVyKGZyYW1lSG9sZGVyLT5zaXplKCksIEdMX0RPTlRf
Q0FSRSk7CkBAIC0xMDYyLDggKzExMjgsNyBAQCBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpjcmVhdGVWaWRlb1NpbmtHTCgpCiAgICAgR3N0RWxlbWVudCogYXBw
c2luayA9IGNyZWF0ZUdMQXBwU2luaygpOwogCiAgICAgLy8gZ2xzaW5rYmluIGlzIG5vdCB1c2Vk
IGJlY2F1c2UgaXQgaW5jbHVkZXMgZ2xjb2xvcmNvbnZlcnQgd2hpY2ggb25seSBwcm9jZXNzIFJH
QkEsCi0gICAgLy8gYnV0IGluIHRoZSBmdXR1cmUgaXQgd291bGQgYmUgcG9zc2libGUgdG8gcmVu
ZGVyIFlVViBmb3JtYXRzIHRvbzoKLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTMyODY5CisgICAgLy8gYnV0IHdlIGNhbiBkaXNwbGF5IFlVViBmb3JtYXRz
IHRvby4KIAogICAgIGlmICghYXBwc2luayB8fCAhdXBsb2FkIHx8ICFjb2xvcmNvbnZlcnQpIHsK
ICAgICAgICAgR1NUX1dBUk5JTkcoIkZhaWxlZCB0byBjcmVhdGUgR3N0R0wgZWxlbWVudHMiKTsK
QEAgLTEwODIsNyArMTE0Nyw3IEBAIEdzdEVsZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6OmNyZWF0ZVZpZGVvU2lua0dMKCkKIAogICAgIGdzdF9iaW5fYWRkX21hbnkoR1NU
X0JJTih2aWRlb1NpbmspLCB1cGxvYWQsIGNvbG9yY29udmVydCwgYXBwc2luaywgbnVsbHB0cik7
CiAKLSAgICBHUmVmUHRyPEdzdENhcHM+IGNhcHMgPSBhZG9wdEdSZWYoZ3N0X2NhcHNfbmV3X3Np
bXBsZSgidmlkZW8veC1yYXciLCAiZm9ybWF0IiwgR19UWVBFX1NUUklORywgIlJHQkEiLCBudWxs
cHRyKSk7CisgICAgR1JlZlB0cjxHc3RDYXBzPiBjYXBzID0gYWRvcHRHUmVmKGdzdF9jYXBzX2Zy
b21fc3RyaW5nKCJ2aWRlby94LXJhdywgZm9ybWF0ID0gKHN0cmluZykgIiBHU1RfR0xfQ0FQU19G
T1JNQVQpKTsKICAgICBnc3RfY2Fwc19zZXRfZmVhdHVyZXMoY2Fwcy5nZXQoKSwgMCwgZ3N0X2Nh
cHNfZmVhdHVyZXNfbmV3KEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSwgbnVsbHB0
cikpOwogICAgIGdfb2JqZWN0X3NldChhcHBzaW5rLCAiY2FwcyIsIGNhcHMuZ2V0KCksIG51bGxw
dHIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuaAppbmRleCA3YWU3ZWNlZDZlOWY2YmI2NTUzM2I3ZDg5MDMwMjM3Y2NjZGZmZTY2Li5iODFm
NzJhYzgyOTJkZjg4MDFmMWYzZjg4ZWQzMzRlNDU4MmVmMmU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKQEAgLTI5Miw2ICsyOTIsNyBA
QCBwcm90ZWN0ZWQ6CiAjaWYgVVNFKEdTVFJFQU1FUl9HTCkKICAgICBHUmVmUHRyPEdzdEdMQ29u
dGV4dD4gbV9nbENvbnRleHQ7CiAgICAgR1JlZlB0cjxHc3RHTERpc3BsYXk+IG1fZ2xEaXNwbGF5
OworCiAgICAgR1JlZlB0cjxHc3RDb250ZXh0PiBtX2dsRGlzcGxheUVsZW1lbnRDb250ZXh0Owog
ICAgIEdSZWZQdHI8R3N0Q29udGV4dD4gbV9nbEFwcEVsZW1lbnRDb250ZXh0OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+IG1fdmlkZW9UZXh0dXJlQ29w
aWVyOwpAQCAtMzA3LDcgKzMwOCw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1fd2FpdGluZ0Zv
cktleSB7IGZhbHNlIH07CiAjZW5kaWYKIAotICAgIGVudW0gY2xhc3MgV2ViS2l0R3N0VmlkZW9E
ZWNvZGVyUGxhdGZvcm0geyBWaWRlbzRMaW51eCB9OworICAgIGVudW0gY2xhc3MgV2ViS2l0R3N0
VmlkZW9EZWNvZGVyUGxhdGZvcm0geyBWaWRlbzRMaW51eCwgSW14VlBVIH07CiAgICAgT3B0aW9u
YWw8V2ViS2l0R3N0VmlkZW9EZWNvZGVyUGxhdGZvcm0+IG1fdmlkZW9EZWNvZGVyUGxhdGZvcm07
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3Bw
CmluZGV4IGZmMzM4MTgxOGQyYTI1ZWUzZGU0NjM2MzE4MDIwZDczYmY0Y2JhYTguLjUyZTE3ZWFj
NTZlN2FlNjhjODM5OTRjNzA4ZTM5Zjg3MDU4NjkwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9W
aWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIFZpZGVvVGV4
dHVyZUNvcGllckdTdHJlYW1lcjo6VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyKENvbG9yQ29u
dmVyc2lvbiBjb2xvckNvCiAgICAgQVNTRVJUKHByZXZpb3VzQ29udGV4dCk7CiAgICAgUGxhdGZv
cm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250ZXh0
KCktPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCi0gICAgbV9zaGFkZXJQcm9ncmFtID0gVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW06OmNyZWF0ZShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6
VGV4dHVyZSk7CisgICAgbV9zaGFkZXJQcm9ncmFtID0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dy
YW06OmNyZWF0ZShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVJHQik7CiAKICAg
ICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbV9mcmFtZWJ1ZmZlcik7CiAgICAgZ2xHZW5UZXh0dXJl
cygxLCAmbV9yZXN1bHRUZXh0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggOTc0Yjg1
NzhiODhhYTY0MzUwOTFlOGIwYzM4YmIyZGI3MTBlZjEwMi4uMDRiYjQ3NDg5NjJiMDdhMDBiZGEy
ZGY1NDc5NzJkODIwYTAxMTY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAgLTMxOSwyMSAr
MzE5LDIxIEBAIHN0YXRpYyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3B0aW9ucyBvcHRp
b25zRm9yRmlsdGVyVHlwZShGaWx0ZXJPcGVyYXRpb246CiB7CiAgICAgc3dpdGNoICh0eXBlKSB7
CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRToKLSAgICAgICAgcmV0dXJuIFRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW06OkdyYXlzY2FsZUZpbHRlcjsKKyAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtOjpUZXh0dXJlUkdCIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkdyYXlz
Y2FsZUZpbHRlcjsKICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6Ci0gICAgICAgIHJl
dHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZSB8IFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtOjpTZXBpYUZpbHRlcjsKKyAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtOjpUZXh0dXJlUkdCIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlNl
cGlhRmlsdGVyOwogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFURToKLSAgICAgICAg
cmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlIHwgVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW06OlNhdHVyYXRlRmlsdGVyOworICAgICAgICByZXR1cm4gVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW06OlRleHR1cmVSR0IgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bTo6U2F0dXJhdGVGaWx0ZXI7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6
Ci0gICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZSB8IFRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpIdWVSb3RhdGVGaWx0ZXI7CisgICAgICAgIHJldHVy
biBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVJHQiB8IFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtOjpIdWVSb3RhdGVGaWx0ZXI7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OklOVkVSVDoKLSAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0
dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkludmVydEZpbHRlcjsKKyAgICAgICAg
cmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlUkdCIHwgVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW06OkludmVydEZpbHRlcjsKICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6QlJJR0hUTkVTUzoKLSAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
OjpUZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkJyaWdodG5lc3NGaWx0ZXI7
CisgICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVJHQiB8
IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpCcmlnaHRuZXNzRmlsdGVyOwogICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDoKLSAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtOjpUZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkNvbnRy
YXN0RmlsdGVyOworICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRl
eHR1cmVSR0IgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6Q29udHJhc3RGaWx0ZXI7CiAg
ICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6Ci0gICAgICAgIHJldHVybiBUZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZSB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
OjpPcGFjaXR5RmlsdGVyOworICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dy
YW06OlRleHR1cmVSR0IgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3BhY2l0eUZpbHRl
cjsKICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjoKICAgICAgICAgcmV0dXJuIFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpCbHVyRmlsdGVyOwogICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpEUk9QX1NIQURPVzoKQEAgLTQ3MCw3ICs0NzAsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJH
TDo6ZHJhd1RleHR1cmUoR0x1aW50IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXpl
JiB0ZQogICAgICAgICAmJiBleHBvc2VkRWRnZXMgPT0gQWxsRWRnZXMKICAgICAgICAgJiYgIW1v
ZGVsVmlld01hdHJpeC5tYXBRdWFkKHRhcmdldFJlY3QpLmlzUmVjdGlsaW5lYXIoKTsKIAotICAg
IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnMgPSBUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZTsKKyAgICBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bTo6T3B0aW9ucyBvcHRpb25zID0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVS
R0I7CiAgICAgaWYgKHVzZVJlY3QpCiAgICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW06OlJlY3Q7CiAgICAgaWYgKG9wYWNpdHkgPCAxKQpAQCAtNTA0LDYgKzUwNCwx
NzMgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKEdMdWludCB0ZXh0dXJlLCBG
bGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGUKICAgICBkcmF3VGV4dHVyZWRRdWFkV2l0aFBy
b2dyYW0ocHJvZ3JhbS5nZXQoKSwgdGV4dHVyZSwgZmxhZ3MsIHRleHR1cmVTaXplLCB0YXJnZXRS
ZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkpOwogfQogCitzdGF0aWMgdm9pZCBwcmVwYXJl
VHJhbnNmb3JtYXRpb25NYXRyaXhXaXRoRmxhZ3MoVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhdHRl
cm5UcmFuc2Zvcm0sIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUm
IHNpemUpCit7CisgICAgaWYgKGZsYWdzICYgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRSb3RhdGVU
ZXh0dXJlOTApIHsKKyAgICAgICAgcGF0dGVyblRyYW5zZm9ybS5yb3RhdGUoLTkwKTsKKyAgICAg
ICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoLTEsIDApOworICAgIH0KKyAgICBpZiAoZmxh
Z3MgJiBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZFJvdGF0ZVRleHR1cmUxODApIHsKKyAgICAgICAg
cGF0dGVyblRyYW5zZm9ybS5yb3RhdGUoMTgwKTsKKyAgICAgICAgcGF0dGVyblRyYW5zZm9ybS50
cmFuc2xhdGUoLTEsIC0xKTsKKyAgICB9CisgICAgaWYgKGZsYWdzICYgVGV4dHVyZU1hcHBlckdM
OjpTaG91bGRSb3RhdGVUZXh0dXJlMjcwKSB7CisgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0ucm90
YXRlKC0yNzApOworICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtMSk7Cisg
ICAgfQorICAgIGlmIChmbGFncyAmIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkRmxpcFRleHR1cmUp
CisgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0uZmxpcFkoKTsKKyAgICBpZiAoZmxhZ3MgJiBUZXh0
dXJlTWFwcGVyR0w6OlNob3VsZFVzZUFSQlRleHR1cmVSZWN0KQorICAgICAgICBwYXR0ZXJuVHJh
bnNmb3JtLnNjYWxlTm9uVW5pZm9ybShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAg
IGlmIChmbGFncyAmIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkRmxpcFRleHR1cmUpCisgICAgICAg
IHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAsIC0xKTsKK30KKwordm9pZCBUZXh0dXJlTWFw
cGVyR0w6OmRyYXdUZXh0dXJlUGxhbmFyWVVWKGNvbnN0IHN0ZDo6YXJyYXk8R0x1aW50LCAzPiYg
dGV4dHVyZXMsIGNvbnN0IHN0ZDo6YXJyYXk8R0xmbG9hdCwgOT4mIHl1dlRvUmdiTWF0cml4LCBG
bGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwg
ZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKQoreworICAgIGJvb2wgdXNlUmVj
dCA9IGZsYWdzICYgU2hvdWxkVXNlQVJCVGV4dHVyZVJlY3Q7CisgICAgYm9vbCB1c2VBbnRpYWxp
YXNpbmcgPSBtX2VuYWJsZUVkZ2VEaXN0YW5jZUFudGlhbGlhc2luZworICAgICAgICAmJiBleHBv
c2VkRWRnZXMgPT0gQWxsRWRnZXMKKyAgICAgICAgJiYgIW1vZGVsVmlld01hdHJpeC5tYXBRdWFk
KHRhcmdldFJlY3QpLmlzUmVjdGlsaW5lYXIoKTsKKworICAgIFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtOjpPcHRpb25zIG9wdGlvbnMgPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4
dHVyZVlVVjsKKyAgICBpZiAodXNlUmVjdCkKKyAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbTo6UmVjdDsKKyAgICBpZiAob3BhY2l0eSA8IDEpCisgICAgICAgIG9w
dGlvbnMgfD0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9wYWNpdHk7CisgICAgaWYgKHVz
ZUFudGlhbGlhc2luZykgeworICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtOjpBbnRpYWxpYXNpbmc7CisgICAgICAgIGZsYWdzIHw9IFNob3VsZEFudGlhbGlhczsK
KyAgICB9CisgICAgaWYgKHdyYXBNb2RlKCkgPT0gUmVwZWF0V3JhcCAmJiAhbV9jb250ZXh0QXR0
cmlidXRlcy5zdXBwb3J0c05QT1RUZXh0dXJlcykKKyAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbTo6TWFudWFsUmVwZWF0OworCisgICAgUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gZmlsdGVyID0gZGF0YSgpLmZpbHRlckluZm8gPyBkYXRhKCkuZmlsdGVySW5mby0+
ZmlsdGVyOiAwOworICAgIEdMdWludCBmaWx0ZXJDb250ZW50VGV4dHVyZUlEID0gMDsKKworICAg
IGlmIChmaWx0ZXIpIHsKKyAgICAgICAgaWYgKGRhdGEoKS5maWx0ZXJJbmZvLT5jb250ZW50VGV4
dHVyZSkKKyAgICAgICAgICAgIGZpbHRlckNvbnRlbnRUZXh0dXJlSUQgPSB0b0JpdG1hcFRleHR1
cmVHTChkYXRhKCkuZmlsdGVySW5mby0+Y29udGVudFRleHR1cmUuZ2V0KCkpLT5pZCgpOworICAg
ICAgICBvcHRpb25zIHw9IG9wdGlvbnNGb3JGaWx0ZXJUeXBlKGZpbHRlci0+dHlwZSgpLCBkYXRh
KCkuZmlsdGVySW5mby0+cGFzcyk7CisgICAgICAgIGlmIChmaWx0ZXItPmFmZmVjdHNPcGFjaXR5
KCkpCisgICAgICAgICAgICBmbGFncyB8PSBTaG91bGRCbGVuZDsKKyAgICB9CisKKyAgICBpZiAo
dXNlQW50aWFsaWFzaW5nIHx8IG9wYWNpdHkgPCAxKQorICAgICAgICBmbGFncyB8PSBTaG91bGRC
bGVuZDsKKworICAgIFJlZjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gcHJvZ3JhbSA9IGRh
dGEoKS5nZXRTaGFkZXJQcm9ncmFtKG9wdGlvbnMpOworCisgICAgaWYgKGZpbHRlcikKKyAgICAg
ICAgcHJlcGFyZUZpbHRlclByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgKmZpbHRlci5nZXQoKSwgZGF0
YSgpLmZpbHRlckluZm8tPnBhc3MsIHRleHR1cmVTaXplLCBmaWx0ZXJDb250ZW50VGV4dHVyZUlE
KTsKKworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxHTHVpbnQsIEdMdWludD4gPiB0ZXh0dXJl
c0FuZFNhbXBsZXJzID0geworICAgICAgICB7IHRleHR1cmVzWzBdLCBwcm9ncmFtLT5zYW1wbGVy
WUxvY2F0aW9uKCkgfSwKKyAgICAgICAgeyB0ZXh0dXJlc1sxXSwgcHJvZ3JhbS0+c2FtcGxlclVM
b2NhdGlvbigpIH0sCisgICAgICAgIHsgdGV4dHVyZXNbMl0sIHByb2dyYW0tPnNhbXBsZXJWTG9j
YXRpb24oKSB9CisgICAgfTsKKworICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtSUQo
KSk7CisgICAgZ2xVbmlmb3JtTWF0cml4M2Z2KHByb2dyYW0tPnl1dlRvUmdiTG9jYXRpb24oKSwg
MSwgR0xfRkFMU0UsIHN0YXRpY19jYXN0PGNvbnN0IEdMZmxvYXQgKj4oJnl1dlRvUmdiTWF0cml4
WzBdKSk7CisgICAgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0KCksIHRl
eHR1cmVzQW5kU2FtcGxlcnMsIGZsYWdzLCB0ZXh0dXJlU2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxW
aWV3TWF0cml4LCBvcGFjaXR5KTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0
dXJlU2VtaVBsYW5hcllVVihjb25zdCBzdGQ6OmFycmF5PEdMdWludCwgMj4mIHRleHR1cmVzLCBi
b29sIHV2UmV2ZXJzZWQsIGNvbnN0IHN0ZDo6YXJyYXk8R0xmbG9hdCwgOT4mIHl1dlRvUmdiTWF0
cml4LCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01h
dHJpeCwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKQoreworICAgIGJvb2wg
dXNlUmVjdCA9IGZsYWdzICYgU2hvdWxkVXNlQVJCVGV4dHVyZVJlY3Q7CisgICAgYm9vbCB1c2VB
bnRpYWxpYXNpbmcgPSBtX2VuYWJsZUVkZ2VEaXN0YW5jZUFudGlhbGlhc2luZworICAgICAgICAm
JiBleHBvc2VkRWRnZXMgPT0gQWxsRWRnZXMKKyAgICAgICAgJiYgIW1vZGVsVmlld01hdHJpeC5t
YXBRdWFkKHRhcmdldFJlY3QpLmlzUmVjdGlsaW5lYXIoKTsKKworICAgIFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnMgPSB1dlJldmVyc2VkID8KKyAgICAgICAgVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVOVjIxIDogVGV4dHVyZU1hcHBlclNoYWRl
clByb2dyYW06OlRleHR1cmVOVjEyOworICAgIGlmICh1c2VSZWN0KQorICAgICAgICBvcHRpb25z
IHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpSZWN0OworICAgIGlmIChvcGFjaXR5IDwg
MSkKKyAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3BhY2l0
eTsKKyAgICBpZiAodXNlQW50aWFsaWFzaW5nKSB7CisgICAgICAgIG9wdGlvbnMgfD0gVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW06OkFudGlhbGlhc2luZzsKKyAgICAgICAgZmxhZ3MgfD0gU2hv
dWxkQW50aWFsaWFzOworICAgIH0KKyAgICBpZiAod3JhcE1vZGUoKSA9PSBSZXBlYXRXcmFwICYm
ICFtX2NvbnRleHRBdHRyaWJ1dGVzLnN1cHBvcnRzTlBPVFRleHR1cmVzKQorICAgICAgICBvcHRp
b25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpNYW51YWxSZXBlYXQ7CisKKyAgICBS
ZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBmaWx0ZXIgPSBkYXRhKCkuZmlsdGVySW5mbyA/IGRhdGEo
KS5maWx0ZXJJbmZvLT5maWx0ZXI6IDA7CisgICAgR0x1aW50IGZpbHRlckNvbnRlbnRUZXh0dXJl
SUQgPSAwOworCisgICAgaWYgKGZpbHRlcikgeworICAgICAgICBpZiAoZGF0YSgpLmZpbHRlcklu
Zm8tPmNvbnRlbnRUZXh0dXJlKQorICAgICAgICAgICAgZmlsdGVyQ29udGVudFRleHR1cmVJRCA9
IHRvQml0bWFwVGV4dHVyZUdMKGRhdGEoKS5maWx0ZXJJbmZvLT5jb250ZW50VGV4dHVyZS5nZXQo
KSktPmlkKCk7CisgICAgICAgIG9wdGlvbnMgfD0gb3B0aW9uc0ZvckZpbHRlclR5cGUoZmlsdGVy
LT50eXBlKCksIGRhdGEoKS5maWx0ZXJJbmZvLT5wYXNzKTsKKyAgICAgICAgaWYgKGZpbHRlci0+
YWZmZWN0c09wYWNpdHkoKSkKKyAgICAgICAgICAgIGZsYWdzIHw9IFNob3VsZEJsZW5kOworICAg
IH0KKworICAgIGlmICh1c2VBbnRpYWxpYXNpbmcgfHwgb3BhY2l0eSA8IDEpCisgICAgICAgIGZs
YWdzIHw9IFNob3VsZEJsZW5kOworCisgICAgUmVmPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
PiBwcm9ncmFtID0gZGF0YSgpLmdldFNoYWRlclByb2dyYW0ob3B0aW9ucyk7CisKKyAgICBpZiAo
ZmlsdGVyKQorICAgICAgICBwcmVwYXJlRmlsdGVyUHJvZ3JhbShwcm9ncmFtLmdldCgpLCAqZmls
dGVyLmdldCgpLCBkYXRhKCkuZmlsdGVySW5mby0+cGFzcywgdGV4dHVyZVNpemUsIGZpbHRlckNv
bnRlbnRUZXh0dXJlSUQpOworCisgICAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPEdMdWludCwgR0x1
aW50PiA+IHRleHR1cmVzQW5kU2FtcGxlcnMgPSB7CisgICAgICAgIHsgdGV4dHVyZXNbMF0sIHBy
b2dyYW0tPnNhbXBsZXJZTG9jYXRpb24oKSB9LAorICAgICAgICB7IHRleHR1cmVzWzFdLCBwcm9n
cmFtLT5zYW1wbGVyVUxvY2F0aW9uKCkgfQorICAgIH07CisKKyAgICBnbFVzZVByb2dyYW0ocHJv
Z3JhbS0+cHJvZ3JhbUlEKCkpOworICAgIGdsVW5pZm9ybU1hdHJpeDNmdihwcm9ncmFtLT55dXZU
b1JnYkxvY2F0aW9uKCksIDEsIEdMX0ZBTFNFLCBzdGF0aWNfY2FzdDxjb25zdCBHTGZsb2F0ICo+
KCZ5dXZUb1JnYk1hdHJpeFswXSkpOworICAgIGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShw
cm9ncmFtLmdldCgpLCB0ZXh0dXJlc0FuZFNhbXBsZXJzLCBmbGFncywgdGV4dHVyZVNpemUsIHRh
cmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7Cit9CisKK3ZvaWQgVGV4dHVyZU1h
cHBlckdMOjpkcmF3VGV4dHVyZVBhY2tlZFlVVihHTHVpbnQgdGV4dHVyZSwgY29uc3Qgc3RkOjph
cnJheTxHTGZsb2F0LCA5PiYgeXV2VG9SZ2JNYXRyaXgsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRT
aXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25l
ZCBleHBvc2VkRWRnZXMpCit7CisgICAgYm9vbCB1c2VSZWN0ID0gZmxhZ3MgJiBTaG91bGRVc2VB
UkJUZXh0dXJlUmVjdDsKKyAgICBib29sIHVzZUFudGlhbGlhc2luZyA9IG1fZW5hYmxlRWRnZURp
c3RhbmNlQW50aWFsaWFzaW5nCisgICAgICAgICYmIGV4cG9zZWRFZGdlcyA9PSBBbGxFZGdlcwor
ICAgICAgICAmJiAhbW9kZWxWaWV3TWF0cml4Lm1hcFF1YWQodGFyZ2V0UmVjdCkuaXNSZWN0aWxp
bmVhcigpOworCisgICAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9wdGlvbnMgb3B0aW9u
cyA9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlUGFja2VkWVVWOworICAgIGlm
ICh1c2VSZWN0KQorICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
OjpSZWN0OworICAgIGlmIChvcGFjaXR5IDwgMSkKKyAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3BhY2l0eTsKKyAgICBpZiAodXNlQW50aWFsaWFzaW5nKSB7
CisgICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkFudGlhbGlh
c2luZzsKKyAgICAgICAgZmxhZ3MgfD0gU2hvdWxkQW50aWFsaWFzOworICAgIH0KKyAgICBpZiAo
d3JhcE1vZGUoKSA9PSBSZXBlYXRXcmFwICYmICFtX2NvbnRleHRBdHRyaWJ1dGVzLnN1cHBvcnRz
TlBPVFRleHR1cmVzKQorICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtOjpNYW51YWxSZXBlYXQ7CisKKyAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBmaWx0ZXIg
PSBkYXRhKCkuZmlsdGVySW5mbyA/IGRhdGEoKS5maWx0ZXJJbmZvLT5maWx0ZXI6IDA7CisgICAg
R0x1aW50IGZpbHRlckNvbnRlbnRUZXh0dXJlSUQgPSAwOworCisgICAgaWYgKGZpbHRlcikgewor
ICAgICAgICBpZiAoZGF0YSgpLmZpbHRlckluZm8tPmNvbnRlbnRUZXh0dXJlKQorICAgICAgICAg
ICAgZmlsdGVyQ29udGVudFRleHR1cmVJRCA9IHRvQml0bWFwVGV4dHVyZUdMKGRhdGEoKS5maWx0
ZXJJbmZvLT5jb250ZW50VGV4dHVyZS5nZXQoKSktPmlkKCk7CisgICAgICAgIG9wdGlvbnMgfD0g
b3B0aW9uc0ZvckZpbHRlclR5cGUoZmlsdGVyLT50eXBlKCksIGRhdGEoKS5maWx0ZXJJbmZvLT5w
YXNzKTsKKyAgICAgICAgaWYgKGZpbHRlci0+YWZmZWN0c09wYWNpdHkoKSkKKyAgICAgICAgICAg
IGZsYWdzIHw9IFNob3VsZEJsZW5kOworICAgIH0KKworICAgIGlmICh1c2VBbnRpYWxpYXNpbmcg
fHwgb3BhY2l0eSA8IDEpCisgICAgICAgIGZsYWdzIHw9IFNob3VsZEJsZW5kOworCisgICAgUmVm
PFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBwcm9ncmFtID0gZGF0YSgpLmdldFNoYWRlclBy
b2dyYW0ob3B0aW9ucyk7CisKKyAgICBpZiAoZmlsdGVyKQorICAgICAgICBwcmVwYXJlRmlsdGVy
UHJvZ3JhbShwcm9ncmFtLmdldCgpLCAqZmlsdGVyLmdldCgpLCBkYXRhKCkuZmlsdGVySW5mby0+
cGFzcywgdGV4dHVyZVNpemUsIGZpbHRlckNvbnRlbnRUZXh0dXJlSUQpOworCisgICAgc3RkOjp2
ZWN0b3I8c3RkOjpwYWlyPEdMdWludCwgR0x1aW50PiA+IHRleHR1cmVzQW5kU2FtcGxlcnMgPSB7
CisgICAgICAgIHsgdGV4dHVyZSwgcHJvZ3JhbS0+c2FtcGxlckxvY2F0aW9uKCkgfQorICAgIH07
CisKKyAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbUlEKCkpOworICAgIGdsVW5pZm9y
bU1hdHJpeDNmdihwcm9ncmFtLT55dXZUb1JnYkxvY2F0aW9uKCksIDEsIEdMX0ZBTFNFLCBzdGF0
aWNfY2FzdDxjb25zdCBHTGZsb2F0ICo+KCZ5dXZUb1JnYk1hdHJpeFswXSkpOworICAgIGRyYXdU
ZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShwcm9ncmFtLmdldCgpLCB0ZXh0dXJlc0FuZFNhbXBsZXJz
LCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0
eSk7Cit9CisKIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3U29saWRDb2xvcihjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGNvbnN0IENv
bG9yJiBjb2xvciwgYm9vbCBpc0JsZW5kaW5nQWxsb3dlZCkKIHsKICAgICBGbGFncyBmbGFncyA9
IDA7CkBAIC02MDEsMzcgKzc2OCwyNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhdyhjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtbwogICAgIGds
RW5hYmxlKEdMX0JMRU5EKTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJl
ZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSYgcHJvZ3JhbSwgdWlu
dDMyX3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJp
eCwgZmxvYXQgb3BhY2l0eSkKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZWRRdWFk
V2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0mIHByb2dyYW0sIGNvbnN0IHN0
ZDo6dmVjdG9yPHN0ZDo6cGFpcjxHTHVpbnQsIEdMdWludD4gPiYgdGV4dHVyZXNBbmRTYW1wbGVy
cywgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3Bh
Y2l0eSkKIHsKICAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbS5wcm9ncmFtSUQoKSk7Ci0gICAgZ2xB
Y3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKworICAgIGJvb2wgcmVwZWF0V3JhcCA9IHdyYXBN
b2RlKCkgPT0gUmVwZWF0V3JhcCAmJiBtX2NvbnRleHRBdHRyaWJ1dGVzLnN1cHBvcnRzTlBPVFRl
eHR1cmVzOwogICAgIEdMZW51bSB0YXJnZXQgPSBmbGFncyAmIFNob3VsZFVzZUFSQlRleHR1cmVS
ZWN0ID8gR0xlbnVtKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FSQikgOiBHTGVudW0oR0xfVEVYVFVS
RV8yRCk7Ci0gICAgZ2xCaW5kVGV4dHVyZSh0YXJnZXQsIHRleHR1cmUpOwotICAgIGdsVW5pZm9y
bTFpKHByb2dyYW0uc2FtcGxlckxvY2F0aW9uKCksIDApOwotICAgIGlmICh3cmFwTW9kZSgpID09
IFJlcGVhdFdyYXAgJiYgbV9jb250ZXh0QXR0cmlidXRlcy5zdXBwb3J0c05QT1RUZXh0dXJlcykg
ewotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQ
X1MsIEdMX1JFUEVBVCk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX1dSQVBfVCwgR0xfUkVQRUFUKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgdGV4dHVyZXNBbmRTYW1wbGVycy5zaXplKCk7ICsraSkgeworICAgICAgICBhdXRvJiB0ZXh0
dXJlQW5kU2FtcGxlciA9IHRleHR1cmVzQW5kU2FtcGxlcnNbaV07CisKKyAgICAgICAgZ2xBY3Rp
dmVUZXh0dXJlKEdMX1RFWFRVUkUwICsgaSk7CisgICAgICAgIGdsQmluZFRleHR1cmUodGFyZ2V0
LCB0ZXh0dXJlQW5kU2FtcGxlci5maXJzdCk7CisgICAgICAgIGdsVW5pZm9ybTFpKHRleHR1cmVB
bmRTYW1wbGVyLnNlY29uZCwgaSk7CisKKyAgICAgICAgaWYgKHJlcGVhdFdyYXApIHsKKyAgICAg
ICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywg
R0xfUkVQRUFUKTsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX1dSQVBfVCwgR0xfUkVQRUFUKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IHBhdHRlcm5UcmFuc2Zvcm0gPSB0aGlzLT5wYXR0ZXJuVHJhbnNm
b3JtKCk7Ci0gICAgaWYgKGZsYWdzICYgU2hvdWxkUm90YXRlVGV4dHVyZTkwKSB7Ci0gICAgICAg
IHBhdHRlcm5UcmFuc2Zvcm0ucm90YXRlKC05MCk7Ci0gICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0u
dHJhbnNsYXRlKC0xLCAwKTsKLSAgICB9Ci0gICAgaWYgKGZsYWdzICYgU2hvdWxkUm90YXRlVGV4
dHVyZTE4MCkgewotICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnJvdGF0ZSgxODApOwotICAgICAg
ICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMSwgLTEpOwotICAgIH0KLSAgICBpZiAoZmxh
Z3MgJiBTaG91bGRSb3RhdGVUZXh0dXJlMjcwKSB7Ci0gICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0u
cm90YXRlKC0yNzApOwotICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtMSk7
Ci0gICAgfQotICAgIGlmIChmbGFncyAmIFNob3VsZEZsaXBUZXh0dXJlKQotICAgICAgICBwYXR0
ZXJuVHJhbnNmb3JtLmZsaXBZKCk7Ci0gICAgaWYgKGZsYWdzICYgU2hvdWxkVXNlQVJCVGV4dHVy
ZVJlY3QpCi0gICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKHNpemUud2lk
dGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgaWYgKGZsYWdzICYgU2hvdWxkRmxpcFRleHR1cmUp
Ci0gICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAsIC0xKTsKKyAgICBwcmVwYXJl
VHJhbnNmb3JtYXRpb25NYXRyaXhXaXRoRmxhZ3MocGF0dGVyblRyYW5zZm9ybSwgZmxhZ3MsIHNp
emUpOwogCiAgICAgcHJvZ3JhbS5zZXRNYXRyaXgocHJvZ3JhbS50ZXh0dXJlU3BhY2VNYXRyaXhM
b2NhdGlvbigpLCBwYXR0ZXJuVHJhbnNmb3JtKTsKICAgICBwcm9ncmFtLnNldE1hdHJpeChwcm9n
cmFtLnRleHR1cmVDb2xvclNwYWNlTWF0cml4TG9jYXRpb24oKSwgY29sb3JTcGFjZU1hdHJpeEZv
ckZsYWdzKGZsYWdzKSk7CkBAIC02NDEsOCArNzk4LDIwIEBAIHZvaWQgVGV4dHVyZU1hcHBlckdM
OjpkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0m
IHByCiAgICAgICAgIGZsYWdzIHw9IFNob3VsZEJsZW5kOwogCiAgICAgZHJhdyhyZWN0LCBtb2Rl
bFZpZXdNYXRyaXgsIHByb2dyYW0sIEdMX1RSSUFOR0xFX0ZBTiwgZmxhZ3MpOwotICAgIGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9f
RURHRSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JB
UF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKworICAgIGlmIChyZXBlYXRXcmFwKSB7CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0ZXh0dXJlc0FuZFNhbXBsZXJzLnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICBhdXRvJiB0ZXh0dXJlQW5kU2FtcGxlciA9IHRleHR1cmVzQW5kU2Ft
cGxlcnNbaV07CisgICAgICAgICAgICBnbEJpbmRUZXh0dXJlKHRhcmdldCwgdGV4dHVyZUFuZFNh
bXBsZXIuZmlyc3QpOworICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICAgICAgICAgIGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9f
RURHRSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3
VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0mIHByb2dy
YW0sIHVpbnQzMl90IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXplJiBzaXplLCBj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZp
ZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkpCit7CisgICAgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9n
cmFtKHByb2dyYW0sIHsgeyB0ZXh0dXJlLCBwcm9ncmFtLnNhbXBsZXJMb2NhdGlvbigpIH0gfSwg
ZmxhZ3MsIHNpemUsIHJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7CiB9CiAKIHZvaWQg
VGV4dHVyZU1hcHBlckdMOjpkcmF3RmlsdGVyZWQoY29uc3QgQml0bWFwVGV4dHVyZSYgc2FtcGxl
ciwgY29uc3QgQml0bWFwVGV4dHVyZSogY29udGVudFRleHR1cmUsIGNvbnN0IEZpbHRlck9wZXJh
dGlvbiYgZmlsdGVyLCBpbnQgcGFzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAppbmRleCBjYTA1NmFmNjYw
MzBlZDFlZWQ5MmZhNWMyYTI4ZGE5MGNiMzRlYjZhLi40YzFiNTExODNjYWUxMzNkNGRlN2IwNWM3
NjA3OWIwNzk4MWIxZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCkBAIC0zMCw2ICszMCw4IEBACiAj
aW5jbHVkZSAiVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlckdMSGVhZGVycy5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4Lmgi
CisjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8dmVjdG9yPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTY0LDYgKzY2LDkgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd051bWJlcihpbnQg
bnVtYmVyLCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1RleHR1cmUoY29uc3QgQml0bWFw
VGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jiwg
ZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd1RleHR1cmUoR0x1aW50IHRleHR1cmUsIEZsYWdzLCBjb25zdCBJbnRTaXpl
JiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25lZCBl
eHBvc2VkRWRnZXMgPSBBbGxFZGdlcyk7CisgICAgdm9pZCBkcmF3VGV4dHVyZVBsYW5hcllVVihj
b25zdCBzdGQ6OmFycmF5PEdMdWludCwgMz4mIHRleHR1cmVzLCBjb25zdCBzdGQ6OmFycmF5PEdM
ZmxvYXQsIDk+JiB5dXZUb1JnYk1hdHJpeCwgRmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVT
aXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdl
cyA9IEFsbEVkZ2VzKTsKKyAgICB2b2lkIGRyYXdUZXh0dXJlU2VtaVBsYW5hcllVVihjb25zdCBz
dGQ6OmFycmF5PEdMdWludCwgMj4mIHRleHR1cmVzLCBib29sIHV2UmV2ZXJzZWQsIGNvbnN0IHN0
ZDo6YXJyYXk8R0xmbG9hdCwgOT4mIHl1dlRvUmdiTWF0cml4LCBGbGFncywgY29uc3QgSW50U2l6
ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQg
ZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpOworICAgIHZvaWQgZHJhd1RleHR1cmVQYWNrZWRZVVYo
R0x1aW50IHRleHR1cmUsIGNvbnN0IHN0ZDo6YXJyYXk8R0xmbG9hdCwgOT4mIHl1dlRvUmdiTWF0
cml4LCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwg
ZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpOwogICAgIHZv
aWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmLCBjb25zdCBDb2xvciYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDb2xv
cihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwogCkBAIC04NCw2ICs4OSw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICB2b2lkIGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbSYsIHVpbnQzMl90IHRleHR1cmUsIEZsYWdzLCBjb25zdCBJbnRTaXpl
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmll
d01hdHJpeCwgZmxvYXQgb3BhY2l0eSk7CisgICAgdm9pZCBkcmF3VGV4dHVyZWRRdWFkV2l0aFBy
b2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0mLCBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6
OnBhaXI8R0x1aW50LCBHTHVpbnQ+ID4mIHRleHR1cmVzQW5kU2FtcGxlcnMsIEZsYWdzLCBjb25z
dCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSk7CiAgICAgdm9pZCBkcmF3KGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIFRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtJiwgR0xlbnVtIGRyYXdpbmdNb2RlLCBGbGFncyk7CiAK
ICAgICB2b2lkIGRyYXdVbml0UmVjdChUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSYsIEdMZW51
bSBkcmF3aW5nTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyLmNwcAppbmRleCA3YWZkZjMwYTA1YmNhNTM5N2I4MDE4YmZlYmQ4OWUwZTFkYTUw
MzMzLi4yZjM3MGQyMGJhZTRhODJhMTExY2Y5ZWJkYTI0ZTE0M2RlMzZmNTMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKQEAgLTM1LDE0
ICszNSwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihSZWZQdHI8Qml0bWFw
VGV4dHVyZT4mJiB0ZXh0dXJlLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzKQogICAgIDog
bV90ZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpCi0gICAgLCBtX3RleHR1cmVJRCgwKQorICAgICwg
bV92YXJpYW50KFJHQlRleHR1cmUgeyAwIH0pCiAgICAgLCBtX2V4dHJhRmxhZ3MoZmxhZ3MpCiAg
ICAgLCBtX2hhc01hbmFnZWRUZXh0dXJlKHRydWUpCiB7CiB9CiAKIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihHTHVpbnQg
dGV4dHVyZUlELCBjb25zdCBJbnRTaXplJiBzaXplLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZs
YWdzLCBHTGludCBpbnRlcm5hbEZvcm1hdCkKLSAgICA6IG1fdGV4dHVyZUlEKHRleHR1cmVJRCkK
KyAgICA6IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKHsgUkdCVGV4dHVyZSB7IHRl
eHR1cmVJRCB9IH0sIHNpemUsIGZsYWdzLCBpbnRlcm5hbEZvcm1hdCkKK3sKK30KKworVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyKFRleHR1cmVWYXJpYW50JiYgdmFyaWFudCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgVGV4dHVy
ZU1hcHBlckdMOjpGbGFncyBmbGFncywgR0xpbnQgaW50ZXJuYWxGb3JtYXQpCisgICAgOiBtX3Zh
cmlhbnQoV1RGTW92ZSh2YXJpYW50KSkKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV9pbnRl
cm5hbEZvcm1hdChpbnRlcm5hbEZvcm1hdCkKICAgICAsIG1fZXh0cmFGbGFncyhmbGFncykKQEAg
LTUwLDYgKzU1LDEwIEBAIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihHTHVpbnQgdGV4dHVyCiB7CiB9CiAKK1RleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjp+VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXIoKQoreworfQorCiBib29sIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpjYW5S
ZXVzZVdpdGhvdXRSZXNldChjb25zdCBJbnRTaXplJiBzaXplLCBHTGludCBpbnRlcm5hbEZvcm1h
dCkKIHsKICAgICByZXR1cm4gbV90ZXh0dXJlICYmIChtX3RleHR1cmUtPnNpemUoKSA9PSBzaXpl
KSAmJiAoc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMKj4obV90ZXh0dXJlLmdldCgpKS0+aW50
ZXJuYWxGb3JtYXQoKSA9PSBpbnRlcm5hbEZvcm1hdCB8fCBpbnRlcm5hbEZvcm1hdCA9PSBHTF9E
T05UX0NBUkUpOwpAQCAtNTcsMTQgKzY2LDI0IEBAIGJvb2wgVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXI6OmNhblJldXNlV2l0aG91dFJlc2V0KGNvbnN0IEludFNpemUmIHNpemUsCiAK
IHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OmNsb25lKCkKIHsKLSAgICBpZiAobV9oYXNNYW5h
Z2VkVGV4dHVyZSB8fCAhbV90ZXh0dXJlSUQpIHsKKyAgICBpZiAobV9oYXNNYW5hZ2VkVGV4dHVy
ZSkgewogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9Ci0gICAgYXV0byB0ZXh0dXJlID0gQml0bWFwVGV4dHVyZUdMOjpjcmVhdGUoVGV4dHVy
ZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOjpnZXQoKSwgbV9pbnRlcm5hbEZvcm1hdCk7Ci0gICAg
dGV4dHVyZS0+cmVzZXQobV9zaXplKTsKLSAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wm
Pih0ZXh0dXJlLmdldCgpKS5jb3B5RnJvbUV4dGVybmFsVGV4dHVyZShtX3RleHR1cmVJRCk7Ci0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXI+KFdURk1vdmUodGV4dHVyZSksIG1fZXh0cmFGbGFncyk7CisKKyAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihtX3ZhcmlhbnQsCisgICAgICAgIFsmXShjb25zdCBSR0JUZXh0dXJlJiB0ZXh0dXJl
KQorICAgICAgICB7CisgICAgICAgICAgICBhdXRvIGNsb25lZFRleHR1cmUgPSBCaXRtYXBUZXh0
dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM6OmdldCgpLCBtX2lu
dGVybmFsRm9ybWF0KTsKKyAgICAgICAgICAgIGNsb25lZFRleHR1cmUtPnJlc2V0KG1fc2l6ZSk7
CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wmPihjbG9uZWRUZXh0dXJl
LmdldCgpKS5jb3B5RnJvbUV4dGVybmFsVGV4dHVyZSh0ZXh0dXJlLmlkKTsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
PihXVEZNb3ZlKGNsb25lZFRleHR1cmUpLCBtX2V4dHJhRmxhZ3MpOworICAgICAgICB9LAorICAg
ICAgICBbXShjb25zdCBZVVZUZXh0dXJlJikKKyAgICAgICAgeworICAgICAgICAgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9KTsKIH0K
IAogdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6cGFpbnRUb1RleHR1cmVN
YXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9h
dCBvcGFjaXR5KQpAQCAtODYsOCArMTA1LDM1IEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQobV90ZXh0dXJlSUQpOwotICAgIHRl
eG1hcEdMLmRyYXdUZXh0dXJlKG1fdGV4dHVyZUlELCBtX2V4dHJhRmxhZ3MsIG1fc2l6ZSwgdGFy
Z2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsKKyAgICBtX3VubWFuYWdlZEJ1ZmZl
ckRhdGFIb2xkZXItPlN5bmNXYWl0Q1BVKCk7CisKKyAgICBXVEY6OnN3aXRjaE9uKG1fdmFyaWFu
dCwKKyAgICAgICAgWyZdKGNvbnN0IFJHQlRleHR1cmUmIHRleHR1cmUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFTU0VSVCh0ZXh0dXJlLmlkKTsKKyAgICAgICAgICAgIHRleG1hcEdMLmRyYXdU
ZXh0dXJlKHRleHR1cmUuaWQsIG1fZXh0cmFGbGFncywgbV9zaXplLCB0YXJnZXRSZWN0LCBtb2Rl
bFZpZXdNYXRyaXgsIG9wYWNpdHkpOworICAgICAgICB9LAorICAgICAgICBbJl0oY29uc3QgWVVW
VGV4dHVyZSYgdGV4dHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoICh0ZXh0dXJl
Lm5QbGFuZXMpIHsKKyAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICBBU1NFUlQo
dGV4dHVyZS55dXZQbGFuZVswXSA9PSB0ZXh0dXJlLnl1dlBsYW5lWzFdICYmIHRleHR1cmUueXV2
UGxhbmVbMV0gPT0gdGV4dHVyZS55dXZQbGFuZVsyXSk7CisgICAgICAgICAgICAgICAgQVNTRVJU
KHRleHR1cmUueXV2UE9mZnNldFswXSA9PSAyICYmIHRleHR1cmUueXV2UE9mZnNldFsxXSA9PSAx
ICYmICF0ZXh0dXJlLnl1dlBPZmZzZXRbMl0pOworICAgICAgICAgICAgICAgIHRleG1hcEdMLmRy
YXdUZXh0dXJlUGFja2VkWVVWKHRleHR1cmUucGxhbmVzW3RleHR1cmUueXV2UGxhbmVbMF1dLAor
ICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLnl1dlRvUmdiTWF0cml4LCBtX2V4dHJhRmxhZ3Ms
IG1fc2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICBBU1NF
UlQoIXRleHR1cmUueXV2UE9mZnNldFswXSk7CisgICAgICAgICAgICAgICAgdGV4bWFwR0wuZHJh
d1RleHR1cmVTZW1pUGxhbmFyWVVWKHN0ZDo6YXJyYXk8R0x1aW50LCAyPiB7IHRleHR1cmUucGxh
bmVzW3RleHR1cmUueXV2UGxhbmVbMF1dLCB0ZXh0dXJlLnBsYW5lc1t0ZXh0dXJlLnl1dlBsYW5l
WzFdXSB9LCAhIXRleHR1cmUueXV2UE9mZnNldFsxXSwKKyAgICAgICAgICAgICAgICAgICAgdGV4
dHVyZS55dXZUb1JnYk1hdHJpeCwgbV9leHRyYUZsYWdzLCBtX3NpemUsIHRhcmdldFJlY3QsIG1v
ZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgQVNTRVJUKCF0ZXh0dXJlLnl1dlBPZmZzZXRb
MF0gJiYgIXRleHR1cmUueXV2UE9mZnNldFsxXSAmJiAhdGV4dHVyZS55dXZQT2Zmc2V0WzJdKTsK
KyAgICAgICAgICAgICAgICB0ZXhtYXBHTC5kcmF3VGV4dHVyZVBsYW5hcllVVihzdGQ6OmFycmF5
PEdMdWludCwgMz4geyB0ZXh0dXJlLnBsYW5lc1t0ZXh0dXJlLnl1dlBsYW5lWzBdXSwgdGV4dHVy
ZS5wbGFuZXNbdGV4dHVyZS55dXZQbGFuZVsxXV0sIHRleHR1cmUucGxhbmVzW3RleHR1cmUueXV2
UGxhbmVbMl1dIH0sCisgICAgICAgICAgICAgICAgICAgIHRleHR1cmUueXV2VG9SZ2JNYXRyaXgs
IG1fZXh0cmFGbGFncywgbV9zaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNp
dHkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9KTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXIuaAppbmRleCBkMTAwZTI0YWQxMzE2NDk3OTRiOTA2OTJlNjYx
MmEzN2FiN2M5YWViLi41NjRiODg1NGFmYWUwNDQ2OTk2MDllOWEyOWQwMDYxNjY4NDYyZWI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaApAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTEhlYWRlcnMuaCIKICNpbmNs
dWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9u
aWNUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0zOSw5ICs0MCwyNCBAQCBjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlciA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQoKTsKIHB1YmxpYzoKICAgICBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcihSZWZQdHI8Qml0bWFwVGV4dHVyZT4mJiwgVGV4dHVyZU1hcHBlckdMOjpGbGFncyA9
IDApOworCiAgICAgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoR0x1aW50IHRleHR1
cmVJRCwgY29uc3QgSW50U2l6ZSYsIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MsIEdMaW50IGludGVy
bmFsRm9ybWF0KTsKIAotICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyKCkgPSBkZWZhdWx0OworICAgIHN0cnVjdCBSR0JUZXh0dXJlIHsKKyAgICAgICAgR0x1aW50
IGlkOworICAgIH07CisgICAgc3RydWN0IFlVVlRleHR1cmUgeworICAgICAgICBpbnQgblBsYW5l
czsKKyAgICAgICAgc3RkOjphcnJheTxHTHVpbnQsIDM+IHBsYW5lczsKKyAgICAgICAgc3RkOjph
cnJheTxpbnQsIDM+IHl1dlBsYW5lOworICAgICAgICBzdGQ6OmFycmF5PGludCwgMz4geXV2UE9m
ZnNldDsKKyAgICAgICAgc3RkOjphcnJheTxHTGZsb2F0LCA5PiB5dXZUb1JnYk1hdHJpeDsKKyAg
ICB9OworICAgIHVzaW5nIFRleHR1cmVWYXJpYW50ID0gV1RGOjpWYXJpYW50PFJHQlRleHR1cmUs
IFlVVlRleHR1cmU+OworCisgICAgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoVGV4
dHVyZVZhcmlhbnQmJiwgY29uc3QgSW50U2l6ZSYsIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MsIEdM
aW50IGludGVybmFsRm9ybWF0KTsKKworICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyKCk7CiAKICAgICB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVN
YXBwZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9k
ZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZmxvYXQgb3BhY2l0eSA9IDEu
MCkgZmluYWw7CiAKQEAgLTU3LDYgKzczLDggQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAg
ICAgVW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcigpID0gZGVmYXVsdDsKICAgICAgICAgdmlydHVh
bCB+VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcigpID0gZGVmYXVsdDsKKworICAgICAgICB2aXJ0
dWFsIHZvaWQgU3luY1dhaXRDUFUoKTsKICAgICB9OwogCiAgICAgYm9vbCBoYXNNYW5hZ2VkVGV4
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzTWFuYWdlZFRleHR1cmU7IH0KQEAgLTc4LDYgKzk2
LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gbV90ZXh0dXJlOwogICAg
IE1vbm90b25pY1RpbWUgbV90aW1lTGFzdFVzZWQ7CiAKKyAgICBUZXh0dXJlVmFyaWFudCBtX3Zh
cmlhbnQ7CiAgICAgR0x1aW50IG1fdGV4dHVyZUlEOwogICAgIEludFNpemUgbV9zaXplOwogICAg
IEdMaW50IG1faW50ZXJuYWxGb3JtYXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtLmNwcAppbmRleCBlYjg3ODhkNGZmNWU4ODlmYmFmNDZjNjAxNjk5NTMwMGE3OGQ3MTBk
Li41ZTAyODQ3ZTRhZmViMGQ5NGUwNzYxNDkzMjUxZmI1ZTJjYTdkNmVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRl
clByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAKQEAgLTIwNyw5ICsyMDcsMTMgQEAgc3Rh
dGljIGNvbnN0IGNoYXIqIGZyYWdtZW50VGVtcGxhdGVHRTMyMFZhcnMgPQogc3RhdGljIGNvbnN0
IGNoYXIqIGZyYWdtZW50VGVtcGxhdGVDb21tb24gPQogICAgIFNUUklOR0lGWSgKICAgICAgICAg
dW5pZm9ybSBTYW1wbGVyVHlwZSBzX3NhbXBsZXI7CisgICAgICAgIHVuaWZvcm0gU2FtcGxlclR5
cGUgc19zYW1wbGVyWTsKKyAgICAgICAgdW5pZm9ybSBTYW1wbGVyVHlwZSBzX3NhbXBsZXJVOwor
ICAgICAgICB1bmlmb3JtIFNhbXBsZXJUeXBlIHNfc2FtcGxlclY7CiAgICAgICAgIHVuaWZvcm0g
c2FtcGxlcjJEIHNfY29udGVudFRleHR1cmU7CiAgICAgICAgIHVuaWZvcm0gZmxvYXQgdV9vcGFj
aXR5OwogICAgICAgICB1bmlmb3JtIGZsb2F0IHVfZmlsdGVyQW1vdW50OworICAgICAgICB1bmlm
b3JtIG1hdDMgdV95dXZUb1JnYjsKICAgICAgICAgdW5pZm9ybSB2ZWMyIHVfYmx1clJhZGl1czsK
ICAgICAgICAgdW5pZm9ybSB2ZWMyIHVfc2hhZG93T2Zmc2V0OwogICAgICAgICB1bmlmb3JtIHZl
YzQgdV9jb2xvcjsKQEAgLTIzMSw3ICsyMzUsNDEgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGZyYWdt
ZW50VGVtcGxhdGVDb21tb24gPQogCiAgICAgICAgIHZvaWQgYXBwbHlNYW51YWxSZXBlYXQoaW5v
dXQgdmVjMiBwb3MpIHsgcG9zID0gZnJhY3QocG9zKTsgfQogCi0gICAgICAgIHZvaWQgYXBwbHlU
ZXh0dXJlKGlub3V0IHZlYzQgY29sb3IsIHZlYzIgdGV4Q29vcmQpIHsgY29sb3IgPSB1X3RleHR1
cmVDb2xvclNwYWNlTWF0cml4ICogU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlciwgdGV4Q29vcmQp
OyB9CisgICAgICAgIHZvaWQgYXBwbHlUZXh0dXJlUkdCKGlub3V0IHZlYzQgY29sb3IsIHZlYzIg
dGV4Q29vcmQpIHsgY29sb3IgPSB1X3RleHR1cmVDb2xvclNwYWNlTWF0cml4ICogU2FtcGxlckZ1
bmN0aW9uKHNfc2FtcGxlciwgdGV4Q29vcmQpOyB9CisKKyAgICAgICAgdmVjMyB5dXZUb1JnYihm
bG9hdCB5LCBmbG9hdCB1LCBmbG9hdCB2KQorICAgICAgICB7CisgICAgICAgICAgICAvLyB5dXYg
aXMgZWl0aGVyIGJ0NjAxIG9yIGJ0NzA5IHNvIHRoZSBvZmZzZXQgaXMgdGhlIHNhbWUKKyAgICAg
ICAgICAgIHZlYzMgeXV2ID0gdmVjMyh5IC0gMC4wNjI1LCB1IC0gMC41LCB2IC0gMC41KTsKKyAg
ICAgICAgICAgIHJldHVybiB5dXYgKiB1X3l1dlRvUmdiOworICAgICAgICB9CisgICAgICAgIHZv
aWQgYXBwbHlUZXh0dXJlWVVWKGlub3V0IHZlYzQgY29sb3IsIHZlYzIgdGV4Q29vcmQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGZsb2F0IHkgPSBTYW1wbGVyRnVuY3Rpb24oc19zYW1wbGVyWSwg
dGV4Q29vcmQpLnI7CisgICAgICAgICAgICBmbG9hdCB1ID0gU2FtcGxlckZ1bmN0aW9uKHNfc2Ft
cGxlclUsIHRleENvb3JkKS5yOworICAgICAgICAgICAgZmxvYXQgdiA9IFNhbXBsZXJGdW5jdGlv
bihzX3NhbXBsZXJWLCB0ZXhDb29yZCkucjsKKyAgICAgICAgICAgIHZlYzQgZGF0YSA9IHZlYzQo
eXV2VG9SZ2IoeSwgdSwgdiksIDEuMCk7CisgICAgICAgICAgICBjb2xvciA9IHVfdGV4dHVyZUNv
bG9yU3BhY2VNYXRyaXggKiBkYXRhOworICAgICAgICB9CisgICAgICAgIHZvaWQgYXBwbHlUZXh0
dXJlTlYxMihpbm91dCB2ZWM0IGNvbG9yLCB2ZWMyIHRleENvb3JkKQorICAgICAgICB7CisgICAg
ICAgICAgICBmbG9hdCB5ID0gU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlclksIHRleENvb3JkKS5y
OworICAgICAgICAgICAgdmVjMiB1diA9IFNhbXBsZXJGdW5jdGlvbihzX3NhbXBsZXJVLCB0ZXhD
b29yZCkucmc7CisgICAgICAgICAgICB2ZWM0IGRhdGEgPSB2ZWM0KHl1dlRvUmdiKHksIHV2Lngs
IHV2LnkpLCAxLjApOworICAgICAgICAgICAgY29sb3IgPSB1X3RleHR1cmVDb2xvclNwYWNlTWF0
cml4ICogZGF0YTsKKyAgICAgICAgfQorICAgICAgICB2b2lkIGFwcGx5VGV4dHVyZU5WMjEoaW5v
dXQgdmVjNCBjb2xvciwgdmVjMiB0ZXhDb29yZCkKKyAgICAgICAgeworICAgICAgICAgICAgZmxv
YXQgeSA9IFNhbXBsZXJGdW5jdGlvbihzX3NhbXBsZXJZLCB0ZXhDb29yZCkucjsKKyAgICAgICAg
ICAgIHZlYzIgdXYgPSBTYW1wbGVyRnVuY3Rpb24oc19zYW1wbGVyVSwgdGV4Q29vcmQpLmdyOwor
ICAgICAgICAgICAgdmVjNCBkYXRhID0gdmVjNCh5dXZUb1JnYih5LCB1di54LCB1di55KSwgMS4w
KTsKKyAgICAgICAgICAgIGNvbG9yID0gdV90ZXh0dXJlQ29sb3JTcGFjZU1hdHJpeCAqIGRhdGE7
CisgICAgICAgIH0KKyAgICAgICAgdm9pZCBhcHBseVRleHR1cmVQYWNrZWRZVVYoaW5vdXQgdmVj
NCBjb2xvciwgdmVjMiB0ZXhDb29yZCkKKyAgICAgICAgeworICAgICAgICAgICAgdmVjNCBkYXRh
ID0gU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlciwgdGV4Q29vcmQpOworICAgICAgICAgICAgY29s
b3IgPSB1X3RleHR1cmVDb2xvclNwYWNlTWF0cml4ICogdmVjNCh5dXZUb1JnYihkYXRhLmIsIGRh
dGEuZywgZGF0YS5yKSwgZGF0YS5hKTsKKyAgICAgICAgfQogICAgICAgICB2b2lkIGFwcGx5T3Bh
Y2l0eShpbm91dCB2ZWM0IGNvbG9yKSB7IGNvbG9yICo9IHVfb3BhY2l0eTsgfQogICAgICAgICB2
b2lkIGFwcGx5QW50aWFsaWFzaW5nKGlub3V0IHZlYzQgY29sb3IpIHsgY29sb3IgKj0gYW50aWFs
aWFzKCk7IH0KIApAQCAtMzQzLDcgKzM4MSwxMSBAQCBzdGF0aWMgY29uc3QgY2hhciogZnJhZ21l
bnRUZW1wbGF0ZUNvbW1vbiA9CiAgICAgICAgICAgICB2ZWM0IGNvbG9yID0gdmVjNCgxLiwgMS4s
IDEuLCAxLik7CiAgICAgICAgICAgICB2ZWMyIHRleENvb3JkID0gdHJhbnNmb3JtVGV4Q29vcmQo
KTsKICAgICAgICAgICAgIGFwcGx5TWFudWFsUmVwZWF0SWZOZWVkZWQodGV4Q29vcmQpOwotICAg
ICAgICAgICAgYXBwbHlUZXh0dXJlSWZOZWVkZWQoY29sb3IsIHRleENvb3JkKTsKKyAgICAgICAg
ICAgIGFwcGx5VGV4dHVyZVJHQklmTmVlZGVkKGNvbG9yLCB0ZXhDb29yZCk7CisgICAgICAgICAg
ICBhcHBseVRleHR1cmVZVVZJZk5lZWRlZChjb2xvciwgdGV4Q29vcmQpOworICAgICAgICAgICAg
YXBwbHlUZXh0dXJlTlYxMklmTmVlZGVkKGNvbG9yLCB0ZXhDb29yZCk7CisgICAgICAgICAgICBh
cHBseVRleHR1cmVOVjIxSWZOZWVkZWQoY29sb3IsIHRleENvb3JkKTsKKyAgICAgICAgICAgIGFw
cGx5VGV4dHVyZVBhY2tlZFlVVklmTmVlZGVkKGNvbG9yLCB0ZXhDb29yZCk7CiAgICAgICAgICAg
ICBhcHBseVNvbGlkQ29sb3JJZk5lZWRlZChjb2xvcik7CiAgICAgICAgICAgICBhcHBseUFudGlh
bGlhc2luZ0lmTmVlZGVkKGNvbG9yKTsKICAgICAgICAgICAgIGFwcGx5T3BhY2l0eUlmTmVlZGVk
KGNvbG9yKTsKQEAgLTM2OSw3ICs0MTEsMTEgQEAgUmVmPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtPiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6Y3JlYXRlKFRleHR1cmVNYXBwZXIKICAg
ICAgICAgKG9wdGlvbnMgJiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6QXBwbGllcikgPyBF
TkFCTEVfQVBQTElFUihBcHBsaWVyKSA6IERJU0FCTEVfQVBQTElFUihBcHBsaWVyKSkKIAogICAg
IFN0cmluZ0J1aWxkZXIgb3B0aW9uc0FwcGxpZXJCdWlsZGVyOwotICAgIFNFVF9BUFBMSUVSX0ZS
T01fT1BUSU9OUyhUZXh0dXJlKTsKKyAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoVGV4dHVy
ZVJHQik7CisgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKFRleHR1cmVZVVYpOworICAgIFNF
VF9BUFBMSUVSX0ZST01fT1BUSU9OUyhUZXh0dXJlTlYxMik7CisgICAgU0VUX0FQUExJRVJfRlJP
TV9PUFRJT05TKFRleHR1cmVOVjIxKTsKKyAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoVGV4
dHVyZVBhY2tlZFlVVik7CiAgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKFJlY3QpOwogICAg
IFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhTb2xpZENvbG9yKTsKICAgICBTRVRfQVBQTElFUl9G
Uk9NX09QVElPTlMoT3BhY2l0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bS5oCmluZGV4IDRhMzQyMGMwNjAyY2I0ZDYwYTQ5OGI5NDc1YTNmMzk3ZDJkNzFmMTkuLmJhNWMw
MDExNzU4NDc3MDY0NGJmZGY0NzdiNWMxN2ExY2ZkOGY2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbS5oCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtIDogcHVibGljIFJlZkNvdW50ZWQ8
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+IHsKIHB1YmxpYzoKICAgICBlbnVtIE9wdGlvbiB7
Ci0gICAgICAgIFRleHR1cmUgICAgICAgICAgPSAxTCA8PCAwLAorICAgICAgICBUZXh0dXJlUkdC
ICAgICAgID0gMUwgPDwgMCwKICAgICAgICAgUmVjdCAgICAgICAgICAgICA9IDFMIDw8IDEsCiAg
ICAgICAgIFNvbGlkQ29sb3IgICAgICAgPSAxTCA8PCAyLAogICAgICAgICBPcGFjaXR5ICAgICAg
ICAgID0gMUwgPDwgMywKQEAgLTYxLDcgKzYxLDExIEBAIHB1YmxpYzoKICAgICAgICAgQmx1ckZp
bHRlciAgICAgICA9IDFMIDw8IDE0LAogICAgICAgICBBbHBoYUJsdXIgICAgICAgID0gMUwgPDwg
MTUsCiAgICAgICAgIENvbnRlbnRUZXh0dXJlICAgPSAxTCA8PCAxNiwKLSAgICAgICAgTWFudWFs
UmVwZWF0ICAgICA9IDFMIDw8IDE3CisgICAgICAgIE1hbnVhbFJlcGVhdCAgICAgPSAxTCA8PCAx
NywKKyAgICAgICAgVGV4dHVyZVlVViAgICAgICA9IDFMIDw8IDE4LAorICAgICAgICBUZXh0dXJl
TlYxMiAgICAgID0gMUwgPDwgMTksCisgICAgICAgIFRleHR1cmVOVjIxICAgICAgPSAxTCA8PCAy
MCwKKyAgICAgICAgVGV4dHVyZVBhY2tlZFlVViA9IDFMIDw8IDIxLAogICAgIH07CiAKICAgICB0
eXBlZGVmIHVuc2lnbmVkIE9wdGlvbnM7CkBAIC04MCw3ICs4NCwxMSBAQCBwdWJsaWM6CiAgICAg
VEVYTUFQX0RFQ0xBUkVfVU5JRk9STShvcGFjaXR5KQogICAgIFRFWE1BUF9ERUNMQVJFX1VOSUZP
Uk0oY29sb3IpCiAgICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9STShleHBhbmRlZFF1YWRFZGdlc0lu
U2NyZWVuU3BhY2UpCisgICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9STSh5dXZUb1JnYikKICAgICBU
RVhNQVBfREVDTEFSRV9TQU1QTEVSKHNhbXBsZXIpCisgICAgVEVYTUFQX0RFQ0xBUkVfU0FNUExF
UihzYW1wbGVyWSkKKyAgICBURVhNQVBfREVDTEFSRV9TQU1QTEVSKHNhbXBsZXJVKQorICAgIFRF
WE1BUF9ERUNMQVJFX1NBTVBMRVIoc2FtcGxlclYpCiAgICAgVEVYTUFQX0RFQ0xBUkVfU0FNUExF
UihtYXNrKQogCiAgICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9STShmaWx0ZXJBbW91bnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376751</attachid>
            <date>2019-08-20 01:34:35 -0700</date>
            <delta_ts>2019-08-27 03:44:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132869-20190820093434.patch</filename>
            <type>text/plain</type>
            <size>44327</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4ODUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhjYmEwYjczNDM3YmJi
MDlhYzY2OGQ3Yzc3NDg2NzlmZjRiNjQ4ZS4uYmNmNjc4ZDEzMDQ1ZDhkM2Y0MzQyOTJkOTIyMGYw
M2QzYTViZjg0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE5LTA4LTE5ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbVGV4bWFwXVtHU3Ry
ZWFtZXJdIEFkZCBzdXBwb3J0IHRvIHVwbG9hZCBtb3JlIGNvbG9yIGZvcm1hdHMgaW50byB0aGUg
dGV4dHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTMyODY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U3VwcG9ydCBub24taW50ZXJsZWF2ZWQgWVVWIGNvbG9yIGZvciBnc3RyZWFtZXItZ2wKKworICAg
ICAgICBUaGlzIGFkZHMgZGlyZWN0IHN1cHBvcnQgZm9yIHJlbmRlcmluZyBJNDIwLCBJNDQ0LCBZ
VjEyLCBZVjIxLCBZNDJCLAorICAgICAgICBOVjEyLCBOVjIxIGFuZCBWVVlBIGNvbG9yIGZvcm1h
dHMgdXNpbmcgR0xHTCBzaGFkZXJzIHdoZW4gdXNpbmcKKyAgICAgICAgZ3N0cmVhbWVyLWdsIGZv
ciB2aWRlbyByZW5kZXJpbmcuIFRoaXMgYXZvaWRzIGEgc3VyZmFjZSBjb3B5IG9uIHRoZSBHUFUK
KyAgICAgICAgaW4gdGhvc2UgY2FzZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBub3QgY2hh
bmdpbmcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3N0VmlkZW9GcmFtZUhvbGRlcjo6R3N0VmlkZW9GcmFt
ZUhvbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpHc3RWaWRlb0ZyYW1lSG9sZGVyOjpTeW5jV2Fp
dENQVSk6CisgICAgICAgIChXZWJDb3JlOjpHc3RWaWRlb0ZyYW1lSG9sZGVyOjpoYXNNYXBwZWRU
ZXh0dXJlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHc3RWaWRlb0ZyYW1lSG9sZGVyOjp2
aWRlb0ZyYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNyZWF0ZUdMQXBwU2luayk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjcmVhdGVWaWRl
b1NpbmtHTCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVh
bWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdM
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wdGlvbnNGb3JGaWx0ZXJUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6cHJlcGFyZVRyYW5zZm9ybWF0aW9uTWF0cml4V2l0aEZsYWdzKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVQbGFuYXJZVVYpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVNlbWlQbGFuYXJZVVYpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVBhY2tlZFlVVik6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3Jh
bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcjo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6On5UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW06OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmg6CisKIDIwMTktMDgtMTkgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBzcGVjdWxhdGl2ZSBidWls
ZCBmaXggZm9yIEdUSyBhbmQgV2luQ2Fpcm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggYWIzN2VlMDQxZWIyOGMzYzgyZjM1YWYzNjNjY2Vk
YjliNDJiMTQ5Mi4uMDMwNjMzM2ZmNmQ2NjlhNjFhY2ExYzEzZTc4YTNhZjdmZDM2M2M4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI0
MzUsNiArMjQzNSw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVH
U1RQbGF5QmluKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gZWxlbWVudE5hbWUoZ3N0X2VsZW1lbnRfZ2V0X25hbWUoZWxlbWVudCkpOwogICAg
ICAgICBpZiAoZ19zdHJfaGFzX3ByZWZpeChlbGVtZW50TmFtZS5nZXQoKSwgInY0bDIiKSkKICAg
ICAgICAgICAgIHBsYXllci0+bV92aWRlb0RlY29kZXJQbGF0Zm9ybSA9IFdlYktpdEdzdFZpZGVv
RGVjb2RlclBsYXRmb3JtOjpWaWRlbzRMaW51eDsKKyAgICAgICAgZWxzZSBpZiAoZ19zdHJfaGFz
X3ByZWZpeChlbGVtZW50TmFtZS5nZXQoKSwgImlteHZwdWRlY29kZXIiKSkKKyAgICAgICAgICAg
IHBsYXllci0+bV92aWRlb0RlY29kZXJQbGF0Zm9ybSA9IFdlYktpdEdzdFZpZGVvRGVjb2RlclBs
YXRmb3JtOjpJbXhWUFU7CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAgICAgICAgIHBs
YXllci0+dXBkYXRlVGV4dHVyZU1hcHBlckZsYWdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggYjAyZTI4ZWRjZDQwN2Zk
ZmY4Y2JlYTc4YWQxYTZlN2IwYzdiNThhOS4uMzI1Y2NkOGU5M2U1ZGQ1NGZmNGM5MmYwM2RkOTc5
NjE5NDhlMjYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmNwcApAQCAtNTUsNiArNTUsNyBAQAogCiAjaWYgVVNFKEdTVFJFQU1FUl9H
TCkKICNkZWZpbmUgVEVYVFVSRV9DT1BJRVJfQ09MT1JfQ09OVkVSVF9GTEFHIFZpZGVvVGV4dHVy
ZUNvcGllckdTdHJlYW1lcjo6Q29sb3JDb252ZXJzaW9uOjpOb0NvbnZlcnQKKyNkZWZpbmUgR1NU
X0dMX0NBUFNfRk9STUFUICJ7IFJHQngsIFJHQkEsIEk0MjAsIFk0NDQsIFlWMTIsIFk0MUIsIFk0
MkIsIE5WMTIsIE5WMjEsIFZVWUEgfSIKIAogI2luY2x1ZGUgPGdzdC9hcHAvZ3N0YXBwc2luay5o
PgogCkBAIC0xNDUsOCArMTQ2LDEwIEBAIHB1YmxpYzoKIAogICAgICAgICBpZiAoZ3N0R0xFbmFi
bGVkKSB7CiAgICAgICAgICAgICBtX2lzTWFwcGVkID0gZ3N0X3ZpZGVvX2ZyYW1lX21hcCgmbV92
aWRlb0ZyYW1lLCAmdmlkZW9JbmZvLCBtX2J1ZmZlciwgc3RhdGljX2Nhc3Q8R3N0TWFwRmxhZ3M+
KEdTVF9NQVBfUkVBRCB8IEdTVF9NQVBfR0wpKTsKLSAgICAgICAgICAgIGlmIChtX2lzTWFwcGVk
KQorICAgICAgICAgICAgaWYgKG1faXNNYXBwZWQpIHsKICAgICAgICAgICAgICAgICBtX3RleHR1
cmVJRCA9ICpyZWludGVycHJldF9jYXN0PEdMdWludCo+KG1fdmlkZW9GcmFtZS5kYXRhWzBdKTsK
KyAgICAgICAgICAgICAgICBtX2hhc01hcHBlZFRleHR1cmVzID0gdHJ1ZTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlCiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0oZmxhZ3MpOwpA
QCAtMTcxLDEwICsxNzQsMjIgQEAgcHVibGljOgogICAgICAgICBnc3RfdmlkZW9fZnJhbWVfdW5t
YXAoJm1fdmlkZW9GcmFtZSk7CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lkIFN5bmNXYWl0Q1BV
KCkKKyAgICB7CisgICAgICAgIEdzdEdMU3luY01ldGEqIG1ldGEgPSBnc3RfYnVmZmVyX2dldF9n
bF9zeW5jX21ldGEobV9idWZmZXIpOworICAgICAgICBpZiAobWV0YSkgeworICAgICAgICAgICAg
R3N0TWVtb3J5KiBtZW0gPSBnc3RfYnVmZmVyX3BlZWtfbWVtb3J5KG1fYnVmZmVyLCAwKTsKKyAg
ICAgICAgICAgIEdzdEdMQ29udGV4dCogY29udGV4dCA9ICgoR3N0R0xCYXNlTWVtb3J5KiltZW0p
LT5jb250ZXh0OworICAgICAgICAgICAgZ3N0X2dsX3N5bmNfbWV0YV93YWl0X2NwdShtZXRhLCBj
b250ZXh0KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGNvbnN0IEludFNpemUmIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBib29sIGhhc0FscGhhQ2hhbm5lbCgpIGNvbnN0
IHsgcmV0dXJuIG1faGFzQWxwaGFDaGFubmVsOyB9CiAgICAgVGV4dHVyZU1hcHBlckdMOjpGbGFn
cyBmbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KICAgICBHTHVpbnQgdGV4dHVyZUlE
KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSUQ7IH0KKyAgICBib29sIGhhc01hcHBlZFRleHR1
cmVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNYXBwZWRUZXh0dXJlczsgfQorICAgIGNvbnN0IEdz
dFZpZGVvRnJhbWUmIHZpZGVvRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRnJhbWU7IH0K
IAogICAgIHZvaWQgdXBkYXRlVGV4dHVyZShCaXRtYXBUZXh0dXJlR0wmIHRleHR1cmUpCiAgICAg
ewpAQCAtMjA5LDYgKzIyNCw3IEBAIHByaXZhdGU6CiAgICAgVGV4dHVyZU1hcHBlckdMOjpGbGFn
cyBtX2ZsYWdzIHsgfTsKICAgICBHTHVpbnQgbV90ZXh0dXJlSUQgeyAwIH07CiAgICAgYm9vbCBt
X2lzTWFwcGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzTWFwcGVkVGV4dHVyZXMgeyBmYWxz
ZSB9OwogfTsKICNlbmRpZgogCkBAIC03MTIsMTAgKzcyOCw2MCBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKCkKIAogICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEdzdFZpZGVvRnJhbWVIb2xkZXI+IGZyYW1lSG9sZGVyID0g
bWFrZVVuaXF1ZTxHc3RWaWRlb0ZyYW1lSG9sZGVyPihtX3NhbXBsZS5nZXQoKSwgbV90ZXh0dXJl
TWFwcGVyRmxhZ3MsICFtX3VzaW5nRmFsbGJhY2tWaWRlb1NpbmspOwogCi0gICAgICAgICAgICBH
THVpbnQgdGV4dHVyZUlEID0gZnJhbWVIb2xkZXItPnRleHR1cmVJRCgpOwotICAgICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBsYXllckJ1
ZmZlcjsKLSAgICAgICAgICAgIGlmICh0ZXh0dXJlSUQpIHsKLSAgICAgICAgICAgICAgICBsYXll
ckJ1ZmZlciA9IG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KHRl
eHR1cmVJRCwgZnJhbWVIb2xkZXItPnNpemUoKSwgZnJhbWVIb2xkZXItPmZsYWdzKCksIEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBKTsKKyAgICAgICAgICAgIHVzaW5nIEJ1ZmZlciA9IFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJ1
ZmZlcj4gbGF5ZXJCdWZmZXI7CisgICAgICAgICAgICBpZiAoZnJhbWVIb2xkZXItPmhhc01hcHBl
ZFRleHR1cmVzKCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiB2aWRlb0ZyYW1lID0gZnJhbWVI
b2xkZXItPnZpZGVvRnJhbWUoKTsKKyAgICAgICAgICAgICAgICBbJl0geworICAgICAgICAgICAg
ICAgICAgICBpZiAobV92aWRlb0RlY29kZXJQbGF0Zm9ybSA9PSBXZWJLaXRHc3RWaWRlb0RlY29k
ZXJQbGF0Zm9ybTo6SW14VlBVCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAoR1NUX1ZJREVP
X0lORk9fSVNfUkdCKCZ2aWRlb0ZyYW1lLmluZm8pICYmIEdTVF9WSURFT19JTkZPX05fUExBTkVT
KCZ2aWRlb0ZyYW1lLmluZm8pID09IDEpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsYXll
ckJ1ZmZlciA9IG1ha2VVbmlxdWU8QnVmZmVyPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCdWZmZXI6OlRleHR1cmVWYXJpYW50IHsgQnVmZmVyOjpSR0JUZXh0dXJlIHsgKnN0YXRpY19j
YXN0PEdMdWludCo+KHZpZGVvRnJhbWUuZGF0YVswXSkgfSB9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZyYW1lSG9sZGVyLT5zaXplKCksIGZyYW1lSG9sZGVyLT5mbGFncygpLCBHcmFw
aGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAoR1NUX1ZJREVP
X0lORk9fSVNfWVVWKCZ2aWRlb0ZyYW1lLmluZm8pKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoR1NUX1ZJREVPX0lORk9fTl9DT01QT05FTlRTKCZ2aWRlb0ZyYW1lLmluZm8pIDwgMyB8
fCBHU1RfVklERU9fSU5GT19OX1BMQU5FUygmdmlkZW9GcmFtZS5pbmZvKSA+IDMpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgblBsYW5lcyA9IEdTVF9WSURFT19JTkZPX05fUExBTkVTKCZ2aWRlb0ZyYW1lLmluZm8pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjphcnJheTxHTHVpbnQsIDM+IHBsYW5lczsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YXJyYXk8aW50LCAzPiB5dXZQbGFuZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6YXJyYXk8aW50LCAzPiB5dXZQT2Zmc2V0OworICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuUGxhbmVzOyArK2kpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcGxhbmVzW2ldID0gKnN0YXRpY19jYXN0PEdMdWludCo+
KHZpZGVvRnJhbWUuZGF0YVtpXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IDM7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl1dlBsYW5l
W2ldID0gR1NUX1ZJREVPX0lORk9fQ09NUF9QTEFORSgmdmlkZW9GcmFtZS5pbmZvLCBpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB5dXZQT2Zmc2V0W2ldID0gR1NUX1ZJREVPX0lORk9f
Q09NUF9QT0ZGU0VUKCZ2aWRlb0ZyYW1lLmluZm8sIGkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmFycmF5PEdMZmxvYXQsIDk+IHl1
dlRvUmdiOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdzdF92aWRlb19jb2xvcmltZXRy
eV9tYXRjaGVzKCZHU1RfVklERU9fSU5GT19DT0xPUklNRVRSWSgmdmlkZW9GcmFtZS5pbmZvKSwg
R1NUX1ZJREVPX0NPTE9SSU1FVFJZX0JUNzA5KSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHl1dlRvUmdiID0geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjE2NGYs
ICAwLjBmLCAgICAxLjc4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMTY0
ZiwgLTAuMjEzZiwgLTAuNTMxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4x
NjRmLCAgMi4xMTJmLCAgMC4wZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIERlZmF1bHQgdG8gYnQ2MDEuIFRoaXMgaXMgdGhlIHNhbWUgYmVoYXZpb3VyIGFzIEdTdHJl
YW1lcidzIGdsY29sb3Jjb252ZXJ0IGVsZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB5dXZUb1JnYiA9IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4xNjRmLCAg
MC4wZiwgICAgMS41OTZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjE2NGYs
IC0wLjM5MWYsIC0wLjgxM2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMTY0
ZiwgIDIuMDE4ZiwgIDAuMGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAg
ICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBsYXllckJ1ZmZl
ciA9IG1ha2VVbmlxdWU8QnVmZmVyPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZm
ZXI6OlRleHR1cmVWYXJpYW50IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVm
ZmVyOjpZVVZUZXh0dXJlIHsgblBsYW5lcywgcGxhbmVzLCB5dXZQbGFuZSwgeXV2UE9mZnNldCwg
eXV2VG9SZ2IgfSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lSG9sZGVyLT5z
aXplKCksIGZyYW1lSG9sZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAg
ICAgICBpZiAoIWxheWVyQnVmZmVyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKICAg
ICAgICAgICAgICAgICBsYXllckJ1ZmZlci0+c2V0VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcihX
VEZNb3ZlKGZyYW1lSG9sZGVyKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIGxheWVyQnVmZmVyID0gcHJveHkuZ2V0QXZhaWxhYmxlQnVmZmVyKGZyYW1lSG9sZGVyLT5z
aXplKCksIEdMX0RPTlRfQ0FSRSk7CkBAIC0xMDYyLDggKzExMjgsNyBAQCBHc3RFbGVtZW50KiBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjcmVhdGVWaWRlb1NpbmtHTCgpCiAgICAg
R3N0RWxlbWVudCogYXBwc2luayA9IGNyZWF0ZUdMQXBwU2luaygpOwogCiAgICAgLy8gZ2xzaW5r
YmluIGlzIG5vdCB1c2VkIGJlY2F1c2UgaXQgaW5jbHVkZXMgZ2xjb2xvcmNvbnZlcnQgd2hpY2gg
b25seSBwcm9jZXNzIFJHQkEsCi0gICAgLy8gYnV0IGluIHRoZSBmdXR1cmUgaXQgd291bGQgYmUg
cG9zc2libGUgdG8gcmVuZGVyIFlVViBmb3JtYXRzIHRvbzoKLSAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyODY5CisgICAgLy8gYnV0IHdlIGNhbiBkaXNw
bGF5IFlVViBmb3JtYXRzIHRvby4KIAogICAgIGlmICghYXBwc2luayB8fCAhdXBsb2FkIHx8ICFj
b2xvcmNvbnZlcnQpIHsKICAgICAgICAgR1NUX1dBUk5JTkcoIkZhaWxlZCB0byBjcmVhdGUgR3N0
R0wgZWxlbWVudHMiKTsKQEAgLTEwODIsNyArMTE0Nyw3IEBAIEdzdEVsZW1lbnQqIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNyZWF0ZVZpZGVvU2lua0dMKCkKIAogICAgIGdzdF9i
aW5fYWRkX21hbnkoR1NUX0JJTih2aWRlb1NpbmspLCB1cGxvYWQsIGNvbG9yY29udmVydCwgYXBw
c2luaywgbnVsbHB0cik7CiAKLSAgICBHUmVmUHRyPEdzdENhcHM+IGNhcHMgPSBhZG9wdEdSZWYo
Z3N0X2NhcHNfbmV3X3NpbXBsZSgidmlkZW8veC1yYXciLCAiZm9ybWF0IiwgR19UWVBFX1NUUklO
RywgIlJHQkEiLCBudWxscHRyKSk7CisgICAgR1JlZlB0cjxHc3RDYXBzPiBjYXBzID0gYWRvcHRH
UmVmKGdzdF9jYXBzX2Zyb21fc3RyaW5nKCJ2aWRlby94LXJhdywgZm9ybWF0ID0gKHN0cmluZykg
IiBHU1RfR0xfQ0FQU19GT1JNQVQpKTsKICAgICBnc3RfY2Fwc19zZXRfZmVhdHVyZXMoY2Fwcy5n
ZXQoKSwgMCwgZ3N0X2NhcHNfZmVhdHVyZXNfbmV3KEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dM
X01FTU9SWSwgbnVsbHB0cikpOwogICAgIGdfb2JqZWN0X3NldChhcHBzaW5rLCAiY2FwcyIsIGNh
cHMuZ2V0KCksIG51bGxwdHIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuaAppbmRleCBlMjYwNGM0YWUzYjA1OWNlMWZiNmUwNGQ1NjhmMWE4
MzZhMjMwNGE0Li41NTAwYWJkZTljMDY5NTdlY2YwMjczZjVkMTQ0MjQzMzNlOTRlOTgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKQEAg
LTI5Miw2ICsyOTIsNyBAQCBwcm90ZWN0ZWQ6CiAjaWYgVVNFKEdTVFJFQU1FUl9HTCkKICAgICBH
UmVmUHRyPEdzdEdMQ29udGV4dD4gbV9nbENvbnRleHQ7CiAgICAgR1JlZlB0cjxHc3RHTERpc3Bs
YXk+IG1fZ2xEaXNwbGF5OworCiAgICAgR1JlZlB0cjxHc3RDb250ZXh0PiBtX2dsRGlzcGxheUVs
ZW1lbnRDb250ZXh0OwogICAgIEdSZWZQdHI8R3N0Q29udGV4dD4gbV9nbEFwcEVsZW1lbnRDb250
ZXh0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+IG1f
dmlkZW9UZXh0dXJlQ29waWVyOwpAQCAtMzA3LDcgKzMwOCw3IEBAIHByb3RlY3RlZDoKICAgICBi
b29sIG1fd2FpdGluZ0ZvcktleSB7IGZhbHNlIH07CiAjZW5kaWYKIAotICAgIGVudW0gY2xhc3Mg
V2ViS2l0R3N0VmlkZW9EZWNvZGVyUGxhdGZvcm0geyBWaWRlbzRMaW51eCB9OworICAgIGVudW0g
Y2xhc3MgV2ViS2l0R3N0VmlkZW9EZWNvZGVyUGxhdGZvcm0geyBWaWRlbzRMaW51eCwgSW14VlBV
IH07CiAgICAgT3B0aW9uYWw8V2ViS2l0R3N0VmlkZW9EZWNvZGVyUGxhdGZvcm0+IG1fdmlkZW9E
ZWNvZGVyUGxhdGZvcm07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3Bp
ZXJHU3RyZWFtZXIuY3BwCmluZGV4IGZmMzM4MTgxOGQyYTI1ZWUzZGU0NjM2MzE4MDIwZDczYmY0
Y2JhYTguLjUyZTE3ZWFjNTZlN2FlNjhjODM5OTRjNzA4ZTM5Zjg3MDU4NjkwYjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1
cmVDb3BpZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwCkBAIC0zNSw3ICsz
NSw3IEBAIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6VmlkZW9UZXh0dXJlQ29waWVyR1N0
cmVhbWVyKENvbG9yQ29udmVyc2lvbiBjb2xvckNvCiAgICAgQVNTRVJUKHByZXZpb3VzQ29udGV4
dCk7CiAgICAgUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKS5z
aGFyaW5nR0xDb250ZXh0KCktPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCi0gICAgbV9zaGFkZXJQ
cm9ncmFtID0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OmNyZWF0ZShUZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbTo6VGV4dHVyZSk7CisgICAgbV9zaGFkZXJQcm9ncmFtID0gVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW06OmNyZWF0ZShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4
dHVyZVJHQik7CiAKICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbV9mcmFtZWJ1ZmZlcik7CiAg
ICAgZ2xHZW5UZXh0dXJlcygxLCAmbV9yZXN1bHRUZXh0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5j
cHAKaW5kZXggYTJmNzU4NjZlMzIzYjhmZGJhNDNhMDA3ZDQ0N2FhYTQ2NTc2YmZmMi4uMGY3MTQ4
YzAwMjE5NzI2MDFjYmZkOTg1MTUyN2ExMzg5OWFjYzYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5j
cHAKQEAgLTMxOSwyMSArMzE5LDIxIEBAIHN0YXRpYyBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bTo6T3B0aW9ucyBvcHRpb25zRm9yRmlsdGVyVHlwZShGaWx0ZXJPcGVyYXRpb246CiB7CiAgICAg
c3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRToKLSAg
ICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlIHwgVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW06OkdyYXlzY2FsZUZpbHRlcjsKKyAgICAgICAgcmV0dXJuIFRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlUkdCIHwgVGV4dHVyZU1hcHBlclNoYWRl
clByb2dyYW06OkdyYXlzY2FsZUZpbHRlcjsKICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQ
SUE6Ci0gICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZSB8
IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpTZXBpYUZpbHRlcjsKKyAgICAgICAgcmV0dXJu
IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlUkdCIHwgVGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW06OlNlcGlhRmlsdGVyOwogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTQVRV
UkFURToKLSAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJl
IHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlNhdHVyYXRlRmlsdGVyOworICAgICAgICBy
ZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVSR0IgfCBUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbTo6U2F0dXJhdGVGaWx0ZXI7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRp
b246OkhVRV9ST1RBVEU6Ci0gICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bTo6VGV4dHVyZSB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpIdWVSb3RhdGVGaWx0ZXI7
CisgICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVJHQiB8
IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpIdWVSb3RhdGVGaWx0ZXI7CiAgICAgY2FzZSBG
aWx0ZXJPcGVyYXRpb246OklOVkVSVDoKLSAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtOjpUZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkludmVydEZp
bHRlcjsKKyAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJl
UkdCIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkludmVydEZpbHRlcjsKICAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzoKLSAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkJy
aWdodG5lc3NGaWx0ZXI7CisgICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bTo6VGV4dHVyZVJHQiB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpCcmlnaHRuZXNzRmls
dGVyOwogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDoKLSAgICAgICAgcmV0dXJu
IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRl
clByb2dyYW06OkNvbnRyYXN0RmlsdGVyOworICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW06OlRleHR1cmVSR0IgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6Q29u
dHJhc3RGaWx0ZXI7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6Ci0gICAgICAg
IHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZSB8IFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtOjpPcGFjaXR5RmlsdGVyOworICAgICAgICByZXR1cm4gVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW06OlRleHR1cmVSR0IgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bTo6T3BhY2l0eUZpbHRlcjsKICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjoKICAgICAg
ICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpCbHVyRmlsdGVyOwogICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzoKQEAgLTQ3MCw3ICs0NzAsNyBAQCB2b2lk
IFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoR0x1aW50IHRleHR1cmUsIEZsYWdzIGZsYWdz
LCBjb25zdCBJbnRTaXplJiB0ZQogICAgICAgICAmJiBleHBvc2VkRWRnZXMgPT0gQWxsRWRnZXMK
ICAgICAgICAgJiYgIW1vZGVsVmlld01hdHJpeC5tYXBRdWFkKHRhcmdldFJlY3QpLmlzUmVjdGls
aW5lYXIoKTsKIAotICAgIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlv
bnMgPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZTsKKyAgICBUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbTo6T3B0aW9ucyBvcHRpb25zID0gVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW06OlRleHR1cmVSR0I7CiAgICAgaWYgKHVzZVJlY3QpCiAgICAgICAgIG9wdGlvbnMgfD0g
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlJlY3Q7CiAgICAgaWYgKG9wYWNpdHkgPCAxKQpA
QCAtNTA0LDYgKzUwNCwxNzMgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKEdM
dWludCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGUKICAgICBkcmF3VGV4
dHVyZWRRdWFkV2l0aFByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgdGV4dHVyZSwgZmxhZ3MsIHRleHR1
cmVTaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkpOwogfQogCitzdGF0
aWMgdm9pZCBwcmVwYXJlVHJhbnNmb3JtYXRpb25NYXRyaXhXaXRoRmxhZ3MoVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHBhdHRlcm5UcmFuc2Zvcm0sIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3Ms
IGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgaWYgKGZsYWdzICYgVGV4dHVyZU1hcHBlckdM
OjpTaG91bGRSb3RhdGVUZXh0dXJlOTApIHsKKyAgICAgICAgcGF0dGVyblRyYW5zZm9ybS5yb3Rh
dGUoLTkwKTsKKyAgICAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoLTEsIDApOworICAg
IH0KKyAgICBpZiAoZmxhZ3MgJiBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZFJvdGF0ZVRleHR1cmUx
ODApIHsKKyAgICAgICAgcGF0dGVyblRyYW5zZm9ybS5yb3RhdGUoMTgwKTsKKyAgICAgICAgcGF0
dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoLTEsIC0xKTsKKyAgICB9CisgICAgaWYgKGZsYWdzICYg
VGV4dHVyZU1hcHBlckdMOjpTaG91bGRSb3RhdGVUZXh0dXJlMjcwKSB7CisgICAgICAgIHBhdHRl
cm5UcmFuc2Zvcm0ucm90YXRlKC0yNzApOworICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5z
bGF0ZSgwLCAtMSk7CisgICAgfQorICAgIGlmIChmbGFncyAmIFRleHR1cmVNYXBwZXJHTDo6U2hv
dWxkRmxpcFRleHR1cmUpCisgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0uZmxpcFkoKTsKKyAgICBp
ZiAoZmxhZ3MgJiBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZFVzZUFSQlRleHR1cmVSZWN0KQorICAg
ICAgICBwYXR0ZXJuVHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybShzaXplLndpZHRoKCksIHNpemUu
aGVpZ2h0KCkpOworICAgIGlmIChmbGFncyAmIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkRmxpcFRl
eHR1cmUpCisgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAsIC0xKTsKK30KKwor
dm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlUGxhbmFyWVVWKGNvbnN0IHN0ZDo6YXJy
YXk8R0x1aW50LCAzPiYgdGV4dHVyZXMsIGNvbnN0IHN0ZDo6YXJyYXk8R0xmbG9hdCwgOT4mIHl1
dlRvUmdiTWF0cml4LCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1v
ZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKQorewor
ICAgIGJvb2wgdXNlUmVjdCA9IGZsYWdzICYgU2hvdWxkVXNlQVJCVGV4dHVyZVJlY3Q7CisgICAg
Ym9vbCB1c2VBbnRpYWxpYXNpbmcgPSBtX2VuYWJsZUVkZ2VEaXN0YW5jZUFudGlhbGlhc2luZwor
ICAgICAgICAmJiBleHBvc2VkRWRnZXMgPT0gQWxsRWRnZXMKKyAgICAgICAgJiYgIW1vZGVsVmll
d01hdHJpeC5tYXBRdWFkKHRhcmdldFJlY3QpLmlzUmVjdGlsaW5lYXIoKTsKKworICAgIFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnMgPSBUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbTo6VGV4dHVyZVlVVjsKKyAgICBpZiAodXNlUmVjdCkKKyAgICAgICAgb3B0aW9u
cyB8PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6UmVjdDsKKyAgICBpZiAob3BhY2l0eSA8
IDEpCisgICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9wYWNp
dHk7CisgICAgaWYgKHVzZUFudGlhbGlhc2luZykgeworICAgICAgICBvcHRpb25zIHw9IFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpBbnRpYWxpYXNpbmc7CisgICAgICAgIGZsYWdzIHw9IFNo
b3VsZEFudGlhbGlhczsKKyAgICB9CisgICAgaWYgKHdyYXBNb2RlKCkgPT0gUmVwZWF0V3JhcCAm
JiAhbV9jb250ZXh0QXR0cmlidXRlcy5zdXBwb3J0c05QT1RUZXh0dXJlcykKKyAgICAgICAgb3B0
aW9ucyB8PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6TWFudWFsUmVwZWF0OworCisgICAg
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gZmlsdGVyID0gZGF0YSgpLmZpbHRlckluZm8gPyBkYXRh
KCkuZmlsdGVySW5mby0+ZmlsdGVyOiAwOworICAgIEdMdWludCBmaWx0ZXJDb250ZW50VGV4dHVy
ZUlEID0gMDsKKworICAgIGlmIChmaWx0ZXIpIHsKKyAgICAgICAgaWYgKGRhdGEoKS5maWx0ZXJJ
bmZvLT5jb250ZW50VGV4dHVyZSkKKyAgICAgICAgICAgIGZpbHRlckNvbnRlbnRUZXh0dXJlSUQg
PSB0b0JpdG1hcFRleHR1cmVHTChkYXRhKCkuZmlsdGVySW5mby0+Y29udGVudFRleHR1cmUuZ2V0
KCkpLT5pZCgpOworICAgICAgICBvcHRpb25zIHw9IG9wdGlvbnNGb3JGaWx0ZXJUeXBlKGZpbHRl
ci0+dHlwZSgpLCBkYXRhKCkuZmlsdGVySW5mby0+cGFzcyk7CisgICAgICAgIGlmIChmaWx0ZXIt
PmFmZmVjdHNPcGFjaXR5KCkpCisgICAgICAgICAgICBmbGFncyB8PSBTaG91bGRCbGVuZDsKKyAg
ICB9CisKKyAgICBpZiAodXNlQW50aWFsaWFzaW5nIHx8IG9wYWNpdHkgPCAxKQorICAgICAgICBm
bGFncyB8PSBTaG91bGRCbGVuZDsKKworICAgIFJlZjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bT4gcHJvZ3JhbSA9IGRhdGEoKS5nZXRTaGFkZXJQcm9ncmFtKG9wdGlvbnMpOworCisgICAgaWYg
KGZpbHRlcikKKyAgICAgICAgcHJlcGFyZUZpbHRlclByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgKmZp
bHRlci5nZXQoKSwgZGF0YSgpLmZpbHRlckluZm8tPnBhc3MsIHRleHR1cmVTaXplLCBmaWx0ZXJD
b250ZW50VGV4dHVyZUlEKTsKKworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxHTHVpbnQsIEdM
dWludD4gPiB0ZXh0dXJlc0FuZFNhbXBsZXJzID0geworICAgICAgICB7IHRleHR1cmVzWzBdLCBw
cm9ncmFtLT5zYW1wbGVyWUxvY2F0aW9uKCkgfSwKKyAgICAgICAgeyB0ZXh0dXJlc1sxXSwgcHJv
Z3JhbS0+c2FtcGxlclVMb2NhdGlvbigpIH0sCisgICAgICAgIHsgdGV4dHVyZXNbMl0sIHByb2dy
YW0tPnNhbXBsZXJWTG9jYXRpb24oKSB9CisgICAgfTsKKworICAgIGdsVXNlUHJvZ3JhbShwcm9n
cmFtLT5wcm9ncmFtSUQoKSk7CisgICAgZ2xVbmlmb3JtTWF0cml4M2Z2KHByb2dyYW0tPnl1dlRv
UmdiTG9jYXRpb24oKSwgMSwgR0xfRkFMU0UsIHN0YXRpY19jYXN0PGNvbnN0IEdMZmxvYXQgKj4o
Jnl1dlRvUmdiTWF0cml4WzBdKSk7CisgICAgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKHBy
b2dyYW0uZ2V0KCksIHRleHR1cmVzQW5kU2FtcGxlcnMsIGZsYWdzLCB0ZXh0dXJlU2l6ZSwgdGFy
Z2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsKK30KKwordm9pZCBUZXh0dXJlTWFw
cGVyR0w6OmRyYXdUZXh0dXJlU2VtaVBsYW5hcllVVihjb25zdCBzdGQ6OmFycmF5PEdMdWludCwg
Mj4mIHRleHR1cmVzLCBib29sIHV2UmV2ZXJzZWQsIGNvbnN0IHN0ZDo6YXJyYXk8R0xmbG9hdCwg
OT4mIHl1dlRvUmdiTWF0cml4LCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2Vz
KQoreworICAgIGJvb2wgdXNlUmVjdCA9IGZsYWdzICYgU2hvdWxkVXNlQVJCVGV4dHVyZVJlY3Q7
CisgICAgYm9vbCB1c2VBbnRpYWxpYXNpbmcgPSBtX2VuYWJsZUVkZ2VEaXN0YW5jZUFudGlhbGlh
c2luZworICAgICAgICAmJiBleHBvc2VkRWRnZXMgPT0gQWxsRWRnZXMKKyAgICAgICAgJiYgIW1v
ZGVsVmlld01hdHJpeC5tYXBRdWFkKHRhcmdldFJlY3QpLmlzUmVjdGlsaW5lYXIoKTsKKworICAg
IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnMgPSB1dlJldmVyc2Vk
ID8KKyAgICAgICAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVOVjIxIDogVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVOVjEyOworICAgIGlmICh1c2VSZWN0KQor
ICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpSZWN0OworICAg
IGlmIChvcGFjaXR5IDwgMSkKKyAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJlTWFwcGVyU2hhZGVy
UHJvZ3JhbTo6T3BhY2l0eTsKKyAgICBpZiAodXNlQW50aWFsaWFzaW5nKSB7CisgICAgICAgIG9w
dGlvbnMgfD0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkFudGlhbGlhc2luZzsKKyAgICAg
ICAgZmxhZ3MgfD0gU2hvdWxkQW50aWFsaWFzOworICAgIH0KKyAgICBpZiAod3JhcE1vZGUoKSA9
PSBSZXBlYXRXcmFwICYmICFtX2NvbnRleHRBdHRyaWJ1dGVzLnN1cHBvcnRzTlBPVFRleHR1cmVz
KQorICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpNYW51YWxS
ZXBlYXQ7CisKKyAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBmaWx0ZXIgPSBkYXRhKCkuZmls
dGVySW5mbyA/IGRhdGEoKS5maWx0ZXJJbmZvLT5maWx0ZXI6IDA7CisgICAgR0x1aW50IGZpbHRl
ckNvbnRlbnRUZXh0dXJlSUQgPSAwOworCisgICAgaWYgKGZpbHRlcikgeworICAgICAgICBpZiAo
ZGF0YSgpLmZpbHRlckluZm8tPmNvbnRlbnRUZXh0dXJlKQorICAgICAgICAgICAgZmlsdGVyQ29u
dGVudFRleHR1cmVJRCA9IHRvQml0bWFwVGV4dHVyZUdMKGRhdGEoKS5maWx0ZXJJbmZvLT5jb250
ZW50VGV4dHVyZS5nZXQoKSktPmlkKCk7CisgICAgICAgIG9wdGlvbnMgfD0gb3B0aW9uc0ZvckZp
bHRlclR5cGUoZmlsdGVyLT50eXBlKCksIGRhdGEoKS5maWx0ZXJJbmZvLT5wYXNzKTsKKyAgICAg
ICAgaWYgKGZpbHRlci0+YWZmZWN0c09wYWNpdHkoKSkKKyAgICAgICAgICAgIGZsYWdzIHw9IFNo
b3VsZEJsZW5kOworICAgIH0KKworICAgIGlmICh1c2VBbnRpYWxpYXNpbmcgfHwgb3BhY2l0eSA8
IDEpCisgICAgICAgIGZsYWdzIHw9IFNob3VsZEJsZW5kOworCisgICAgUmVmPFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtPiBwcm9ncmFtID0gZGF0YSgpLmdldFNoYWRlclByb2dyYW0ob3B0aW9u
cyk7CisKKyAgICBpZiAoZmlsdGVyKQorICAgICAgICBwcmVwYXJlRmlsdGVyUHJvZ3JhbShwcm9n
cmFtLmdldCgpLCAqZmlsdGVyLmdldCgpLCBkYXRhKCkuZmlsdGVySW5mby0+cGFzcywgdGV4dHVy
ZVNpemUsIGZpbHRlckNvbnRlbnRUZXh0dXJlSUQpOworCisgICAgc3RkOjp2ZWN0b3I8c3RkOjpw
YWlyPEdMdWludCwgR0x1aW50PiA+IHRleHR1cmVzQW5kU2FtcGxlcnMgPSB7CisgICAgICAgIHsg
dGV4dHVyZXNbMF0sIHByb2dyYW0tPnNhbXBsZXJZTG9jYXRpb24oKSB9LAorICAgICAgICB7IHRl
eHR1cmVzWzFdLCBwcm9ncmFtLT5zYW1wbGVyVUxvY2F0aW9uKCkgfQorICAgIH07CisKKyAgICBn
bFVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbUlEKCkpOworICAgIGdsVW5pZm9ybU1hdHJpeDNm
dihwcm9ncmFtLT55dXZUb1JnYkxvY2F0aW9uKCksIDEsIEdMX0ZBTFNFLCBzdGF0aWNfY2FzdDxj
b25zdCBHTGZsb2F0ICo+KCZ5dXZUb1JnYk1hdHJpeFswXSkpOworICAgIGRyYXdUZXh0dXJlZFF1
YWRXaXRoUHJvZ3JhbShwcm9ncmFtLmdldCgpLCB0ZXh0dXJlc0FuZFNhbXBsZXJzLCBmbGFncywg
dGV4dHVyZVNpemUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7Cit9CisK
K3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVBhY2tlZFlVVihHTHVpbnQgdGV4dHVy
ZSwgY29uc3Qgc3RkOjphcnJheTxHTGZsb2F0LCA5PiYgeXV2VG9SZ2JNYXRyaXgsIEZsYWdzIGZs
YWdzLCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBv
cGFjaXR5LCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpCit7CisgICAgYm9vbCB1c2VSZWN0ID0gZmxh
Z3MgJiBTaG91bGRVc2VBUkJUZXh0dXJlUmVjdDsKKyAgICBib29sIHVzZUFudGlhbGlhc2luZyA9
IG1fZW5hYmxlRWRnZURpc3RhbmNlQW50aWFsaWFzaW5nCisgICAgICAgICYmIGV4cG9zZWRFZGdl
cyA9PSBBbGxFZGdlcworICAgICAgICAmJiAhbW9kZWxWaWV3TWF0cml4Lm1hcFF1YWQodGFyZ2V0
UmVjdCkuaXNSZWN0aWxpbmVhcigpOworCisgICAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06
Ok9wdGlvbnMgb3B0aW9ucyA9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlUGFj
a2VkWVVWOworICAgIGlmICh1c2VSZWN0KQorICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtOjpSZWN0OworICAgIGlmIChvcGFjaXR5IDwgMSkKKyAgICAgICAgb3B0
aW9ucyB8PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3BhY2l0eTsKKyAgICBpZiAodXNl
QW50aWFsaWFzaW5nKSB7CisgICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW06OkFudGlhbGlhc2luZzsKKyAgICAgICAgZmxhZ3MgfD0gU2hvdWxkQW50aWFsaWFzOwor
ICAgIH0KKyAgICBpZiAod3JhcE1vZGUoKSA9PSBSZXBlYXRXcmFwICYmICFtX2NvbnRleHRBdHRy
aWJ1dGVzLnN1cHBvcnRzTlBPVFRleHR1cmVzKQorICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtOjpNYW51YWxSZXBlYXQ7CisKKyAgICBSZWZQdHI8RmlsdGVyT3Bl
cmF0aW9uPiBmaWx0ZXIgPSBkYXRhKCkuZmlsdGVySW5mbyA/IGRhdGEoKS5maWx0ZXJJbmZvLT5m
aWx0ZXI6IDA7CisgICAgR0x1aW50IGZpbHRlckNvbnRlbnRUZXh0dXJlSUQgPSAwOworCisgICAg
aWYgKGZpbHRlcikgeworICAgICAgICBpZiAoZGF0YSgpLmZpbHRlckluZm8tPmNvbnRlbnRUZXh0
dXJlKQorICAgICAgICAgICAgZmlsdGVyQ29udGVudFRleHR1cmVJRCA9IHRvQml0bWFwVGV4dHVy
ZUdMKGRhdGEoKS5maWx0ZXJJbmZvLT5jb250ZW50VGV4dHVyZS5nZXQoKSktPmlkKCk7CisgICAg
ICAgIG9wdGlvbnMgfD0gb3B0aW9uc0ZvckZpbHRlclR5cGUoZmlsdGVyLT50eXBlKCksIGRhdGEo
KS5maWx0ZXJJbmZvLT5wYXNzKTsKKyAgICAgICAgaWYgKGZpbHRlci0+YWZmZWN0c09wYWNpdHko
KSkKKyAgICAgICAgICAgIGZsYWdzIHw9IFNob3VsZEJsZW5kOworICAgIH0KKworICAgIGlmICh1
c2VBbnRpYWxpYXNpbmcgfHwgb3BhY2l0eSA8IDEpCisgICAgICAgIGZsYWdzIHw9IFNob3VsZEJs
ZW5kOworCisgICAgUmVmPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBwcm9ncmFtID0gZGF0
YSgpLmdldFNoYWRlclByb2dyYW0ob3B0aW9ucyk7CisKKyAgICBpZiAoZmlsdGVyKQorICAgICAg
ICBwcmVwYXJlRmlsdGVyUHJvZ3JhbShwcm9ncmFtLmdldCgpLCAqZmlsdGVyLmdldCgpLCBkYXRh
KCkuZmlsdGVySW5mby0+cGFzcywgdGV4dHVyZVNpemUsIGZpbHRlckNvbnRlbnRUZXh0dXJlSUQp
OworCisgICAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPEdMdWludCwgR0x1aW50PiA+IHRleHR1cmVz
QW5kU2FtcGxlcnMgPSB7CisgICAgICAgIHsgdGV4dHVyZSwgcHJvZ3JhbS0+c2FtcGxlckxvY2F0
aW9uKCkgfQorICAgIH07CisKKyAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbUlEKCkp
OworICAgIGdsVW5pZm9ybU1hdHJpeDNmdihwcm9ncmFtLT55dXZUb1JnYkxvY2F0aW9uKCksIDEs
IEdMX0ZBTFNFLCBzdGF0aWNfY2FzdDxjb25zdCBHTGZsb2F0ICo+KCZ5dXZUb1JnYk1hdHJpeFsw
XSkpOworICAgIGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShwcm9ncmFtLmdldCgpLCB0ZXh0
dXJlc0FuZFNhbXBsZXJzLCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdldFJlY3QsIG1vZGVsVmll
d01hdHJpeCwgb3BhY2l0eSk7Cit9CisKIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3U29saWRD
b2xvcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
YXRyaXgsIGNvbnN0IENvbG9yJiBjb2xvciwgYm9vbCBpc0JsZW5kaW5nQWxsb3dlZCkKIHsKICAg
ICBGbGFncyBmbGFncyA9IDA7CkBAIC02MDEsMzcgKzc2OCwyNyBAQCB2b2lkIFRleHR1cmVNYXBw
ZXJHTDo6ZHJhdyhjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBtbwogICAgIGdsRW5hYmxlKEdMX0JMRU5EKTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVy
R0w6OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bSYgcHJvZ3JhbSwgdWludDMyX3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUm
IHNpemUsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSkKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpk
cmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0mIHBy
b2dyYW0sIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxHTHVpbnQsIEdMdWludD4gPiYgdGV4
dHVyZXNBbmRTYW1wbGVycywgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01h
dHJpeCwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbS5wcm9ncmFt
SUQoKSk7Ci0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKworICAgIGJvb2wgcmVw
ZWF0V3JhcCA9IHdyYXBNb2RlKCkgPT0gUmVwZWF0V3JhcCAmJiBtX2NvbnRleHRBdHRyaWJ1dGVz
LnN1cHBvcnRzTlBPVFRleHR1cmVzOwogICAgIEdMZW51bSB0YXJnZXQgPSBmbGFncyAmIFNob3Vs
ZFVzZUFSQlRleHR1cmVSZWN0ID8gR0xlbnVtKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FSQikgOiBH
TGVudW0oR0xfVEVYVFVSRV8yRCk7Ci0gICAgZ2xCaW5kVGV4dHVyZSh0YXJnZXQsIHRleHR1cmUp
OwotICAgIGdsVW5pZm9ybTFpKHByb2dyYW0uc2FtcGxlckxvY2F0aW9uKCksIDApOwotICAgIGlm
ICh3cmFwTW9kZSgpID09IFJlcGVhdFdyYXAgJiYgbV9jb250ZXh0QXR0cmlidXRlcy5zdXBwb3J0
c05QT1RUZXh0dXJlcykgewotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9XUkFQX1MsIEdMX1JFUEVBVCk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfUkVQRUFUKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgdGV4dHVyZXNBbmRTYW1wbGVycy5zaXplKCk7ICsraSkgeworICAg
ICAgICBhdXRvJiB0ZXh0dXJlQW5kU2FtcGxlciA9IHRleHR1cmVzQW5kU2FtcGxlcnNbaV07CisK
KyAgICAgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwICsgaSk7CisgICAgICAgIGdsQmlu
ZFRleHR1cmUodGFyZ2V0LCB0ZXh0dXJlQW5kU2FtcGxlci5maXJzdCk7CisgICAgICAgIGdsVW5p
Zm9ybTFpKHRleHR1cmVBbmRTYW1wbGVyLnNlY29uZCwgaSk7CisKKyAgICAgICAgaWYgKHJlcGVh
dFdyYXApIHsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX1dSQVBfUywgR0xfUkVQRUFUKTsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfUkVQRUFUKTsKKyAgICAgICAgfQog
ICAgIH0KIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHBhdHRlcm5UcmFuc2Zvcm0gPSB0aGlz
LT5wYXR0ZXJuVHJhbnNmb3JtKCk7Ci0gICAgaWYgKGZsYWdzICYgU2hvdWxkUm90YXRlVGV4dHVy
ZTkwKSB7Ci0gICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0ucm90YXRlKC05MCk7Ci0gICAgICAgIHBh
dHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKC0xLCAwKTsKLSAgICB9Ci0gICAgaWYgKGZsYWdzICYg
U2hvdWxkUm90YXRlVGV4dHVyZTE4MCkgewotICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnJvdGF0
ZSgxODApOwotICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMSwgLTEpOwotICAg
IH0KLSAgICBpZiAoZmxhZ3MgJiBTaG91bGRSb3RhdGVUZXh0dXJlMjcwKSB7Ci0gICAgICAgIHBh
dHRlcm5UcmFuc2Zvcm0ucm90YXRlKC0yNzApOwotICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRy
YW5zbGF0ZSgwLCAtMSk7Ci0gICAgfQotICAgIGlmIChmbGFncyAmIFNob3VsZEZsaXBUZXh0dXJl
KQotICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLmZsaXBZKCk7Ci0gICAgaWYgKGZsYWdzICYgU2hv
dWxkVXNlQVJCVGV4dHVyZVJlY3QpCi0gICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0uc2NhbGVOb25V
bmlmb3JtKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgaWYgKGZsYWdzICYgU2hv
dWxkRmxpcFRleHR1cmUpCi0gICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAsIC0x
KTsKKyAgICBwcmVwYXJlVHJhbnNmb3JtYXRpb25NYXRyaXhXaXRoRmxhZ3MocGF0dGVyblRyYW5z
Zm9ybSwgZmxhZ3MsIHNpemUpOwogCiAgICAgcHJvZ3JhbS5zZXRNYXRyaXgocHJvZ3JhbS50ZXh0
dXJlU3BhY2VNYXRyaXhMb2NhdGlvbigpLCBwYXR0ZXJuVHJhbnNmb3JtKTsKICAgICBwcm9ncmFt
LnNldE1hdHJpeChwcm9ncmFtLnRleHR1cmVDb2xvclNwYWNlTWF0cml4TG9jYXRpb24oKSwgY29s
b3JTcGFjZU1hdHJpeEZvckZsYWdzKGZsYWdzKSk7CkBAIC02NDEsOCArNzk4LDIwIEBAIHZvaWQg
VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW0mIHByCiAgICAgICAgIGZsYWdzIHw9IFNob3VsZEJsZW5kOwogCiAgICAg
ZHJhdyhyZWN0LCBtb2RlbFZpZXdNYXRyaXgsIHByb2dyYW0sIEdMX1RSSUFOR0xFX0ZBTiwgZmxh
Z3MpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBf
UywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKworICAgIGlmIChyZXBlYXRX
cmFwKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0ZXh0dXJlc0FuZFNhbXBs
ZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBhdXRvJiB0ZXh0dXJlQW5kU2FtcGxlciA9
IHRleHR1cmVzQW5kU2FtcGxlcnNbaV07CisgICAgICAgICAgICBnbEJpbmRUZXh0dXJlKHRhcmdl
dCwgdGV4dHVyZUFuZFNhbXBsZXIuZmlyc3QpOworICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAg
ICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBf
VCwgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgVGV4dHVy
ZU1hcHBlckdMOjpkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRl
clByb2dyYW0mIHByb2dyYW0sIHVpbnQzMl90IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJ
bnRTaXplJiBzaXplLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkpCit7CisgICAgZHJhd1RleHR1
cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0sIHsgeyB0ZXh0dXJlLCBwcm9ncmFtLnNhbXBsZXJM
b2NhdGlvbigpIH0gfSwgZmxhZ3MsIHNpemUsIHJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0
eSk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3RmlsdGVyZWQoY29uc3QgQml0bWFw
VGV4dHVyZSYgc2FtcGxlciwgY29uc3QgQml0bWFwVGV4dHVyZSogY29udGVudFRleHR1cmUsIGNv
bnN0IEZpbHRlck9wZXJhdGlvbiYgZmlsdGVyLCBpbnQgcGFzcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaApp
bmRleCBjYTA1NmFmNjYwMzBlZDFlZWQ5MmZhNWMyYTI4ZGE5MGNiMzRlYjZhLi40YzFiNTExODNj
YWUxMzNkNGRlN2IwNWM3NjA3OWIwNzk4MWIxZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCkBAIC0z
MCw2ICszMCw4IEBACiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzLmgi
CiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMSGVhZGVycy5oIgogI2luY2x1ZGUgIlRyYW5zZm9y
bWF0aW9uTWF0cml4LmgiCisjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8dmVjdG9yPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY0LDYgKzY2LDkgQEAgcHVibGljOgogICAgIHZvaWQg
ZHJhd051bWJlcihpbnQgbnVtYmVyLCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1RleHR1
cmUoY29uc3QgQml0bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoR0x1aW50IHRleHR1cmUsIEZsYWdz
LCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFj
aXR5LCB1bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcyk7CisgICAgdm9pZCBkcmF3VGV4
dHVyZVBsYW5hcllVVihjb25zdCBzdGQ6OmFycmF5PEdMdWludCwgMz4mIHRleHR1cmVzLCBjb25z
dCBzdGQ6OmFycmF5PEdMZmxvYXQsIDk+JiB5dXZUb1JnYk1hdHJpeCwgRmxhZ3MsIGNvbnN0IElu
dFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2ln
bmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKTsKKyAgICB2b2lkIGRyYXdUZXh0dXJlU2VtaVBs
YW5hcllVVihjb25zdCBzdGQ6OmFycmF5PEdMdWludCwgMj4mIHRleHR1cmVzLCBib29sIHV2UmV2
ZXJzZWQsIGNvbnN0IHN0ZDo6YXJyYXk8R0xmbG9hdCwgOT4mIHl1dlRvUmdiTWF0cml4LCBGbGFn
cywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVj
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3Bh
Y2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpOworICAgIHZvaWQgZHJhd1Rl
eHR1cmVQYWNrZWRZVVYoR0x1aW50IHRleHR1cmUsIGNvbnN0IHN0ZDo6YXJyYXk8R0xmbG9hdCwg
OT4mIHl1dlRvUmdiTWF0cml4LCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1v
ZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxs
RWRnZXMpOwogICAgIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYsIGJvb2wpIG92ZXJyaWRlOwogICAg
IHZvaWQgY2xlYXJDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwogCkBAIC04NCw2ICs4OSw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJv
Z3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSYsIHVpbnQzMl90IHRleHR1cmUsIEZsYWdz
LCBjb25zdCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSk7CisgICAgdm9pZCBkcmF3VGV4
dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0mLCBjb25zdCBz
dGQ6OnZlY3RvcjxzdGQ6OnBhaXI8R0x1aW50LCBHTHVpbnQ+ID4mIHRleHR1cmVzQW5kU2FtcGxl
cnMsIEZsYWdzLCBjb25zdCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSk7CiAgICAgdm9p
ZCBkcmF3KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2Rl
bFZpZXdNYXRyaXgsIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtJiwgR0xlbnVtIGRyYXdpbmdN
b2RlLCBGbGFncyk7CiAKICAgICB2b2lkIGRyYXdVbml0UmVjdChUZXh0dXJlTWFwcGVyU2hhZGVy
UHJvZ3JhbSYsIEdMZW51bSBkcmF3aW5nTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAppbmRleCBlMTFhMGJiMjdiODEwYzJkNTI3NmIy
YTliMGM1MDlmODg5NTA2NmMwLi4zM2VjZGFiYzFiZjFjMjEwYzZmNDZjMzhiM2JiMjYwZTI3ZDU2
MTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5jcHAKQEAgLTM1LDE0ICszNSwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cihSZWZQdHI8Qml0bWFwVGV4dHVyZT4mJiB0ZXh0dXJlLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdz
IGZsYWdzKQogICAgIDogbV90ZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpCi0gICAgLCBtX3RleHR1
cmVJRCgwKQorICAgICwgbV92YXJpYW50KFJHQlRleHR1cmUgeyAwIH0pCiAgICAgLCBtX2V4dHJh
RmxhZ3MoZmxhZ3MpCiAgICAgLCBtX2hhc01hbmFnZWRUZXh0dXJlKHRydWUpCiB7CiB9CiAKIFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcihHTHVpbnQgdGV4dHVyZUlELCBjb25zdCBJbnRTaXplJiBzaXplLCBUZXh0dXJlTWFw
cGVyR0w6OkZsYWdzIGZsYWdzLCBHTGludCBpbnRlcm5hbEZvcm1hdCkKLSAgICA6IG1fdGV4dHVy
ZUlEKHRleHR1cmVJRCkKKyAgICA6IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKHsg
UkdCVGV4dHVyZSB7IHRleHR1cmVJRCB9IH0sIHNpemUsIGZsYWdzLCBpbnRlcm5hbEZvcm1hdCkK
K3sKK30KKworVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OlRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyKFRleHR1cmVWYXJpYW50JiYgdmFyaWFudCwgY29uc3QgSW50U2l6
ZSYgc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncywgR0xpbnQgaW50ZXJuYWxGb3Jt
YXQpCisgICAgOiBtX3ZhcmlhbnQoV1RGTW92ZSh2YXJpYW50KSkKICAgICAsIG1fc2l6ZShzaXpl
KQogICAgICwgbV9pbnRlcm5hbEZvcm1hdChpbnRlcm5hbEZvcm1hdCkKICAgICAsIG1fZXh0cmFG
bGFncyhmbGFncykKQEAgLTUwLDYgKzU1LDEwIEBAIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihHTHVpbnQgdGV4dHVyCiB7
CiB9CiAKK1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjp+VGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXIoKQoreworfQorCiBib29sIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyOjpjYW5SZXVzZVdpdGhvdXRSZXNldChjb25zdCBJbnRTaXplJiBzaXplLCBHTGlu
dCBpbnRlcm5hbEZvcm1hdCkKIHsKICAgICByZXR1cm4gbV90ZXh0dXJlICYmIChtX3RleHR1cmUt
PnNpemUoKSA9PSBzaXplKSAmJiAoc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMKj4obV90ZXh0
dXJlLmdldCgpKS0+aW50ZXJuYWxGb3JtYXQoKSA9PSBpbnRlcm5hbEZvcm1hdCB8fCBpbnRlcm5h
bEZvcm1hdCA9PSBHTF9ET05UX0NBUkUpOwpAQCAtNTcsMTQgKzY2LDI4IEBAIGJvb2wgVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OmNhblJldXNlV2l0aG91dFJlc2V0KGNvbnN0IElu
dFNpemUmIHNpemUsCiAKIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OmNsb25lKCkKIHsKLSAg
ICBpZiAobV9oYXNNYW5hZ2VkVGV4dHVyZSB8fCAhbV90ZXh0dXJlSUQpIHsKKyAgICBpZiAobV9o
YXNNYW5hZ2VkVGV4dHVyZSkgewogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgYXV0byB0ZXh0dXJlID0gQml0bWFwVGV4dHVyZUdM
OjpjcmVhdGUoVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOjpnZXQoKSwgbV9pbnRlcm5h
bEZvcm1hdCk7Ci0gICAgdGV4dHVyZS0+cmVzZXQobV9zaXplKTsKLSAgICBzdGF0aWNfY2FzdDxC
aXRtYXBUZXh0dXJlR0wmPih0ZXh0dXJlLmdldCgpKS5jb3B5RnJvbUV4dGVybmFsVGV4dHVyZSht
X3RleHR1cmVJRCk7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXI+KFdURk1vdmUodGV4dHVyZSksIG1fZXh0cmFGbGFncyk7CisKKyAgICByZXR1
cm4gV1RGOjpzd2l0Y2hPbihtX3ZhcmlhbnQsCisgICAgICAgIFsmXShjb25zdCBSR0JUZXh0dXJl
JiB0ZXh0dXJlKSBtdXRhYmxlIC0+IHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcj4geworICAgICAgICAgICAgaWYgKCF0ZXh0dXJlLmlkKSB7CisgICAgICAg
ICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXV0byBjbG9uZWRUZXh0dXJlID0gQml0
bWFwVGV4dHVyZUdMOjpjcmVhdGUoVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOjpnZXQo
KSwgbV9pbnRlcm5hbEZvcm1hdCk7CisgICAgICAgICAgICBjbG9uZWRUZXh0dXJlLT5yZXNldCht
X3NpemUpOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4oY2xvbmVk
VGV4dHVyZS5nZXQoKSkuY29weUZyb21FeHRlcm5hbFRleHR1cmUodGV4dHVyZS5pZCk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cj4oV1RGTW92ZShjbG9uZWRUZXh0dXJlKSwgbV9leHRyYUZsYWdzKTsKKyAgICAgICAgfSwKKyAg
ICAgICAgW10oY29uc3QgWVVWVGV4dHVyZSYpCisgICAgICAgIHsKKyAgICAgICAgICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfSk7CiB9
CiAKIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnBhaW50VG9UZXh0dXJl
TWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFy
Z2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxv
YXQgb3BhY2l0eSkKQEAgLTg2LDggKzEwOSwzNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiB0ZXh0dQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKG1fdGV4dHVyZUlEKTsKLSAgICB0
ZXhtYXBHTC5kcmF3VGV4dHVyZShtX3RleHR1cmVJRCwgbV9leHRyYUZsYWdzLCBtX3NpemUsIHRh
cmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7CisgICAgaWYgKG1fdW5tYW5hZ2Vk
QnVmZmVyRGF0YUhvbGRlcikKKyAgICAgICAgbV91bm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVyLT5T
eW5jV2FpdENQVSgpOworCisgICAgV1RGOjpzd2l0Y2hPbihtX3ZhcmlhbnQsCisgICAgICAgIFsm
XShjb25zdCBSR0JUZXh0dXJlJiB0ZXh0dXJlKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NF
UlQodGV4dHVyZS5pZCk7CisgICAgICAgICAgICB0ZXhtYXBHTC5kcmF3VGV4dHVyZSh0ZXh0dXJl
LmlkLCBtX2V4dHJhRmxhZ3MsIG1fc2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBv
cGFjaXR5KTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdKGNvbnN0IFlVVlRleHR1cmUmIHRleHR1
cmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAodGV4dHVyZS5uUGxhbmVzKSB7Cisg
ICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUueXV2UGxh
bmVbMF0gPT0gdGV4dHVyZS55dXZQbGFuZVsxXSAmJiB0ZXh0dXJlLnl1dlBsYW5lWzFdID09IHRl
eHR1cmUueXV2UGxhbmVbMl0pOworICAgICAgICAgICAgICAgIEFTU0VSVCh0ZXh0dXJlLnl1dlBP
ZmZzZXRbMF0gPT0gMiAmJiB0ZXh0dXJlLnl1dlBPZmZzZXRbMV0gPT0gMSAmJiAhdGV4dHVyZS55
dXZQT2Zmc2V0WzJdKTsKKyAgICAgICAgICAgICAgICB0ZXhtYXBHTC5kcmF3VGV4dHVyZVBhY2tl
ZFlVVih0ZXh0dXJlLnBsYW5lc1t0ZXh0dXJlLnl1dlBsYW5lWzBdXSwKKyAgICAgICAgICAgICAg
ICAgICAgdGV4dHVyZS55dXZUb1JnYk1hdHJpeCwgbV9leHRyYUZsYWdzLCBtX3NpemUsIHRhcmdl
dFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgQVNTRVJUKCF0ZXh0dXJlLnl1
dlBPZmZzZXRbMF0pOworICAgICAgICAgICAgICAgIHRleG1hcEdMLmRyYXdUZXh0dXJlU2VtaVBs
YW5hcllVVihzdGQ6OmFycmF5PEdMdWludCwgMj4geyB0ZXh0dXJlLnBsYW5lc1t0ZXh0dXJlLnl1
dlBsYW5lWzBdXSwgdGV4dHVyZS5wbGFuZXNbdGV4dHVyZS55dXZQbGFuZVsxXV0gfSwgISF0ZXh0
dXJlLnl1dlBPZmZzZXRbMV0sCisgICAgICAgICAgICAgICAgICAgIHRleHR1cmUueXV2VG9SZ2JN
YXRyaXgsIG1fZXh0cmFGbGFncywgbV9zaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgs
IG9wYWNpdHkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAzOgor
ICAgICAgICAgICAgICAgIEFTU0VSVCghdGV4dHVyZS55dXZQT2Zmc2V0WzBdICYmICF0ZXh0dXJl
Lnl1dlBPZmZzZXRbMV0gJiYgIXRleHR1cmUueXV2UE9mZnNldFsyXSk7CisgICAgICAgICAgICAg
ICAgdGV4bWFwR0wuZHJhd1RleHR1cmVQbGFuYXJZVVYoc3RkOjphcnJheTxHTHVpbnQsIDM+IHsg
dGV4dHVyZS5wbGFuZXNbdGV4dHVyZS55dXZQbGFuZVswXV0sIHRleHR1cmUucGxhbmVzW3RleHR1
cmUueXV2UGxhbmVbMV1dLCB0ZXh0dXJlLnBsYW5lc1t0ZXh0dXJlLnl1dlBsYW5lWzJdXSB9LAor
ICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLnl1dlRvUmdiTWF0cml4LCBtX2V4dHJhRmxhZ3Ms
IG1fc2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyLmgKaW5kZXggZDEwMGUyNGFkMTMxNjQ5Nzk0YjkwNjkyZTY2MTJhMzdhYjdjOWFlYi4u
NTY0Yjg4NTRhZmFlMDQ0Njk5NjA5ZTlhMjlkMDA2MTY2ODQ2MmViOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0xIZWFkZXJzLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzksOSAr
NDAsMjQgQEAgY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIgOiBwdWJsaWMg
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
KCk7CiBwdWJsaWM6CiAgICAgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoUmVmUHRy
PEJpdG1hcFRleHR1cmU+JiYsIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgPSAwKTsKKwogICAgIFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKEdMdWludCB0ZXh0dXJlSUQsIGNvbnN0IElu
dFNpemUmLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzLCBHTGludCBpbnRlcm5hbEZvcm1hdCk7CiAK
LSAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcigpID0gZGVmYXVs
dDsKKyAgICBzdHJ1Y3QgUkdCVGV4dHVyZSB7CisgICAgICAgIEdMdWludCBpZDsKKyAgICB9Owor
ICAgIHN0cnVjdCBZVVZUZXh0dXJlIHsKKyAgICAgICAgaW50IG5QbGFuZXM7CisgICAgICAgIHN0
ZDo6YXJyYXk8R0x1aW50LCAzPiBwbGFuZXM7CisgICAgICAgIHN0ZDo6YXJyYXk8aW50LCAzPiB5
dXZQbGFuZTsKKyAgICAgICAgc3RkOjphcnJheTxpbnQsIDM+IHl1dlBPZmZzZXQ7CisgICAgICAg
IHN0ZDo6YXJyYXk8R0xmbG9hdCwgOT4geXV2VG9SZ2JNYXRyaXg7CisgICAgfTsKKyAgICB1c2lu
ZyBUZXh0dXJlVmFyaWFudCA9IFdURjo6VmFyaWFudDxSR0JUZXh0dXJlLCBZVVZUZXh0dXJlPjsK
KworICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKFRleHR1cmVWYXJpYW50JiYs
IGNvbnN0IEludFNpemUmLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzLCBHTGludCBpbnRlcm5hbEZv
cm1hdCk7CisKKyAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcigp
OwogCiAgICAgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9
IFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGZsb2F0IG9wYWNpdHkgPSAxLjApIGZpbmFsOwogCkBA
IC01Nyw2ICs3Myw4IEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIFVubWFuYWdlZEJ1
ZmZlckRhdGFIb2xkZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAgIHZpcnR1YWwgflVubWFuYWdlZEJ1
ZmZlckRhdGFIb2xkZXIoKSA9IGRlZmF1bHQ7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIFN5bmNX
YWl0Q1BVKCk7CiAgICAgfTsKIAogICAgIGJvb2wgaGFzTWFuYWdlZFRleHR1cmUoKSBjb25zdCB7
IHJldHVybiBtX2hhc01hbmFnZWRUZXh0dXJlOyB9CkBAIC03OCw2ICs5Niw3IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IG1fdGV4dHVyZTsKICAgICBNb25vdG9uaWNUaW1l
IG1fdGltZUxhc3RVc2VkOwogCisgICAgVGV4dHVyZVZhcmlhbnQgbV92YXJpYW50OwogICAgIEdM
dWludCBtX3RleHR1cmVJRDsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBHTGludCBtX2ludGVy
bmFsRm9ybWF0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAKaW5k
ZXggZWI4Nzg4ZDRmZjVlODg5ZmJhZjQ2YzYwMTY5OTUzMDBhNzhkNzEwZC4uNWUwMjg0N2U0YWZl
YjBkOTRlMDc2MTQ5MzI1MWZiNWUyY2E3ZDZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW0uY3BwCkBAIC0yMDcsOSArMjA3LDEzIEBAIHN0YXRpYyBjb25zdCBjaGFy
KiBmcmFnbWVudFRlbXBsYXRlR0UzMjBWYXJzID0KIHN0YXRpYyBjb25zdCBjaGFyKiBmcmFnbWVu
dFRlbXBsYXRlQ29tbW9uID0KICAgICBTVFJJTkdJRlkoCiAgICAgICAgIHVuaWZvcm0gU2FtcGxl
clR5cGUgc19zYW1wbGVyOworICAgICAgICB1bmlmb3JtIFNhbXBsZXJUeXBlIHNfc2FtcGxlclk7
CisgICAgICAgIHVuaWZvcm0gU2FtcGxlclR5cGUgc19zYW1wbGVyVTsKKyAgICAgICAgdW5pZm9y
bSBTYW1wbGVyVHlwZSBzX3NhbXBsZXJWOwogICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBzX2Nv
bnRlbnRUZXh0dXJlOwogICAgICAgICB1bmlmb3JtIGZsb2F0IHVfb3BhY2l0eTsKICAgICAgICAg
dW5pZm9ybSBmbG9hdCB1X2ZpbHRlckFtb3VudDsKKyAgICAgICAgdW5pZm9ybSBtYXQzIHVfeXV2
VG9SZ2I7CiAgICAgICAgIHVuaWZvcm0gdmVjMiB1X2JsdXJSYWRpdXM7CiAgICAgICAgIHVuaWZv
cm0gdmVjMiB1X3NoYWRvd09mZnNldDsKICAgICAgICAgdW5pZm9ybSB2ZWM0IHVfY29sb3I7CkBA
IC0yMzEsNyArMjM1LDQxIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBmcmFnbWVudFRlbXBsYXRlQ29t
bW9uID0KIAogICAgICAgICB2b2lkIGFwcGx5TWFudWFsUmVwZWF0KGlub3V0IHZlYzIgcG9zKSB7
IHBvcyA9IGZyYWN0KHBvcyk7IH0KIAotICAgICAgICB2b2lkIGFwcGx5VGV4dHVyZShpbm91dCB2
ZWM0IGNvbG9yLCB2ZWMyIHRleENvb3JkKSB7IGNvbG9yID0gdV90ZXh0dXJlQ29sb3JTcGFjZU1h
dHJpeCAqIFNhbXBsZXJGdW5jdGlvbihzX3NhbXBsZXIsIHRleENvb3JkKTsgfQorICAgICAgICB2
b2lkIGFwcGx5VGV4dHVyZVJHQihpbm91dCB2ZWM0IGNvbG9yLCB2ZWMyIHRleENvb3JkKSB7IGNv
bG9yID0gdV90ZXh0dXJlQ29sb3JTcGFjZU1hdHJpeCAqIFNhbXBsZXJGdW5jdGlvbihzX3NhbXBs
ZXIsIHRleENvb3JkKTsgfQorCisgICAgICAgIHZlYzMgeXV2VG9SZ2IoZmxvYXQgeSwgZmxvYXQg
dSwgZmxvYXQgdikKKyAgICAgICAgeworICAgICAgICAgICAgLy8geXV2IGlzIGVpdGhlciBidDYw
MSBvciBidDcwOSBzbyB0aGUgb2Zmc2V0IGlzIHRoZSBzYW1lCisgICAgICAgICAgICB2ZWMzIHl1
diA9IHZlYzMoeSAtIDAuMDYyNSwgdSAtIDAuNSwgdiAtIDAuNSk7CisgICAgICAgICAgICByZXR1
cm4geXV2ICogdV95dXZUb1JnYjsKKyAgICAgICAgfQorICAgICAgICB2b2lkIGFwcGx5VGV4dHVy
ZVlVVihpbm91dCB2ZWM0IGNvbG9yLCB2ZWMyIHRleENvb3JkKQorICAgICAgICB7CisgICAgICAg
ICAgICBmbG9hdCB5ID0gU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlclksIHRleENvb3JkKS5yOwor
ICAgICAgICAgICAgZmxvYXQgdSA9IFNhbXBsZXJGdW5jdGlvbihzX3NhbXBsZXJVLCB0ZXhDb29y
ZCkucjsKKyAgICAgICAgICAgIGZsb2F0IHYgPSBTYW1wbGVyRnVuY3Rpb24oc19zYW1wbGVyViwg
dGV4Q29vcmQpLnI7CisgICAgICAgICAgICB2ZWM0IGRhdGEgPSB2ZWM0KHl1dlRvUmdiKHksIHUs
IHYpLCAxLjApOworICAgICAgICAgICAgY29sb3IgPSB1X3RleHR1cmVDb2xvclNwYWNlTWF0cml4
ICogZGF0YTsKKyAgICAgICAgfQorICAgICAgICB2b2lkIGFwcGx5VGV4dHVyZU5WMTIoaW5vdXQg
dmVjNCBjb2xvciwgdmVjMiB0ZXhDb29yZCkKKyAgICAgICAgeworICAgICAgICAgICAgZmxvYXQg
eSA9IFNhbXBsZXJGdW5jdGlvbihzX3NhbXBsZXJZLCB0ZXhDb29yZCkucjsKKyAgICAgICAgICAg
IHZlYzIgdXYgPSBTYW1wbGVyRnVuY3Rpb24oc19zYW1wbGVyVSwgdGV4Q29vcmQpLnJnOworICAg
ICAgICAgICAgdmVjNCBkYXRhID0gdmVjNCh5dXZUb1JnYih5LCB1di54LCB1di55KSwgMS4wKTsK
KyAgICAgICAgICAgIGNvbG9yID0gdV90ZXh0dXJlQ29sb3JTcGFjZU1hdHJpeCAqIGRhdGE7Cisg
ICAgICAgIH0KKyAgICAgICAgdm9pZCBhcHBseVRleHR1cmVOVjIxKGlub3V0IHZlYzQgY29sb3Is
IHZlYzIgdGV4Q29vcmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZsb2F0IHkgPSBTYW1wbGVy
RnVuY3Rpb24oc19zYW1wbGVyWSwgdGV4Q29vcmQpLnI7CisgICAgICAgICAgICB2ZWMyIHV2ID0g
U2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlclUsIHRleENvb3JkKS5ncjsKKyAgICAgICAgICAgIHZl
YzQgZGF0YSA9IHZlYzQoeXV2VG9SZ2IoeSwgdXYueCwgdXYueSksIDEuMCk7CisgICAgICAgICAg
ICBjb2xvciA9IHVfdGV4dHVyZUNvbG9yU3BhY2VNYXRyaXggKiBkYXRhOworICAgICAgICB9Cisg
ICAgICAgIHZvaWQgYXBwbHlUZXh0dXJlUGFja2VkWVVWKGlub3V0IHZlYzQgY29sb3IsIHZlYzIg
dGV4Q29vcmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZlYzQgZGF0YSA9IFNhbXBsZXJGdW5j
dGlvbihzX3NhbXBsZXIsIHRleENvb3JkKTsKKyAgICAgICAgICAgIGNvbG9yID0gdV90ZXh0dXJl
Q29sb3JTcGFjZU1hdHJpeCAqIHZlYzQoeXV2VG9SZ2IoZGF0YS5iLCBkYXRhLmcsIGRhdGEuciks
IGRhdGEuYSk7CisgICAgICAgIH0KICAgICAgICAgdm9pZCBhcHBseU9wYWNpdHkoaW5vdXQgdmVj
NCBjb2xvcikgeyBjb2xvciAqPSB1X29wYWNpdHk7IH0KICAgICAgICAgdm9pZCBhcHBseUFudGlh
bGlhc2luZyhpbm91dCB2ZWM0IGNvbG9yKSB7IGNvbG9yICo9IGFudGlhbGlhcygpOyB9CiAKQEAg
LTM0Myw3ICszODEsMTEgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGZyYWdtZW50VGVtcGxhdGVDb21t
b24gPQogICAgICAgICAgICAgdmVjNCBjb2xvciA9IHZlYzQoMS4sIDEuLCAxLiwgMS4pOwogICAg
ICAgICAgICAgdmVjMiB0ZXhDb29yZCA9IHRyYW5zZm9ybVRleENvb3JkKCk7CiAgICAgICAgICAg
ICBhcHBseU1hbnVhbFJlcGVhdElmTmVlZGVkKHRleENvb3JkKTsKLSAgICAgICAgICAgIGFwcGx5
VGV4dHVyZUlmTmVlZGVkKGNvbG9yLCB0ZXhDb29yZCk7CisgICAgICAgICAgICBhcHBseVRleHR1
cmVSR0JJZk5lZWRlZChjb2xvciwgdGV4Q29vcmQpOworICAgICAgICAgICAgYXBwbHlUZXh0dXJl
WVVWSWZOZWVkZWQoY29sb3IsIHRleENvb3JkKTsKKyAgICAgICAgICAgIGFwcGx5VGV4dHVyZU5W
MTJJZk5lZWRlZChjb2xvciwgdGV4Q29vcmQpOworICAgICAgICAgICAgYXBwbHlUZXh0dXJlTlYy
MUlmTmVlZGVkKGNvbG9yLCB0ZXhDb29yZCk7CisgICAgICAgICAgICBhcHBseVRleHR1cmVQYWNr
ZWRZVVZJZk5lZWRlZChjb2xvciwgdGV4Q29vcmQpOwogICAgICAgICAgICAgYXBwbHlTb2xpZENv
bG9ySWZOZWVkZWQoY29sb3IpOwogICAgICAgICAgICAgYXBwbHlBbnRpYWxpYXNpbmdJZk5lZWRl
ZChjb2xvcik7CiAgICAgICAgICAgICBhcHBseU9wYWNpdHlJZk5lZWRlZChjb2xvcik7CkBAIC0z
NjksNyArNDExLDExIEBAIFJlZjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW06OmNyZWF0ZShUZXh0dXJlTWFwcGVyCiAgICAgICAgIChvcHRpb25z
ICYgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkFwcGxpZXIpID8gRU5BQkxFX0FQUExJRVIo
QXBwbGllcikgOiBESVNBQkxFX0FQUExJRVIoQXBwbGllcikpCiAKICAgICBTdHJpbmdCdWlsZGVy
IG9wdGlvbnNBcHBsaWVyQnVpbGRlcjsKLSAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoVGV4
dHVyZSk7CisgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKFRleHR1cmVSR0IpOworICAgIFNF
VF9BUFBMSUVSX0ZST01fT1BUSU9OUyhUZXh0dXJlWVVWKTsKKyAgICBTRVRfQVBQTElFUl9GUk9N
X09QVElPTlMoVGV4dHVyZU5WMTIpOworICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhUZXh0
dXJlTlYyMSk7CisgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKFRleHR1cmVQYWNrZWRZVVYp
OwogICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhSZWN0KTsKICAgICBTRVRfQVBQTElFUl9G
Uk9NX09QVElPTlMoU29saWRDb2xvcik7CiAgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKE9w
YWNpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaAppbmRleCA0YTM0
MjBjMDYwMmNiNGQ2MGE0OThiOTQ3NWEzZjM5N2QyZDcxZjE5Li5iYTVjMDAxMTc1ODQ3NzA2NDRi
ZmRmNDc3YjVjMTdhMWNmZDhmNjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW0uaApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSA6IHB1YmxpYyBSZWZDb3VudGVkPFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtPiB7CiBwdWJsaWM6CiAgICAgZW51bSBPcHRpb24gewotICAgICAgICBUZXh0
dXJlICAgICAgICAgID0gMUwgPDwgMCwKKyAgICAgICAgVGV4dHVyZVJHQiAgICAgICA9IDFMIDw8
IDAsCiAgICAgICAgIFJlY3QgICAgICAgICAgICAgPSAxTCA8PCAxLAogICAgICAgICBTb2xpZENv
bG9yICAgICAgID0gMUwgPDwgMiwKICAgICAgICAgT3BhY2l0eSAgICAgICAgICA9IDFMIDw8IDMs
CkBAIC02MSw3ICs2MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIEJsdXJGaWx0ZXIgICAgICAgPSAx
TCA8PCAxNCwKICAgICAgICAgQWxwaGFCbHVyICAgICAgICA9IDFMIDw8IDE1LAogICAgICAgICBD
b250ZW50VGV4dHVyZSAgID0gMUwgPDwgMTYsCi0gICAgICAgIE1hbnVhbFJlcGVhdCAgICAgPSAx
TCA8PCAxNworICAgICAgICBNYW51YWxSZXBlYXQgICAgID0gMUwgPDwgMTcsCisgICAgICAgIFRl
eHR1cmVZVVYgICAgICAgPSAxTCA8PCAxOCwKKyAgICAgICAgVGV4dHVyZU5WMTIgICAgICA9IDFM
IDw8IDE5LAorICAgICAgICBUZXh0dXJlTlYyMSAgICAgID0gMUwgPDwgMjAsCisgICAgICAgIFRl
eHR1cmVQYWNrZWRZVVYgPSAxTCA8PCAyMSwKICAgICB9OwogCiAgICAgdHlwZWRlZiB1bnNpZ25l
ZCBPcHRpb25zOwpAQCAtODAsNyArODQsMTEgQEAgcHVibGljOgogICAgIFRFWE1BUF9ERUNMQVJF
X1VOSUZPUk0ob3BhY2l0eSkKICAgICBURVhNQVBfREVDTEFSRV9VTklGT1JNKGNvbG9yKQogICAg
IFRFWE1BUF9ERUNMQVJFX1VOSUZPUk0oZXhwYW5kZWRRdWFkRWRnZXNJblNjcmVlblNwYWNlKQor
ICAgIFRFWE1BUF9ERUNMQVJFX1VOSUZPUk0oeXV2VG9SZ2IpCiAgICAgVEVYTUFQX0RFQ0xBUkVf
U0FNUExFUihzYW1wbGVyKQorICAgIFRFWE1BUF9ERUNMQVJFX1NBTVBMRVIoc2FtcGxlclkpCisg
ICAgVEVYTUFQX0RFQ0xBUkVfU0FNUExFUihzYW1wbGVyVSkKKyAgICBURVhNQVBfREVDTEFSRV9T
QU1QTEVSKHNhbXBsZXJWKQogICAgIFRFWE1BUF9ERUNMQVJFX1NBTVBMRVIobWFzaykKIAogICAg
IFRFWE1BUF9ERUNMQVJFX1VOSUZPUk0oZmlsdGVyQW1vdW50KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377333</attachid>
            <date>2019-08-27 03:44:44 -0700</date>
            <delta_ts>2019-09-03 03:34:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132869-20190827114442.patch</filename>
            <type>text/plain</type>
            <size>42039</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4ODUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhjYmEwYjczNDM3YmJi
MDlhYzY2OGQ3Yzc3NDg2NzlmZjRiNjQ4ZS4uZjVmNDY0NmY5YTIyMTVlZWJlNzI5YjFmNjE4ODNh
ZjhiNzU2MmYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE5LTA4LTE5ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbVGV4bWFwXVtHU3Ry
ZWFtZXJdIEFkZCBzdXBwb3J0IHRvIHVwbG9hZCBtb3JlIGNvbG9yIGZvcm1hdHMgaW50byB0aGUg
dGV4dHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTMyODY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U3VwcG9ydCBub24taW50ZXJsZWF2ZWQgWVVWIGNvbG9yIGZvciBnc3RyZWFtZXItZ2wKKworICAg
ICAgICBUaGlzIGFkZHMgZGlyZWN0IHN1cHBvcnQgZm9yIHJlbmRlcmluZyBJNDIwLCBJNDQ0LCBZ
VjEyLCBZVjIxLCBZNDJCLAorICAgICAgICBOVjEyLCBOVjIxIGFuZCBWVVlBIGNvbG9yIGZvcm1h
dHMgdXNpbmcgR0xHTCBzaGFkZXJzIHdoZW4gdXNpbmcKKyAgICAgICAgZ3N0cmVhbWVyLWdsIGZv
ciB2aWRlbyByZW5kZXJpbmcuIFRoaXMgYXZvaWRzIGEgc3VyZmFjZSBjb3B5IG9uIHRoZSBHUFUK
KyAgICAgICAgaW4gdGhvc2UgY2FzZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBub3QgY2hh
bmdpbmcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
c3RWaWRlb0ZyYW1lSG9sZGVyOjpHc3RWaWRlb0ZyYW1lSG9sZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkdzdFZpZGVvRnJhbWVIb2xkZXI6OndhaXRGb3JDUFVTeW5jKToKKyAgICAgICAgKFdlYkNv
cmU6OkdzdFZpZGVvRnJhbWVIb2xkZXI6Omhhc01hcHBlZFRleHR1cmVzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdzdFZpZGVvRnJhbWVIb2xkZXI6OnZpZGVvRnJhbWUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cHVzaFRleHR1
cmVUb0NvbXBvc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZTo6Y3JlYXRlR0xBcHBTaW5rKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNyZWF0ZVZpZGVvU2lua0dMKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6VmlkZW9U
ZXh0dXJlQ29waWVyR1N0cmVhbWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wdGlvbnNGb3JGaWx0
ZXJUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6cHJlcGFyZVRyYW5zZm9ybWF0aW9uTWF0cml4V2l0aEZsYWdz
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVQbGFuYXJZ
VVYpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVNlbWlQ
bGFuYXJZVVYpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVy
ZVBhY2tlZFlVVik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0
dXJlZFF1YWRXaXRoUHJvZ3JhbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXI6On5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnBhaW50VG9UZXh0dXJl
TWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW06OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmg6CisKIDIwMTktMDgtMTkg
IFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCBzcGVjdWxhdGl2ZSBidWlsZCBmaXggZm9yIEdUSyBhbmQgV2luQ2Fpcm8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCBiMDJl
MjhlZGNkNDA3ZmRmZjhjYmVhNzhhZDFhNmU3YjBjN2I1OGE5Li5kYTllMDMxODZhNmMzMDdkZWVi
ZjI1NmFmYmQ1Yzk4N2M1YWU0OWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC01NSw2ICs1NSw3IEBACiAKICNpZiBVU0Uo
R1NUUkVBTUVSX0dMKQogI2RlZmluZSBURVhUVVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcg
VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpDb2xvckNvbnZlcnNpb246Ok5vQ29udmVydAor
I2RlZmluZSBHU1RfR0xfQ0FQU19GT1JNQVQgInsgUkdCeCwgUkdCQSwgSTQyMCwgWTQ0NCwgWVYx
MiwgWTQxQiwgWTQyQiwgTlYxMiwgTlYyMSwgVlVZQSB9IgogCiAjaW5jbHVkZSA8Z3N0L2FwcC9n
c3RhcHBzaW5rLmg+CiAKQEAgLTE0NSw4ICsxNDYsMTAgQEAgcHVibGljOgogCiAgICAgICAgIGlm
IChnc3RHTEVuYWJsZWQpIHsKICAgICAgICAgICAgIG1faXNNYXBwZWQgPSBnc3RfdmlkZW9fZnJh
bWVfbWFwKCZtX3ZpZGVvRnJhbWUsICZ2aWRlb0luZm8sIG1fYnVmZmVyLCBzdGF0aWNfY2FzdDxH
c3RNYXBGbGFncz4oR1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpOwotICAgICAgICAgICAgaWYg
KG1faXNNYXBwZWQpCisgICAgICAgICAgICBpZiAobV9pc01hcHBlZCkgewogICAgICAgICAgICAg
ICAgIG1fdGV4dHVyZUlEID0gKnJlaW50ZXJwcmV0X2Nhc3Q8R0x1aW50Kj4obV92aWRlb0ZyYW1l
LmRhdGFbMF0pOworICAgICAgICAgICAgICAgIG1faGFzTWFwcGVkVGV4dHVyZXMgPSB0cnVlOwor
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJB
TShmbGFncyk7CkBAIC0xNzEsMTAgKzE3NCwyMiBAQCBwdWJsaWM6CiAgICAgICAgIGdzdF92aWRl
b19mcmFtZV91bm1hcCgmbV92aWRlb0ZyYW1lKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIHZvaWQg
d2FpdEZvckNQVVN5bmMoKQorICAgIHsKKyAgICAgICAgR3N0R0xTeW5jTWV0YSogbWV0YSA9IGdz
dF9idWZmZXJfZ2V0X2dsX3N5bmNfbWV0YShtX2J1ZmZlcik7CisgICAgICAgIGlmIChtZXRhKSB7
CisgICAgICAgICAgICBHc3RNZW1vcnkqIG1lbSA9IGdzdF9idWZmZXJfcGVla19tZW1vcnkobV9i
dWZmZXIsIDApOworICAgICAgICAgICAgR3N0R0xDb250ZXh0KiBjb250ZXh0ID0gKChHc3RHTEJh
c2VNZW1vcnkqKW1lbSktPmNvbnRleHQ7CisgICAgICAgICAgICBnc3RfZ2xfc3luY19tZXRhX3dh
aXRfY3B1KG1ldGEsIGNvbnRleHQpOworICAgICAgICB9CisgICAgfQorCiAgICAgY29uc3QgSW50
U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIGJvb2wgaGFzQWxwaGFD
aGFubmVsKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBbHBoYUNoYW5uZWw7IH0KICAgICBUZXh0dXJl
TWFwcGVyR0w6OkZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQogICAgIEdM
dWludCB0ZXh0dXJlSUQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJRDsgfQorICAgIGJvb2wg
aGFzTWFwcGVkVGV4dHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2hhc01hcHBlZFRleHR1cmVzOyB9
CisgICAgY29uc3QgR3N0VmlkZW9GcmFtZSYgdmlkZW9GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmlkZW9GcmFtZTsgfQogCiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlKEJpdG1hcFRleHR1cmVHTCYg
dGV4dHVyZSkKICAgICB7CkBAIC0yMDksNiArMjI0LDcgQEAgcHJpdmF0ZToKICAgICBUZXh0dXJl
TWFwcGVyR0w6OkZsYWdzIG1fZmxhZ3MgeyB9OwogICAgIEdMdWludCBtX3RleHR1cmVJRCB7IDAg
fTsKICAgICBib29sIG1faXNNYXBwZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNNYXBwZWRU
ZXh0dXJlcyB7IGZhbHNlIH07CiB9OwogI2VuZGlmCiAKQEAgLTcxMiwxMCArNzI4LDU3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cHVzaFRleHR1cmVUb0NvbXBvc2l0
b3IoKQogCiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4g
ZnJhbWVIb2xkZXIgPSBtYWtlVW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdl
dCgpLCBtX3RleHR1cmVNYXBwZXJGbGFncywgIW1fdXNpbmdGYWxsYmFja1ZpZGVvU2luayk7CiAK
LSAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlSUQgPSBmcmFtZUhvbGRlci0+dGV4dHVyZUlEKCk7
Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXI+IGxheWVyQnVmZmVyOwotICAgICAgICAgICAgaWYgKHRleHR1cmVJRCkgewotICAgICAg
ICAgICAgICAgIGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcj4odGV4dHVyZUlELCBmcmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+
ZmxhZ3MoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgICAgICAgICAgdXNpbmcgQnVm
ZmVyID0gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI7CisgICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QnVmZmVyPiBsYXllckJ1ZmZlcjsKKyAgICAgICAgICAgIGlmIChmcmFtZUhv
bGRlci0+aGFzTWFwcGVkVGV4dHVyZXMoKSkgeworICAgICAgICAgICAgICAgIGF1dG8mIHZpZGVv
RnJhbWUgPSBmcmFtZUhvbGRlci0+dmlkZW9GcmFtZSgpOworICAgICAgICAgICAgICAgIFsmXSB7
CisgICAgICAgICAgICAgICAgICAgIGlmICgoR1NUX1ZJREVPX0lORk9fSVNfUkdCKCZ2aWRlb0Zy
YW1lLmluZm8pICYmIEdTVF9WSURFT19JTkZPX05fUExBTkVTKCZ2aWRlb0ZyYW1lLmluZm8pID09
IDEpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IG1ha2VVbmlxdWU8
QnVmZmVyPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXI6OlRleHR1cmVWYXJp
YW50IHsgQnVmZmVyOjpSR0JUZXh0dXJlIHsgKnN0YXRpY19jYXN0PEdMdWludCo+KHZpZGVvRnJh
bWUuZGF0YVswXSkgfSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lSG9sZGVy
LT5zaXplKCksIGZyYW1lSG9sZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgICBpZiAoR1NUX1ZJREVPX0lORk9fSVNfWVVWKCZ2aWRlb0Zy
YW1lLmluZm8pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoR1NUX1ZJREVPX0lORk9f
Tl9DT01QT05FTlRTKCZ2aWRlb0ZyYW1lLmluZm8pIDwgMyB8fCBHU1RfVklERU9fSU5GT19OX1BM
QU5FUygmdmlkZW9GcmFtZS5pbmZvKSA+IDMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtYmVyT2ZQbGFuZXMgPSBH
U1RfVklERU9fSU5GT19OX1BMQU5FUygmdmlkZW9GcmFtZS5pbmZvKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6YXJyYXk8R0x1aW50LCAzPiBwbGFuZXM7CisgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OmFycmF5PGludCwgMz4geXV2UGxhbmU7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OmFycmF5PGludCwgMz4geXV2UGxhbmVPZmZzZXQ7CisgICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mUGxhbmVzOyArK2kpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGxhbmVzW2ldID0gKnN0YXRpY19jYXN0PEdMdWludCo+KHZp
ZGVvRnJhbWUuZGF0YVtpXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IDM7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl1dlBsYW5lW2ld
ID0gR1NUX1ZJREVPX0lORk9fQ09NUF9QTEFORSgmdmlkZW9GcmFtZS5pbmZvLCBpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB5dXZQbGFuZU9mZnNldFtpXSA9IEdTVF9WSURFT19JTkZP
X0NPTVBfUE9GRlNFVCgmdmlkZW9GcmFtZS5pbmZvLCBpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjphcnJheTxHTGZsb2F0LCA5PiB5
dXZUb1JnYjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnc3RfdmlkZW9fY29sb3JpbWV0
cnlfbWF0Y2hlcygmR1NUX1ZJREVPX0lORk9fQ09MT1JJTUVUUlkoJnZpZGVvRnJhbWUuaW5mbyks
IEdTVF9WSURFT19DT0xPUklNRVRSWV9CVDcwOSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB5dXZUb1JnYiA9IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4xNjRm
LCAgMC4wZiwgICAgMS43ODdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjE2
NGYsIC0wLjIxM2YsIC0wLjUzMWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEu
MTY0ZiwgIDIuMTEyZiwgIDAuMGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBEZWZhdWx0IHRvIGJ0NjAxLiBUaGlzIGlzIHRoZSBzYW1lIGJlaGF2aW91ciBhcyBHU3Ry
ZWFtZXIncyBnbGNvbG9yY29udmVydCBlbGVtZW50LgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHl1dlRvUmdiID0geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjE2NGYs
ICAwLjBmLCAgICAxLjU5NmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMTY0
ZiwgLTAuMzkxZiwgLTAuODEzZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4x
NjRmLCAgMi4wMThmLCAgMC4wZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyQnVm
ZmVyID0gbWFrZVVuaXF1ZTxCdWZmZXI+KEJ1ZmZlcjo6VGV4dHVyZVZhcmlhbnQgeyBCdWZmZXI6
OllVVlRleHR1cmUgeyBudW1iZXJPZlBsYW5lcywgcGxhbmVzLCB5dXZQbGFuZSwgeXV2UGxhbmVP
ZmZzZXQsIHl1dlRvUmdiIH0gfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZUhv
bGRlci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+ZmxhZ3MoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJH
QkEpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSgpOworCisgICAg
ICAgICAgICAgICAgaWYgKCFsYXllckJ1ZmZlcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworCiAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXItPnNldFVubWFuYWdlZEJ1ZmZlckRhdGFI
b2xkZXIoV1RGTW92ZShmcmFtZUhvbGRlcikpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICBsYXllckJ1ZmZlciA9IHByb3h5LmdldEF2YWlsYWJsZUJ1ZmZlcihmcmFtZUhv
bGRlci0+c2l6ZSgpLCBHTF9ET05UX0NBUkUpOwpAQCAtMTA2Miw4ICsxMTI1LDcgQEAgR3N0RWxl
bWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3JlYXRlVmlkZW9TaW5rR0wo
KQogICAgIEdzdEVsZW1lbnQqIGFwcHNpbmsgPSBjcmVhdGVHTEFwcFNpbmsoKTsKIAogICAgIC8v
IGdsc2lua2JpbiBpcyBub3QgdXNlZCBiZWNhdXNlIGl0IGluY2x1ZGVzIGdsY29sb3Jjb252ZXJ0
IHdoaWNoIG9ubHkgcHJvY2VzcyBSR0JBLAotICAgIC8vIGJ1dCBpbiB0aGUgZnV0dXJlIGl0IHdv
dWxkIGJlIHBvc3NpYmxlIHRvIHJlbmRlciBZVVYgZm9ybWF0cyB0b286Ci0gICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjg2OQorICAgIC8vIGJ1dCB3ZSBj
YW4gZGlzcGxheSBZVVYgZm9ybWF0cyB0b28uCiAKICAgICBpZiAoIWFwcHNpbmsgfHwgIXVwbG9h
ZCB8fCAhY29sb3Jjb252ZXJ0KSB7CiAgICAgICAgIEdTVF9XQVJOSU5HKCJGYWlsZWQgdG8gY3Jl
YXRlIEdzdEdMIGVsZW1lbnRzIik7CkBAIC0xMDgyLDcgKzExNDQsNyBAQCBHc3RFbGVtZW50KiBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjcmVhdGVWaWRlb1NpbmtHTCgpCiAKICAg
ICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU4odmlkZW9TaW5rKSwgdXBsb2FkLCBjb2xvcmNvbnZl
cnQsIGFwcHNpbmssIG51bGxwdHIpOwogCi0gICAgR1JlZlB0cjxHc3RDYXBzPiBjYXBzID0gYWRv
cHRHUmVmKGdzdF9jYXBzX25ld19zaW1wbGUoInZpZGVvL3gtcmF3IiwgImZvcm1hdCIsIEdfVFlQ
RV9TVFJJTkcsICJSR0JBIiwgbnVsbHB0cikpOworICAgIEdSZWZQdHI8R3N0Q2Fwcz4gY2FwcyA9
IGFkb3B0R1JlZihnc3RfY2Fwc19mcm9tX3N0cmluZygidmlkZW8veC1yYXcsIGZvcm1hdCA9IChz
dHJpbmcpICIgR1NUX0dMX0NBUFNfRk9STUFUKSk7CiAgICAgZ3N0X2NhcHNfc2V0X2ZlYXR1cmVz
KGNhcHMuZ2V0KCksIDAsIGdzdF9jYXBzX2ZlYXR1cmVzX25ldyhHU1RfQ0FQU19GRUFUVVJFX01F
TU9SWV9HTF9NRU1PUlksIG51bGxwdHIpKTsKICAgICBnX29iamVjdF9zZXQoYXBwc2luaywgImNh
cHMiLCBjYXBzLmdldCgpLCBudWxscHRyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0
dXJlQ29waWVyR1N0cmVhbWVyLmNwcAppbmRleCBmZjMzODE4MThkMmEyNWVlM2RlNDYzNjMxODAy
MGQ3M2JmNGNiYWE4Li41MmUxN2VhYzU2ZTdhZTY4YzgzOTk0YzcwOGUzOWY4NzA1ODY5MGI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlk
ZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcApAQCAt
MzUsNyArMzUsNyBAQCBWaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI6OlZpZGVvVGV4dHVyZUNv
cGllckdTdHJlYW1lcihDb2xvckNvbnZlcnNpb24gY29sb3JDbwogICAgIEFTU0VSVChwcmV2aW91
c0NvbnRleHQpOwogICAgIFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0
aW5nKCkuc2hhcmluZ0dMQ29udGV4dCgpLT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKIAotICAgIG1f
c2hhZGVyUHJvZ3JhbSA9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpjcmVhdGUoVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmUpOworICAgIG1fc2hhZGVyUHJvZ3JhbSA9IFRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpjcmVhdGUoVGV4dHVyZU1hcHBlclNoYWRlclByb2dy
YW06OlRleHR1cmVSR0IpOwogCiAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1fZnJhbWVidWZm
ZXIpOwogICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1fcmVzdWx0VGV4dHVyZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdM
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0wuY3BwCmluZGV4IGEyZjc1ODY2ZTMyM2I4ZmRiYTQzYTAwN2Q0NDdhYWE0NjU3NmJmZjIu
LjBmNzE0OGMwMDIxOTcyNjAxY2JmZDk4NTE1MjdhMTM4OTlhY2M2MTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0wuY3BwCkBAIC0zMTksMjEgKzMxOSwyMSBAQCBzdGF0aWMgVGV4dHVyZU1hcHBlclNoYWRl
clByb2dyYW06Ok9wdGlvbnMgb3B0aW9uc0ZvckZpbHRlclR5cGUoRmlsdGVyT3BlcmF0aW9uOgog
ewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NB
TEU6Ci0gICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZSB8
IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpHcmF5c2NhbGVGaWx0ZXI7CisgICAgICAgIHJl
dHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVJHQiB8IFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtOjpHcmF5c2NhbGVGaWx0ZXI7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRp
b246OlNFUElBOgotICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRl
eHR1cmUgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6U2VwaWFGaWx0ZXI7CisgICAgICAg
IHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVJHQiB8IFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtOjpTZXBpYUZpbHRlcjsKICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6U0FUVVJBVEU6Ci0gICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6
VGV4dHVyZSB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpTYXR1cmF0ZUZpbHRlcjsKKyAg
ICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlUkdCIHwgVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlNhdHVyYXRlRmlsdGVyOwogICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpIVUVfUk9UQVRFOgotICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRl
clByb2dyYW06OlRleHR1cmUgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6SHVlUm90YXRl
RmlsdGVyOworICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1
cmVSR0IgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6SHVlUm90YXRlRmlsdGVyOwogICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6Ci0gICAgICAgIHJldHVybiBUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZSB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpJ
bnZlcnRGaWx0ZXI7CisgICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6
VGV4dHVyZVJHQiB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpJbnZlcnRGaWx0ZXI7CiAg
ICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6Ci0gICAgICAgIHJldHVybiBUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZSB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtOjpCcmlnaHRuZXNzRmlsdGVyOworICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRl
clByb2dyYW06OlRleHR1cmVSR0IgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6QnJpZ2h0
bmVzc0ZpbHRlcjsKICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6Ci0gICAgICAg
IHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZSB8IFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtOjpDb250cmFzdEZpbHRlcjsKKyAgICAgICAgcmV0dXJuIFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlUkdCIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dy
YW06OkNvbnRyYXN0RmlsdGVyOwogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZOgot
ICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmUgfCBUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3BhY2l0eUZpbHRlcjsKKyAgICAgICAgcmV0dXJuIFRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlUkdCIHwgVGV4dHVyZU1hcHBlclNoYWRl
clByb2dyYW06Ok9wYWNpdHlGaWx0ZXI7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6
CiAgICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6Qmx1ckZpbHRlcjsK
ICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6CkBAIC00NzAsNyArNDcwLDcg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKEdMdWludCB0ZXh0dXJlLCBGbGFn
cyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGUKICAgICAgICAgJiYgZXhwb3NlZEVkZ2VzID09IEFs
bEVkZ2VzCiAgICAgICAgICYmICFtb2RlbFZpZXdNYXRyaXgubWFwUXVhZCh0YXJnZXRSZWN0KS5p
c1JlY3RpbGluZWFyKCk7CiAKLSAgICBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3B0aW9u
cyBvcHRpb25zID0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmU7CisgICAgVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9wdGlvbnMgb3B0aW9ucyA9IFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtOjpUZXh0dXJlUkdCOwogICAgIGlmICh1c2VSZWN0KQogICAgICAgICBvcHRp
b25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpSZWN0OwogICAgIGlmIChvcGFjaXR5
IDwgMSkKQEAgLTUwNCw2ICs1MDQsMTczIEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4
dHVyZShHTHVpbnQgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHRlCiAgICAg
ZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0KCksIHRleHR1cmUsIGZsYWdz
LCB0ZXh0dXJlU2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsKIH0K
IAorc3RhdGljIHZvaWQgcHJlcGFyZVRyYW5zZm9ybWF0aW9uTWF0cml4V2l0aEZsYWdzKFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBwYXR0ZXJuVHJhbnNmb3JtLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdz
IGZsYWdzLCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIGlmIChmbGFncyAmIFRleHR1cmVN
YXBwZXJHTDo6U2hvdWxkUm90YXRlVGV4dHVyZTkwKSB7CisgICAgICAgIHBhdHRlcm5UcmFuc2Zv
cm0ucm90YXRlKC05MCk7CisgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKC0xLCAw
KTsKKyAgICB9CisgICAgaWYgKGZsYWdzICYgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRSb3RhdGVU
ZXh0dXJlMTgwKSB7CisgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0ucm90YXRlKDE4MCk7CisgICAg
ICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKC0xLCAtMSk7CisgICAgfQorICAgIGlmIChm
bGFncyAmIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkUm90YXRlVGV4dHVyZTI3MCkgeworICAgICAg
ICBwYXR0ZXJuVHJhbnNmb3JtLnJvdGF0ZSgtMjcwKTsKKyAgICAgICAgcGF0dGVyblRyYW5zZm9y
bS50cmFuc2xhdGUoMCwgLTEpOworICAgIH0KKyAgICBpZiAoZmxhZ3MgJiBUZXh0dXJlTWFwcGVy
R0w6OlNob3VsZEZsaXBUZXh0dXJlKQorICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLmZsaXBZKCk7
CisgICAgaWYgKGZsYWdzICYgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRVc2VBUkJUZXh0dXJlUmVj
dCkKKyAgICAgICAgcGF0dGVyblRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0oc2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpKTsKKyAgICBpZiAoZmxhZ3MgJiBUZXh0dXJlTWFwcGVyR0w6OlNob3Vs
ZEZsaXBUZXh0dXJlKQorICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtMSk7
Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVBsYW5hcllVVihjb25zdCBz
dGQ6OmFycmF5PEdMdWludCwgMz4mIHRleHR1cmVzLCBjb25zdCBzdGQ6OmFycmF5PEdMZmxvYXQs
IDk+JiB5dXZUb1JnYk1hdHJpeCwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVT
aXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdl
cykKK3sKKyAgICBib29sIHVzZVJlY3QgPSBmbGFncyAmIFNob3VsZFVzZUFSQlRleHR1cmVSZWN0
OworICAgIGJvb2wgdXNlQW50aWFsaWFzaW5nID0gbV9lbmFibGVFZGdlRGlzdGFuY2VBbnRpYWxp
YXNpbmcKKyAgICAgICAgJiYgZXhwb3NlZEVkZ2VzID09IEFsbEVkZ2VzCisgICAgICAgICYmICFt
b2RlbFZpZXdNYXRyaXgubWFwUXVhZCh0YXJnZXRSZWN0KS5pc1JlY3RpbGluZWFyKCk7CisKKyAg
ICBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3B0aW9ucyBvcHRpb25zID0gVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW06OlRleHR1cmVZVVY7CisgICAgaWYgKHVzZVJlY3QpCisgICAgICAg
IG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlJlY3Q7CisgICAgaWYgKG9w
YWNpdHkgPCAxKQorICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
OjpPcGFjaXR5OworICAgIGlmICh1c2VBbnRpYWxpYXNpbmcpIHsKKyAgICAgICAgb3B0aW9ucyB8
PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6QW50aWFsaWFzaW5nOworICAgICAgICBmbGFn
cyB8PSBTaG91bGRBbnRpYWxpYXM7CisgICAgfQorICAgIGlmICh3cmFwTW9kZSgpID09IFJlcGVh
dFdyYXAgJiYgIW1fY29udGV4dEF0dHJpYnV0ZXMuc3VwcG9ydHNOUE9UVGV4dHVyZXMpCisgICAg
ICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok1hbnVhbFJlcGVhdDsK
KworICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZpbHRlciA9IGRhdGEoKS5maWx0ZXJJbmZv
ID8gZGF0YSgpLmZpbHRlckluZm8tPmZpbHRlcjogMDsKKyAgICBHTHVpbnQgZmlsdGVyQ29udGVu
dFRleHR1cmVJRCA9IDA7CisKKyAgICBpZiAoZmlsdGVyKSB7CisgICAgICAgIGlmIChkYXRhKCku
ZmlsdGVySW5mby0+Y29udGVudFRleHR1cmUpCisgICAgICAgICAgICBmaWx0ZXJDb250ZW50VGV4
dHVyZUlEID0gdG9CaXRtYXBUZXh0dXJlR0woZGF0YSgpLmZpbHRlckluZm8tPmNvbnRlbnRUZXh0
dXJlLmdldCgpKS0+aWQoKTsKKyAgICAgICAgb3B0aW9ucyB8PSBvcHRpb25zRm9yRmlsdGVyVHlw
ZShmaWx0ZXItPnR5cGUoKSwgZGF0YSgpLmZpbHRlckluZm8tPnBhc3MpOworICAgICAgICBpZiAo
ZmlsdGVyLT5hZmZlY3RzT3BhY2l0eSgpKQorICAgICAgICAgICAgZmxhZ3MgfD0gU2hvdWxkQmxl
bmQ7CisgICAgfQorCisgICAgaWYgKHVzZUFudGlhbGlhc2luZyB8fCBvcGFjaXR5IDwgMSkKKyAg
ICAgICAgZmxhZ3MgfD0gU2hvdWxkQmxlbmQ7CisKKyAgICBSZWY8VGV4dHVyZU1hcHBlclNoYWRl
clByb2dyYW0+IHByb2dyYW0gPSBkYXRhKCkuZ2V0U2hhZGVyUHJvZ3JhbShvcHRpb25zKTsKKwor
ICAgIGlmIChmaWx0ZXIpCisgICAgICAgIHByZXBhcmVGaWx0ZXJQcm9ncmFtKHByb2dyYW0uZ2V0
KCksICpmaWx0ZXIuZ2V0KCksIGRhdGEoKS5maWx0ZXJJbmZvLT5wYXNzLCB0ZXh0dXJlU2l6ZSwg
ZmlsdGVyQ29udGVudFRleHR1cmVJRCk7CisKKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8R0x1
aW50LCBHTHVpbnQ+ID4gdGV4dHVyZXNBbmRTYW1wbGVycyA9IHsKKyAgICAgICAgeyB0ZXh0dXJl
c1swXSwgcHJvZ3JhbS0+c2FtcGxlcllMb2NhdGlvbigpIH0sCisgICAgICAgIHsgdGV4dHVyZXNb
MV0sIHByb2dyYW0tPnNhbXBsZXJVTG9jYXRpb24oKSB9LAorICAgICAgICB7IHRleHR1cmVzWzJd
LCBwcm9ncmFtLT5zYW1wbGVyVkxvY2F0aW9uKCkgfQorICAgIH07CisKKyAgICBnbFVzZVByb2dy
YW0ocHJvZ3JhbS0+cHJvZ3JhbUlEKCkpOworICAgIGdsVW5pZm9ybU1hdHJpeDNmdihwcm9ncmFt
LT55dXZUb1JnYkxvY2F0aW9uKCksIDEsIEdMX0ZBTFNFLCBzdGF0aWNfY2FzdDxjb25zdCBHTGZs
b2F0ICo+KCZ5dXZUb1JnYk1hdHJpeFswXSkpOworICAgIGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJv
Z3JhbShwcm9ncmFtLmdldCgpLCB0ZXh0dXJlc0FuZFNhbXBsZXJzLCBmbGFncywgdGV4dHVyZVNp
emUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7Cit9CisKK3ZvaWQgVGV4
dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVNlbWlQbGFuYXJZVVYoY29uc3Qgc3RkOjphcnJheTxH
THVpbnQsIDI+JiB0ZXh0dXJlcywgYm9vbCB1dlJldmVyc2VkLCBjb25zdCBzdGQ6OmFycmF5PEdM
ZmxvYXQsIDk+JiB5dXZUb1JnYk1hdHJpeCwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHRl
eHR1cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9z
ZWRFZGdlcykKK3sKKyAgICBib29sIHVzZVJlY3QgPSBmbGFncyAmIFNob3VsZFVzZUFSQlRleHR1
cmVSZWN0OworICAgIGJvb2wgdXNlQW50aWFsaWFzaW5nID0gbV9lbmFibGVFZGdlRGlzdGFuY2VB
bnRpYWxpYXNpbmcKKyAgICAgICAgJiYgZXhwb3NlZEVkZ2VzID09IEFsbEVkZ2VzCisgICAgICAg
ICYmICFtb2RlbFZpZXdNYXRyaXgubWFwUXVhZCh0YXJnZXRSZWN0KS5pc1JlY3RpbGluZWFyKCk7
CisKKyAgICBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3B0aW9ucyBvcHRpb25zID0gdXZS
ZXZlcnNlZCA/CisgICAgICAgIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlTlYy
MSA6IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlTlYxMjsKKyAgICBpZiAodXNl
UmVjdCkKKyAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6UmVj
dDsKKyAgICBpZiAob3BhY2l0eSA8IDEpCisgICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW06Ok9wYWNpdHk7CisgICAgaWYgKHVzZUFudGlhbGlhc2luZykgeworICAg
ICAgICBvcHRpb25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpBbnRpYWxpYXNpbmc7
CisgICAgICAgIGZsYWdzIHw9IFNob3VsZEFudGlhbGlhczsKKyAgICB9CisgICAgaWYgKHdyYXBN
b2RlKCkgPT0gUmVwZWF0V3JhcCAmJiAhbV9jb250ZXh0QXR0cmlidXRlcy5zdXBwb3J0c05QT1RU
ZXh0dXJlcykKKyAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6
TWFudWFsUmVwZWF0OworCisgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gZmlsdGVyID0gZGF0
YSgpLmZpbHRlckluZm8gPyBkYXRhKCkuZmlsdGVySW5mby0+ZmlsdGVyOiAwOworICAgIEdMdWlu
dCBmaWx0ZXJDb250ZW50VGV4dHVyZUlEID0gMDsKKworICAgIGlmIChmaWx0ZXIpIHsKKyAgICAg
ICAgaWYgKGRhdGEoKS5maWx0ZXJJbmZvLT5jb250ZW50VGV4dHVyZSkKKyAgICAgICAgICAgIGZp
bHRlckNvbnRlbnRUZXh0dXJlSUQgPSB0b0JpdG1hcFRleHR1cmVHTChkYXRhKCkuZmlsdGVySW5m
by0+Y29udGVudFRleHR1cmUuZ2V0KCkpLT5pZCgpOworICAgICAgICBvcHRpb25zIHw9IG9wdGlv
bnNGb3JGaWx0ZXJUeXBlKGZpbHRlci0+dHlwZSgpLCBkYXRhKCkuZmlsdGVySW5mby0+cGFzcyk7
CisgICAgICAgIGlmIChmaWx0ZXItPmFmZmVjdHNPcGFjaXR5KCkpCisgICAgICAgICAgICBmbGFn
cyB8PSBTaG91bGRCbGVuZDsKKyAgICB9CisKKyAgICBpZiAodXNlQW50aWFsaWFzaW5nIHx8IG9w
YWNpdHkgPCAxKQorICAgICAgICBmbGFncyB8PSBTaG91bGRCbGVuZDsKKworICAgIFJlZjxUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gcHJvZ3JhbSA9IGRhdGEoKS5nZXRTaGFkZXJQcm9ncmFt
KG9wdGlvbnMpOworCisgICAgaWYgKGZpbHRlcikKKyAgICAgICAgcHJlcGFyZUZpbHRlclByb2dy
YW0ocHJvZ3JhbS5nZXQoKSwgKmZpbHRlci5nZXQoKSwgZGF0YSgpLmZpbHRlckluZm8tPnBhc3Ms
IHRleHR1cmVTaXplLCBmaWx0ZXJDb250ZW50VGV4dHVyZUlEKTsKKworICAgIHN0ZDo6dmVjdG9y
PHN0ZDo6cGFpcjxHTHVpbnQsIEdMdWludD4gPiB0ZXh0dXJlc0FuZFNhbXBsZXJzID0geworICAg
ICAgICB7IHRleHR1cmVzWzBdLCBwcm9ncmFtLT5zYW1wbGVyWUxvY2F0aW9uKCkgfSwKKyAgICAg
ICAgeyB0ZXh0dXJlc1sxXSwgcHJvZ3JhbS0+c2FtcGxlclVMb2NhdGlvbigpIH0KKyAgICB9Owor
CisgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW1JRCgpKTsKKyAgICBnbFVuaWZvcm1N
YXRyaXgzZnYocHJvZ3JhbS0+eXV2VG9SZ2JMb2NhdGlvbigpLCAxLCBHTF9GQUxTRSwgc3RhdGlj
X2Nhc3Q8Y29uc3QgR0xmbG9hdCAqPigmeXV2VG9SZ2JNYXRyaXhbMF0pKTsKKyAgICBkcmF3VGV4
dHVyZWRRdWFkV2l0aFByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgdGV4dHVyZXNBbmRTYW1wbGVycywg
ZmxhZ3MsIHRleHR1cmVTaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkp
OworfQorCit2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVQYWNrZWRZVVYoR0x1aW50
IHRleHR1cmUsIGNvbnN0IHN0ZDo6YXJyYXk8R0xmbG9hdCwgOT4mIHl1dlRvUmdiTWF0cml4LCBG
bGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwg
ZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKQoreworICAgIGJvb2wgdXNlUmVj
dCA9IGZsYWdzICYgU2hvdWxkVXNlQVJCVGV4dHVyZVJlY3Q7CisgICAgYm9vbCB1c2VBbnRpYWxp
YXNpbmcgPSBtX2VuYWJsZUVkZ2VEaXN0YW5jZUFudGlhbGlhc2luZworICAgICAgICAmJiBleHBv
c2VkRWRnZXMgPT0gQWxsRWRnZXMKKyAgICAgICAgJiYgIW1vZGVsVmlld01hdHJpeC5tYXBRdWFk
KHRhcmdldFJlY3QpLmlzUmVjdGlsaW5lYXIoKTsKKworICAgIFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtOjpPcHRpb25zIG9wdGlvbnMgPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4
dHVyZVBhY2tlZFlVVjsKKyAgICBpZiAodXNlUmVjdCkKKyAgICAgICAgb3B0aW9ucyB8PSBUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6UmVjdDsKKyAgICBpZiAob3BhY2l0eSA8IDEpCisgICAg
ICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9wYWNpdHk7CisgICAg
aWYgKHVzZUFudGlhbGlhc2luZykgeworICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtOjpBbnRpYWxpYXNpbmc7CisgICAgICAgIGZsYWdzIHw9IFNob3VsZEFudGlh
bGlhczsKKyAgICB9CisgICAgaWYgKHdyYXBNb2RlKCkgPT0gUmVwZWF0V3JhcCAmJiAhbV9jb250
ZXh0QXR0cmlidXRlcy5zdXBwb3J0c05QT1RUZXh0dXJlcykKKyAgICAgICAgb3B0aW9ucyB8PSBU
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6TWFudWFsUmVwZWF0OworCisgICAgUmVmUHRyPEZp
bHRlck9wZXJhdGlvbj4gZmlsdGVyID0gZGF0YSgpLmZpbHRlckluZm8gPyBkYXRhKCkuZmlsdGVy
SW5mby0+ZmlsdGVyOiAwOworICAgIEdMdWludCBmaWx0ZXJDb250ZW50VGV4dHVyZUlEID0gMDsK
KworICAgIGlmIChmaWx0ZXIpIHsKKyAgICAgICAgaWYgKGRhdGEoKS5maWx0ZXJJbmZvLT5jb250
ZW50VGV4dHVyZSkKKyAgICAgICAgICAgIGZpbHRlckNvbnRlbnRUZXh0dXJlSUQgPSB0b0JpdG1h
cFRleHR1cmVHTChkYXRhKCkuZmlsdGVySW5mby0+Y29udGVudFRleHR1cmUuZ2V0KCkpLT5pZCgp
OworICAgICAgICBvcHRpb25zIHw9IG9wdGlvbnNGb3JGaWx0ZXJUeXBlKGZpbHRlci0+dHlwZSgp
LCBkYXRhKCkuZmlsdGVySW5mby0+cGFzcyk7CisgICAgICAgIGlmIChmaWx0ZXItPmFmZmVjdHNP
cGFjaXR5KCkpCisgICAgICAgICAgICBmbGFncyB8PSBTaG91bGRCbGVuZDsKKyAgICB9CisKKyAg
ICBpZiAodXNlQW50aWFsaWFzaW5nIHx8IG9wYWNpdHkgPCAxKQorICAgICAgICBmbGFncyB8PSBT
aG91bGRCbGVuZDsKKworICAgIFJlZjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gcHJvZ3Jh
bSA9IGRhdGEoKS5nZXRTaGFkZXJQcm9ncmFtKG9wdGlvbnMpOworCisgICAgaWYgKGZpbHRlcikK
KyAgICAgICAgcHJlcGFyZUZpbHRlclByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgKmZpbHRlci5nZXQo
KSwgZGF0YSgpLmZpbHRlckluZm8tPnBhc3MsIHRleHR1cmVTaXplLCBmaWx0ZXJDb250ZW50VGV4
dHVyZUlEKTsKKworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxHTHVpbnQsIEdMdWludD4gPiB0
ZXh0dXJlc0FuZFNhbXBsZXJzID0geworICAgICAgICB7IHRleHR1cmUsIHByb2dyYW0tPnNhbXBs
ZXJMb2NhdGlvbigpIH0KKyAgICB9OworCisgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0tPnByb2dy
YW1JRCgpKTsKKyAgICBnbFVuaWZvcm1NYXRyaXgzZnYocHJvZ3JhbS0+eXV2VG9SZ2JMb2NhdGlv
bigpLCAxLCBHTF9GQUxTRSwgc3RhdGljX2Nhc3Q8Y29uc3QgR0xmbG9hdCAqPigmeXV2VG9SZ2JN
YXRyaXhbMF0pKTsKKyAgICBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0ocHJvZ3JhbS5nZXQo
KSwgdGV4dHVyZXNBbmRTYW1wbGVycywgZmxhZ3MsIHRleHR1cmVTaXplLCB0YXJnZXRSZWN0LCBt
b2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkpOworfQorCiB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJh
d1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgbWF0cml4LCBjb25zdCBDb2xvciYgY29sb3IsIGJvb2wgaXNCbGVuZGluZ0FsbG93ZWQp
CiB7CiAgICAgRmxhZ3MgZmxhZ3MgPSAwOwpAQCAtNjAxLDM3ICs3NjgsMjcgQEAgdm9pZCBUZXh0
dXJlTWFwcGVyR0w6OmRyYXcoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbW8KICAgICBnbEVuYWJsZShHTF9CTEVORCk7CiB9CiAKLXZvaWQgVGV4dHVy
ZU1hcHBlckdMOjpkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRl
clByb2dyYW0mIHByb2dyYW0sIHVpbnQzMl90IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJ
bnRTaXplJiBzaXplLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkpCit2b2lkIFRleHR1cmVNYXBw
ZXJHTDo6ZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtJiBwcm9ncmFtLCBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8R0x1aW50LCBHTHVpbnQ+
ID4mIHRleHR1cmVzQW5kU2FtcGxlcnMsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXplJiBzaXpl
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2Rl
bFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkpCiB7CiAgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0u
cHJvZ3JhbUlEKCkpOwotICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7CisKKyAgICBi
b29sIHJlcGVhdFdyYXAgPSB3cmFwTW9kZSgpID09IFJlcGVhdFdyYXAgJiYgbV9jb250ZXh0QXR0
cmlidXRlcy5zdXBwb3J0c05QT1RUZXh0dXJlczsKICAgICBHTGVudW0gdGFyZ2V0ID0gZmxhZ3Mg
JiBTaG91bGRVc2VBUkJUZXh0dXJlUmVjdCA/IEdMZW51bShHTF9URVhUVVJFX1JFQ1RBTkdMRV9B
UkIpIDogR0xlbnVtKEdMX1RFWFRVUkVfMkQpOwotICAgIGdsQmluZFRleHR1cmUodGFyZ2V0LCB0
ZXh0dXJlKTsKLSAgICBnbFVuaWZvcm0xaShwcm9ncmFtLnNhbXBsZXJMb2NhdGlvbigpLCAwKTsK
LSAgICBpZiAod3JhcE1vZGUoKSA9PSBSZXBlYXRXcmFwICYmIG1fY29udGV4dEF0dHJpYnV0ZXMu
c3VwcG9ydHNOUE9UVGV4dHVyZXMpIHsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9SRVBFQVQpOwotICAgICAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX1JFUEVBVCk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRleHR1cmVzQW5kU2FtcGxlcnMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgYXV0byYgdGV4dHVyZUFuZFNhbXBsZXIgPSB0ZXh0dXJlc0FuZFNhbXBsZXJz
W2ldOworCisgICAgICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCArIGkpOworICAgICAg
ICBnbEJpbmRUZXh0dXJlKHRhcmdldCwgdGV4dHVyZUFuZFNhbXBsZXIuZmlyc3QpOworICAgICAg
ICBnbFVuaWZvcm0xaSh0ZXh0dXJlQW5kU2FtcGxlci5zZWNvbmQsIGkpOworCisgICAgICAgIGlm
IChyZXBlYXRXcmFwKSB7CisgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX1JFUEVBVCk7CisgICAgICAgICAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX1JFUEVBVCk7CisgICAg
ICAgIH0KICAgICB9CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXR0ZXJuVHJhbnNmb3Jt
ID0gdGhpcy0+cGF0dGVyblRyYW5zZm9ybSgpOwotICAgIGlmIChmbGFncyAmIFNob3VsZFJvdGF0
ZVRleHR1cmU5MCkgewotICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnJvdGF0ZSgtOTApOwotICAg
ICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMSwgMCk7Ci0gICAgfQotICAgIGlmIChm
bGFncyAmIFNob3VsZFJvdGF0ZVRleHR1cmUxODApIHsKLSAgICAgICAgcGF0dGVyblRyYW5zZm9y
bS5yb3RhdGUoMTgwKTsKLSAgICAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoLTEsIC0x
KTsKLSAgICB9Ci0gICAgaWYgKGZsYWdzICYgU2hvdWxkUm90YXRlVGV4dHVyZTI3MCkgewotICAg
ICAgICBwYXR0ZXJuVHJhbnNmb3JtLnJvdGF0ZSgtMjcwKTsKLSAgICAgICAgcGF0dGVyblRyYW5z
Zm9ybS50cmFuc2xhdGUoMCwgLTEpOwotICAgIH0KLSAgICBpZiAoZmxhZ3MgJiBTaG91bGRGbGlw
VGV4dHVyZSkKLSAgICAgICAgcGF0dGVyblRyYW5zZm9ybS5mbGlwWSgpOwotICAgIGlmIChmbGFn
cyAmIFNob3VsZFVzZUFSQlRleHR1cmVSZWN0KQotICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnNj
YWxlTm9uVW5pZm9ybShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwotICAgIGlmIChmbGFn
cyAmIFNob3VsZEZsaXBUZXh0dXJlKQotICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0
ZSgwLCAtMSk7CisgICAgcHJlcGFyZVRyYW5zZm9ybWF0aW9uTWF0cml4V2l0aEZsYWdzKHBhdHRl
cm5UcmFuc2Zvcm0sIGZsYWdzLCBzaXplKTsKIAogICAgIHByb2dyYW0uc2V0TWF0cml4KHByb2dy
YW0udGV4dHVyZVNwYWNlTWF0cml4TG9jYXRpb24oKSwgcGF0dGVyblRyYW5zZm9ybSk7CiAgICAg
cHJvZ3JhbS5zZXRNYXRyaXgocHJvZ3JhbS50ZXh0dXJlQ29sb3JTcGFjZU1hdHJpeExvY2F0aW9u
KCksIGNvbG9yU3BhY2VNYXRyaXhGb3JGbGFncyhmbGFncykpOwpAQCAtNjQxLDggKzc5OCwyMCBA
QCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtJiBwcgogICAgICAgICBmbGFncyB8PSBTaG91bGRCbGVuZDsK
IAogICAgIGRyYXcocmVjdCwgbW9kZWxWaWV3TWF0cml4LCBwcm9ncmFtLCBHTF9UUklBTkdMRV9G
QU4sIGZsYWdzKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CisKKyAgICBpZiAo
cmVwZWF0V3JhcCkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGV4dHVyZXNB
bmRTYW1wbGVycy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgYXV0byYgdGV4dHVyZUFuZFNh
bXBsZXIgPSB0ZXh0dXJlc0FuZFNhbXBsZXJzW2ldOworICAgICAgICAgICAgZ2xCaW5kVGV4dHVy
ZSh0YXJnZXQsIHRleHR1cmVBbmRTYW1wbGVyLmZpcnN0KTsKKyAgICAgICAgICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURH
RSk7CisgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lk
IFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtJiBwcm9ncmFtLCB1aW50MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywg
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5KQoreworICAgIGRy
YXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShwcm9ncmFtLCB7IHsgdGV4dHVyZSwgcHJvZ3JhbS5z
YW1wbGVyTG9jYXRpb24oKSB9IH0sIGZsYWdzLCBzaXplLCByZWN0LCBtb2RlbFZpZXdNYXRyaXgs
IG9wYWNpdHkpOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd0ZpbHRlcmVkKGNvbnN0
IEJpdG1hcFRleHR1cmUmIHNhbXBsZXIsIGNvbnN0IEJpdG1hcFRleHR1cmUqIGNvbnRlbnRUZXh0
dXJlLCBjb25zdCBGaWx0ZXJPcGVyYXRpb24mIGZpbHRlciwgaW50IHBhc3MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdM
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckdMLmgKaW5kZXggY2EwNTZhZjY2MDMwZWQxZWVkOTJmYTVjMmEyOGRhOTBjYjM0ZWI2YS4uNGMx
YjUxMTgzY2FlMTMzZDRkZTdiMDVjNzYwNzliMDc5ODFiMWViYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wu
aApAQCAtMzAsNiArMzAsOCBAQAogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmli
dXRlcy5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTEhlYWRlcnMuaCIKICNpbmNsdWRlICJU
cmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPHZlY3Rv
cj4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NCw2ICs2Niw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRyYXdOdW1iZXIoaW50IG51bWJlciwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFBv
aW50JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKICAgICB2b2lkIGRy
YXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdl
cykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKEdMdWludCB0ZXh0dXJl
LCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFy
Z2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxv
YXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpOworICAgIHZvaWQg
ZHJhd1RleHR1cmVQbGFuYXJZVVYoY29uc3Qgc3RkOjphcnJheTxHTHVpbnQsIDM+JiB0ZXh0dXJl
cywgY29uc3Qgc3RkOjphcnJheTxHTGZsb2F0LCA5PiYgeXV2VG9SZ2JNYXRyaXgsIEZsYWdzLCBj
b25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5
LCB1bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcyk7CisgICAgdm9pZCBkcmF3VGV4dHVy
ZVNlbWlQbGFuYXJZVVYoY29uc3Qgc3RkOjphcnJheTxHTHVpbnQsIDI+JiB0ZXh0dXJlcywgYm9v
bCB1dlJldmVyc2VkLCBjb25zdCBzdGQ6OmFycmF5PEdMZmxvYXQsIDk+JiB5dXZUb1JnYk1hdHJp
eCwgRmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRh
cmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZs
b2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKTsKKyAgICB2b2lk
IGRyYXdUZXh0dXJlUGFja2VkWVVWKEdMdWludCB0ZXh0dXJlLCBjb25zdCBzdGQ6OmFycmF5PEdM
ZmxvYXQsIDk+JiB5dXZUb1JnYk1hdHJpeCwgRmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVT
aXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdl
cyA9IEFsbEVkZ2VzKTsKICAgICB2b2lkIGRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgQ29sb3ImLCBib29sKSBvdmVycmlk
ZTsKICAgICB2b2lkIGNsZWFyQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKIApAQCAtODQs
NiArODksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkcmF3VGV4dHVyZWRRdWFk
V2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0mLCB1aW50MzJfdCB0ZXh0dXJl
LCBGbGFncywgY29uc3QgSW50U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkpOworICAgIHZvaWQg
ZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtJiwg
Y29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPEdMdWludCwgR0x1aW50PiA+JiB0ZXh0dXJlc0Fu
ZFNhbXBsZXJzLCBGbGFncywgY29uc3QgSW50U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkpOwog
ICAgIHZvaWQgZHJhdyhjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbW9kZWxWaWV3TWF0cml4LCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSYsIEdMZW51bSBk
cmF3aW5nTW9kZSwgRmxhZ3MpOwogCiAgICAgdm9pZCBkcmF3VW5pdFJlY3QoVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW0mLCBHTGVudW0gZHJhd2luZ01vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKaW5kZXggZTExYTBiYjI3YjgxMGMy
ZDUyNzZiMmE5YjBjNTA5Zjg4OTUwNjZjMC4uNzljZGVjZmIzYTE0MTIzNmQ0NWNmNTIwMzEwNzk5
OGYyYTgyMjQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXIuY3BwCkBAIC0zNSwxNCArMzUsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXIoUmVmUHRyPEJpdG1hcFRleHR1cmU+JiYgdGV4dHVyZSwgVGV4dHVyZU1hcHBlckdM
OjpGbGFncyBmbGFncykKICAgICA6IG1fdGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpKQotICAgICwg
bV90ZXh0dXJlSUQoMCkKKyAgICAsIG1fdmFyaWFudChSR0JUZXh0dXJlIHsgMCB9KQogICAgICwg
bV9leHRyYUZsYWdzKGZsYWdzKQogICAgICwgbV9oYXNNYW5hZ2VkVGV4dHVyZSh0cnVlKQogewog
fQogCiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXIoR0x1aW50IHRleHR1cmVJRCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgVGV4
dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncywgR0xpbnQgaW50ZXJuYWxGb3JtYXQpCi0gICAgOiBt
X3RleHR1cmVJRCh0ZXh0dXJlSUQpCisgICAgOiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcih7IFJHQlRleHR1cmUgeyB0ZXh0dXJlSUQgfSB9LCBzaXplLCBmbGFncywgaW50ZXJuYWxG
b3JtYXQpCit7Cit9CisKK1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihUZXh0dXJlVmFyaWFudCYmIHZhcmlhbnQsIGNvbnN0
IEludFNpemUmIHNpemUsIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MsIEdMaW50IGludGVy
bmFsRm9ybWF0KQorICAgIDogbV92YXJpYW50KFdURk1vdmUodmFyaWFudCkpCiAgICAgLCBtX3Np
emUoc2l6ZSkKICAgICAsIG1faW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxGb3JtYXQpCiAgICAgLCBt
X2V4dHJhRmxhZ3MoZmxhZ3MpCkBAIC01MCw2ICs1NSwxMCBAQCBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcjo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoR0x1aW50IHRl
eHR1cgogewogfQogCitUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6flRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKCkKK3sKK30KKwogYm9vbCBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcjo6Y2FuUmV1c2VXaXRob3V0UmVzZXQoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgR0xpbnQgaW50ZXJuYWxGb3JtYXQpCiB7CiAgICAgcmV0dXJuIG1fdGV4dHVyZSAmJiAobV90
ZXh0dXJlLT5zaXplKCkgPT0gc2l6ZSkgJiYgKHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCo+
KG1fdGV4dHVyZS5nZXQoKSktPmludGVybmFsRm9ybWF0KCkgPT0gaW50ZXJuYWxGb3JtYXQgfHwg
aW50ZXJuYWxGb3JtYXQgPT0gR0xfRE9OVF9DQVJFKTsKQEAgLTU3LDE0ICs2NiwyOCBAQCBib29s
IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpjYW5SZXVzZVdpdGhvdXRSZXNldChj
b25zdCBJbnRTaXplJiBzaXplLAogCiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI+IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpjbG9uZSgp
CiB7Ci0gICAgaWYgKG1faGFzTWFuYWdlZFRleHR1cmUgfHwgIW1fdGV4dHVyZUlEKSB7CisgICAg
aWYgKG1faGFzTWFuYWdlZFRleHR1cmUpIHsKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGF1dG8gdGV4dHVyZSA9IEJpdG1hcFRl
eHR1cmVHTDo6Y3JlYXRlKFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCksIG1f
aW50ZXJuYWxGb3JtYXQpOwotICAgIHRleHR1cmUtPnJlc2V0KG1fc2l6ZSk7Ci0gICAgc3RhdGlj
X2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4odGV4dHVyZS5nZXQoKSkuY29weUZyb21FeHRlcm5hbFRl
eHR1cmUobV90ZXh0dXJlSUQpOwotICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKHRleHR1cmUpLCBtX2V4dHJhRmxhZ3MpOworCisg
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV92YXJpYW50LAorICAgICAgICBbJl0oY29uc3QgUkdC
VGV4dHVyZSYgdGV4dHVyZSkgbXV0YWJsZSAtPiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXI+IHsKKyAgICAgICAgICAgIGlmICghdGV4dHVyZS5pZCkgewor
ICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF1dG8gY2xvbmVkVGV4dHVy
ZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRl
czo6Z2V0KCksIG1faW50ZXJuYWxGb3JtYXQpOworICAgICAgICAgICAgY2xvbmVkVGV4dHVyZS0+
cmVzZXQobV9zaXplKTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+
KGNsb25lZFRleHR1cmUuZ2V0KCkpLmNvcHlGcm9tRXh0ZXJuYWxUZXh0dXJlKHRleHR1cmUuaWQp
OworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI+KFdURk1vdmUoY2xvbmVkVGV4dHVyZSksIG1fZXh0cmFGbGFncyk7CisgICAgICAg
IH0sCisgICAgICAgIFtdKGNvbnN0IFlVVlRleHR1cmUmKQorICAgICAgICB7CisgICAgICAgICAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IH0pOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRy
aXgsIGZsb2F0IG9wYWNpdHkpCkBAIC04Niw4ICsxMDksMzQgQEAgdm9pZCBUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYg
dGV4dHUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX3RleHR1cmVJRCk7
Ci0gICAgdGV4bWFwR0wuZHJhd1RleHR1cmUobV90ZXh0dXJlSUQsIG1fZXh0cmFGbGFncywgbV9z
aXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkpOworICAgIGlmIChtX3Vu
bWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIpCisgICAgICAgIG1fdW5tYW5hZ2VkQnVmZmVyRGF0YUhv
bGRlci0+d2FpdEZvckNQVVN5bmMoKTsKKworICAgIFdURjo6c3dpdGNoT24obV92YXJpYW50LAor
ICAgICAgICBbJl0oY29uc3QgUkdCVGV4dHVyZSYgdGV4dHVyZSkgeworICAgICAgICAgICAgQVNT
RVJUKHRleHR1cmUuaWQpOworICAgICAgICAgICAgdGV4bWFwR0wuZHJhd1RleHR1cmUodGV4dHVy
ZS5pZCwgbV9leHRyYUZsYWdzLCBtX3NpemUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwg
b3BhY2l0eSk7CisgICAgICAgIH0sCisgICAgICAgIFsmXShjb25zdCBZVVZUZXh0dXJlJiB0ZXh0
dXJlKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHRleHR1cmUubnVtYmVyT2ZQbGFuZXMpIHsKKyAg
ICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICBBU1NFUlQodGV4dHVyZS55dXZQbGFu
ZVswXSA9PSB0ZXh0dXJlLnl1dlBsYW5lWzFdICYmIHRleHR1cmUueXV2UGxhbmVbMV0gPT0gdGV4
dHVyZS55dXZQbGFuZVsyXSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUueXV2UGxh
bmVPZmZzZXRbMF0gPT0gMiAmJiB0ZXh0dXJlLnl1dlBsYW5lT2Zmc2V0WzFdID09IDEgJiYgIXRl
eHR1cmUueXV2UGxhbmVPZmZzZXRbMl0pOworICAgICAgICAgICAgICAgIHRleG1hcEdMLmRyYXdU
ZXh0dXJlUGFja2VkWVVWKHRleHR1cmUucGxhbmVzW3RleHR1cmUueXV2UGxhbmVbMF1dLAorICAg
ICAgICAgICAgICAgICAgICB0ZXh0dXJlLnl1dlRvUmdiTWF0cml4LCBtX2V4dHJhRmxhZ3MsIG1f
c2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICBBU1NFUlQo
IXRleHR1cmUueXV2UGxhbmVPZmZzZXRbMF0pOworICAgICAgICAgICAgICAgIHRleG1hcEdMLmRy
YXdUZXh0dXJlU2VtaVBsYW5hcllVVihzdGQ6OmFycmF5PEdMdWludCwgMj4geyB0ZXh0dXJlLnBs
YW5lc1t0ZXh0dXJlLnl1dlBsYW5lWzBdXSwgdGV4dHVyZS5wbGFuZXNbdGV4dHVyZS55dXZQbGFu
ZVsxXV0gfSwgISF0ZXh0dXJlLnl1dlBsYW5lT2Zmc2V0WzFdLAorICAgICAgICAgICAgICAgICAg
ICB0ZXh0dXJlLnl1dlRvUmdiTWF0cml4LCBtX2V4dHJhRmxhZ3MsIG1fc2l6ZSwgdGFyZ2V0UmVj
dCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICBBU1NFUlQoIXRleHR1cmUueXV2UGxh
bmVPZmZzZXRbMF0gJiYgIXRleHR1cmUueXV2UGxhbmVPZmZzZXRbMV0gJiYgIXRleHR1cmUueXV2
UGxhbmVPZmZzZXRbMl0pOworICAgICAgICAgICAgICAgIHRleG1hcEdMLmRyYXdUZXh0dXJlUGxh
bmFyWVVWKHN0ZDo6YXJyYXk8R0x1aW50LCAzPiB7IHRleHR1cmUucGxhbmVzW3RleHR1cmUueXV2
UGxhbmVbMF1dLCB0ZXh0dXJlLnBsYW5lc1t0ZXh0dXJlLnl1dlBsYW5lWzFdXSwgdGV4dHVyZS5w
bGFuZXNbdGV4dHVyZS55dXZQbGFuZVsyXV0gfSwKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVy
ZS55dXZUb1JnYk1hdHJpeCwgbV9leHRyYUZsYWdzLCBtX3NpemUsIHRhcmdldFJlY3QsIG1vZGVs
Vmlld01hdHJpeCwgb3BhY2l0eSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oCmluZGV4IGQxMDBlMjRhZDEz
MTY0OTc5NGI5MDY5MmU2NjEyYTM3YWI3YzlhZWIuLmQyNmQ2YWYyYzBhODlmZDU5NmQ0ZmU1ODMz
NWExMTU3MTUxNjI4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdM
SGVhZGVycy5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCiAjaW5j
bHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDkgKzQwLDI0IEBAIGNsYXNzIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyIDogcHVibGljIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCgpOwogcHVibGljOgogICAgIFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKFJlZlB0cjxCaXRtYXBUZXh0dXJlPiYmLCBUZXh0dXJl
TWFwcGVyR0w6OkZsYWdzID0gMCk7CisKICAgICBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlcihHTHVpbnQgdGV4dHVyZUlELCBjb25zdCBJbnRTaXplJiwgVGV4dHVyZU1hcHBlckdMOjpG
bGFncywgR0xpbnQgaW50ZXJuYWxGb3JtYXQpOwogCi0gICAgdmlydHVhbCB+VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAgc3RydWN0IFJHQlRleHR1cmUg
eworICAgICAgICBHTHVpbnQgaWQ7CisgICAgfTsKKyAgICBzdHJ1Y3QgWVVWVGV4dHVyZSB7Cisg
ICAgICAgIGludCBudW1iZXJPZlBsYW5lczsKKyAgICAgICAgc3RkOjphcnJheTxHTHVpbnQsIDM+
IHBsYW5lczsKKyAgICAgICAgc3RkOjphcnJheTxpbnQsIDM+IHl1dlBsYW5lOworICAgICAgICBz
dGQ6OmFycmF5PGludCwgMz4geXV2UGxhbmVPZmZzZXQ7CisgICAgICAgIHN0ZDo6YXJyYXk8R0xm
bG9hdCwgOT4geXV2VG9SZ2JNYXRyaXg7CisgICAgfTsKKyAgICB1c2luZyBUZXh0dXJlVmFyaWFu
dCA9IFdURjo6VmFyaWFudDxSR0JUZXh0dXJlLCBZVVZUZXh0dXJlPjsKKworICAgIFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKFRleHR1cmVWYXJpYW50JiYsIGNvbnN0IEludFNpemUm
LCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzLCBHTGludCBpbnRlcm5hbEZvcm1hdCk7CisKKyAgICB2
aXJ0dWFsIH5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcigpOwogCiAgICAgdm9pZCBw
YWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9u
TWF0cml4KCksIGZsb2F0IG9wYWNpdHkgPSAxLjApIGZpbmFsOwogCkBAIC01Nyw2ICs3Myw4IEBA
IHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIo
KSA9IGRlZmF1bHQ7CiAgICAgICAgIHZpcnR1YWwgflVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIo
KSA9IGRlZmF1bHQ7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHdhaXRGb3JDUFVTeW5jKCkgPSAw
OwogICAgIH07CiAKICAgICBib29sIGhhc01hbmFnZWRUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNNYW5hZ2VkVGV4dHVyZTsgfQpAQCAtNzgsNiArOTYsNyBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxCaXRtYXBUZXh0dXJlPiBtX3RleHR1cmU7CiAgICAgTW9ub3RvbmljVGltZSBtX3RpbWVM
YXN0VXNlZDsKIAorICAgIFRleHR1cmVWYXJpYW50IG1fdmFyaWFudDsKICAgICBHTHVpbnQgbV90
ZXh0dXJlSUQ7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgR0xpbnQgbV9pbnRlcm5hbEZvcm1h
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCmluZGV4IGViODc4
OGQ0ZmY1ZTg4OWZiYWY0NmM2MDE2OTk1MzAwYTc4ZDcxMGQuLjVlMDI4NDdlNGFmZWIwZDk0ZTA3
NjE0OTMyNTFmYjVlMmNhN2Q2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtLmNwcApAQCAtMjA3LDkgKzIwNywxMyBAQCBzdGF0aWMgY29uc3QgY2hhciogZnJhZ21l
bnRUZW1wbGF0ZUdFMzIwVmFycyA9CiBzdGF0aWMgY29uc3QgY2hhciogZnJhZ21lbnRUZW1wbGF0
ZUNvbW1vbiA9CiAgICAgU1RSSU5HSUZZKAogICAgICAgICB1bmlmb3JtIFNhbXBsZXJUeXBlIHNf
c2FtcGxlcjsKKyAgICAgICAgdW5pZm9ybSBTYW1wbGVyVHlwZSBzX3NhbXBsZXJZOworICAgICAg
ICB1bmlmb3JtIFNhbXBsZXJUeXBlIHNfc2FtcGxlclU7CisgICAgICAgIHVuaWZvcm0gU2FtcGxl
clR5cGUgc19zYW1wbGVyVjsKICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc19jb250ZW50VGV4
dHVyZTsKICAgICAgICAgdW5pZm9ybSBmbG9hdCB1X29wYWNpdHk7CiAgICAgICAgIHVuaWZvcm0g
ZmxvYXQgdV9maWx0ZXJBbW91bnQ7CisgICAgICAgIHVuaWZvcm0gbWF0MyB1X3l1dlRvUmdiOwog
ICAgICAgICB1bmlmb3JtIHZlYzIgdV9ibHVyUmFkaXVzOwogICAgICAgICB1bmlmb3JtIHZlYzIg
dV9zaGFkb3dPZmZzZXQ7CiAgICAgICAgIHVuaWZvcm0gdmVjNCB1X2NvbG9yOwpAQCAtMjMxLDcg
KzIzNSw0MSBAQCBzdGF0aWMgY29uc3QgY2hhciogZnJhZ21lbnRUZW1wbGF0ZUNvbW1vbiA9CiAK
ICAgICAgICAgdm9pZCBhcHBseU1hbnVhbFJlcGVhdChpbm91dCB2ZWMyIHBvcykgeyBwb3MgPSBm
cmFjdChwb3MpOyB9CiAKLSAgICAgICAgdm9pZCBhcHBseVRleHR1cmUoaW5vdXQgdmVjNCBjb2xv
ciwgdmVjMiB0ZXhDb29yZCkgeyBjb2xvciA9IHVfdGV4dHVyZUNvbG9yU3BhY2VNYXRyaXggKiBT
YW1wbGVyRnVuY3Rpb24oc19zYW1wbGVyLCB0ZXhDb29yZCk7IH0KKyAgICAgICAgdm9pZCBhcHBs
eVRleHR1cmVSR0IoaW5vdXQgdmVjNCBjb2xvciwgdmVjMiB0ZXhDb29yZCkgeyBjb2xvciA9IHVf
dGV4dHVyZUNvbG9yU3BhY2VNYXRyaXggKiBTYW1wbGVyRnVuY3Rpb24oc19zYW1wbGVyLCB0ZXhD
b29yZCk7IH0KKworICAgICAgICB2ZWMzIHl1dlRvUmdiKGZsb2F0IHksIGZsb2F0IHUsIGZsb2F0
IHYpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIHl1diBpcyBlaXRoZXIgYnQ2MDEgb3IgYnQ3
MDkgc28gdGhlIG9mZnNldCBpcyB0aGUgc2FtZQorICAgICAgICAgICAgdmVjMyB5dXYgPSB2ZWMz
KHkgLSAwLjA2MjUsIHUgLSAwLjUsIHYgLSAwLjUpOworICAgICAgICAgICAgcmV0dXJuIHl1diAq
IHVfeXV2VG9SZ2I7CisgICAgICAgIH0KKyAgICAgICAgdm9pZCBhcHBseVRleHR1cmVZVVYoaW5v
dXQgdmVjNCBjb2xvciwgdmVjMiB0ZXhDb29yZCkKKyAgICAgICAgeworICAgICAgICAgICAgZmxv
YXQgeSA9IFNhbXBsZXJGdW5jdGlvbihzX3NhbXBsZXJZLCB0ZXhDb29yZCkucjsKKyAgICAgICAg
ICAgIGZsb2F0IHUgPSBTYW1wbGVyRnVuY3Rpb24oc19zYW1wbGVyVSwgdGV4Q29vcmQpLnI7Cisg
ICAgICAgICAgICBmbG9hdCB2ID0gU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlclYsIHRleENvb3Jk
KS5yOworICAgICAgICAgICAgdmVjNCBkYXRhID0gdmVjNCh5dXZUb1JnYih5LCB1LCB2KSwgMS4w
KTsKKyAgICAgICAgICAgIGNvbG9yID0gdV90ZXh0dXJlQ29sb3JTcGFjZU1hdHJpeCAqIGRhdGE7
CisgICAgICAgIH0KKyAgICAgICAgdm9pZCBhcHBseVRleHR1cmVOVjEyKGlub3V0IHZlYzQgY29s
b3IsIHZlYzIgdGV4Q29vcmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZsb2F0IHkgPSBTYW1w
bGVyRnVuY3Rpb24oc19zYW1wbGVyWSwgdGV4Q29vcmQpLnI7CisgICAgICAgICAgICB2ZWMyIHV2
ID0gU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlclUsIHRleENvb3JkKS5yZzsKKyAgICAgICAgICAg
IHZlYzQgZGF0YSA9IHZlYzQoeXV2VG9SZ2IoeSwgdXYueCwgdXYueSksIDEuMCk7CisgICAgICAg
ICAgICBjb2xvciA9IHVfdGV4dHVyZUNvbG9yU3BhY2VNYXRyaXggKiBkYXRhOworICAgICAgICB9
CisgICAgICAgIHZvaWQgYXBwbHlUZXh0dXJlTlYyMShpbm91dCB2ZWM0IGNvbG9yLCB2ZWMyIHRl
eENvb3JkKQorICAgICAgICB7CisgICAgICAgICAgICBmbG9hdCB5ID0gU2FtcGxlckZ1bmN0aW9u
KHNfc2FtcGxlclksIHRleENvb3JkKS5yOworICAgICAgICAgICAgdmVjMiB1diA9IFNhbXBsZXJG
dW5jdGlvbihzX3NhbXBsZXJVLCB0ZXhDb29yZCkuZ3I7CisgICAgICAgICAgICB2ZWM0IGRhdGEg
PSB2ZWM0KHl1dlRvUmdiKHksIHV2LngsIHV2LnkpLCAxLjApOworICAgICAgICAgICAgY29sb3Ig
PSB1X3RleHR1cmVDb2xvclNwYWNlTWF0cml4ICogZGF0YTsKKyAgICAgICAgfQorICAgICAgICB2
b2lkIGFwcGx5VGV4dHVyZVBhY2tlZFlVVihpbm91dCB2ZWM0IGNvbG9yLCB2ZWMyIHRleENvb3Jk
KQorICAgICAgICB7CisgICAgICAgICAgICB2ZWM0IGRhdGEgPSBTYW1wbGVyRnVuY3Rpb24oc19z
YW1wbGVyLCB0ZXhDb29yZCk7CisgICAgICAgICAgICBjb2xvciA9IHVfdGV4dHVyZUNvbG9yU3Bh
Y2VNYXRyaXggKiB2ZWM0KHl1dlRvUmdiKGRhdGEuYiwgZGF0YS5nLCBkYXRhLnIpLCBkYXRhLmEp
OworICAgICAgICB9CiAgICAgICAgIHZvaWQgYXBwbHlPcGFjaXR5KGlub3V0IHZlYzQgY29sb3Ip
IHsgY29sb3IgKj0gdV9vcGFjaXR5OyB9CiAgICAgICAgIHZvaWQgYXBwbHlBbnRpYWxpYXNpbmco
aW5vdXQgdmVjNCBjb2xvcikgeyBjb2xvciAqPSBhbnRpYWxpYXMoKTsgfQogCkBAIC0zNDMsNyAr
MzgxLDExIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBmcmFnbWVudFRlbXBsYXRlQ29tbW9uID0KICAg
ICAgICAgICAgIHZlYzQgY29sb3IgPSB2ZWM0KDEuLCAxLiwgMS4sIDEuKTsKICAgICAgICAgICAg
IHZlYzIgdGV4Q29vcmQgPSB0cmFuc2Zvcm1UZXhDb29yZCgpOwogICAgICAgICAgICAgYXBwbHlN
YW51YWxSZXBlYXRJZk5lZWRlZCh0ZXhDb29yZCk7Ci0gICAgICAgICAgICBhcHBseVRleHR1cmVJ
Zk5lZWRlZChjb2xvciwgdGV4Q29vcmQpOworICAgICAgICAgICAgYXBwbHlUZXh0dXJlUkdCSWZO
ZWVkZWQoY29sb3IsIHRleENvb3JkKTsKKyAgICAgICAgICAgIGFwcGx5VGV4dHVyZVlVVklmTmVl
ZGVkKGNvbG9yLCB0ZXhDb29yZCk7CisgICAgICAgICAgICBhcHBseVRleHR1cmVOVjEySWZOZWVk
ZWQoY29sb3IsIHRleENvb3JkKTsKKyAgICAgICAgICAgIGFwcGx5VGV4dHVyZU5WMjFJZk5lZWRl
ZChjb2xvciwgdGV4Q29vcmQpOworICAgICAgICAgICAgYXBwbHlUZXh0dXJlUGFja2VkWVVWSWZO
ZWVkZWQoY29sb3IsIHRleENvb3JkKTsKICAgICAgICAgICAgIGFwcGx5U29saWRDb2xvcklmTmVl
ZGVkKGNvbG9yKTsKICAgICAgICAgICAgIGFwcGx5QW50aWFsaWFzaW5nSWZOZWVkZWQoY29sb3Ip
OwogICAgICAgICAgICAgYXBwbHlPcGFjaXR5SWZOZWVkZWQoY29sb3IpOwpAQCAtMzY5LDcgKzQx
MSwxMSBAQCBSZWY8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+IFRleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtOjpjcmVhdGUoVGV4dHVyZU1hcHBlcgogICAgICAgICAob3B0aW9ucyAmIFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpBcHBsaWVyKSA/IEVOQUJMRV9BUFBMSUVSKEFwcGxpZXIp
IDogRElTQUJMRV9BUFBMSUVSKEFwcGxpZXIpKQogCiAgICAgU3RyaW5nQnVpbGRlciBvcHRpb25z
QXBwbGllckJ1aWxkZXI7Ci0gICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKFRleHR1cmUpOwor
ICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhUZXh0dXJlUkdCKTsKKyAgICBTRVRfQVBQTElF
Ul9GUk9NX09QVElPTlMoVGV4dHVyZVlVVik7CisgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05T
KFRleHR1cmVOVjEyKTsKKyAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoVGV4dHVyZU5WMjEp
OworICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhUZXh0dXJlUGFja2VkWVVWKTsKICAgICBT
RVRfQVBQTElFUl9GUk9NX09QVElPTlMoUmVjdCk7CiAgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJ
T05TKFNvbGlkQ29sb3IpOwogICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhPcGFjaXR5KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmgKaW5kZXggNGEzNDIwYzA2MDJj
YjRkNjBhNDk4Yjk0NzVhM2YzOTdkMmQ3MWYxOS4uYmE1YzAwMTE3NTg0NzcwNjQ0YmZkZjQ3N2I1
YzE3YTFjZmQ4ZjY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmgK
QEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW0gOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbT4gewogcHVibGljOgogICAgIGVudW0gT3B0aW9uIHsKLSAgICAgICAgVGV4dHVyZSAgICAg
ICAgICA9IDFMIDw8IDAsCisgICAgICAgIFRleHR1cmVSR0IgICAgICAgPSAxTCA8PCAwLAogICAg
ICAgICBSZWN0ICAgICAgICAgICAgID0gMUwgPDwgMSwKICAgICAgICAgU29saWRDb2xvciAgICAg
ICA9IDFMIDw8IDIsCiAgICAgICAgIE9wYWNpdHkgICAgICAgICAgPSAxTCA8PCAzLApAQCAtNjEs
NyArNjEsMTEgQEAgcHVibGljOgogICAgICAgICBCbHVyRmlsdGVyICAgICAgID0gMUwgPDwgMTQs
CiAgICAgICAgIEFscGhhQmx1ciAgICAgICAgPSAxTCA8PCAxNSwKICAgICAgICAgQ29udGVudFRl
eHR1cmUgICA9IDFMIDw8IDE2LAotICAgICAgICBNYW51YWxSZXBlYXQgICAgID0gMUwgPDwgMTcK
KyAgICAgICAgTWFudWFsUmVwZWF0ICAgICA9IDFMIDw8IDE3LAorICAgICAgICBUZXh0dXJlWVVW
ICAgICAgID0gMUwgPDwgMTgsCisgICAgICAgIFRleHR1cmVOVjEyICAgICAgPSAxTCA8PCAxOSwK
KyAgICAgICAgVGV4dHVyZU5WMjEgICAgICA9IDFMIDw8IDIwLAorICAgICAgICBUZXh0dXJlUGFj
a2VkWVVWID0gMUwgPDwgMjEsCiAgICAgfTsKIAogICAgIHR5cGVkZWYgdW5zaWduZWQgT3B0aW9u
czsKQEAgLTgwLDcgKzg0LDExIEBAIHB1YmxpYzoKICAgICBURVhNQVBfREVDTEFSRV9VTklGT1JN
KG9wYWNpdHkpCiAgICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9STShjb2xvcikKICAgICBURVhNQVBf
REVDTEFSRV9VTklGT1JNKGV4cGFuZGVkUXVhZEVkZ2VzSW5TY3JlZW5TcGFjZSkKKyAgICBURVhN
QVBfREVDTEFSRV9VTklGT1JNKHl1dlRvUmdiKQogICAgIFRFWE1BUF9ERUNMQVJFX1NBTVBMRVIo
c2FtcGxlcikKKyAgICBURVhNQVBfREVDTEFSRV9TQU1QTEVSKHNhbXBsZXJZKQorICAgIFRFWE1B
UF9ERUNMQVJFX1NBTVBMRVIoc2FtcGxlclUpCisgICAgVEVYTUFQX0RFQ0xBUkVfU0FNUExFUihz
YW1wbGVyVikKICAgICBURVhNQVBfREVDTEFSRV9TQU1QTEVSKG1hc2spCiAKICAgICBURVhNQVBf
REVDTEFSRV9VTklGT1JNKGZpbHRlckFtb3VudCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377882</attachid>
            <date>2019-09-03 03:34:27 -0700</date>
            <delta_ts>2019-09-03 05:33:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132869-20190903113425.patch</filename>
            <type>text/plain</type>
            <size>41917</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4ODUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhjYmEwYjczNDM3YmJi
MDlhYzY2OGQ3Yzc3NDg2NzlmZjRiNjQ4ZS4uMmU0OTU4NDU1ZDk5MTU2NDlhYTNhOWI0M2QyYjJi
MDExN2U2MWUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE5LTA5LTAzICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbVGV4bWFwXVtHU3Ry
ZWFtZXJdIEFkZCBzdXBwb3J0IHRvIHVwbG9hZCBtb3JlIGNvbG9yIGZvcm1hdHMgaW50byB0aGUg
dGV4dHVyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTMyODY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U3VwcG9ydCBub24taW50ZXJsZWF2ZWQgWVVWIGNvbG9yIGZvciBnc3RyZWFtZXItZ2wKKworICAg
ICAgICBUaGlzIGFkZHMgZGlyZWN0IHN1cHBvcnQgZm9yIHJlbmRlcmluZyBJNDIwLCBJNDQ0LCBZ
VjEyLCBZVjIxLCBZNDJCLAorICAgICAgICBOVjEyLCBOVjIxIGFuZCBWVVlBIGNvbG9yIGZvcm1h
dHMgdXNpbmcgR0xHTCBzaGFkZXJzIHdoZW4gdXNpbmcKKyAgICAgICAgZ3N0cmVhbWVyLWdsIGZv
ciB2aWRlbyByZW5kZXJpbmcuIFRoaXMgYXZvaWRzIGEgc3VyZmFjZSBjb3B5IG9uIHRoZSBHUFUK
KyAgICAgICAgaW4gdGhvc2UgY2FzZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBub3QgY2hh
bmdpbmcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
c3RWaWRlb0ZyYW1lSG9sZGVyOjpHc3RWaWRlb0ZyYW1lSG9sZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkdzdFZpZGVvRnJhbWVIb2xkZXI6OndhaXRGb3JDUFVTeW5jKToKKyAgICAgICAgKFdlYkNv
cmU6OkdzdFZpZGVvRnJhbWVIb2xkZXI6Omhhc01hcHBlZFRleHR1cmVzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdzdFZpZGVvRnJhbWVIb2xkZXI6OnZpZGVvRnJhbWUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cHVzaFRleHR1
cmVUb0NvbXBvc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZTo6Y3JlYXRlVmlkZW9TaW5rR0wpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpWaWRlb1RleHR1cmVDb3BpZXJH
U3RyZWFtZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3B0aW9uc0ZvckZpbHRlclR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpwcmVwYXJlVHJhbnNmb3JtYXRpb25NYXRyaXhXaXRoRmxhZ3MpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVBsYW5hcllVVik6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlU2VtaVBsYW5hcllVVik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlUGFja2VkWVVWKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVkUXVhZFdpdGhQ
cm9ncmFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6flRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpjbG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaDoKKwogMjAxOS0wOC0xOSAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHNwZWN1bGF0aXZl
IGJ1aWxkIGZpeCBmb3IgR1RLIGFuZCBXaW5DYWlybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IGIwMmUyOGVkY2Q0MDdmZGZm
OGNiZWE3OGFkMWE2ZTdiMGM3YjU4YTkuLmJlNDc2MWQ3MjNiNjQ5MWQzYzFiOGVkZTQ0NGM1YzRi
ZGU3NmNkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZS5jcHAKQEAgLTU1LDYgKzU1LDcgQEAKIAogI2lmIFVTRShHU1RSRUFNRVJfR0wp
CiAjZGVmaW5lIFRFWFRVUkVfQ09QSUVSX0NPTE9SX0NPTlZFUlRfRkxBRyBWaWRlb1RleHR1cmVD
b3BpZXJHU3RyZWFtZXI6OkNvbG9yQ29udmVyc2lvbjo6Tm9Db252ZXJ0CisjZGVmaW5lIEdTVF9H
TF9DQVBTX0ZPUk1BVCAieyBSR0J4LCBSR0JBLCBJNDIwLCBZNDQ0LCBZVjEyLCBZNDFCLCBZNDJC
LCBOVjEyLCBOVjIxLCBWVVlBIH0iCiAKICNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNpbmsuaD4K
IApAQCAtMTQ1LDggKzE0NiwxMCBAQCBwdWJsaWM6CiAKICAgICAgICAgaWYgKGdzdEdMRW5hYmxl
ZCkgewogICAgICAgICAgICAgbV9pc01hcHBlZCA9IGdzdF92aWRlb19mcmFtZV9tYXAoJm1fdmlk
ZW9GcmFtZSwgJnZpZGVvSW5mbywgbV9idWZmZXIsIHN0YXRpY19jYXN0PEdzdE1hcEZsYWdzPihH
U1RfTUFQX1JFQUQgfCBHU1RfTUFQX0dMKSk7Ci0gICAgICAgICAgICBpZiAobV9pc01hcHBlZCkK
KyAgICAgICAgICAgIGlmIChtX2lzTWFwcGVkKSB7CiAgICAgICAgICAgICAgICAgbV90ZXh0dXJl
SUQgPSAqcmVpbnRlcnByZXRfY2FzdDxHTHVpbnQqPihtX3ZpZGVvRnJhbWUuZGF0YVswXSk7Cisg
ICAgICAgICAgICAgICAgbV9oYXNNYXBwZWRUZXh0dXJlcyA9IHRydWU7CisgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZQogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKGZsYWdzKTsKQEAg
LTE3MSwxMCArMTc0LDIyIEBAIHB1YmxpYzoKICAgICAgICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFw
KCZtX3ZpZGVvRnJhbWUpOwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCB3YWl0Rm9yQ1BVU3lu
YygpCisgICAgeworICAgICAgICBHc3RHTFN5bmNNZXRhKiBtZXRhID0gZ3N0X2J1ZmZlcl9nZXRf
Z2xfc3luY19tZXRhKG1fYnVmZmVyKTsKKyAgICAgICAgaWYgKG1ldGEpIHsKKyAgICAgICAgICAg
IEdzdE1lbW9yeSogbWVtID0gZ3N0X2J1ZmZlcl9wZWVrX21lbW9yeShtX2J1ZmZlciwgMCk7Cisg
ICAgICAgICAgICBHc3RHTENvbnRleHQqIGNvbnRleHQgPSAoKEdzdEdMQmFzZU1lbW9yeSopbWVt
KS0+Y29udGV4dDsKKyAgICAgICAgICAgIGdzdF9nbF9zeW5jX21ldGFfd2FpdF9jcHUobWV0YSwg
Y29udGV4dCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBjb25zdCBJbnRTaXplJiBzaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgYm9vbCBoYXNBbHBoYUNoYW5uZWwoKSBjb25z
dCB7IHJldHVybiBtX2hhc0FscGhhQ2hhbm5lbDsgfQogICAgIFRleHR1cmVNYXBwZXJHTDo6Rmxh
Z3MgZmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9CiAgICAgR0x1aW50IHRleHR1cmVJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlEOyB9CisgICAgYm9vbCBoYXNNYXBwZWRUZXh0
dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzTWFwcGVkVGV4dHVyZXM7IH0KKyAgICBjb25zdCBH
c3RWaWRlb0ZyYW1lJiB2aWRlb0ZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0ZyYW1lOyB9
CiAKICAgICB2b2lkIHVwZGF0ZVRleHR1cmUoQml0bWFwVGV4dHVyZUdMJiB0ZXh0dXJlKQogICAg
IHsKQEAgLTIwOSw2ICsyMjQsNyBAQCBwcml2YXRlOgogICAgIFRleHR1cmVNYXBwZXJHTDo6Rmxh
Z3MgbV9mbGFncyB7IH07CiAgICAgR0x1aW50IG1fdGV4dHVyZUlEIHsgMCB9OwogICAgIGJvb2wg
bV9pc01hcHBlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc01hcHBlZFRleHR1cmVzIHsgZmFs
c2UgfTsKIH07CiAjZW5kaWYKIApAQCAtNzEyLDEwICs3MjgsNTcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlOjpwdXNoVGV4dHVyZVRvQ29tcG9zaXRvcigpCiAKICAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RWaWRlb0ZyYW1lSG9sZGVyPiBmcmFtZUhvbGRlciA9
IG1ha2VVbmlxdWU8R3N0VmlkZW9GcmFtZUhvbGRlcj4obV9zYW1wbGUuZ2V0KCksIG1fdGV4dHVy
ZU1hcHBlckZsYWdzLCAhbV91c2luZ0ZhbGxiYWNrVmlkZW9TaW5rKTsKIAotICAgICAgICAgICAg
R0x1aW50IHRleHR1cmVJRCA9IGZyYW1lSG9sZGVyLT50ZXh0dXJlSUQoKTsKLSAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJC
dWZmZXI7Ci0gICAgICAgICAgICBpZiAodGV4dHVyZUlEKSB7Ci0gICAgICAgICAgICAgICAgbGF5
ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPih0
ZXh0dXJlSUQsIGZyYW1lSG9sZGVyLT5zaXplKCksIGZyYW1lSG9sZGVyLT5mbGFncygpLCBHcmFw
aGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgICAgICAgICB1c2luZyBCdWZmZXIgPSBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxC
dWZmZXI+IGxheWVyQnVmZmVyOworICAgICAgICAgICAgaWYgKGZyYW1lSG9sZGVyLT5oYXNNYXBw
ZWRUZXh0dXJlcygpKSB7CisgICAgICAgICAgICAgICAgYXV0byYgdmlkZW9GcmFtZSA9IGZyYW1l
SG9sZGVyLT52aWRlb0ZyYW1lKCk7CisgICAgICAgICAgICAgICAgWyZdIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKChHU1RfVklERU9fSU5GT19JU19SR0IoJnZpZGVvRnJhbWUuaW5mbykgJiYg
R1NUX1ZJREVPX0lORk9fTl9QTEFORVMoJnZpZGVvRnJhbWUuaW5mbykgPT0gMSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxCdWZmZXI+KAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcjo6VGV4dHVyZVZhcmlhbnQgeyBCdWZmZXI6
OlJHQlRleHR1cmUgeyAqc3RhdGljX2Nhc3Q8R0x1aW50Kj4odmlkZW9GcmFtZS5kYXRhWzBdKSB9
IH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVIb2xkZXItPnNpemUoKSwgZnJh
bWVIb2xkZXItPmZsYWdzKCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgICAgIGlmIChHU1RfVklERU9fSU5GT19JU19ZVVYoJnZpZGVvRnJhbWUuaW5mbykpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChHU1RfVklERU9fSU5GT19OX0NPTVBPTkVOVFMo
JnZpZGVvRnJhbWUuaW5mbykgPCAzIHx8IEdTVF9WSURFT19JTkZPX05fUExBTkVTKCZ2aWRlb0Zy
YW1lLmluZm8pID4gMykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mUGxhbmVzID0gR1NUX1ZJREVP
X0lORk9fTl9QTEFORVMoJnZpZGVvRnJhbWUuaW5mbyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6OmFycmF5PEdMdWludCwgMz4gcGxhbmVzOworICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjphcnJheTx1bnNpZ25lZCwgMz4geXV2UGxhbmU7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6OmFycmF5PHVuc2lnbmVkLCAzPiB5dXZQbGFuZU9mZnNldDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgPSAwOyBpIDwgbnVtYmVyT2ZQbGFuZXM7ICsraSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFuZXNbaV0gPSAqc3RhdGljX2Nhc3Q8R0x1aW50
Kj4odmlkZW9GcmFtZS5kYXRhW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgPSAwOyBpIDwgMzsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXV2
UGxhbmVbaV0gPSBHU1RfVklERU9fSU5GT19DT01QX1BMQU5FKCZ2aWRlb0ZyYW1lLmluZm8sIGkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl1dlBsYW5lT2Zmc2V0W2ldID0gR1NUX1ZJ
REVPX0lORk9fQ09NUF9QT0ZGU0VUKCZ2aWRlb0ZyYW1lLmluZm8sIGkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmFycmF5PEdMZmxv
YXQsIDk+IHl1dlRvUmdiOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdzdF92aWRlb19j
b2xvcmltZXRyeV9tYXRjaGVzKCZHU1RfVklERU9fSU5GT19DT0xPUklNRVRSWSgmdmlkZW9GcmFt
ZS5pbmZvKSwgR1NUX1ZJREVPX0NPTE9SSU1FVFJZX0JUNzA5KSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHl1dlRvUmdiID0geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxLjE2NGYsICAwLjBmLCAgICAxLjc4N2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEuMTY0ZiwgLTAuMjEzZiwgLTAuNTMxZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMS4xNjRmLCAgMi4xMTJmLCAgMC4wZgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH07CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIERlZmF1bHQgdG8gYnQ2MDEuIFRoaXMgaXMgdGhlIHNhbWUgYmVoYXZpb3Vy
IGFzIEdTdHJlYW1lcidzIGdsY29sb3Jjb252ZXJ0IGVsZW1lbnQuCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeXV2VG9SZ2IgPSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEuMTY0ZiwgIDAuMGYsICAgIDEuNTk2ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMS4xNjRmLCAtMC4zOTFmLCAtMC44MTNmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxLjE2NGYsICAyLjAxOGYsICAwLjBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAg
bGF5ZXJCdWZmZXIgPSBtYWtlVW5pcXVlPEJ1ZmZlcj4oQnVmZmVyOjpUZXh0dXJlVmFyaWFudCB7
IEJ1ZmZlcjo6WVVWVGV4dHVyZSB7IG51bWJlck9mUGxhbmVzLCBwbGFuZXMsIHl1dlBsYW5lLCB5
dXZQbGFuZU9mZnNldCwgeXV2VG9SZ2IgfSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZyYW1lSG9sZGVyLT5zaXplKCksIGZyYW1lSG9sZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KCk7
CisKKyAgICAgICAgICAgICAgICBpZiAoIWxheWVyQnVmZmVyKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisKICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlci0+c2V0VW5tYW5hZ2VkQnVm
ZmVyRGF0YUhvbGRlcihXVEZNb3ZlKGZyYW1lSG9sZGVyKSk7CiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyID0gcHJveHkuZ2V0QXZhaWxhYmxlQnVmZmVy
KGZyYW1lSG9sZGVyLT5zaXplKCksIEdMX0RPTlRfQ0FSRSk7CkBAIC0xMDYyLDggKzExMjUsNyBA
QCBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjcmVhdGVWaWRl
b1NpbmtHTCgpCiAgICAgR3N0RWxlbWVudCogYXBwc2luayA9IGNyZWF0ZUdMQXBwU2luaygpOwog
CiAgICAgLy8gZ2xzaW5rYmluIGlzIG5vdCB1c2VkIGJlY2F1c2UgaXQgaW5jbHVkZXMgZ2xjb2xv
cmNvbnZlcnQgd2hpY2ggb25seSBwcm9jZXNzIFJHQkEsCi0gICAgLy8gYnV0IGluIHRoZSBmdXR1
cmUgaXQgd291bGQgYmUgcG9zc2libGUgdG8gcmVuZGVyIFlVViBmb3JtYXRzIHRvbzoKLSAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyODY5CisgICAgLy8g
YnV0IHdlIGNhbiBkaXNwbGF5IFlVViBmb3JtYXRzIHRvby4KIAogICAgIGlmICghYXBwc2luayB8
fCAhdXBsb2FkIHx8ICFjb2xvcmNvbnZlcnQpIHsKICAgICAgICAgR1NUX1dBUk5JTkcoIkZhaWxl
ZCB0byBjcmVhdGUgR3N0R0wgZWxlbWVudHMiKTsKQEAgLTEwODIsNyArMTE0NCw3IEBAIEdzdEVs
ZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNyZWF0ZVZpZGVvU2lua0dM
KCkKIAogICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTih2aWRlb1NpbmspLCB1cGxvYWQsIGNv
bG9yY29udmVydCwgYXBwc2luaywgbnVsbHB0cik7CiAKLSAgICBHUmVmUHRyPEdzdENhcHM+IGNh
cHMgPSBhZG9wdEdSZWYoZ3N0X2NhcHNfbmV3X3NpbXBsZSgidmlkZW8veC1yYXciLCAiZm9ybWF0
IiwgR19UWVBFX1NUUklORywgIlJHQkEiLCBudWxscHRyKSk7CisgICAgR1JlZlB0cjxHc3RDYXBz
PiBjYXBzID0gYWRvcHRHUmVmKGdzdF9jYXBzX2Zyb21fc3RyaW5nKCJ2aWRlby94LXJhdywgZm9y
bWF0ID0gKHN0cmluZykgIiBHU1RfR0xfQ0FQU19GT1JNQVQpKTsKICAgICBnc3RfY2Fwc19zZXRf
ZmVhdHVyZXMoY2Fwcy5nZXQoKSwgMCwgZ3N0X2NhcHNfZmVhdHVyZXNfbmV3KEdTVF9DQVBTX0ZF
QVRVUkVfTUVNT1JZX0dMX01FTU9SWSwgbnVsbHB0cikpOwogICAgIGdfb2JqZWN0X3NldChhcHBz
aW5rLCAiY2FwcyIsIGNhcHMuZ2V0KCksIG51bGxwdHIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9W
aWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwCmluZGV4IGZmMzM4MTgxOGQyYTI1ZWUzZGU0
NjM2MzE4MDIwZDczYmY0Y2JhYTguLjUyZTE3ZWFjNTZlN2FlNjhjODM5OTRjNzA4ZTM5Zjg3MDU4
NjkwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIu
Y3BwCkBAIC0zNSw3ICszNSw3IEBAIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6VmlkZW9U
ZXh0dXJlQ29waWVyR1N0cmVhbWVyKENvbG9yQ29udmVyc2lvbiBjb2xvckNvCiAgICAgQVNTRVJU
KHByZXZpb3VzQ29udGV4dCk7CiAgICAgUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9y
Q29tcG9zaXRpbmcoKS5zaGFyaW5nR0xDb250ZXh0KCktPm1ha2VDb250ZXh0Q3VycmVudCgpOwog
Ci0gICAgbV9zaGFkZXJQcm9ncmFtID0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OmNyZWF0
ZShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZSk7CisgICAgbV9zaGFkZXJQcm9n
cmFtID0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OmNyZWF0ZShUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbTo6VGV4dHVyZVJHQik7CiAKICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbV9m
cmFtZWJ1ZmZlcik7CiAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbV9yZXN1bHRUZXh0dXJlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggYTJmNzU4NjZlMzIzYjhmZGJhNDNhMDA3ZDQ0N2FhYTQ2
NTc2YmZmMi4uNjE2MzVlNTJhNjc2OTU4MzQzM2VkMGUzMDMyMjlmODVjMWVjMDVlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHTC5jcHAKQEAgLTMxOSwyMSArMzE5LDIxIEBAIHN0YXRpYyBUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbTo6T3B0aW9ucyBvcHRpb25zRm9yRmlsdGVyVHlwZShGaWx0ZXJPcGVy
YXRpb246CiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OkdSQVlTQ0FMRToKLSAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpU
ZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkdyYXlzY2FsZUZpbHRlcjsKKyAg
ICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlUkdCIHwgVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkdyYXlzY2FsZUZpbHRlcjsKICAgICBjYXNlIEZpbHRl
ck9wZXJhdGlvbjo6U0VQSUE6Ci0gICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbTo6VGV4dHVyZSB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpTZXBpYUZpbHRlcjsK
KyAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlUkdCIHwg
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlNlcGlhRmlsdGVyOwogICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpTQVRVUkFURToKLSAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtOjpUZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlNhdHVyYXRlRmls
dGVyOworICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVS
R0IgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6U2F0dXJhdGVGaWx0ZXI7CiAgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6Ci0gICAgICAgIHJldHVybiBUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZSB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpI
dWVSb3RhdGVGaWx0ZXI7CisgICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bTo6VGV4dHVyZVJHQiB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpIdWVSb3RhdGVGaWx0
ZXI7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklOVkVSVDoKLSAgICAgICAgcmV0dXJuIFRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW06OkludmVydEZpbHRlcjsKKyAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtOjpUZXh0dXJlUkdCIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkludmVydEZp
bHRlcjsKICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzoKLSAgICAgICAgcmV0
dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW06OkJyaWdodG5lc3NGaWx0ZXI7CisgICAgICAgIHJldHVybiBUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVJHQiB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
OjpCcmlnaHRuZXNzRmlsdGVyOwogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDoK
LSAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlIHwgVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkNvbnRyYXN0RmlsdGVyOworICAgICAgICByZXR1cm4g
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVSR0IgfCBUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbTo6Q29udHJhc3RGaWx0ZXI7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9Q
QUNJVFk6Ci0gICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVy
ZSB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcGFjaXR5RmlsdGVyOworICAgICAgICBy
ZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVSR0IgfCBUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbTo6T3BhY2l0eUZpbHRlcjsKICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6QkxVUjoKICAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpCbHVy
RmlsdGVyOwogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzoKQEAgLTQ3MCw3
ICs0NzAsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUoR0x1aW50IHRleHR1
cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXplJiB0ZQogICAgICAgICAmJiBleHBvc2VkRWRn
ZXMgPT0gQWxsRWRnZXMKICAgICAgICAgJiYgIW1vZGVsVmlld01hdHJpeC5tYXBRdWFkKHRhcmdl
dFJlY3QpLmlzUmVjdGlsaW5lYXIoKTsKIAotICAgIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
OjpPcHRpb25zIG9wdGlvbnMgPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZTsK
KyAgICBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3B0aW9ucyBvcHRpb25zID0gVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVSR0I7CiAgICAgaWYgKHVzZVJlY3QpCiAgICAg
ICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlJlY3Q7CiAgICAgaWYg
KG9wYWNpdHkgPCAxKQpAQCAtNTA0LDYgKzUwNCwxNzMgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6
OmRyYXdUZXh0dXJlKEdMdWludCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYg
dGUKICAgICBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgdGV4dHVy
ZSwgZmxhZ3MsIHRleHR1cmVTaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNp
dHkpOwogfQogCitzdGF0aWMgdm9pZCBwcmVwYXJlVHJhbnNmb3JtYXRpb25NYXRyaXhXaXRoRmxh
Z3MoVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhdHRlcm5UcmFuc2Zvcm0sIFRleHR1cmVNYXBwZXJH
TDo6RmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgaWYgKGZsYWdzICYg
VGV4dHVyZU1hcHBlckdMOjpTaG91bGRSb3RhdGVUZXh0dXJlOTApIHsKKyAgICAgICAgcGF0dGVy
blRyYW5zZm9ybS5yb3RhdGUoLTkwKTsKKyAgICAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xh
dGUoLTEsIDApOworICAgIH0KKyAgICBpZiAoZmxhZ3MgJiBUZXh0dXJlTWFwcGVyR0w6OlNob3Vs
ZFJvdGF0ZVRleHR1cmUxODApIHsKKyAgICAgICAgcGF0dGVyblRyYW5zZm9ybS5yb3RhdGUoMTgw
KTsKKyAgICAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoLTEsIC0xKTsKKyAgICB9Cisg
ICAgaWYgKGZsYWdzICYgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRSb3RhdGVUZXh0dXJlMjcwKSB7
CisgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0ucm90YXRlKC0yNzApOworICAgICAgICBwYXR0ZXJu
VHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtMSk7CisgICAgfQorICAgIGlmIChmbGFncyAmIFRleHR1
cmVNYXBwZXJHTDo6U2hvdWxkRmxpcFRleHR1cmUpCisgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0u
ZmxpcFkoKTsKKyAgICBpZiAoZmxhZ3MgJiBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZFVzZUFSQlRl
eHR1cmVSZWN0KQorICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybShzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgIGlmIChmbGFncyAmIFRleHR1cmVNYXBwZXJH
TDo6U2hvdWxkRmxpcFRleHR1cmUpCisgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRl
KDAsIC0xKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlUGxhbmFyWVVW
KGNvbnN0IHN0ZDo6YXJyYXk8R0x1aW50LCAzPiYgdGV4dHVyZXMsIGNvbnN0IHN0ZDo6YXJyYXk8
R0xmbG9hdCwgOT4mIHl1dlRvUmdiTWF0cml4LCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYg
dGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhw
b3NlZEVkZ2VzKQoreworICAgIGJvb2wgdXNlUmVjdCA9IGZsYWdzICYgU2hvdWxkVXNlQVJCVGV4
dHVyZVJlY3Q7CisgICAgYm9vbCB1c2VBbnRpYWxpYXNpbmcgPSBtX2VuYWJsZUVkZ2VEaXN0YW5j
ZUFudGlhbGlhc2luZworICAgICAgICAmJiBleHBvc2VkRWRnZXMgPT0gQWxsRWRnZXMKKyAgICAg
ICAgJiYgIW1vZGVsVmlld01hdHJpeC5tYXBRdWFkKHRhcmdldFJlY3QpLmlzUmVjdGlsaW5lYXIo
KTsKKworICAgIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnMgPSBU
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVlVVjsKKyAgICBpZiAodXNlUmVjdCkK
KyAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6UmVjdDsKKyAg
ICBpZiAob3BhY2l0eSA8IDEpCisgICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBlclNoYWRl
clByb2dyYW06Ok9wYWNpdHk7CisgICAgaWYgKHVzZUFudGlhbGlhc2luZykgeworICAgICAgICBv
cHRpb25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpBbnRpYWxpYXNpbmc7CisgICAg
ICAgIGZsYWdzIHw9IFNob3VsZEFudGlhbGlhczsKKyAgICB9CisgICAgaWYgKHdyYXBNb2RlKCkg
PT0gUmVwZWF0V3JhcCAmJiAhbV9jb250ZXh0QXR0cmlidXRlcy5zdXBwb3J0c05QT1RUZXh0dXJl
cykKKyAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6TWFudWFs
UmVwZWF0OworCisgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gZmlsdGVyID0gZGF0YSgpLmZp
bHRlckluZm8gPyBkYXRhKCkuZmlsdGVySW5mby0+ZmlsdGVyOiAwOworICAgIEdMdWludCBmaWx0
ZXJDb250ZW50VGV4dHVyZUlEID0gMDsKKworICAgIGlmIChmaWx0ZXIpIHsKKyAgICAgICAgaWYg
KGRhdGEoKS5maWx0ZXJJbmZvLT5jb250ZW50VGV4dHVyZSkKKyAgICAgICAgICAgIGZpbHRlckNv
bnRlbnRUZXh0dXJlSUQgPSB0b0JpdG1hcFRleHR1cmVHTChkYXRhKCkuZmlsdGVySW5mby0+Y29u
dGVudFRleHR1cmUuZ2V0KCkpLT5pZCgpOworICAgICAgICBvcHRpb25zIHw9IG9wdGlvbnNGb3JG
aWx0ZXJUeXBlKGZpbHRlci0+dHlwZSgpLCBkYXRhKCkuZmlsdGVySW5mby0+cGFzcyk7CisgICAg
ICAgIGlmIChmaWx0ZXItPmFmZmVjdHNPcGFjaXR5KCkpCisgICAgICAgICAgICBmbGFncyB8PSBT
aG91bGRCbGVuZDsKKyAgICB9CisKKyAgICBpZiAodXNlQW50aWFsaWFzaW5nIHx8IG9wYWNpdHkg
PCAxKQorICAgICAgICBmbGFncyB8PSBTaG91bGRCbGVuZDsKKworICAgIFJlZjxUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbT4gcHJvZ3JhbSA9IGRhdGEoKS5nZXRTaGFkZXJQcm9ncmFtKG9wdGlv
bnMpOworCisgICAgaWYgKGZpbHRlcikKKyAgICAgICAgcHJlcGFyZUZpbHRlclByb2dyYW0ocHJv
Z3JhbS5nZXQoKSwgKmZpbHRlci5nZXQoKSwgZGF0YSgpLmZpbHRlckluZm8tPnBhc3MsIHRleHR1
cmVTaXplLCBmaWx0ZXJDb250ZW50VGV4dHVyZUlEKTsKKworICAgIFZlY3RvcjxzdGQ6OnBhaXI8
R0x1aW50LCBHTHVpbnQ+ID4gdGV4dHVyZXNBbmRTYW1wbGVycyA9IHsKKyAgICAgICAgeyB0ZXh0
dXJlc1swXSwgcHJvZ3JhbS0+c2FtcGxlcllMb2NhdGlvbigpIH0sCisgICAgICAgIHsgdGV4dHVy
ZXNbMV0sIHByb2dyYW0tPnNhbXBsZXJVTG9jYXRpb24oKSB9LAorICAgICAgICB7IHRleHR1cmVz
WzJdLCBwcm9ncmFtLT5zYW1wbGVyVkxvY2F0aW9uKCkgfQorICAgIH07CisKKyAgICBnbFVzZVBy
b2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbUlEKCkpOworICAgIGdsVW5pZm9ybU1hdHJpeDNmdihwcm9n
cmFtLT55dXZUb1JnYkxvY2F0aW9uKCksIDEsIEdMX0ZBTFNFLCBzdGF0aWNfY2FzdDxjb25zdCBH
TGZsb2F0ICo+KCZ5dXZUb1JnYk1hdHJpeFswXSkpOworICAgIGRyYXdUZXh0dXJlZFF1YWRXaXRo
UHJvZ3JhbShwcm9ncmFtLmdldCgpLCB0ZXh0dXJlc0FuZFNhbXBsZXJzLCBmbGFncywgdGV4dHVy
ZVNpemUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7Cit9CisKK3ZvaWQg
VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVNlbWlQbGFuYXJZVVYoY29uc3Qgc3RkOjphcnJh
eTxHTHVpbnQsIDI+JiB0ZXh0dXJlcywgYm9vbCB1dlJldmVyc2VkLCBjb25zdCBzdGQ6OmFycmF5
PEdMZmxvYXQsIDk+JiB5dXZUb1JnYk1hdHJpeCwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUm
IHRleHR1cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4
cG9zZWRFZGdlcykKK3sKKyAgICBib29sIHVzZVJlY3QgPSBmbGFncyAmIFNob3VsZFVzZUFSQlRl
eHR1cmVSZWN0OworICAgIGJvb2wgdXNlQW50aWFsaWFzaW5nID0gbV9lbmFibGVFZGdlRGlzdGFu
Y2VBbnRpYWxpYXNpbmcKKyAgICAgICAgJiYgZXhwb3NlZEVkZ2VzID09IEFsbEVkZ2VzCisgICAg
ICAgICYmICFtb2RlbFZpZXdNYXRyaXgubWFwUXVhZCh0YXJnZXRSZWN0KS5pc1JlY3RpbGluZWFy
KCk7CisKKyAgICBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3B0aW9ucyBvcHRpb25zID0g
dXZSZXZlcnNlZCA/CisgICAgICAgIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJl
TlYyMSA6IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlTlYxMjsKKyAgICBpZiAo
dXNlUmVjdCkKKyAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6
UmVjdDsKKyAgICBpZiAob3BhY2l0eSA8IDEpCisgICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW06Ok9wYWNpdHk7CisgICAgaWYgKHVzZUFudGlhbGlhc2luZykgewor
ICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpBbnRpYWxpYXNp
bmc7CisgICAgICAgIGZsYWdzIHw9IFNob3VsZEFudGlhbGlhczsKKyAgICB9CisgICAgaWYgKHdy
YXBNb2RlKCkgPT0gUmVwZWF0V3JhcCAmJiAhbV9jb250ZXh0QXR0cmlidXRlcy5zdXBwb3J0c05Q
T1RUZXh0dXJlcykKKyAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bTo6TWFudWFsUmVwZWF0OworCisgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gZmlsdGVyID0g
ZGF0YSgpLmZpbHRlckluZm8gPyBkYXRhKCkuZmlsdGVySW5mby0+ZmlsdGVyOiAwOworICAgIEdM
dWludCBmaWx0ZXJDb250ZW50VGV4dHVyZUlEID0gMDsKKworICAgIGlmIChmaWx0ZXIpIHsKKyAg
ICAgICAgaWYgKGRhdGEoKS5maWx0ZXJJbmZvLT5jb250ZW50VGV4dHVyZSkKKyAgICAgICAgICAg
IGZpbHRlckNvbnRlbnRUZXh0dXJlSUQgPSB0b0JpdG1hcFRleHR1cmVHTChkYXRhKCkuZmlsdGVy
SW5mby0+Y29udGVudFRleHR1cmUuZ2V0KCkpLT5pZCgpOworICAgICAgICBvcHRpb25zIHw9IG9w
dGlvbnNGb3JGaWx0ZXJUeXBlKGZpbHRlci0+dHlwZSgpLCBkYXRhKCkuZmlsdGVySW5mby0+cGFz
cyk7CisgICAgICAgIGlmIChmaWx0ZXItPmFmZmVjdHNPcGFjaXR5KCkpCisgICAgICAgICAgICBm
bGFncyB8PSBTaG91bGRCbGVuZDsKKyAgICB9CisKKyAgICBpZiAodXNlQW50aWFsaWFzaW5nIHx8
IG9wYWNpdHkgPCAxKQorICAgICAgICBmbGFncyB8PSBTaG91bGRCbGVuZDsKKworICAgIFJlZjxU
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gcHJvZ3JhbSA9IGRhdGEoKS5nZXRTaGFkZXJQcm9n
cmFtKG9wdGlvbnMpOworCisgICAgaWYgKGZpbHRlcikKKyAgICAgICAgcHJlcGFyZUZpbHRlclBy
b2dyYW0ocHJvZ3JhbS5nZXQoKSwgKmZpbHRlci5nZXQoKSwgZGF0YSgpLmZpbHRlckluZm8tPnBh
c3MsIHRleHR1cmVTaXplLCBmaWx0ZXJDb250ZW50VGV4dHVyZUlEKTsKKworICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8R0x1aW50LCBHTHVpbnQ+ID4gdGV4dHVyZXNBbmRTYW1wbGVycyA9IHsKKyAgICAg
ICAgeyB0ZXh0dXJlc1swXSwgcHJvZ3JhbS0+c2FtcGxlcllMb2NhdGlvbigpIH0sCisgICAgICAg
IHsgdGV4dHVyZXNbMV0sIHByb2dyYW0tPnNhbXBsZXJVTG9jYXRpb24oKSB9CisgICAgfTsKKwor
ICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtSUQoKSk7CisgICAgZ2xVbmlmb3JtTWF0
cml4M2Z2KHByb2dyYW0tPnl1dlRvUmdiTG9jYXRpb24oKSwgMSwgR0xfRkFMU0UsIHN0YXRpY19j
YXN0PGNvbnN0IEdMZmxvYXQgKj4oJnl1dlRvUmdiTWF0cml4WzBdKSk7CisgICAgZHJhd1RleHR1
cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0KCksIHRleHR1cmVzQW5kU2FtcGxlcnMsIGZs
YWdzLCB0ZXh0dXJlU2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsK
K30KKwordm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlUGFja2VkWVVWKEdMdWludCB0
ZXh0dXJlLCBjb25zdCBzdGQ6OmFycmF5PEdMZmxvYXQsIDk+JiB5dXZUb1JnYk1hdHJpeCwgRmxh
Z3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRh
cmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZs
b2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKK3sKKyAgICBib29sIHVzZVJlY3Qg
PSBmbGFncyAmIFNob3VsZFVzZUFSQlRleHR1cmVSZWN0OworICAgIGJvb2wgdXNlQW50aWFsaWFz
aW5nID0gbV9lbmFibGVFZGdlRGlzdGFuY2VBbnRpYWxpYXNpbmcKKyAgICAgICAgJiYgZXhwb3Nl
ZEVkZ2VzID09IEFsbEVkZ2VzCisgICAgICAgICYmICFtb2RlbFZpZXdNYXRyaXgubWFwUXVhZCh0
YXJnZXRSZWN0KS5pc1JlY3RpbGluZWFyKCk7CisKKyAgICBUZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbTo6T3B0aW9ucyBvcHRpb25zID0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1
cmVQYWNrZWRZVVY7CisgICAgaWYgKHVzZVJlY3QpCisgICAgICAgIG9wdGlvbnMgfD0gVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW06OlJlY3Q7CisgICAgaWYgKG9wYWNpdHkgPCAxKQorICAgICAg
ICBvcHRpb25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcGFjaXR5OworICAgIGlm
ICh1c2VBbnRpYWxpYXNpbmcpIHsKKyAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbTo6QW50aWFsaWFzaW5nOworICAgICAgICBmbGFncyB8PSBTaG91bGRBbnRpYWxp
YXM7CisgICAgfQorICAgIGlmICh3cmFwTW9kZSgpID09IFJlcGVhdFdyYXAgJiYgIW1fY29udGV4
dEF0dHJpYnV0ZXMuc3VwcG9ydHNOUE9UVGV4dHVyZXMpCisgICAgICAgIG9wdGlvbnMgfD0gVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok1hbnVhbFJlcGVhdDsKKworICAgIFJlZlB0cjxGaWx0
ZXJPcGVyYXRpb24+IGZpbHRlciA9IGRhdGEoKS5maWx0ZXJJbmZvID8gZGF0YSgpLmZpbHRlcklu
Zm8tPmZpbHRlcjogMDsKKyAgICBHTHVpbnQgZmlsdGVyQ29udGVudFRleHR1cmVJRCA9IDA7CisK
KyAgICBpZiAoZmlsdGVyKSB7CisgICAgICAgIGlmIChkYXRhKCkuZmlsdGVySW5mby0+Y29udGVu
dFRleHR1cmUpCisgICAgICAgICAgICBmaWx0ZXJDb250ZW50VGV4dHVyZUlEID0gdG9CaXRtYXBU
ZXh0dXJlR0woZGF0YSgpLmZpbHRlckluZm8tPmNvbnRlbnRUZXh0dXJlLmdldCgpKS0+aWQoKTsK
KyAgICAgICAgb3B0aW9ucyB8PSBvcHRpb25zRm9yRmlsdGVyVHlwZShmaWx0ZXItPnR5cGUoKSwg
ZGF0YSgpLmZpbHRlckluZm8tPnBhc3MpOworICAgICAgICBpZiAoZmlsdGVyLT5hZmZlY3RzT3Bh
Y2l0eSgpKQorICAgICAgICAgICAgZmxhZ3MgfD0gU2hvdWxkQmxlbmQ7CisgICAgfQorCisgICAg
aWYgKHVzZUFudGlhbGlhc2luZyB8fCBvcGFjaXR5IDwgMSkKKyAgICAgICAgZmxhZ3MgfD0gU2hv
dWxkQmxlbmQ7CisKKyAgICBSZWY8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+IHByb2dyYW0g
PSBkYXRhKCkuZ2V0U2hhZGVyUHJvZ3JhbShvcHRpb25zKTsKKworICAgIGlmIChmaWx0ZXIpCisg
ICAgICAgIHByZXBhcmVGaWx0ZXJQcm9ncmFtKHByb2dyYW0uZ2V0KCksICpmaWx0ZXIuZ2V0KCks
IGRhdGEoKS5maWx0ZXJJbmZvLT5wYXNzLCB0ZXh0dXJlU2l6ZSwgZmlsdGVyQ29udGVudFRleHR1
cmVJRCk7CisKKyAgICBWZWN0b3I8c3RkOjpwYWlyPEdMdWludCwgR0x1aW50PiA+IHRleHR1cmVz
QW5kU2FtcGxlcnMgPSB7CisgICAgICAgIHsgdGV4dHVyZSwgcHJvZ3JhbS0+c2FtcGxlckxvY2F0
aW9uKCkgfQorICAgIH07CisKKyAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbUlEKCkp
OworICAgIGdsVW5pZm9ybU1hdHJpeDNmdihwcm9ncmFtLT55dXZUb1JnYkxvY2F0aW9uKCksIDEs
IEdMX0ZBTFNFLCBzdGF0aWNfY2FzdDxjb25zdCBHTGZsb2F0ICo+KCZ5dXZUb1JnYk1hdHJpeFsw
XSkpOworICAgIGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShwcm9ncmFtLmdldCgpLCB0ZXh0
dXJlc0FuZFNhbXBsZXJzLCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdldFJlY3QsIG1vZGVsVmll
d01hdHJpeCwgb3BhY2l0eSk7Cit9CisKIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3U29saWRD
b2xvcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
YXRyaXgsIGNvbnN0IENvbG9yJiBjb2xvciwgYm9vbCBpc0JsZW5kaW5nQWxsb3dlZCkKIHsKICAg
ICBGbGFncyBmbGFncyA9IDA7CkBAIC02MDEsMzcgKzc2OCwyNyBAQCB2b2lkIFRleHR1cmVNYXBw
ZXJHTDo6ZHJhdyhjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBtbwogICAgIGdsRW5hYmxlKEdMX0JMRU5EKTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVy
R0w6OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bSYgcHJvZ3JhbSwgdWludDMyX3QgdGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUm
IHNpemUsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSkKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpk
cmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0mIHBy
b2dyYW0sIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8R0x1aW50LCBHTHVpbnQ+ID4mIHRleHR1cmVz
QW5kU2FtcGxlcnMsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgs
IGZsb2F0IG9wYWNpdHkpCiB7CiAgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0ucHJvZ3JhbUlEKCkp
OwotICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7CisKKyAgICBib29sIHJlcGVhdFdy
YXAgPSB3cmFwTW9kZSgpID09IFJlcGVhdFdyYXAgJiYgbV9jb250ZXh0QXR0cmlidXRlcy5zdXBw
b3J0c05QT1RUZXh0dXJlczsKICAgICBHTGVudW0gdGFyZ2V0ID0gZmxhZ3MgJiBTaG91bGRVc2VB
UkJUZXh0dXJlUmVjdCA/IEdMZW51bShHTF9URVhUVVJFX1JFQ1RBTkdMRV9BUkIpIDogR0xlbnVt
KEdMX1RFWFRVUkVfMkQpOwotICAgIGdsQmluZFRleHR1cmUodGFyZ2V0LCB0ZXh0dXJlKTsKLSAg
ICBnbFVuaWZvcm0xaShwcm9ncmFtLnNhbXBsZXJMb2NhdGlvbigpLCAwKTsKLSAgICBpZiAod3Jh
cE1vZGUoKSA9PSBSZXBlYXRXcmFwICYmIG1fY29udGV4dEF0dHJpYnV0ZXMuc3VwcG9ydHNOUE9U
VGV4dHVyZXMpIHsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfV1JBUF9TLCBHTF9SRVBFQVQpOwotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX1JFUEVBVCk7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHRleHR1cmVzQW5kU2FtcGxlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
YXV0byYgdGV4dHVyZUFuZFNhbXBsZXIgPSB0ZXh0dXJlc0FuZFNhbXBsZXJzW2ldOworCisgICAg
ICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCArIGkpOworICAgICAgICBnbEJpbmRUZXh0
dXJlKHRhcmdldCwgdGV4dHVyZUFuZFNhbXBsZXIuZmlyc3QpOworICAgICAgICBnbFVuaWZvcm0x
aSh0ZXh0dXJlQW5kU2FtcGxlci5zZWNvbmQsIGkpOworCisgICAgICAgIGlmIChyZXBlYXRXcmFw
KSB7CisgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9XUkFQX1MsIEdMX1JFUEVBVCk7CisgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX1JFUEVBVCk7CisgICAgICAgIH0KICAgICB9
CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXR0ZXJuVHJhbnNmb3JtID0gdGhpcy0+cGF0
dGVyblRyYW5zZm9ybSgpOwotICAgIGlmIChmbGFncyAmIFNob3VsZFJvdGF0ZVRleHR1cmU5MCkg
ewotICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnJvdGF0ZSgtOTApOwotICAgICAgICBwYXR0ZXJu
VHJhbnNmb3JtLnRyYW5zbGF0ZSgtMSwgMCk7Ci0gICAgfQotICAgIGlmIChmbGFncyAmIFNob3Vs
ZFJvdGF0ZVRleHR1cmUxODApIHsKLSAgICAgICAgcGF0dGVyblRyYW5zZm9ybS5yb3RhdGUoMTgw
KTsKLSAgICAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoLTEsIC0xKTsKLSAgICB9Ci0g
ICAgaWYgKGZsYWdzICYgU2hvdWxkUm90YXRlVGV4dHVyZTI3MCkgewotICAgICAgICBwYXR0ZXJu
VHJhbnNmb3JtLnJvdGF0ZSgtMjcwKTsKLSAgICAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xh
dGUoMCwgLTEpOwotICAgIH0KLSAgICBpZiAoZmxhZ3MgJiBTaG91bGRGbGlwVGV4dHVyZSkKLSAg
ICAgICAgcGF0dGVyblRyYW5zZm9ybS5mbGlwWSgpOwotICAgIGlmIChmbGFncyAmIFNob3VsZFVz
ZUFSQlRleHR1cmVSZWN0KQotICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9y
bShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwotICAgIGlmIChmbGFncyAmIFNob3VsZEZs
aXBUZXh0dXJlKQotICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtMSk7Cisg
ICAgcHJlcGFyZVRyYW5zZm9ybWF0aW9uTWF0cml4V2l0aEZsYWdzKHBhdHRlcm5UcmFuc2Zvcm0s
IGZsYWdzLCBzaXplKTsKIAogICAgIHByb2dyYW0uc2V0TWF0cml4KHByb2dyYW0udGV4dHVyZVNw
YWNlTWF0cml4TG9jYXRpb24oKSwgcGF0dGVyblRyYW5zZm9ybSk7CiAgICAgcHJvZ3JhbS5zZXRN
YXRyaXgocHJvZ3JhbS50ZXh0dXJlQ29sb3JTcGFjZU1hdHJpeExvY2F0aW9uKCksIGNvbG9yU3Bh
Y2VNYXRyaXhGb3JGbGFncyhmbGFncykpOwpAQCAtNjQxLDggKzc5OCwxOSBAQCB2b2lkIFRleHR1
cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtJiBwcgogICAgICAgICBmbGFncyB8PSBTaG91bGRCbGVuZDsKIAogICAgIGRyYXco
cmVjdCwgbW9kZWxWaWV3TWF0cml4LCBwcm9ncmFtLCBHTF9UUklBTkdMRV9GQU4sIGZsYWdzKTsK
LSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdM
X0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CisKKyAgICBpZiAocmVwZWF0V3JhcCkg
eworICAgICAgICBmb3IgKGF1dG8mIHRleHR1cmVBbmRTYW1wbGVyIDogdGV4dHVyZXNBbmRTYW1w
bGVycykgeworICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZSh0YXJnZXQsIHRleHR1cmVBbmRTYW1w
bGVyLmZpcnN0KTsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgICAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VE
R0UpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1Rl
eHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtJiBwcm9ncmFt
LCB1aW50MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3
TWF0cml4LCBmbG9hdCBvcGFjaXR5KQoreworICAgIGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3Jh
bShwcm9ncmFtLCB7IHsgdGV4dHVyZSwgcHJvZ3JhbS5zYW1wbGVyTG9jYXRpb24oKSB9IH0sIGZs
YWdzLCBzaXplLCByZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkpOwogfQogCiB2b2lkIFRl
eHR1cmVNYXBwZXJHTDo6ZHJhd0ZpbHRlcmVkKGNvbnN0IEJpdG1hcFRleHR1cmUmIHNhbXBsZXIs
IGNvbnN0IEJpdG1hcFRleHR1cmUqIGNvbnRlbnRUZXh0dXJlLCBjb25zdCBGaWx0ZXJPcGVyYXRp
b24mIGZpbHRlciwgaW50IHBhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKaW5kZXggY2EwNTZhZjY2MDMw
ZWQxZWVkOTJmYTVjMmEyOGRhOTBjYjM0ZWI2YS4uZGFhNTBkMTU5MTNhMWZiZmQzNmU2ZTI3Zjhk
NGQ1ZmViMmM5Y2QyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaApAQCAtMzAsNiArMzAsOCBAQAogI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIlRleHR1
cmVNYXBwZXJHTEhlYWRlcnMuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgor
I2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC02NCw2ICs2Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYXdOdW1iZXIo
aW50IG51bWJlciwgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJp
dG1hcFRleHR1cmUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdlcykgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKEdMdWludCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50
U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgdW5zaWdu
ZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpOworICAgIHZvaWQgZHJhd1RleHR1cmVQbGFuYXJZ
VVYoY29uc3Qgc3RkOjphcnJheTxHTHVpbnQsIDM+JiB0ZXh0dXJlcywgY29uc3Qgc3RkOjphcnJh
eTxHTGZsb2F0LCA5PiYgeXV2VG9SZ2JNYXRyaXgsIEZsYWdzLCBjb25zdCBJbnRTaXplJiB0ZXh0
dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25lZCBleHBvc2Vk
RWRnZXMgPSBBbGxFZGdlcyk7CisgICAgdm9pZCBkcmF3VGV4dHVyZVNlbWlQbGFuYXJZVVYoY29u
c3Qgc3RkOjphcnJheTxHTHVpbnQsIDI+JiB0ZXh0dXJlcywgYm9vbCB1dlJldmVyc2VkLCBjb25z
dCBzdGQ6OmFycmF5PEdMZmxvYXQsIDk+JiB5dXZUb1JnYk1hdHJpeCwgRmxhZ3MsIGNvbnN0IElu
dFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2ln
bmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKTsKKyAgICB2b2lkIGRyYXdUZXh0dXJlUGFja2Vk
WVVWKEdMdWludCB0ZXh0dXJlLCBjb25zdCBzdGQ6OmFycmF5PEdMZmxvYXQsIDk+JiB5dXZUb1Jn
Yk1hdHJpeCwgRmxhZ3MsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRy
aXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKTsKICAg
ICB2b2lkIGRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgY29uc3QgQ29sb3ImLCBib29sKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFy
Q29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKIApAQCAtODQsNiArODksNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW0mLCB1aW50MzJfdCB0ZXh0dXJlLCBGbGFncywgY29uc3QgSW50
U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2Rl
bFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkpOworICAgIHZvaWQgZHJhd1RleHR1cmVkUXVhZFdp
dGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtJiwgY29uc3QgVmVjdG9yPHN0ZDo6
cGFpcjxHTHVpbnQsIEdMdWludD4gPiYgdGV4dHVyZXNBbmRTYW1wbGVycywgRmxhZ3MsIGNvbnN0
IEludFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5KTsKICAgICB2b2lkIGRyYXcoY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW0mLCBHTGVudW0gZHJhd2luZ01vZGUsIEZsYWdzKTsKIAog
ICAgIHZvaWQgZHJhd1VuaXRSZWN0KFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtJiwgR0xlbnVt
IGRyYXdpbmdNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXIuY3BwCmluZGV4IGUxMWEwYmIyN2I4MTBjMmQ1Mjc2YjJhOWIwYzUwOWY4ODk1MDY2
YzAuLjc5Y2RlY2ZiM2ExNDEyMzZkNDVjZjUyMDMxMDc5OThmMmE4MjI0OWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcApAQCAtMzUsMTQg
KzM1LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJCdWZmZXI6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKFJlZlB0cjxCaXRtYXBU
ZXh0dXJlPiYmIHRleHR1cmUsIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MpCiAgICAgOiBt
X3RleHR1cmUoV1RGTW92ZSh0ZXh0dXJlKSkKLSAgICAsIG1fdGV4dHVyZUlEKDApCisgICAgLCBt
X3ZhcmlhbnQoUkdCVGV4dHVyZSB7IDAgfSkKICAgICAsIG1fZXh0cmFGbGFncyhmbGFncykKICAg
ICAsIG1faGFzTWFuYWdlZFRleHR1cmUodHJ1ZSkKIHsKIH0KIAogVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXI6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKEdMdWludCB0
ZXh0dXJlSUQsIGNvbnN0IEludFNpemUmIHNpemUsIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxh
Z3MsIEdMaW50IGludGVybmFsRm9ybWF0KQotICAgIDogbV90ZXh0dXJlSUQodGV4dHVyZUlEKQor
ICAgIDogVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoeyBSR0JUZXh0dXJlIHsgdGV4
dHVyZUlEIH0gfSwgc2l6ZSwgZmxhZ3MsIGludGVybmFsRm9ybWF0KQoreworfQorCitUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXIoVGV4dHVyZVZhcmlhbnQmJiB2YXJpYW50LCBjb25zdCBJbnRTaXplJiBzaXplLCBUZXh0dXJl
TWFwcGVyR0w6OkZsYWdzIGZsYWdzLCBHTGludCBpbnRlcm5hbEZvcm1hdCkKKyAgICA6IG1fdmFy
aWFudChXVEZNb3ZlKHZhcmlhbnQpKQogICAgICwgbV9zaXplKHNpemUpCiAgICAgLCBtX2ludGVy
bmFsRm9ybWF0KGludGVybmFsRm9ybWF0KQogICAgICwgbV9leHRyYUZsYWdzKGZsYWdzKQpAQCAt
NTAsNiArNTUsMTAgQEAgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OlRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKEdMdWludCB0ZXh0dXIKIHsKIH0KIAorVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6On5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cigpCit7Cit9CisKIGJvb2wgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OmNhblJl
dXNlV2l0aG91dFJlc2V0KGNvbnN0IEludFNpemUmIHNpemUsIEdMaW50IGludGVybmFsRm9ybWF0
KQogewogICAgIHJldHVybiBtX3RleHR1cmUgJiYgKG1fdGV4dHVyZS0+c2l6ZSgpID09IHNpemUp
ICYmIChzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wqPihtX3RleHR1cmUuZ2V0KCkpLT5pbnRl
cm5hbEZvcm1hdCgpID09IGludGVybmFsRm9ybWF0IHx8IGludGVybmFsRm9ybWF0ID09IEdMX0RP
TlRfQ0FSRSk7CkBAIC01NywxNCArNjYsMjggQEAgYm9vbCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcjo6Y2FuUmV1c2VXaXRob3V0UmVzZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSwKIAog
c3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2xvbmUoKQogewotICAgIGlmIChtX2hhc01hbmFn
ZWRUZXh0dXJlIHx8ICFtX3RleHR1cmVJRCkgeworICAgIGlmIChtX2hhc01hbmFnZWRUZXh0dXJl
KSB7CiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KLSAgICBhdXRvIHRleHR1cmUgPSBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJl
TWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM6OmdldCgpLCBtX2ludGVybmFsRm9ybWF0KTsKLSAgICB0
ZXh0dXJlLT5yZXNldChtX3NpemUpOwotICAgIHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+
KHRleHR1cmUuZ2V0KCkpLmNvcHlGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVyZUlEKTsKLSAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4oV1RG
TW92ZSh0ZXh0dXJlKSwgbV9leHRyYUZsYWdzKTsKKworICAgIHJldHVybiBXVEY6OnN3aXRjaE9u
KG1fdmFyaWFudCwKKyAgICAgICAgWyZdKGNvbnN0IFJHQlRleHR1cmUmIHRleHR1cmUpIG11dGFi
bGUgLT4gc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiB7
CisgICAgICAgICAgICBpZiAoIXRleHR1cmUuaWQpIHsKKyAgICAgICAgICAgICAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBhdXRvIGNsb25lZFRleHR1cmUgPSBCaXRtYXBUZXh0dXJlR0w6OmNy
ZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM6OmdldCgpLCBtX2ludGVybmFsRm9y
bWF0KTsKKyAgICAgICAgICAgIGNsb25lZFRleHR1cmUtPnJlc2V0KG1fc2l6ZSk7CisgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wmPihjbG9uZWRUZXh0dXJlLmdldCgpKS5j
b3B5RnJvbUV4dGVybmFsVGV4dHVyZSh0ZXh0dXJlLmlkKTsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEZNb3ZlKGNsb25l
ZFRleHR1cmUpLCBtX2V4dHJhRmxhZ3MpOworICAgICAgICB9LAorICAgICAgICBbXShjb25zdCBZ
VVZUZXh0dXJlJikKKyAgICAgICAgeworICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9KTsKIH0KIAogdm9pZCBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1h
cHBlciYgdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5KQpAQCAt
ODYsOCArMTA5LDM0IEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6OnBh
aW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBBU1NFUlQobV90ZXh0dXJlSUQpOwotICAgIHRleG1hcEdMLmRyYXdUZXh0
dXJlKG1fdGV4dHVyZUlELCBtX2V4dHJhRmxhZ3MsIG1fc2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxW
aWV3TWF0cml4LCBvcGFjaXR5KTsKKyAgICBpZiAobV91bm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVy
KQorICAgICAgICBtX3VubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXItPndhaXRGb3JDUFVTeW5jKCk7
CisKKyAgICBXVEY6OnN3aXRjaE9uKG1fdmFyaWFudCwKKyAgICAgICAgWyZdKGNvbnN0IFJHQlRl
eHR1cmUmIHRleHR1cmUpIHsKKyAgICAgICAgICAgIEFTU0VSVCh0ZXh0dXJlLmlkKTsKKyAgICAg
ICAgICAgIHRleG1hcEdMLmRyYXdUZXh0dXJlKHRleHR1cmUuaWQsIG1fZXh0cmFGbGFncywgbV9z
aXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkpOworICAgICAgICB9LAor
ICAgICAgICBbJl0oY29uc3QgWVVWVGV4dHVyZSYgdGV4dHVyZSkgeworICAgICAgICAgICAgc3dp
dGNoICh0ZXh0dXJlLm51bWJlck9mUGxhbmVzKSB7CisgICAgICAgICAgICBjYXNlIDE6CisgICAg
ICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUueXV2UGxhbmVbMF0gPT0gdGV4dHVyZS55dXZQbGFu
ZVsxXSAmJiB0ZXh0dXJlLnl1dlBsYW5lWzFdID09IHRleHR1cmUueXV2UGxhbmVbMl0pOworICAg
ICAgICAgICAgICAgIEFTU0VSVCh0ZXh0dXJlLnl1dlBsYW5lT2Zmc2V0WzBdID09IDIgJiYgdGV4
dHVyZS55dXZQbGFuZU9mZnNldFsxXSA9PSAxICYmICF0ZXh0dXJlLnl1dlBsYW5lT2Zmc2V0WzJd
KTsKKyAgICAgICAgICAgICAgICB0ZXhtYXBHTC5kcmF3VGV4dHVyZVBhY2tlZFlVVih0ZXh0dXJl
LnBsYW5lc1t0ZXh0dXJlLnl1dlBsYW5lWzBdXSwKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVy
ZS55dXZUb1JnYk1hdHJpeCwgbV9leHRyYUZsYWdzLCBtX3NpemUsIHRhcmdldFJlY3QsIG1vZGVs
Vmlld01hdHJpeCwgb3BhY2l0eSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIDI6CisgICAgICAgICAgICAgICAgQVNTRVJUKCF0ZXh0dXJlLnl1dlBsYW5lT2Zmc2V0
WzBdKTsKKyAgICAgICAgICAgICAgICB0ZXhtYXBHTC5kcmF3VGV4dHVyZVNlbWlQbGFuYXJZVVYo
c3RkOjphcnJheTxHTHVpbnQsIDI+IHsgdGV4dHVyZS5wbGFuZXNbdGV4dHVyZS55dXZQbGFuZVsw
XV0sIHRleHR1cmUucGxhbmVzW3RleHR1cmUueXV2UGxhbmVbMV1dIH0sICEhdGV4dHVyZS55dXZQ
bGFuZU9mZnNldFsxXSwKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS55dXZUb1JnYk1hdHJp
eCwgbV9leHRyYUZsYWdzLCBtX3NpemUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3Bh
Y2l0eSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDM6CisgICAg
ICAgICAgICAgICAgQVNTRVJUKCF0ZXh0dXJlLnl1dlBsYW5lT2Zmc2V0WzBdICYmICF0ZXh0dXJl
Lnl1dlBsYW5lT2Zmc2V0WzFdICYmICF0ZXh0dXJlLnl1dlBsYW5lT2Zmc2V0WzJdKTsKKyAgICAg
ICAgICAgICAgICB0ZXhtYXBHTC5kcmF3VGV4dHVyZVBsYW5hcllVVihzdGQ6OmFycmF5PEdMdWlu
dCwgMz4geyB0ZXh0dXJlLnBsYW5lc1t0ZXh0dXJlLnl1dlBsYW5lWzBdXSwgdGV4dHVyZS5wbGFu
ZXNbdGV4dHVyZS55dXZQbGFuZVsxXV0sIHRleHR1cmUucGxhbmVzW3RleHR1cmUueXV2UGxhbmVb
Ml1dIH0sCisgICAgICAgICAgICAgICAgICAgIHRleHR1cmUueXV2VG9SZ2JNYXRyaXgsIG1fZXh0
cmFGbGFncywgbV9zaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXIuaAppbmRleCBkMTAwZTI0YWQxMzE2NDk3OTRiOTA2OTJlNjYxMmEzN2Fi
N2M5YWViLi43ZmY1NDcxOWZmZmNiOTc3NzUzY2NiZjg1YWQxM2I2NWEyMmRjYWI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaApAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTEhlYWRlcnMuaCIKICNpbmNsdWRlICJU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1l
Lmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0zOSw5ICs0MCwyNCBAQCBjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlciA6
IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQoKTsKIHB1YmxpYzoKICAgICBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cihSZWZQdHI8Qml0bWFwVGV4dHVyZT4mJiwgVGV4dHVyZU1hcHBlckdMOjpGbGFncyA9IDApOwor
CiAgICAgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoR0x1aW50IHRleHR1cmVJRCwg
Y29uc3QgSW50U2l6ZSYsIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MsIEdMaW50IGludGVybmFsRm9y
bWF0KTsKIAotICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKCkg
PSBkZWZhdWx0OworICAgIHN0cnVjdCBSR0JUZXh0dXJlIHsKKyAgICAgICAgR0x1aW50IGlkOwor
ICAgIH07CisgICAgc3RydWN0IFlVVlRleHR1cmUgeworICAgICAgICB1bnNpZ25lZCBudW1iZXJP
ZlBsYW5lczsKKyAgICAgICAgc3RkOjphcnJheTxHTHVpbnQsIDM+IHBsYW5lczsKKyAgICAgICAg
c3RkOjphcnJheTx1bnNpZ25lZCwgMz4geXV2UGxhbmU7CisgICAgICAgIHN0ZDo6YXJyYXk8dW5z
aWduZWQsIDM+IHl1dlBsYW5lT2Zmc2V0OworICAgICAgICBzdGQ6OmFycmF5PEdMZmxvYXQsIDk+
IHl1dlRvUmdiTWF0cml4OworICAgIH07CisgICAgdXNpbmcgVGV4dHVyZVZhcmlhbnQgPSBXVEY6
OlZhcmlhbnQ8UkdCVGV4dHVyZSwgWVVWVGV4dHVyZT47CisKKyAgICBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcihUZXh0dXJlVmFyaWFudCYmLCBjb25zdCBJbnRTaXplJiwgVGV4dHVy
ZU1hcHBlckdMOjpGbGFncywgR0xpbnQgaW50ZXJuYWxGb3JtYXQpOworCisgICAgdmlydHVhbCB+
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoKTsKIAogICAgIHZvaWQgcGFpbnRUb1Rl
eHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
LCBmbG9hdCBvcGFjaXR5ID0gMS4wKSBmaW5hbDsKIApAQCAtNTcsNiArNzMsOCBAQCBwdWJsaWM6
CiAgICAgcHVibGljOgogICAgICAgICBVbm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVyKCkgPSBkZWZh
dWx0OwogICAgICAgICB2aXJ0dWFsIH5Vbm1hbmFnZWRCdWZmZXJEYXRhSG9sZGVyKCkgPSBkZWZh
dWx0OworCisgICAgICAgIHZpcnR1YWwgdm9pZCB3YWl0Rm9yQ1BVU3luYygpID0gMDsKICAgICB9
OwogCiAgICAgYm9vbCBoYXNNYW5hZ2VkVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzTWFu
YWdlZFRleHR1cmU7IH0KQEAgLTc4LDYgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gbV90ZXh0dXJlOwogICAgIE1vbm90b25pY1RpbWUgbV90aW1lTGFzdFVzZWQ7
CiAKKyAgICBUZXh0dXJlVmFyaWFudCBtX3ZhcmlhbnQ7CiAgICAgR0x1aW50IG1fdGV4dHVyZUlE
OwogICAgIEludFNpemUgbV9zaXplOwogICAgIEdMaW50IG1faW50ZXJuYWxGb3JtYXQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcAppbmRleCBlYjg3ODhkNGZmNWU4
ODlmYmFmNDZjNjAxNjk5NTMwMGE3OGQ3MTBkLi41ZTAyODQ3ZTRhZmViMGQ5NGUwNzYxNDkzMjUx
ZmI1ZTJjYTdkNmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5j
cHAKQEAgLTIwNyw5ICsyMDcsMTMgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGZyYWdtZW50VGVtcGxh
dGVHRTMyMFZhcnMgPQogc3RhdGljIGNvbnN0IGNoYXIqIGZyYWdtZW50VGVtcGxhdGVDb21tb24g
PQogICAgIFNUUklOR0lGWSgKICAgICAgICAgdW5pZm9ybSBTYW1wbGVyVHlwZSBzX3NhbXBsZXI7
CisgICAgICAgIHVuaWZvcm0gU2FtcGxlclR5cGUgc19zYW1wbGVyWTsKKyAgICAgICAgdW5pZm9y
bSBTYW1wbGVyVHlwZSBzX3NhbXBsZXJVOworICAgICAgICB1bmlmb3JtIFNhbXBsZXJUeXBlIHNf
c2FtcGxlclY7CiAgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHNfY29udGVudFRleHR1cmU7CiAg
ICAgICAgIHVuaWZvcm0gZmxvYXQgdV9vcGFjaXR5OwogICAgICAgICB1bmlmb3JtIGZsb2F0IHVf
ZmlsdGVyQW1vdW50OworICAgICAgICB1bmlmb3JtIG1hdDMgdV95dXZUb1JnYjsKICAgICAgICAg
dW5pZm9ybSB2ZWMyIHVfYmx1clJhZGl1czsKICAgICAgICAgdW5pZm9ybSB2ZWMyIHVfc2hhZG93
T2Zmc2V0OwogICAgICAgICB1bmlmb3JtIHZlYzQgdV9jb2xvcjsKQEAgLTIzMSw3ICsyMzUsNDEg
QEAgc3RhdGljIGNvbnN0IGNoYXIqIGZyYWdtZW50VGVtcGxhdGVDb21tb24gPQogCiAgICAgICAg
IHZvaWQgYXBwbHlNYW51YWxSZXBlYXQoaW5vdXQgdmVjMiBwb3MpIHsgcG9zID0gZnJhY3QocG9z
KTsgfQogCi0gICAgICAgIHZvaWQgYXBwbHlUZXh0dXJlKGlub3V0IHZlYzQgY29sb3IsIHZlYzIg
dGV4Q29vcmQpIHsgY29sb3IgPSB1X3RleHR1cmVDb2xvclNwYWNlTWF0cml4ICogU2FtcGxlckZ1
bmN0aW9uKHNfc2FtcGxlciwgdGV4Q29vcmQpOyB9CisgICAgICAgIHZvaWQgYXBwbHlUZXh0dXJl
UkdCKGlub3V0IHZlYzQgY29sb3IsIHZlYzIgdGV4Q29vcmQpIHsgY29sb3IgPSB1X3RleHR1cmVD
b2xvclNwYWNlTWF0cml4ICogU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlciwgdGV4Q29vcmQpOyB9
CisKKyAgICAgICAgdmVjMyB5dXZUb1JnYihmbG9hdCB5LCBmbG9hdCB1LCBmbG9hdCB2KQorICAg
ICAgICB7CisgICAgICAgICAgICAvLyB5dXYgaXMgZWl0aGVyIGJ0NjAxIG9yIGJ0NzA5IHNvIHRo
ZSBvZmZzZXQgaXMgdGhlIHNhbWUKKyAgICAgICAgICAgIHZlYzMgeXV2ID0gdmVjMyh5IC0gMC4w
NjI1LCB1IC0gMC41LCB2IC0gMC41KTsKKyAgICAgICAgICAgIHJldHVybiB5dXYgKiB1X3l1dlRv
UmdiOworICAgICAgICB9CisgICAgICAgIHZvaWQgYXBwbHlUZXh0dXJlWVVWKGlub3V0IHZlYzQg
Y29sb3IsIHZlYzIgdGV4Q29vcmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZsb2F0IHkgPSBT
YW1wbGVyRnVuY3Rpb24oc19zYW1wbGVyWSwgdGV4Q29vcmQpLnI7CisgICAgICAgICAgICBmbG9h
dCB1ID0gU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlclUsIHRleENvb3JkKS5yOworICAgICAgICAg
ICAgZmxvYXQgdiA9IFNhbXBsZXJGdW5jdGlvbihzX3NhbXBsZXJWLCB0ZXhDb29yZCkucjsKKyAg
ICAgICAgICAgIHZlYzQgZGF0YSA9IHZlYzQoeXV2VG9SZ2IoeSwgdSwgdiksIDEuMCk7CisgICAg
ICAgICAgICBjb2xvciA9IHVfdGV4dHVyZUNvbG9yU3BhY2VNYXRyaXggKiBkYXRhOworICAgICAg
ICB9CisgICAgICAgIHZvaWQgYXBwbHlUZXh0dXJlTlYxMihpbm91dCB2ZWM0IGNvbG9yLCB2ZWMy
IHRleENvb3JkKQorICAgICAgICB7CisgICAgICAgICAgICBmbG9hdCB5ID0gU2FtcGxlckZ1bmN0
aW9uKHNfc2FtcGxlclksIHRleENvb3JkKS5yOworICAgICAgICAgICAgdmVjMiB1diA9IFNhbXBs
ZXJGdW5jdGlvbihzX3NhbXBsZXJVLCB0ZXhDb29yZCkucmc7CisgICAgICAgICAgICB2ZWM0IGRh
dGEgPSB2ZWM0KHl1dlRvUmdiKHksIHV2LngsIHV2LnkpLCAxLjApOworICAgICAgICAgICAgY29s
b3IgPSB1X3RleHR1cmVDb2xvclNwYWNlTWF0cml4ICogZGF0YTsKKyAgICAgICAgfQorICAgICAg
ICB2b2lkIGFwcGx5VGV4dHVyZU5WMjEoaW5vdXQgdmVjNCBjb2xvciwgdmVjMiB0ZXhDb29yZCkK
KyAgICAgICAgeworICAgICAgICAgICAgZmxvYXQgeSA9IFNhbXBsZXJGdW5jdGlvbihzX3NhbXBs
ZXJZLCB0ZXhDb29yZCkucjsKKyAgICAgICAgICAgIHZlYzIgdXYgPSBTYW1wbGVyRnVuY3Rpb24o
c19zYW1wbGVyVSwgdGV4Q29vcmQpLmdyOworICAgICAgICAgICAgdmVjNCBkYXRhID0gdmVjNCh5
dXZUb1JnYih5LCB1di54LCB1di55KSwgMS4wKTsKKyAgICAgICAgICAgIGNvbG9yID0gdV90ZXh0
dXJlQ29sb3JTcGFjZU1hdHJpeCAqIGRhdGE7CisgICAgICAgIH0KKyAgICAgICAgdm9pZCBhcHBs
eVRleHR1cmVQYWNrZWRZVVYoaW5vdXQgdmVjNCBjb2xvciwgdmVjMiB0ZXhDb29yZCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmVjNCBkYXRhID0gU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlciwg
dGV4Q29vcmQpOworICAgICAgICAgICAgY29sb3IgPSB1X3RleHR1cmVDb2xvclNwYWNlTWF0cml4
ICogdmVjNCh5dXZUb1JnYihkYXRhLmIsIGRhdGEuZywgZGF0YS5yKSwgZGF0YS5hKTsKKyAgICAg
ICAgfQogICAgICAgICB2b2lkIGFwcGx5T3BhY2l0eShpbm91dCB2ZWM0IGNvbG9yKSB7IGNvbG9y
ICo9IHVfb3BhY2l0eTsgfQogICAgICAgICB2b2lkIGFwcGx5QW50aWFsaWFzaW5nKGlub3V0IHZl
YzQgY29sb3IpIHsgY29sb3IgKj0gYW50aWFsaWFzKCk7IH0KIApAQCAtMzQzLDcgKzM4MSwxMSBA
QCBzdGF0aWMgY29uc3QgY2hhciogZnJhZ21lbnRUZW1wbGF0ZUNvbW1vbiA9CiAgICAgICAgICAg
ICB2ZWM0IGNvbG9yID0gdmVjNCgxLiwgMS4sIDEuLCAxLik7CiAgICAgICAgICAgICB2ZWMyIHRl
eENvb3JkID0gdHJhbnNmb3JtVGV4Q29vcmQoKTsKICAgICAgICAgICAgIGFwcGx5TWFudWFsUmVw
ZWF0SWZOZWVkZWQodGV4Q29vcmQpOwotICAgICAgICAgICAgYXBwbHlUZXh0dXJlSWZOZWVkZWQo
Y29sb3IsIHRleENvb3JkKTsKKyAgICAgICAgICAgIGFwcGx5VGV4dHVyZVJHQklmTmVlZGVkKGNv
bG9yLCB0ZXhDb29yZCk7CisgICAgICAgICAgICBhcHBseVRleHR1cmVZVVZJZk5lZWRlZChjb2xv
ciwgdGV4Q29vcmQpOworICAgICAgICAgICAgYXBwbHlUZXh0dXJlTlYxMklmTmVlZGVkKGNvbG9y
LCB0ZXhDb29yZCk7CisgICAgICAgICAgICBhcHBseVRleHR1cmVOVjIxSWZOZWVkZWQoY29sb3Is
IHRleENvb3JkKTsKKyAgICAgICAgICAgIGFwcGx5VGV4dHVyZVBhY2tlZFlVVklmTmVlZGVkKGNv
bG9yLCB0ZXhDb29yZCk7CiAgICAgICAgICAgICBhcHBseVNvbGlkQ29sb3JJZk5lZWRlZChjb2xv
cik7CiAgICAgICAgICAgICBhcHBseUFudGlhbGlhc2luZ0lmTmVlZGVkKGNvbG9yKTsKICAgICAg
ICAgICAgIGFwcGx5T3BhY2l0eUlmTmVlZGVkKGNvbG9yKTsKQEAgLTM2OSw3ICs0MTEsMTEgQEAg
UmVmPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bTo6Y3JlYXRlKFRleHR1cmVNYXBwZXIKICAgICAgICAgKG9wdGlvbnMgJiBUZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbTo6QXBwbGllcikgPyBFTkFCTEVfQVBQTElFUihBcHBsaWVyKSA6IERJU0FC
TEVfQVBQTElFUihBcHBsaWVyKSkKIAogICAgIFN0cmluZ0J1aWxkZXIgb3B0aW9uc0FwcGxpZXJC
dWlsZGVyOwotICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhUZXh0dXJlKTsKKyAgICBTRVRf
QVBQTElFUl9GUk9NX09QVElPTlMoVGV4dHVyZVJHQik7CisgICAgU0VUX0FQUExJRVJfRlJPTV9P
UFRJT05TKFRleHR1cmVZVVYpOworICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhUZXh0dXJl
TlYxMik7CisgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKFRleHR1cmVOVjIxKTsKKyAgICBT
RVRfQVBQTElFUl9GUk9NX09QVElPTlMoVGV4dHVyZVBhY2tlZFlVVik7CiAgICAgU0VUX0FQUExJ
RVJfRlJPTV9PUFRJT05TKFJlY3QpOwogICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhTb2xp
ZENvbG9yKTsKICAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoT3BhY2l0eSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oCmluZGV4IDRhMzQyMGMwNjAyY2I0ZDYwYTQ5
OGI5NDc1YTNmMzk3ZDJkNzFmMTkuLmJhNWMwMDExNzU4NDc3MDY0NGJmZGY0NzdiNWMxN2ExY2Zk
OGY2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5oCkBAIC00NSw3
ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtIDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+IHsK
IHB1YmxpYzoKICAgICBlbnVtIE9wdGlvbiB7Ci0gICAgICAgIFRleHR1cmUgICAgICAgICAgPSAx
TCA8PCAwLAorICAgICAgICBUZXh0dXJlUkdCICAgICAgID0gMUwgPDwgMCwKICAgICAgICAgUmVj
dCAgICAgICAgICAgICA9IDFMIDw8IDEsCiAgICAgICAgIFNvbGlkQ29sb3IgICAgICAgPSAxTCA8
PCAyLAogICAgICAgICBPcGFjaXR5ICAgICAgICAgID0gMUwgPDwgMywKQEAgLTYxLDcgKzYxLDEx
IEBAIHB1YmxpYzoKICAgICAgICAgQmx1ckZpbHRlciAgICAgICA9IDFMIDw8IDE0LAogICAgICAg
ICBBbHBoYUJsdXIgICAgICAgID0gMUwgPDwgMTUsCiAgICAgICAgIENvbnRlbnRUZXh0dXJlICAg
PSAxTCA8PCAxNiwKLSAgICAgICAgTWFudWFsUmVwZWF0ICAgICA9IDFMIDw8IDE3CisgICAgICAg
IE1hbnVhbFJlcGVhdCAgICAgPSAxTCA8PCAxNywKKyAgICAgICAgVGV4dHVyZVlVViAgICAgICA9
IDFMIDw8IDE4LAorICAgICAgICBUZXh0dXJlTlYxMiAgICAgID0gMUwgPDwgMTksCisgICAgICAg
IFRleHR1cmVOVjIxICAgICAgPSAxTCA8PCAyMCwKKyAgICAgICAgVGV4dHVyZVBhY2tlZFlVViA9
IDFMIDw8IDIxLAogICAgIH07CiAKICAgICB0eXBlZGVmIHVuc2lnbmVkIE9wdGlvbnM7CkBAIC04
MCw3ICs4NCwxMSBAQCBwdWJsaWM6CiAgICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9STShvcGFjaXR5
KQogICAgIFRFWE1BUF9ERUNMQVJFX1VOSUZPUk0oY29sb3IpCiAgICAgVEVYTUFQX0RFQ0xBUkVf
VU5JRk9STShleHBhbmRlZFF1YWRFZGdlc0luU2NyZWVuU3BhY2UpCisgICAgVEVYTUFQX0RFQ0xB
UkVfVU5JRk9STSh5dXZUb1JnYikKICAgICBURVhNQVBfREVDTEFSRV9TQU1QTEVSKHNhbXBsZXIp
CisgICAgVEVYTUFQX0RFQ0xBUkVfU0FNUExFUihzYW1wbGVyWSkKKyAgICBURVhNQVBfREVDTEFS
RV9TQU1QTEVSKHNhbXBsZXJVKQorICAgIFRFWE1BUF9ERUNMQVJFX1NBTVBMRVIoc2FtcGxlclYp
CiAgICAgVEVYTUFQX0RFQ0xBUkVfU0FNUExFUihtYXNrKQogCiAgICAgVEVYTUFQX0RFQ0xBUkVf
VU5JRk9STShmaWx0ZXJBbW91bnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377890</attachid>
            <date>2019-09-03 05:33:41 -0700</date>
            <delta_ts>2019-09-03 07:00:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-132869-20190903133339.patch</filename>
            <type>text/plain</type>
            <size>41979</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGRmNzIwM2RkMjRhYTJk
ODUzMTg1YzFmN2YwN2ViNmU5MDZiMWFmYy4uNWJlODc4MzY5MzQwMTdhYjA5MTk0NjYwMTc1MmQx
MjVmOGUwOThiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE5LTA5LTAzICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4gIGFuZCAgQ2hyaXMgTG9yZCAgPGNsb3Jk
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW1RleG1hcF1bR1N0cmVhbWVyXSBBZGQgc3VwcG9ydCB0
byB1cGxvYWQgbW9yZSBjb2xvciBmb3JtYXRzIGludG8gdGhlIHRleHR1cmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjg2OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IFhhYmllciBSb2RyaWd1ZXotQ2FsdmFyLgorCisgICAgICAgIFN1cHBvcnQgbm9u
LWludGVybGVhdmVkIFlVViBjb2xvciBmb3IgZ3N0cmVhbWVyLWdsCisKKyAgICAgICAgVGhpcyBh
ZGRzIGRpcmVjdCBzdXBwb3J0IGZvciByZW5kZXJpbmcgSTQyMCwgSTQ0NCwgWVYxMiwgWVYyMSwg
WTQyQiwKKyAgICAgICAgTlYxMiwgTlYyMSBhbmQgVlVZQSBjb2xvciBmb3JtYXRzIHVzaW5nIEdM
R0wgc2hhZGVycyB3aGVuIHVzaW5nCisgICAgICAgIGdzdHJlYW1lci1nbCBmb3IgdmlkZW8gcmVu
ZGVyaW5nLiBUaGlzIGF2b2lkcyBhIHN1cmZhY2UgY29weSBvbiB0aGUgR1BVCisgICAgICAgIGlu
IHRob3NlIGNhc2VzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm90IGNoYW5naW5nIGJlaGF2
aW9yLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3N0VmlkZW9GcmFt
ZUhvbGRlcjo6R3N0VmlkZW9GcmFtZUhvbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpHc3RWaWRl
b0ZyYW1lSG9sZGVyOjp3YWl0Rm9yQ1BVU3luYyk6CisgICAgICAgIChXZWJDb3JlOjpHc3RWaWRl
b0ZyYW1lSG9sZGVyOjpoYXNNYXBwZWRUZXh0dXJlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHc3RWaWRlb0ZyYW1lSG9sZGVyOjp2aWRlb0ZyYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnB1c2hUZXh0dXJlVG9Db21wb3Np
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OmNyZWF0ZVZpZGVvU2lua0dMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZp
ZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjo6VmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om9wdGlvbnNGb3JGaWx0ZXJUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6cHJl
cGFyZVRyYW5zZm9ybWF0aW9uTWF0cml4V2l0aEZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVQbGFuYXJZVVYpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVNlbWlQbGFuYXJZVVYpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZVBhY2tlZFlVVik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcjo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI6On5UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcjo6Y2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtLmg6CisKIDIwMTktMDktMDIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQ29yZV0gUmVzb3VyY2UgdXNhZ2UgYWNjb3VudGlu
ZyBzaG91bGQgYWNjZXB0IG5vbiBLRVJOX1NVQ0NFU1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCA1NzYxNWMxNDAzY2YxYjc0
YWQ3Njc5ZDBjNGEwNTUzZWUyZTBiOWI2Li5kZWQ4NTdhYzE5MzdjY2JhMTZmYmRmZDhkOGM4Njgz
OTdmZjU0ZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuY3BwCkBAIC01NSw2ICs1NSw3IEBACiAKICNpZiBVU0UoR1NUUkVBTUVSX0dM
KQogI2RlZmluZSBURVhUVVJFX0NPUElFUl9DT0xPUl9DT05WRVJUX0ZMQUcgVmlkZW9UZXh0dXJl
Q29waWVyR1N0cmVhbWVyOjpDb2xvckNvbnZlcnNpb246Ok5vQ29udmVydAorI2RlZmluZSBHU1Rf
R0xfQ0FQU19GT1JNQVQgInsgUkdCeCwgUkdCQSwgSTQyMCwgWTQ0NCwgWVYxMiwgWTQxQiwgWTQy
QiwgTlYxMiwgTlYyMSwgVlVZQSB9IgogCiAjaW5jbHVkZSA8Z3N0L2FwcC9nc3RhcHBzaW5rLmg+
CiAKQEAgLTE0NSw4ICsxNDYsMTAgQEAgcHVibGljOgogCiAgICAgICAgIGlmIChnc3RHTEVuYWJs
ZWQpIHsKICAgICAgICAgICAgIG1faXNNYXBwZWQgPSBnc3RfdmlkZW9fZnJhbWVfbWFwKCZtX3Zp
ZGVvRnJhbWUsICZ2aWRlb0luZm8sIG1fYnVmZmVyLCBzdGF0aWNfY2FzdDxHc3RNYXBGbGFncz4o
R1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpOwotICAgICAgICAgICAgaWYgKG1faXNNYXBwZWQp
CisgICAgICAgICAgICBpZiAobV9pc01hcHBlZCkgewogICAgICAgICAgICAgICAgIG1fdGV4dHVy
ZUlEID0gKnJlaW50ZXJwcmV0X2Nhc3Q8R0x1aW50Kj4obV92aWRlb0ZyYW1lLmRhdGFbMF0pOwor
ICAgICAgICAgICAgICAgIG1faGFzTWFwcGVkVGV4dHVyZXMgPSB0cnVlOworICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShmbGFncyk7CkBA
IC0xNzEsMTAgKzE3NCwyMiBAQCBwdWJsaWM6CiAgICAgICAgIGdzdF92aWRlb19mcmFtZV91bm1h
cCgmbV92aWRlb0ZyYW1lKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgd2FpdEZvckNQVVN5
bmMoKQorICAgIHsKKyAgICAgICAgR3N0R0xTeW5jTWV0YSogbWV0YSA9IGdzdF9idWZmZXJfZ2V0
X2dsX3N5bmNfbWV0YShtX2J1ZmZlcik7CisgICAgICAgIGlmIChtZXRhKSB7CisgICAgICAgICAg
ICBHc3RNZW1vcnkqIG1lbSA9IGdzdF9idWZmZXJfcGVla19tZW1vcnkobV9idWZmZXIsIDApOwor
ICAgICAgICAgICAgR3N0R0xDb250ZXh0KiBjb250ZXh0ID0gKChHc3RHTEJhc2VNZW1vcnkqKW1l
bSktPmNvbnRleHQ7CisgICAgICAgICAgICBnc3RfZ2xfc3luY19tZXRhX3dhaXRfY3B1KG1ldGEs
IGNvbnRleHQpOworICAgICAgICB9CisgICAgfQorCiAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIGJvb2wgaGFzQWxwaGFDaGFubmVsKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNBbHBoYUNoYW5uZWw7IH0KICAgICBUZXh0dXJlTWFwcGVyR0w6OkZs
YWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQogICAgIEdMdWludCB0ZXh0dXJl
SUQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJRDsgfQorICAgIGJvb2wgaGFzTWFwcGVkVGV4
dHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2hhc01hcHBlZFRleHR1cmVzOyB9CisgICAgY29uc3Qg
R3N0VmlkZW9GcmFtZSYgdmlkZW9GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9GcmFtZTsg
fQogCiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlKEJpdG1hcFRleHR1cmVHTCYgdGV4dHVyZSkKICAg
ICB7CkBAIC0yMDksNiArMjI0LDcgQEAgcHJpdmF0ZToKICAgICBUZXh0dXJlTWFwcGVyR0w6OkZs
YWdzIG1fZmxhZ3MgeyB9OwogICAgIEdMdWludCBtX3RleHR1cmVJRCB7IDAgfTsKICAgICBib29s
IG1faXNNYXBwZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNNYXBwZWRUZXh0dXJlcyB7IGZh
bHNlIH07CiB9OwogI2VuZGlmCiAKQEAgLTcxNiwxMCArNzMyLDU3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cHVzaFRleHR1cmVUb0NvbXBvc2l0b3IoKQogCiAgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0VmlkZW9GcmFtZUhvbGRlcj4gZnJhbWVIb2xkZXIg
PSBtYWtlVW5pcXVlPEdzdFZpZGVvRnJhbWVIb2xkZXI+KG1fc2FtcGxlLmdldCgpLCBtX3RleHR1
cmVNYXBwZXJGbGFncywgIW1fdXNpbmdGYWxsYmFja1ZpZGVvU2luayk7CiAKLSAgICAgICAgICAg
IEdMdWludCB0ZXh0dXJlSUQgPSBmcmFtZUhvbGRlci0+dGV4dHVyZUlEKCk7Ci0gICAgICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IGxheWVy
QnVmZmVyOwotICAgICAgICAgICAgaWYgKHRleHR1cmVJRCkgewotICAgICAgICAgICAgICAgIGxh
eWVyQnVmZmVyID0gbWFrZVVuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4o
dGV4dHVyZUlELCBmcmFtZUhvbGRlci0+c2l6ZSgpLCBmcmFtZUhvbGRlci0+ZmxhZ3MoKSwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJHQkEpOworICAgICAgICAgICAgdXNpbmcgQnVmZmVyID0gVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QnVmZmVyPiBsYXllckJ1ZmZlcjsKKyAgICAgICAgICAgIGlmIChmcmFtZUhvbGRlci0+aGFzTWFw
cGVkVGV4dHVyZXMoKSkgeworICAgICAgICAgICAgICAgIGF1dG8mIHZpZGVvRnJhbWUgPSBmcmFt
ZUhvbGRlci0+dmlkZW9GcmFtZSgpOworICAgICAgICAgICAgICAgIFsmXSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmICgoR1NUX1ZJREVPX0lORk9fSVNfUkdCKCZ2aWRlb0ZyYW1lLmluZm8pICYm
IEdTVF9WSURFT19JTkZPX05fUExBTkVTKCZ2aWRlb0ZyYW1lLmluZm8pID09IDEpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBsYXllckJ1ZmZlciA9IG1ha2VVbmlxdWU8QnVmZmVyPigKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXI6OlRleHR1cmVWYXJpYW50IHsgQnVmZmVy
OjpSR0JUZXh0dXJlIHsgKnN0YXRpY19jYXN0PEdMdWludCo+KHZpZGVvRnJhbWUuZGF0YVswXSkg
fSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lSG9sZGVyLT5zaXplKCksIGZy
YW1lSG9sZGVyLT5mbGFncygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgICAgICBpZiAoR1NUX1ZJREVPX0lORk9fSVNfWVVWKCZ2aWRlb0ZyYW1lLmluZm8pKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoR1NUX1ZJREVPX0lORk9fTl9DT01QT05FTlRT
KCZ2aWRlb0ZyYW1lLmluZm8pIDwgMyB8fCBHU1RfVklERU9fSU5GT19OX1BMQU5FUygmdmlkZW9G
cmFtZS5pbmZvKSA+IDMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlBsYW5lcyA9IEdTVF9WSURF
T19JTkZPX05fUExBTkVTKCZ2aWRlb0ZyYW1lLmluZm8pOworICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjphcnJheTxHTHVpbnQsIDM+IHBsYW5lczsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6YXJyYXk8dW5zaWduZWQsIDM+IHl1dlBsYW5lOworICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjphcnJheTx1bnNpZ25lZCwgMz4geXV2UGxhbmVPZmZzZXQ7CisgICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZQbGFuZXM7ICsraSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFuZXNbaV0gPSAqc3RhdGljX2Nhc3Q8R0x1
aW50Kj4odmlkZW9GcmFtZS5kYXRhW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCAzOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB5dXZQbGFuZVtpXSA9IEdTVF9WSURFT19JTkZPX0NPTVBfUExBTkUoJnZpZGVvRnJhbWUuaW5m
bywgaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXV2UGxhbmVPZmZzZXRbaV0gPSBH
U1RfVklERU9fSU5GT19DT01QX1BPRkZTRVQoJnZpZGVvRnJhbWUuaW5mbywgaSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6YXJyYXk8
R0xmbG9hdCwgOT4geXV2VG9SZ2I7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ3N0X3Zp
ZGVvX2NvbG9yaW1ldHJ5X21hdGNoZXMoJkdTVF9WSURFT19JTkZPX0NPTE9SSU1FVFJZKCZ2aWRl
b0ZyYW1lLmluZm8pLCBHU1RfVklERU9fQ09MT1JJTUVUUllfQlQ3MDkpKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeXV2VG9SZ2IgPSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEuMTY0ZiwgIDAuMGYsICAgIDEuNzg3ZiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMS4xNjRmLCAtMC4yMTNmLCAtMC41MzFmLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxLjE2NGYsICAyLjExMmYsICAwLjBmCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gRGVmYXVsdCB0byBidDYwMS4gVGhpcyBpcyB0aGUgc2FtZSBiZWhh
dmlvdXIgYXMgR1N0cmVhbWVyJ3MgZ2xjb2xvcmNvbnZlcnQgZWxlbWVudC4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB5dXZUb1JnYiA9IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMS4xNjRmLCAgMC4wZiwgICAgMS41OTZmLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxLjE2NGYsIC0wLjM5MWYsIC0wLjgxM2YsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEuMTY0ZiwgIDIuMDE4ZiwgIDAuMGYKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9OworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAg
ICAgICBsYXllckJ1ZmZlciA9IG1ha2VVbmlxdWU8QnVmZmVyPihCdWZmZXI6OlRleHR1cmVWYXJp
YW50IHsgQnVmZmVyOjpZVVZUZXh0dXJlIHsgbnVtYmVyT2ZQbGFuZXMsIHBsYW5lcywgeXV2UGxh
bmUsIHl1dlBsYW5lT2Zmc2V0LCB5dXZUb1JnYiB9IH0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZnJhbWVIb2xkZXItPnNpemUoKSwgZnJhbWVIb2xkZXItPmZsYWdzKCksIEdyYXBoaWNz
Q29udGV4dDNEOjpSR0JBKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0oKTsKKworICAgICAgICAgICAgICAgIGlmICghbGF5ZXJCdWZmZXIpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKwogICAgICAgICAgICAgICAgIGxheWVyQnVmZmVyLT5zZXRVbm1hbmFn
ZWRCdWZmZXJEYXRhSG9sZGVyKFdURk1vdmUoZnJhbWVIb2xkZXIpKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgbGF5ZXJCdWZmZXIgPSBwcm94eS5nZXRBdmFpbGFibGVC
dWZmZXIoZnJhbWVIb2xkZXItPnNpemUoKSwgR0xfRE9OVF9DQVJFKTsKQEAgLTEwNzgsOCArMTE0
MSw3IEBAIEdzdEVsZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmNyZWF0
ZVZpZGVvU2lua0dMKCkKICAgICBHc3RFbGVtZW50KiBhcHBzaW5rID0gY3JlYXRlR0xBcHBTaW5r
KCk7CiAKICAgICAvLyBnbHNpbmtiaW4gaXMgbm90IHVzZWQgYmVjYXVzZSBpdCBpbmNsdWRlcyBn
bGNvbG9yY29udmVydCB3aGljaCBvbmx5IHByb2Nlc3MgUkdCQSwKLSAgICAvLyBidXQgaW4gdGhl
IGZ1dHVyZSBpdCB3b3VsZCBiZSBwb3NzaWJsZSB0byByZW5kZXIgWVVWIGZvcm1hdHMgdG9vOgot
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzI4NjkKKyAg
ICAvLyBidXQgd2UgY2FuIGRpc3BsYXkgWVVWIGZvcm1hdHMgdG9vLgogCiAgICAgaWYgKCFhcHBz
aW5rIHx8ICF1cGxvYWQgfHwgIWNvbG9yY29udmVydCkgewogICAgICAgICBHU1RfV0FSTklORygi
RmFpbGVkIHRvIGNyZWF0ZSBHc3RHTCBlbGVtZW50cyIpOwpAQCAtMTA5OCw3ICsxMTYwLDcgQEAg
R3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3JlYXRlVmlkZW9T
aW5rR0woKQogCiAgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKHZpZGVvU2luayksIHVwbG9h
ZCwgY29sb3Jjb252ZXJ0LCBhcHBzaW5rLCBudWxscHRyKTsKIAotICAgIEdSZWZQdHI8R3N0Q2Fw
cz4gY2FwcyA9IGFkb3B0R1JlZihnc3RfY2Fwc19uZXdfc2ltcGxlKCJ2aWRlby94LXJhdyIsICJm
b3JtYXQiLCBHX1RZUEVfU1RSSU5HLCAiUkdCQSIsIG51bGxwdHIpKTsKKyAgICBHUmVmUHRyPEdz
dENhcHM+IGNhcHMgPSBhZG9wdEdSZWYoZ3N0X2NhcHNfZnJvbV9zdHJpbmcoInZpZGVvL3gtcmF3
LCBmb3JtYXQgPSAoc3RyaW5nKSAiIEdTVF9HTF9DQVBTX0ZPUk1BVCkpOwogICAgIGdzdF9jYXBz
X3NldF9mZWF0dXJlcyhjYXBzLmdldCgpLCAwLCBnc3RfY2Fwc19mZWF0dXJlc19uZXcoR1NUX0NB
UFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZLCBudWxscHRyKSk7CiAgICAgZ19vYmplY3Rfc2V0
KGFwcHNpbmssICJjYXBzIiwgY2Fwcy5nZXQoKSwgbnVsbHB0cik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RleHR1cmVDb3Bp
ZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5jcHAKaW5kZXggZmYzMzgxODE4ZDJhMjVl
ZTNkZTQ2MzYzMTgwMjBkNzNiZjRjYmFhOC4uNTJlMTdlYWM1NmU3YWU2OGM4Mzk5NGM3MDhlMzlm
ODcwNTg2OTBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVGV4dHVyZUNvcGllckdTdHJl
YW1lci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOjpW
aWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXIoQ29sb3JDb252ZXJzaW9uIGNvbG9yQ28KICAgICBB
U1NFUlQocHJldmlvdXNDb250ZXh0KTsKICAgICBQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3Bs
YXlGb3JDb21wb3NpdGluZygpLnNoYXJpbmdHTENvbnRleHQoKS0+bWFrZUNvbnRleHRDdXJyZW50
KCk7CiAKLSAgICBtX3NoYWRlclByb2dyYW0gPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6
Y3JlYXRlKFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlKTsKKyAgICBtX3NoYWRl
clByb2dyYW0gPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6Y3JlYXRlKFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlUkdCKTsKIAogICAgIGdsR2VuRnJhbWVidWZmZXJzKDEs
ICZtX2ZyYW1lYnVmZmVyKTsKICAgICBnbEdlblRleHR1cmVzKDEsICZtX3Jlc3VsdFRleHR1cmUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCBhMmY3NTg2NmUzMjNiOGZkYmE0M2EwMDdkNDQ3
YWFhNDY1NzZiZmYyLi42MTYzNWU1MmE2NzY5NTgzNDMzZWQwZTMwMzIyOWY4NWMxZWMwNWVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtMzE5LDIxICszMTksMjEgQEAgc3RhdGljIFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnNGb3JGaWx0ZXJUeXBlKEZpbHRl
ck9wZXJhdGlvbjoKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6R1JBWVNDQUxFOgotICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dy
YW06OlRleHR1cmUgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6R3JheXNjYWxlRmlsdGVy
OworICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVSR0Ig
fCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6R3JheXNjYWxlRmlsdGVyOwogICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpTRVBJQToKLSAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtOjpUZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlNlcGlhRmls
dGVyOworICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVS
R0IgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6U2VwaWFGaWx0ZXI7CiAgICAgY2FzZSBG
aWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOgotICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW06OlRleHR1cmUgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6U2F0dXJh
dGVGaWx0ZXI7CisgICAgICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4
dHVyZVJHQiB8IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpTYXR1cmF0ZUZpbHRlcjsKICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURToKLSAgICAgICAgcmV0dXJuIFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dy
YW06Okh1ZVJvdGF0ZUZpbHRlcjsKKyAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtOjpUZXh0dXJlUkdCIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Okh1ZVJvdGF0
ZUZpbHRlcjsKICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SU5WRVJUOgotICAgICAgICByZXR1
cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmUgfCBUZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbTo6SW52ZXJ0RmlsdGVyOworICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW06OlRleHR1cmVSR0IgfCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6SW52
ZXJ0RmlsdGVyOwogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOgotICAgICAg
ICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmUgfCBUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbTo6QnJpZ2h0bmVzc0ZpbHRlcjsKKyAgICAgICAgcmV0dXJuIFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlUkdCIHwgVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW06OkJyaWdodG5lc3NGaWx0ZXI7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNPTlRS
QVNUOgotICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmUg
fCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6Q29udHJhc3RGaWx0ZXI7CisgICAgICAgIHJl
dHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVJHQiB8IFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtOjpDb250cmFzdEZpbHRlcjsKICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6T1BBQ0lUWToKLSAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpU
ZXh0dXJlIHwgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9wYWNpdHlGaWx0ZXI7CisgICAg
ICAgIHJldHVybiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVJHQiB8IFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcGFjaXR5RmlsdGVyOwogICAgIGNhc2UgRmlsdGVyT3Bl
cmF0aW9uOjpCTFVSOgogICAgICAgICByZXR1cm4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06
OkJsdXJGaWx0ZXI7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOgpAQCAt
NDcwLDcgKzQ3MCw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZShHTHVpbnQg
dGV4dHVyZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHRlCiAgICAgICAgICYmIGV4cG9z
ZWRFZGdlcyA9PSBBbGxFZGdlcwogICAgICAgICAmJiAhbW9kZWxWaWV3TWF0cml4Lm1hcFF1YWQo
dGFyZ2V0UmVjdCkuaXNSZWN0aWxpbmVhcigpOwogCi0gICAgVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW06Ok9wdGlvbnMgb3B0aW9ucyA9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0
dXJlOworICAgIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnMgPSBU
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZVJHQjsKICAgICBpZiAodXNlUmVjdCkK
ICAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6UmVjdDsKICAg
ICBpZiAob3BhY2l0eSA8IDEpCkBAIC01MDQsNiArNTA0LDE3MyBAQCB2b2lkIFRleHR1cmVNYXBw
ZXJHTDo6ZHJhd1RleHR1cmUoR0x1aW50IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRT
aXplJiB0ZQogICAgIGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShwcm9ncmFtLmdldCgpLCB0
ZXh0dXJlLCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwg
b3BhY2l0eSk7CiB9CiAKK3N0YXRpYyB2b2lkIHByZXBhcmVUcmFuc2Zvcm1hdGlvbk1hdHJpeFdp
dGhGbGFncyhUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGF0dGVyblRyYW5zZm9ybSwgVGV4dHVyZU1h
cHBlckdMOjpGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAoZmxh
Z3MgJiBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZFJvdGF0ZVRleHR1cmU5MCkgeworICAgICAgICBw
YXR0ZXJuVHJhbnNmb3JtLnJvdGF0ZSgtOTApOworICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRy
YW5zbGF0ZSgtMSwgMCk7CisgICAgfQorICAgIGlmIChmbGFncyAmIFRleHR1cmVNYXBwZXJHTDo6
U2hvdWxkUm90YXRlVGV4dHVyZTE4MCkgeworICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnJvdGF0
ZSgxODApOworICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMSwgLTEpOworICAg
IH0KKyAgICBpZiAoZmxhZ3MgJiBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZFJvdGF0ZVRleHR1cmUy
NzApIHsKKyAgICAgICAgcGF0dGVyblRyYW5zZm9ybS5yb3RhdGUoLTI3MCk7CisgICAgICAgIHBh
dHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAsIC0xKTsKKyAgICB9CisgICAgaWYgKGZsYWdzICYg
VGV4dHVyZU1hcHBlckdMOjpTaG91bGRGbGlwVGV4dHVyZSkKKyAgICAgICAgcGF0dGVyblRyYW5z
Zm9ybS5mbGlwWSgpOworICAgIGlmIChmbGFncyAmIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkVXNl
QVJCVGV4dHVyZVJlY3QpCisgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3Jt
KHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisgICAgaWYgKGZsYWdzICYgVGV4dHVyZU1h
cHBlckdMOjpTaG91bGRGbGlwVGV4dHVyZSkKKyAgICAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFu
c2xhdGUoMCwgLTEpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVQbGFu
YXJZVVYoY29uc3Qgc3RkOjphcnJheTxHTHVpbnQsIDM+JiB0ZXh0dXJlcywgY29uc3Qgc3RkOjph
cnJheTxHTGZsb2F0LCA5PiYgeXV2VG9SZ2JNYXRyaXgsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRT
aXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25l
ZCBleHBvc2VkRWRnZXMpCit7CisgICAgYm9vbCB1c2VSZWN0ID0gZmxhZ3MgJiBTaG91bGRVc2VB
UkJUZXh0dXJlUmVjdDsKKyAgICBib29sIHVzZUFudGlhbGlhc2luZyA9IG1fZW5hYmxlRWRnZURp
c3RhbmNlQW50aWFsaWFzaW5nCisgICAgICAgICYmIGV4cG9zZWRFZGdlcyA9PSBBbGxFZGdlcwor
ICAgICAgICAmJiAhbW9kZWxWaWV3TWF0cml4Lm1hcFF1YWQodGFyZ2V0UmVjdCkuaXNSZWN0aWxp
bmVhcigpOworCisgICAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9wdGlvbnMgb3B0aW9u
cyA9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlWVVWOworICAgIGlmICh1c2VS
ZWN0KQorICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpSZWN0
OworICAgIGlmIChvcGFjaXR5IDwgMSkKKyAgICAgICAgb3B0aW9ucyB8PSBUZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbTo6T3BhY2l0eTsKKyAgICBpZiAodXNlQW50aWFsaWFzaW5nKSB7CisgICAg
ICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkFudGlhbGlhc2luZzsK
KyAgICAgICAgZmxhZ3MgfD0gU2hvdWxkQW50aWFsaWFzOworICAgIH0KKyAgICBpZiAod3JhcE1v
ZGUoKSA9PSBSZXBlYXRXcmFwICYmICFtX2NvbnRleHRBdHRyaWJ1dGVzLnN1cHBvcnRzTlBPVFRl
eHR1cmVzKQorICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpN
YW51YWxSZXBlYXQ7CisKKyAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBmaWx0ZXIgPSBkYXRh
KCkuZmlsdGVySW5mbyA/IGRhdGEoKS5maWx0ZXJJbmZvLT5maWx0ZXI6IDA7CisgICAgR0x1aW50
IGZpbHRlckNvbnRlbnRUZXh0dXJlSUQgPSAwOworCisgICAgaWYgKGZpbHRlcikgeworICAgICAg
ICBpZiAoZGF0YSgpLmZpbHRlckluZm8tPmNvbnRlbnRUZXh0dXJlKQorICAgICAgICAgICAgZmls
dGVyQ29udGVudFRleHR1cmVJRCA9IHRvQml0bWFwVGV4dHVyZUdMKGRhdGEoKS5maWx0ZXJJbmZv
LT5jb250ZW50VGV4dHVyZS5nZXQoKSktPmlkKCk7CisgICAgICAgIG9wdGlvbnMgfD0gb3B0aW9u
c0ZvckZpbHRlclR5cGUoZmlsdGVyLT50eXBlKCksIGRhdGEoKS5maWx0ZXJJbmZvLT5wYXNzKTsK
KyAgICAgICAgaWYgKGZpbHRlci0+YWZmZWN0c09wYWNpdHkoKSkKKyAgICAgICAgICAgIGZsYWdz
IHw9IFNob3VsZEJsZW5kOworICAgIH0KKworICAgIGlmICh1c2VBbnRpYWxpYXNpbmcgfHwgb3Bh
Y2l0eSA8IDEpCisgICAgICAgIGZsYWdzIHw9IFNob3VsZEJsZW5kOworCisgICAgUmVmPFRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBwcm9ncmFtID0gZGF0YSgpLmdldFNoYWRlclByb2dyYW0o
b3B0aW9ucyk7CisKKyAgICBpZiAoZmlsdGVyKQorICAgICAgICBwcmVwYXJlRmlsdGVyUHJvZ3Jh
bShwcm9ncmFtLmdldCgpLCAqZmlsdGVyLmdldCgpLCBkYXRhKCkuZmlsdGVySW5mby0+cGFzcywg
dGV4dHVyZVNpemUsIGZpbHRlckNvbnRlbnRUZXh0dXJlSUQpOworCisgICAgVmVjdG9yPHN0ZDo6
cGFpcjxHTHVpbnQsIEdMdWludD4gPiB0ZXh0dXJlc0FuZFNhbXBsZXJzID0geworICAgICAgICB7
IHRleHR1cmVzWzBdLCBwcm9ncmFtLT5zYW1wbGVyWUxvY2F0aW9uKCkgfSwKKyAgICAgICAgeyB0
ZXh0dXJlc1sxXSwgcHJvZ3JhbS0+c2FtcGxlclVMb2NhdGlvbigpIH0sCisgICAgICAgIHsgdGV4
dHVyZXNbMl0sIHByb2dyYW0tPnNhbXBsZXJWTG9jYXRpb24oKSB9CisgICAgfTsKKworICAgIGds
VXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtSUQoKSk7CisgICAgZ2xVbmlmb3JtTWF0cml4M2Z2
KHByb2dyYW0tPnl1dlRvUmdiTG9jYXRpb24oKSwgMSwgR0xfRkFMU0UsIHN0YXRpY19jYXN0PGNv
bnN0IEdMZmxvYXQgKj4oJnl1dlRvUmdiTWF0cml4WzBdKSk7CisgICAgZHJhd1RleHR1cmVkUXVh
ZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0KCksIHRleHR1cmVzQW5kU2FtcGxlcnMsIGZsYWdzLCB0
ZXh0dXJlU2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsKK30KKwor
dm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlU2VtaVBsYW5hcllVVihjb25zdCBzdGQ6
OmFycmF5PEdMdWludCwgMj4mIHRleHR1cmVzLCBib29sIHV2UmV2ZXJzZWQsIGNvbnN0IHN0ZDo6
YXJyYXk8R0xmbG9hdCwgOT4mIHl1dlRvUmdiTWF0cml4LCBGbGFncyBmbGFncywgY29uc3QgSW50
U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgdW5zaWdu
ZWQgZXhwb3NlZEVkZ2VzKQoreworICAgIGJvb2wgdXNlUmVjdCA9IGZsYWdzICYgU2hvdWxkVXNl
QVJCVGV4dHVyZVJlY3Q7CisgICAgYm9vbCB1c2VBbnRpYWxpYXNpbmcgPSBtX2VuYWJsZUVkZ2VE
aXN0YW5jZUFudGlhbGlhc2luZworICAgICAgICAmJiBleHBvc2VkRWRnZXMgPT0gQWxsRWRnZXMK
KyAgICAgICAgJiYgIW1vZGVsVmlld01hdHJpeC5tYXBRdWFkKHRhcmdldFJlY3QpLmlzUmVjdGls
aW5lYXIoKTsKKworICAgIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlv
bnMgPSB1dlJldmVyc2VkID8KKyAgICAgICAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRl
eHR1cmVOVjIxIDogVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmVOVjEyOworICAg
IGlmICh1c2VSZWN0KQorICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtOjpSZWN0OworICAgIGlmIChvcGFjaXR5IDwgMSkKKyAgICAgICAgb3B0aW9ucyB8PSBUZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3BhY2l0eTsKKyAgICBpZiAodXNlQW50aWFsaWFzaW5n
KSB7CisgICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OkFudGlh
bGlhc2luZzsKKyAgICAgICAgZmxhZ3MgfD0gU2hvdWxkQW50aWFsaWFzOworICAgIH0KKyAgICBp
ZiAod3JhcE1vZGUoKSA9PSBSZXBlYXRXcmFwICYmICFtX2NvbnRleHRBdHRyaWJ1dGVzLnN1cHBv
cnRzTlBPVFRleHR1cmVzKQorICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtOjpNYW51YWxSZXBlYXQ7CisKKyAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBmaWx0
ZXIgPSBkYXRhKCkuZmlsdGVySW5mbyA/IGRhdGEoKS5maWx0ZXJJbmZvLT5maWx0ZXI6IDA7Cisg
ICAgR0x1aW50IGZpbHRlckNvbnRlbnRUZXh0dXJlSUQgPSAwOworCisgICAgaWYgKGZpbHRlcikg
eworICAgICAgICBpZiAoZGF0YSgpLmZpbHRlckluZm8tPmNvbnRlbnRUZXh0dXJlKQorICAgICAg
ICAgICAgZmlsdGVyQ29udGVudFRleHR1cmVJRCA9IHRvQml0bWFwVGV4dHVyZUdMKGRhdGEoKS5m
aWx0ZXJJbmZvLT5jb250ZW50VGV4dHVyZS5nZXQoKSktPmlkKCk7CisgICAgICAgIG9wdGlvbnMg
fD0gb3B0aW9uc0ZvckZpbHRlclR5cGUoZmlsdGVyLT50eXBlKCksIGRhdGEoKS5maWx0ZXJJbmZv
LT5wYXNzKTsKKyAgICAgICAgaWYgKGZpbHRlci0+YWZmZWN0c09wYWNpdHkoKSkKKyAgICAgICAg
ICAgIGZsYWdzIHw9IFNob3VsZEJsZW5kOworICAgIH0KKworICAgIGlmICh1c2VBbnRpYWxpYXNp
bmcgfHwgb3BhY2l0eSA8IDEpCisgICAgICAgIGZsYWdzIHw9IFNob3VsZEJsZW5kOworCisgICAg
UmVmPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtPiBwcm9ncmFtID0gZGF0YSgpLmdldFNoYWRl
clByb2dyYW0ob3B0aW9ucyk7CisKKyAgICBpZiAoZmlsdGVyKQorICAgICAgICBwcmVwYXJlRmls
dGVyUHJvZ3JhbShwcm9ncmFtLmdldCgpLCAqZmlsdGVyLmdldCgpLCBkYXRhKCkuZmlsdGVySW5m
by0+cGFzcywgdGV4dHVyZVNpemUsIGZpbHRlckNvbnRlbnRUZXh0dXJlSUQpOworCisgICAgVmVj
dG9yPHN0ZDo6cGFpcjxHTHVpbnQsIEdMdWludD4gPiB0ZXh0dXJlc0FuZFNhbXBsZXJzID0gewor
ICAgICAgICB7IHRleHR1cmVzWzBdLCBwcm9ncmFtLT5zYW1wbGVyWUxvY2F0aW9uKCkgfSwKKyAg
ICAgICAgeyB0ZXh0dXJlc1sxXSwgcHJvZ3JhbS0+c2FtcGxlclVMb2NhdGlvbigpIH0KKyAgICB9
OworCisgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0tPnByb2dyYW1JRCgpKTsKKyAgICBnbFVuaWZv
cm1NYXRyaXgzZnYocHJvZ3JhbS0+eXV2VG9SZ2JMb2NhdGlvbigpLCAxLCBHTF9GQUxTRSwgc3Rh
dGljX2Nhc3Q8Y29uc3QgR0xmbG9hdCAqPigmeXV2VG9SZ2JNYXRyaXhbMF0pKTsKKyAgICBkcmF3
VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgdGV4dHVyZXNBbmRTYW1wbGVy
cywgZmxhZ3MsIHRleHR1cmVTaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNp
dHkpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmVQYWNrZWRZVVYoR0x1
aW50IHRleHR1cmUsIGNvbnN0IHN0ZDo6YXJyYXk8R0xmbG9hdCwgOT4mIHl1dlRvUmdiTWF0cml4
LCBGbGFncyBmbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJp
eCwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKQoreworICAgIGJvb2wgdXNl
UmVjdCA9IGZsYWdzICYgU2hvdWxkVXNlQVJCVGV4dHVyZVJlY3Q7CisgICAgYm9vbCB1c2VBbnRp
YWxpYXNpbmcgPSBtX2VuYWJsZUVkZ2VEaXN0YW5jZUFudGlhbGlhc2luZworICAgICAgICAmJiBl
eHBvc2VkRWRnZXMgPT0gQWxsRWRnZXMKKyAgICAgICAgJiYgIW1vZGVsVmlld01hdHJpeC5tYXBR
dWFkKHRhcmdldFJlY3QpLmlzUmVjdGlsaW5lYXIoKTsKKworICAgIFRleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtOjpPcHRpb25zIG9wdGlvbnMgPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6
VGV4dHVyZVBhY2tlZFlVVjsKKyAgICBpZiAodXNlUmVjdCkKKyAgICAgICAgb3B0aW9ucyB8PSBU
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6UmVjdDsKKyAgICBpZiAob3BhY2l0eSA8IDEpCisg
ICAgICAgIG9wdGlvbnMgfD0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9wYWNpdHk7Cisg
ICAgaWYgKHVzZUFudGlhbGlhc2luZykgeworICAgICAgICBvcHRpb25zIHw9IFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtOjpBbnRpYWxpYXNpbmc7CisgICAgICAgIGZsYWdzIHw9IFNob3VsZEFu
dGlhbGlhczsKKyAgICB9CisgICAgaWYgKHdyYXBNb2RlKCkgPT0gUmVwZWF0V3JhcCAmJiAhbV9j
b250ZXh0QXR0cmlidXRlcy5zdXBwb3J0c05QT1RUZXh0dXJlcykKKyAgICAgICAgb3B0aW9ucyB8
PSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6TWFudWFsUmVwZWF0OworCisgICAgUmVmUHRy
PEZpbHRlck9wZXJhdGlvbj4gZmlsdGVyID0gZGF0YSgpLmZpbHRlckluZm8gPyBkYXRhKCkuZmls
dGVySW5mby0+ZmlsdGVyOiAwOworICAgIEdMdWludCBmaWx0ZXJDb250ZW50VGV4dHVyZUlEID0g
MDsKKworICAgIGlmIChmaWx0ZXIpIHsKKyAgICAgICAgaWYgKGRhdGEoKS5maWx0ZXJJbmZvLT5j
b250ZW50VGV4dHVyZSkKKyAgICAgICAgICAgIGZpbHRlckNvbnRlbnRUZXh0dXJlSUQgPSB0b0Jp
dG1hcFRleHR1cmVHTChkYXRhKCkuZmlsdGVySW5mby0+Y29udGVudFRleHR1cmUuZ2V0KCkpLT5p
ZCgpOworICAgICAgICBvcHRpb25zIHw9IG9wdGlvbnNGb3JGaWx0ZXJUeXBlKGZpbHRlci0+dHlw
ZSgpLCBkYXRhKCkuZmlsdGVySW5mby0+cGFzcyk7CisgICAgICAgIGlmIChmaWx0ZXItPmFmZmVj
dHNPcGFjaXR5KCkpCisgICAgICAgICAgICBmbGFncyB8PSBTaG91bGRCbGVuZDsKKyAgICB9CisK
KyAgICBpZiAodXNlQW50aWFsaWFzaW5nIHx8IG9wYWNpdHkgPCAxKQorICAgICAgICBmbGFncyB8
PSBTaG91bGRCbGVuZDsKKworICAgIFJlZjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbT4gcHJv
Z3JhbSA9IGRhdGEoKS5nZXRTaGFkZXJQcm9ncmFtKG9wdGlvbnMpOworCisgICAgaWYgKGZpbHRl
cikKKyAgICAgICAgcHJlcGFyZUZpbHRlclByb2dyYW0ocHJvZ3JhbS5nZXQoKSwgKmZpbHRlci5n
ZXQoKSwgZGF0YSgpLmZpbHRlckluZm8tPnBhc3MsIHRleHR1cmVTaXplLCBmaWx0ZXJDb250ZW50
VGV4dHVyZUlEKTsKKworICAgIFZlY3RvcjxzdGQ6OnBhaXI8R0x1aW50LCBHTHVpbnQ+ID4gdGV4
dHVyZXNBbmRTYW1wbGVycyA9IHsKKyAgICAgICAgeyB0ZXh0dXJlLCBwcm9ncmFtLT5zYW1wbGVy
TG9jYXRpb24oKSB9CisgICAgfTsKKworICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFt
SUQoKSk7CisgICAgZ2xVbmlmb3JtTWF0cml4M2Z2KHByb2dyYW0tPnl1dlRvUmdiTG9jYXRpb24o
KSwgMSwgR0xfRkFMU0UsIHN0YXRpY19jYXN0PGNvbnN0IEdMZmxvYXQgKj4oJnl1dlRvUmdiTWF0
cml4WzBdKSk7CisgICAgZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKHByb2dyYW0uZ2V0KCks
IHRleHR1cmVzQW5kU2FtcGxlcnMsIGZsYWdzLCB0ZXh0dXJlU2l6ZSwgdGFyZ2V0UmVjdCwgbW9k
ZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsKK30KKwogdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdT
b2xpZENvbG9yKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1hdHJpeCwgY29uc3QgQ29sb3ImIGNvbG9yLCBib29sIGlzQmxlbmRpbmdBbGxvd2VkKQog
ewogICAgIEZsYWdzIGZsYWdzID0gMDsKQEAgLTYwMSwzNyArNzY4LDI3IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlckdMOjpkcmF3KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1vCiAgICAgZ2xFbmFibGUoR0xfQkxFTkQpOwogfQogCi12b2lkIFRleHR1cmVN
YXBwZXJHTDo6ZHJhd1RleHR1cmVkUXVhZFdpdGhQcm9ncmFtKFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtJiBwcm9ncmFtLCB1aW50MzJfdCB0ZXh0dXJlLCBGbGFncyBmbGFncywgY29uc3QgSW50
U2l6ZSYgc2l6ZSwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5KQordm9pZCBUZXh0dXJlTWFwcGVy
R0w6OmRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bSYgcHJvZ3JhbSwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxHTHVpbnQsIEdMdWludD4gPiYgdGV4
dHVyZXNBbmRTYW1wbGVycywgRmxhZ3MgZmxhZ3MsIGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01h
dHJpeCwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbS5wcm9ncmFt
SUQoKSk7Ci0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKworICAgIGJvb2wgcmVw
ZWF0V3JhcCA9IHdyYXBNb2RlKCkgPT0gUmVwZWF0V3JhcCAmJiBtX2NvbnRleHRBdHRyaWJ1dGVz
LnN1cHBvcnRzTlBPVFRleHR1cmVzOwogICAgIEdMZW51bSB0YXJnZXQgPSBmbGFncyAmIFNob3Vs
ZFVzZUFSQlRleHR1cmVSZWN0ID8gR0xlbnVtKEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FSQikgOiBH
TGVudW0oR0xfVEVYVFVSRV8yRCk7Ci0gICAgZ2xCaW5kVGV4dHVyZSh0YXJnZXQsIHRleHR1cmUp
OwotICAgIGdsVW5pZm9ybTFpKHByb2dyYW0uc2FtcGxlckxvY2F0aW9uKCksIDApOwotICAgIGlm
ICh3cmFwTW9kZSgpID09IFJlcGVhdFdyYXAgJiYgbV9jb250ZXh0QXR0cmlidXRlcy5zdXBwb3J0
c05QT1RUZXh0dXJlcykgewotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9XUkFQX1MsIEdMX1JFUEVBVCk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfUkVQRUFUKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgdGV4dHVyZXNBbmRTYW1wbGVycy5zaXplKCk7ICsraSkgeworICAg
ICAgICBhdXRvJiB0ZXh0dXJlQW5kU2FtcGxlciA9IHRleHR1cmVzQW5kU2FtcGxlcnNbaV07CisK
KyAgICAgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwICsgaSk7CisgICAgICAgIGdsQmlu
ZFRleHR1cmUodGFyZ2V0LCB0ZXh0dXJlQW5kU2FtcGxlci5maXJzdCk7CisgICAgICAgIGdsVW5p
Zm9ybTFpKHRleHR1cmVBbmRTYW1wbGVyLnNlY29uZCwgaSk7CisKKyAgICAgICAgaWYgKHJlcGVh
dFdyYXApIHsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX1dSQVBfUywgR0xfUkVQRUFUKTsKKyAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfUkVQRUFUKTsKKyAgICAgICAgfQog
ICAgIH0KIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHBhdHRlcm5UcmFuc2Zvcm0gPSB0aGlz
LT5wYXR0ZXJuVHJhbnNmb3JtKCk7Ci0gICAgaWYgKGZsYWdzICYgU2hvdWxkUm90YXRlVGV4dHVy
ZTkwKSB7Ci0gICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0ucm90YXRlKC05MCk7Ci0gICAgICAgIHBh
dHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKC0xLCAwKTsKLSAgICB9Ci0gICAgaWYgKGZsYWdzICYg
U2hvdWxkUm90YXRlVGV4dHVyZTE4MCkgewotICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnJvdGF0
ZSgxODApOwotICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMSwgLTEpOwotICAg
IH0KLSAgICBpZiAoZmxhZ3MgJiBTaG91bGRSb3RhdGVUZXh0dXJlMjcwKSB7Ci0gICAgICAgIHBh
dHRlcm5UcmFuc2Zvcm0ucm90YXRlKC0yNzApOwotICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRy
YW5zbGF0ZSgwLCAtMSk7Ci0gICAgfQotICAgIGlmIChmbGFncyAmIFNob3VsZEZsaXBUZXh0dXJl
KQotICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtLmZsaXBZKCk7Ci0gICAgaWYgKGZsYWdzICYgU2hv
dWxkVXNlQVJCVGV4dHVyZVJlY3QpCi0gICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0uc2NhbGVOb25V
bmlmb3JtKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgaWYgKGZsYWdzICYgU2hv
dWxkRmxpcFRleHR1cmUpCi0gICAgICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAsIC0x
KTsKKyAgICBwcmVwYXJlVHJhbnNmb3JtYXRpb25NYXRyaXhXaXRoRmxhZ3MocGF0dGVyblRyYW5z
Zm9ybSwgZmxhZ3MsIHNpemUpOwogCiAgICAgcHJvZ3JhbS5zZXRNYXRyaXgocHJvZ3JhbS50ZXh0
dXJlU3BhY2VNYXRyaXhMb2NhdGlvbigpLCBwYXR0ZXJuVHJhbnNmb3JtKTsKICAgICBwcm9ncmFt
LnNldE1hdHJpeChwcm9ncmFtLnRleHR1cmVDb2xvclNwYWNlTWF0cml4TG9jYXRpb24oKSwgY29s
b3JTcGFjZU1hdHJpeEZvckZsYWdzKGZsYWdzKSk7CkBAIC02NDEsOCArNzk4LDE5IEBAIHZvaWQg
VGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBl
clNoYWRlclByb2dyYW0mIHByCiAgICAgICAgIGZsYWdzIHw9IFNob3VsZEJsZW5kOwogCiAgICAg
ZHJhdyhyZWN0LCBtb2RlbFZpZXdNYXRyaXgsIHByb2dyYW0sIEdMX1RSSUFOR0xFX0ZBTiwgZmxh
Z3MpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBf
UywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKworICAgIGlmIChyZXBlYXRX
cmFwKSB7CisgICAgICAgIGZvciAoYXV0byYgdGV4dHVyZUFuZFNhbXBsZXIgOiB0ZXh0dXJlc0Fu
ZFNhbXBsZXJzKSB7CisgICAgICAgICAgICBnbEJpbmRUZXh0dXJlKHRhcmdldCwgdGV4dHVyZUFu
ZFNhbXBsZXIuZmlyc3QpOworICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICAgICAgICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBf
VE9fRURHRSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpk
cmF3VGV4dHVyZWRRdWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0mIHBy
b2dyYW0sIHVpbnQzMl90IHRleHR1cmUsIEZsYWdzIGZsYWdzLCBjb25zdCBJbnRTaXplJiBzaXpl
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2Rl
bFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkpCit7CisgICAgZHJhd1RleHR1cmVkUXVhZFdpdGhQ
cm9ncmFtKHByb2dyYW0sIHsgeyB0ZXh0dXJlLCBwcm9ncmFtLnNhbXBsZXJMb2NhdGlvbigpIH0g
fSwgZmxhZ3MsIHNpemUsIHJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7CiB9CiAKIHZv
aWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3RmlsdGVyZWQoY29uc3QgQml0bWFwVGV4dHVyZSYgc2Ft
cGxlciwgY29uc3QgQml0bWFwVGV4dHVyZSogY29udGVudFRleHR1cmUsIGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiYgZmlsdGVyLCBpbnQgcGFzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAppbmRleCBjYTA1NmFm
NjYwMzBlZDFlZWQ5MmZhNWMyYTI4ZGE5MGNiMzRlYjZhLi5kYWE1MGQxNTkxM2ExZmJmZDM2ZTZl
MjdmOGQ0ZDVmZWIyYzljZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCkBAIC0zMCw2ICszMCw4IEBA
CiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAi
VGV4dHVyZU1hcHBlckdMSGVhZGVycy5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4
LmgiCisjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTY0LDYgKzY2LDkgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd051
bWJlcihpbnQgbnVtYmVyLCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1RleHR1cmUoY29u
c3QgQml0bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoR0x1aW50IHRleHR1cmUsIEZsYWdzLCBjb25z
dCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCB1
bnNpZ25lZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcyk7CisgICAgdm9pZCBkcmF3VGV4dHVyZVBs
YW5hcllVVihjb25zdCBzdGQ6OmFycmF5PEdMdWludCwgMz4mIHRleHR1cmVzLCBjb25zdCBzdGQ6
OmFycmF5PEdMZmxvYXQsIDk+JiB5dXZUb1JnYk1hdHJpeCwgRmxhZ3MsIGNvbnN0IEludFNpemUm
IHRleHR1cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIGV4
cG9zZWRFZGdlcyA9IEFsbEVkZ2VzKTsKKyAgICB2b2lkIGRyYXdUZXh0dXJlU2VtaVBsYW5hcllV
Vihjb25zdCBzdGQ6OmFycmF5PEdMdWludCwgMj4mIHRleHR1cmVzLCBib29sIHV2UmV2ZXJzZWQs
IGNvbnN0IHN0ZDo6YXJyYXk8R0xmbG9hdCwgOT4mIHl1dlRvUmdiTWF0cml4LCBGbGFncywgY29u
c3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSwg
dW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMpOworICAgIHZvaWQgZHJhd1RleHR1cmVQ
YWNrZWRZVVYoR0x1aW50IHRleHR1cmUsIGNvbnN0IHN0ZDo6YXJyYXk8R0xmbG9hdCwgOT4mIHl1
dlRvUmdiTWF0cml4LCBGbGFncywgY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmll
d01hdHJpeCwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgZXhwb3NlZEVkZ2VzID0gQWxsRWRnZXMp
OwogICAgIHZvaWQgZHJhd1NvbGlkQ29sb3IoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmLCBjb25zdCBDb2xvciYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQg
Y2xlYXJDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwogCkBAIC04NCw2ICs4OSw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGRyYXdUZXh0dXJlZFF1YWRXaXRoUHJvZ3JhbShU
ZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSYsIHVpbnQzMl90IHRleHR1cmUsIEZsYWdzLCBjb25z
dCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSk7CisgICAgdm9pZCBkcmF3VGV4dHVyZWRR
dWFkV2l0aFByb2dyYW0oVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0mLCBjb25zdCBWZWN0b3I8
c3RkOjpwYWlyPEdMdWludCwgR0x1aW50PiA+JiB0ZXh0dXJlc0FuZFNhbXBsZXJzLCBGbGFncywg
Y29uc3QgSW50U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkpOwogICAgIHZvaWQgZHJhdyhjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4
LCBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbSYsIEdMZW51bSBkcmF3aW5nTW9kZSwgRmxhZ3Mp
OwogCiAgICAgdm9pZCBkcmF3VW5pdFJlY3QoVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0mLCBH
TGVudW0gZHJhd2luZ01vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlci5jcHAKaW5kZXggZTExYTBiYjI3YjgxMGMyZDUyNzZiMmE5YjBjNTA5Zjg4
OTUwNjZjMC4uNzljZGVjZmIzYTE0MTIzNmQ0NWNmNTIwMzEwNzk5OGYyYTgyMjQ5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCkBAIC0z
NSwxNCArMzUsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlcjo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoUmVmUHRyPEJp
dG1hcFRleHR1cmU+JiYgdGV4dHVyZSwgVGV4dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncykKICAg
ICA6IG1fdGV4dHVyZShXVEZNb3ZlKHRleHR1cmUpKQotICAgICwgbV90ZXh0dXJlSUQoMCkKKyAg
ICAsIG1fdmFyaWFudChSR0JUZXh0dXJlIHsgMCB9KQogICAgICwgbV9leHRyYUZsYWdzKGZsYWdz
KQogICAgICwgbV9oYXNNYW5hZ2VkVGV4dHVyZSh0cnVlKQogewogfQogCiBUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlcjo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoR0x1
aW50IHRleHR1cmVJRCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgVGV4dHVyZU1hcHBlckdMOjpGbGFn
cyBmbGFncywgR0xpbnQgaW50ZXJuYWxGb3JtYXQpCi0gICAgOiBtX3RleHR1cmVJRCh0ZXh0dXJl
SUQpCisgICAgOiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcih7IFJHQlRleHR1cmUg
eyB0ZXh0dXJlSUQgfSB9LCBzaXplLCBmbGFncywgaW50ZXJuYWxGb3JtYXQpCit7Cit9CisKK1Rl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcihUZXh0dXJlVmFyaWFudCYmIHZhcmlhbnQsIGNvbnN0IEludFNpemUmIHNpemUsIFRl
eHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MsIEdMaW50IGludGVybmFsRm9ybWF0KQorICAgIDog
bV92YXJpYW50KFdURk1vdmUodmFyaWFudCkpCiAgICAgLCBtX3NpemUoc2l6ZSkKICAgICAsIG1f
aW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxGb3JtYXQpCiAgICAgLCBtX2V4dHJhRmxhZ3MoZmxhZ3Mp
CkBAIC01MCw2ICs1NSwxMCBAQCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6VGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoR0x1aW50IHRleHR1cgogewogfQogCitUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6flRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyKCkKK3sKK30KKwogYm9vbCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6
Y2FuUmV1c2VXaXRob3V0UmVzZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgR0xpbnQgaW50ZXJuYWxG
b3JtYXQpCiB7CiAgICAgcmV0dXJuIG1fdGV4dHVyZSAmJiAobV90ZXh0dXJlLT5zaXplKCkgPT0g
c2l6ZSkgJiYgKHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCo+KG1fdGV4dHVyZS5nZXQoKSkt
PmludGVybmFsRm9ybWF0KCkgPT0gaW50ZXJuYWxGb3JtYXQgfHwgaW50ZXJuYWxGb3JtYXQgPT0g
R0xfRE9OVF9DQVJFKTsKQEAgLTU3LDE0ICs2NiwyOCBAQCBib29sIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyQnVmZmVyOjpjYW5SZXVzZVdpdGhvdXRSZXNldChjb25zdCBJbnRTaXplJiBzaXpl
LAogCiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+IFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpjbG9uZSgpCiB7Ci0gICAgaWYgKG1faGFz
TWFuYWdlZFRleHR1cmUgfHwgIW1fdGV4dHVyZUlEKSB7CisgICAgaWYgKG1faGFzTWFuYWdlZFRl
eHR1cmUpIHsKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQotICAgIGF1dG8gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRl
eHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCksIG1faW50ZXJuYWxGb3JtYXQpOwot
ICAgIHRleHR1cmUtPnJlc2V0KG1fc2l6ZSk7Ci0gICAgc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVy
ZUdMJj4odGV4dHVyZS5nZXQoKSkuY29weUZyb21FeHRlcm5hbFRleHR1cmUobV90ZXh0dXJlSUQp
OwotICAgIHJldHVybiBtYWtlVW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
PihXVEZNb3ZlKHRleHR1cmUpLCBtX2V4dHJhRmxhZ3MpOworCisgICAgcmV0dXJuIFdURjo6c3dp
dGNoT24obV92YXJpYW50LAorICAgICAgICBbJl0oY29uc3QgUkdCVGV4dHVyZSYgdGV4dHVyZSkg
bXV0YWJsZSAtPiBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXI+IHsKKyAgICAgICAgICAgIGlmICghdGV4dHVyZS5pZCkgeworICAgICAgICAgICAgICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGF1dG8gY2xvbmVkVGV4dHVyZSA9IEJpdG1hcFRleHR1cmVH
TDo6Y3JlYXRlKFRleHR1cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCksIG1faW50ZXJu
YWxGb3JtYXQpOworICAgICAgICAgICAgY2xvbmVkVGV4dHVyZS0+cmVzZXQobV9zaXplKTsKKyAg
ICAgICAgICAgIHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVHTCY+KGNsb25lZFRleHR1cmUuZ2V0
KCkpLmNvcHlGcm9tRXh0ZXJuYWxUZXh0dXJlKHRleHR1cmUuaWQpOworICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KFdURk1vdmUo
Y2xvbmVkVGV4dHVyZSksIG1fZXh0cmFGbGFncyk7CisgICAgICAgIH0sCisgICAgICAgIFtdKGNv
bnN0IFlVVlRleHR1cmUmKQorICAgICAgICB7CisgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0pOwogfQogCiB2b2lkIFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0
dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGZsb2F0IG9wYWNpdHkp
CkBAIC04Niw4ICsxMDksMzQgQEAgdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cjo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4dHUKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX3RleHR1cmVJRCk7Ci0gICAgdGV4bWFwR0wuZHJh
d1RleHR1cmUobV90ZXh0dXJlSUQsIG1fZXh0cmFGbGFncywgbV9zaXplLCB0YXJnZXRSZWN0LCBt
b2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkpOworICAgIGlmIChtX3VubWFuYWdlZEJ1ZmZlckRhdGFI
b2xkZXIpCisgICAgICAgIG1fdW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlci0+d2FpdEZvckNQVVN5
bmMoKTsKKworICAgIFdURjo6c3dpdGNoT24obV92YXJpYW50LAorICAgICAgICBbJl0oY29uc3Qg
UkdCVGV4dHVyZSYgdGV4dHVyZSkgeworICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUuaWQpOwor
ICAgICAgICAgICAgdGV4bWFwR0wuZHJhd1RleHR1cmUodGV4dHVyZS5pZCwgbV9leHRyYUZsYWdz
LCBtX3NpemUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7CisgICAgICAg
IH0sCisgICAgICAgIFsmXShjb25zdCBZVVZUZXh0dXJlJiB0ZXh0dXJlKSB7CisgICAgICAgICAg
ICBzd2l0Y2ggKHRleHR1cmUubnVtYmVyT2ZQbGFuZXMpIHsKKyAgICAgICAgICAgIGNhc2UgMToK
KyAgICAgICAgICAgICAgICBBU1NFUlQodGV4dHVyZS55dXZQbGFuZVswXSA9PSB0ZXh0dXJlLnl1
dlBsYW5lWzFdICYmIHRleHR1cmUueXV2UGxhbmVbMV0gPT0gdGV4dHVyZS55dXZQbGFuZVsyXSk7
CisgICAgICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUueXV2UGxhbmVPZmZzZXRbMF0gPT0gMiAm
JiB0ZXh0dXJlLnl1dlBsYW5lT2Zmc2V0WzFdID09IDEgJiYgIXRleHR1cmUueXV2UGxhbmVPZmZz
ZXRbMl0pOworICAgICAgICAgICAgICAgIHRleG1hcEdMLmRyYXdUZXh0dXJlUGFja2VkWVVWKHRl
eHR1cmUucGxhbmVzW3RleHR1cmUueXV2UGxhbmVbMF1dLAorICAgICAgICAgICAgICAgICAgICB0
ZXh0dXJlLnl1dlRvUmdiTWF0cml4LCBtX2V4dHJhRmxhZ3MsIG1fc2l6ZSwgdGFyZ2V0UmVjdCwg
bW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICBBU1NFUlQoIXRleHR1cmUueXV2UGxhbmVP
ZmZzZXRbMF0pOworICAgICAgICAgICAgICAgIHRleG1hcEdMLmRyYXdUZXh0dXJlU2VtaVBsYW5h
cllVVihzdGQ6OmFycmF5PEdMdWludCwgMj4geyB0ZXh0dXJlLnBsYW5lc1t0ZXh0dXJlLnl1dlBs
YW5lWzBdXSwgdGV4dHVyZS5wbGFuZXNbdGV4dHVyZS55dXZQbGFuZVsxXV0gfSwgISF0ZXh0dXJl
Lnl1dlBsYW5lT2Zmc2V0WzFdLAorICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLnl1dlRvUmdi
TWF0cml4LCBtX2V4dHJhRmxhZ3MsIG1fc2l6ZSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4
LCBvcGFjaXR5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzoK
KyAgICAgICAgICAgICAgICBBU1NFUlQoIXRleHR1cmUueXV2UGxhbmVPZmZzZXRbMF0gJiYgIXRl
eHR1cmUueXV2UGxhbmVPZmZzZXRbMV0gJiYgIXRleHR1cmUueXV2UGxhbmVPZmZzZXRbMl0pOwor
ICAgICAgICAgICAgICAgIHRleG1hcEdMLmRyYXdUZXh0dXJlUGxhbmFyWVVWKHN0ZDo6YXJyYXk8
R0x1aW50LCAzPiB7IHRleHR1cmUucGxhbmVzW3RleHR1cmUueXV2UGxhbmVbMF1dLCB0ZXh0dXJl
LnBsYW5lc1t0ZXh0dXJlLnl1dlBsYW5lWzFdXSwgdGV4dHVyZS5wbGFuZXNbdGV4dHVyZS55dXZQ
bGFuZVsyXV0gfSwKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS55dXZUb1JnYk1hdHJpeCwg
bV9leHRyYUZsYWdzLCBtX3NpemUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0
eSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllckJ1ZmZlci5oCmluZGV4IGUwM2ZhMzlhZDhiMWI2OWQ1ZmFlNGVkYjIzZWZi
NGYwZDQ5ZmIyMWQuLjA4MzQ3MmJhYjI5ZTliYmFjZjE0YjIwNjZiYmJmOGZiMWQ2OWQ2YjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMSGVhZGVycy5oIgogI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL01vbm90b25p
Y1RpbWUuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTM5LDkgKzQwLDI0IEBAIGNsYXNzIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyIDogcHVibGljIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRCgpOwogcHVibGljOgogICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyKFJlZlB0cjxCaXRtYXBUZXh0dXJlPiYmLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzID0g
MCk7CisKICAgICBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihHTHVpbnQgdGV4dHVy
ZUlELCBjb25zdCBJbnRTaXplJiwgVGV4dHVyZU1hcHBlckdMOjpGbGFncywgR0xpbnQgaW50ZXJu
YWxGb3JtYXQpOwogCi0gICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXIoKSA9IGRlZmF1bHQ7CisgICAgc3RydWN0IFJHQlRleHR1cmUgeworICAgICAgICBHTHVpbnQg
aWQ7CisgICAgfTsKKyAgICBzdHJ1Y3QgWVVWVGV4dHVyZSB7CisgICAgICAgIHVuc2lnbmVkIG51
bWJlck9mUGxhbmVzOworICAgICAgICBzdGQ6OmFycmF5PEdMdWludCwgMz4gcGxhbmVzOworICAg
ICAgICBzdGQ6OmFycmF5PHVuc2lnbmVkLCAzPiB5dXZQbGFuZTsKKyAgICAgICAgc3RkOjphcnJh
eTx1bnNpZ25lZCwgMz4geXV2UGxhbmVPZmZzZXQ7CisgICAgICAgIHN0ZDo6YXJyYXk8R0xmbG9h
dCwgOT4geXV2VG9SZ2JNYXRyaXg7CisgICAgfTsKKyAgICB1c2luZyBUZXh0dXJlVmFyaWFudCA9
IFdURjo6VmFyaWFudDxSR0JUZXh0dXJlLCBZVVZUZXh0dXJlPjsKKworICAgIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyKFRleHR1cmVWYXJpYW50JiYsIGNvbnN0IEludFNpemUmLCBU
ZXh0dXJlTWFwcGVyR0w6OkZsYWdzLCBHTGludCBpbnRlcm5hbEZvcm1hdCk7CisKKyAgICB2aXJ0
dWFsIH5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcigpOwogCiAgICAgdm9pZCBwYWlu
dFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0
cml4KCksIGZsb2F0IG9wYWNpdHkgPSAxLjApIGZpbmFsOwogCkBAIC01Nyw2ICs3Myw4IEBAIHB1
YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIoKSA9
IGRlZmF1bHQ7CiAgICAgICAgIHZpcnR1YWwgflVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIoKSA9
IGRlZmF1bHQ7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHdhaXRGb3JDUFVTeW5jKCkgPSAwOwog
ICAgIH07CiAKICAgICBib29sIGhhc01hbmFnZWRUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNNYW5hZ2VkVGV4dHVyZTsgfQpAQCAtNzksNiArOTcsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxCaXRtYXBUZXh0dXJlPiBtX3RleHR1cmU7CiAgICAgTW9ub3RvbmljVGltZSBtX3RpbWVMYXN0
VXNlZDsKIAorICAgIFRleHR1cmVWYXJpYW50IG1fdmFyaWFudDsKICAgICBHTHVpbnQgbV90ZXh0
dXJlSUQ7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgR0xpbnQgbV9pbnRlcm5hbEZvcm1hdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCmluZGV4IGViODc4OGQ0
ZmY1ZTg4OWZiYWY0NmM2MDE2OTk1MzAwYTc4ZDcxMGQuLjVlMDI4NDdlNGFmZWIwZDk0ZTA3NjE0
OTMyNTFmYjVlMmNhN2Q2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtLmNwcApAQCAtMjA3LDkgKzIwNywxMyBAQCBzdGF0aWMgY29uc3QgY2hhciogZnJhZ21lbnRU
ZW1wbGF0ZUdFMzIwVmFycyA9CiBzdGF0aWMgY29uc3QgY2hhciogZnJhZ21lbnRUZW1wbGF0ZUNv
bW1vbiA9CiAgICAgU1RSSU5HSUZZKAogICAgICAgICB1bmlmb3JtIFNhbXBsZXJUeXBlIHNfc2Ft
cGxlcjsKKyAgICAgICAgdW5pZm9ybSBTYW1wbGVyVHlwZSBzX3NhbXBsZXJZOworICAgICAgICB1
bmlmb3JtIFNhbXBsZXJUeXBlIHNfc2FtcGxlclU7CisgICAgICAgIHVuaWZvcm0gU2FtcGxlclR5
cGUgc19zYW1wbGVyVjsKICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgc19jb250ZW50VGV4dHVy
ZTsKICAgICAgICAgdW5pZm9ybSBmbG9hdCB1X29wYWNpdHk7CiAgICAgICAgIHVuaWZvcm0gZmxv
YXQgdV9maWx0ZXJBbW91bnQ7CisgICAgICAgIHVuaWZvcm0gbWF0MyB1X3l1dlRvUmdiOwogICAg
ICAgICB1bmlmb3JtIHZlYzIgdV9ibHVyUmFkaXVzOwogICAgICAgICB1bmlmb3JtIHZlYzIgdV9z
aGFkb3dPZmZzZXQ7CiAgICAgICAgIHVuaWZvcm0gdmVjNCB1X2NvbG9yOwpAQCAtMjMxLDcgKzIz
NSw0MSBAQCBzdGF0aWMgY29uc3QgY2hhciogZnJhZ21lbnRUZW1wbGF0ZUNvbW1vbiA9CiAKICAg
ICAgICAgdm9pZCBhcHBseU1hbnVhbFJlcGVhdChpbm91dCB2ZWMyIHBvcykgeyBwb3MgPSBmcmFj
dChwb3MpOyB9CiAKLSAgICAgICAgdm9pZCBhcHBseVRleHR1cmUoaW5vdXQgdmVjNCBjb2xvciwg
dmVjMiB0ZXhDb29yZCkgeyBjb2xvciA9IHVfdGV4dHVyZUNvbG9yU3BhY2VNYXRyaXggKiBTYW1w
bGVyRnVuY3Rpb24oc19zYW1wbGVyLCB0ZXhDb29yZCk7IH0KKyAgICAgICAgdm9pZCBhcHBseVRl
eHR1cmVSR0IoaW5vdXQgdmVjNCBjb2xvciwgdmVjMiB0ZXhDb29yZCkgeyBjb2xvciA9IHVfdGV4
dHVyZUNvbG9yU3BhY2VNYXRyaXggKiBTYW1wbGVyRnVuY3Rpb24oc19zYW1wbGVyLCB0ZXhDb29y
ZCk7IH0KKworICAgICAgICB2ZWMzIHl1dlRvUmdiKGZsb2F0IHksIGZsb2F0IHUsIGZsb2F0IHYp
CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIHl1diBpcyBlaXRoZXIgYnQ2MDEgb3IgYnQ3MDkg
c28gdGhlIG9mZnNldCBpcyB0aGUgc2FtZQorICAgICAgICAgICAgdmVjMyB5dXYgPSB2ZWMzKHkg
LSAwLjA2MjUsIHUgLSAwLjUsIHYgLSAwLjUpOworICAgICAgICAgICAgcmV0dXJuIHl1diAqIHVf
eXV2VG9SZ2I7CisgICAgICAgIH0KKyAgICAgICAgdm9pZCBhcHBseVRleHR1cmVZVVYoaW5vdXQg
dmVjNCBjb2xvciwgdmVjMiB0ZXhDb29yZCkKKyAgICAgICAgeworICAgICAgICAgICAgZmxvYXQg
eSA9IFNhbXBsZXJGdW5jdGlvbihzX3NhbXBsZXJZLCB0ZXhDb29yZCkucjsKKyAgICAgICAgICAg
IGZsb2F0IHUgPSBTYW1wbGVyRnVuY3Rpb24oc19zYW1wbGVyVSwgdGV4Q29vcmQpLnI7CisgICAg
ICAgICAgICBmbG9hdCB2ID0gU2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlclYsIHRleENvb3JkKS5y
OworICAgICAgICAgICAgdmVjNCBkYXRhID0gdmVjNCh5dXZUb1JnYih5LCB1LCB2KSwgMS4wKTsK
KyAgICAgICAgICAgIGNvbG9yID0gdV90ZXh0dXJlQ29sb3JTcGFjZU1hdHJpeCAqIGRhdGE7Cisg
ICAgICAgIH0KKyAgICAgICAgdm9pZCBhcHBseVRleHR1cmVOVjEyKGlub3V0IHZlYzQgY29sb3Is
IHZlYzIgdGV4Q29vcmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZsb2F0IHkgPSBTYW1wbGVy
RnVuY3Rpb24oc19zYW1wbGVyWSwgdGV4Q29vcmQpLnI7CisgICAgICAgICAgICB2ZWMyIHV2ID0g
U2FtcGxlckZ1bmN0aW9uKHNfc2FtcGxlclUsIHRleENvb3JkKS5yZzsKKyAgICAgICAgICAgIHZl
YzQgZGF0YSA9IHZlYzQoeXV2VG9SZ2IoeSwgdXYueCwgdXYueSksIDEuMCk7CisgICAgICAgICAg
ICBjb2xvciA9IHVfdGV4dHVyZUNvbG9yU3BhY2VNYXRyaXggKiBkYXRhOworICAgICAgICB9Cisg
ICAgICAgIHZvaWQgYXBwbHlUZXh0dXJlTlYyMShpbm91dCB2ZWM0IGNvbG9yLCB2ZWMyIHRleENv
b3JkKQorICAgICAgICB7CisgICAgICAgICAgICBmbG9hdCB5ID0gU2FtcGxlckZ1bmN0aW9uKHNf
c2FtcGxlclksIHRleENvb3JkKS5yOworICAgICAgICAgICAgdmVjMiB1diA9IFNhbXBsZXJGdW5j
dGlvbihzX3NhbXBsZXJVLCB0ZXhDb29yZCkuZ3I7CisgICAgICAgICAgICB2ZWM0IGRhdGEgPSB2
ZWM0KHl1dlRvUmdiKHksIHV2LngsIHV2LnkpLCAxLjApOworICAgICAgICAgICAgY29sb3IgPSB1
X3RleHR1cmVDb2xvclNwYWNlTWF0cml4ICogZGF0YTsKKyAgICAgICAgfQorICAgICAgICB2b2lk
IGFwcGx5VGV4dHVyZVBhY2tlZFlVVihpbm91dCB2ZWM0IGNvbG9yLCB2ZWMyIHRleENvb3JkKQor
ICAgICAgICB7CisgICAgICAgICAgICB2ZWM0IGRhdGEgPSBTYW1wbGVyRnVuY3Rpb24oc19zYW1w
bGVyLCB0ZXhDb29yZCk7CisgICAgICAgICAgICBjb2xvciA9IHVfdGV4dHVyZUNvbG9yU3BhY2VN
YXRyaXggKiB2ZWM0KHl1dlRvUmdiKGRhdGEuYiwgZGF0YS5nLCBkYXRhLnIpLCBkYXRhLmEpOwor
ICAgICAgICB9CiAgICAgICAgIHZvaWQgYXBwbHlPcGFjaXR5KGlub3V0IHZlYzQgY29sb3IpIHsg
Y29sb3IgKj0gdV9vcGFjaXR5OyB9CiAgICAgICAgIHZvaWQgYXBwbHlBbnRpYWxpYXNpbmcoaW5v
dXQgdmVjNCBjb2xvcikgeyBjb2xvciAqPSBhbnRpYWxpYXMoKTsgfQogCkBAIC0zNDMsNyArMzgx
LDExIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBmcmFnbWVudFRlbXBsYXRlQ29tbW9uID0KICAgICAg
ICAgICAgIHZlYzQgY29sb3IgPSB2ZWM0KDEuLCAxLiwgMS4sIDEuKTsKICAgICAgICAgICAgIHZl
YzIgdGV4Q29vcmQgPSB0cmFuc2Zvcm1UZXhDb29yZCgpOwogICAgICAgICAgICAgYXBwbHlNYW51
YWxSZXBlYXRJZk5lZWRlZCh0ZXhDb29yZCk7Ci0gICAgICAgICAgICBhcHBseVRleHR1cmVJZk5l
ZWRlZChjb2xvciwgdGV4Q29vcmQpOworICAgICAgICAgICAgYXBwbHlUZXh0dXJlUkdCSWZOZWVk
ZWQoY29sb3IsIHRleENvb3JkKTsKKyAgICAgICAgICAgIGFwcGx5VGV4dHVyZVlVVklmTmVlZGVk
KGNvbG9yLCB0ZXhDb29yZCk7CisgICAgICAgICAgICBhcHBseVRleHR1cmVOVjEySWZOZWVkZWQo
Y29sb3IsIHRleENvb3JkKTsKKyAgICAgICAgICAgIGFwcGx5VGV4dHVyZU5WMjFJZk5lZWRlZChj
b2xvciwgdGV4Q29vcmQpOworICAgICAgICAgICAgYXBwbHlUZXh0dXJlUGFja2VkWVVWSWZOZWVk
ZWQoY29sb3IsIHRleENvb3JkKTsKICAgICAgICAgICAgIGFwcGx5U29saWRDb2xvcklmTmVlZGVk
KGNvbG9yKTsKICAgICAgICAgICAgIGFwcGx5QW50aWFsaWFzaW5nSWZOZWVkZWQoY29sb3IpOwog
ICAgICAgICAgICAgYXBwbHlPcGFjaXR5SWZOZWVkZWQoY29sb3IpOwpAQCAtMzY5LDcgKzQxMSwx
MSBAQCBSZWY8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+IFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtOjpjcmVhdGUoVGV4dHVyZU1hcHBlcgogICAgICAgICAob3B0aW9ucyAmIFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtOjpBcHBsaWVyKSA/IEVOQUJMRV9BUFBMSUVSKEFwcGxpZXIpIDog
RElTQUJMRV9BUFBMSUVSKEFwcGxpZXIpKQogCiAgICAgU3RyaW5nQnVpbGRlciBvcHRpb25zQXBw
bGllckJ1aWxkZXI7Ci0gICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKFRleHR1cmUpOworICAg
IFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhUZXh0dXJlUkdCKTsKKyAgICBTRVRfQVBQTElFUl9G
Uk9NX09QVElPTlMoVGV4dHVyZVlVVik7CisgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05TKFRl
eHR1cmVOVjEyKTsKKyAgICBTRVRfQVBQTElFUl9GUk9NX09QVElPTlMoVGV4dHVyZU5WMjEpOwor
ICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhUZXh0dXJlUGFja2VkWVVWKTsKICAgICBTRVRf
QVBQTElFUl9GUk9NX09QVElPTlMoUmVjdCk7CiAgICAgU0VUX0FQUExJRVJfRlJPTV9PUFRJT05T
KFNvbGlkQ29sb3IpOwogICAgIFNFVF9BUFBMSUVSX0ZST01fT1BUSU9OUyhPcGFjaXR5KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmgKaW5kZXggNGEzNDIwYzA2MDJjYjRk
NjBhNDk4Yjk0NzVhM2YzOTdkMmQ3MWYxOS4uYmE1YzAwMTE3NTg0NzcwNjQ0YmZkZjQ3N2I1YzE3
YTFjZmQ4ZjY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmgKQEAg
LTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW0gOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bT4gewogcHVibGljOgogICAgIGVudW0gT3B0aW9uIHsKLSAgICAgICAgVGV4dHVyZSAgICAgICAg
ICA9IDFMIDw8IDAsCisgICAgICAgIFRleHR1cmVSR0IgICAgICAgPSAxTCA8PCAwLAogICAgICAg
ICBSZWN0ICAgICAgICAgICAgID0gMUwgPDwgMSwKICAgICAgICAgU29saWRDb2xvciAgICAgICA9
IDFMIDw8IDIsCiAgICAgICAgIE9wYWNpdHkgICAgICAgICAgPSAxTCA8PCAzLApAQCAtNjEsNyAr
NjEsMTEgQEAgcHVibGljOgogICAgICAgICBCbHVyRmlsdGVyICAgICAgID0gMUwgPDwgMTQsCiAg
ICAgICAgIEFscGhhQmx1ciAgICAgICAgPSAxTCA8PCAxNSwKICAgICAgICAgQ29udGVudFRleHR1
cmUgICA9IDFMIDw8IDE2LAotICAgICAgICBNYW51YWxSZXBlYXQgICAgID0gMUwgPDwgMTcKKyAg
ICAgICAgTWFudWFsUmVwZWF0ICAgICA9IDFMIDw8IDE3LAorICAgICAgICBUZXh0dXJlWVVWICAg
ICAgID0gMUwgPDwgMTgsCisgICAgICAgIFRleHR1cmVOVjEyICAgICAgPSAxTCA8PCAxOSwKKyAg
ICAgICAgVGV4dHVyZU5WMjEgICAgICA9IDFMIDw8IDIwLAorICAgICAgICBUZXh0dXJlUGFja2Vk
WVVWID0gMUwgPDwgMjEsCiAgICAgfTsKIAogICAgIHR5cGVkZWYgdW5zaWduZWQgT3B0aW9uczsK
QEAgLTgwLDcgKzg0LDExIEBAIHB1YmxpYzoKICAgICBURVhNQVBfREVDTEFSRV9VTklGT1JNKG9w
YWNpdHkpCiAgICAgVEVYTUFQX0RFQ0xBUkVfVU5JRk9STShjb2xvcikKICAgICBURVhNQVBfREVD
TEFSRV9VTklGT1JNKGV4cGFuZGVkUXVhZEVkZ2VzSW5TY3JlZW5TcGFjZSkKKyAgICBURVhNQVBf
REVDTEFSRV9VTklGT1JNKHl1dlRvUmdiKQogICAgIFRFWE1BUF9ERUNMQVJFX1NBTVBMRVIoc2Ft
cGxlcikKKyAgICBURVhNQVBfREVDTEFSRV9TQU1QTEVSKHNhbXBsZXJZKQorICAgIFRFWE1BUF9E
RUNMQVJFX1NBTVBMRVIoc2FtcGxlclUpCisgICAgVEVYTUFQX0RFQ0xBUkVfU0FNUExFUihzYW1w
bGVyVikKICAgICBURVhNQVBfREVDTEFSRV9TQU1QTEVSKG1hc2spCiAKICAgICBURVhNQVBfREVD
TEFSRV9VTklGT1JNKGZpbHRlckFtb3VudCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>